99 lines
2.0 KiB
Python
99 lines
2.0 KiB
Python
from pydantic import BaseModel
|
|
from typing import Optional, List
|
|
from datetime import datetime
|
|
|
|
class ServerBase(BaseModel):
|
|
name: str
|
|
ip_address: str
|
|
mac_address: str
|
|
description: Optional[str] = None
|
|
|
|
class ServerCreate(ServerBase):
|
|
pass
|
|
|
|
class Server(ServerBase):
|
|
id: int
|
|
is_online: bool
|
|
last_ping: Optional[datetime] = None
|
|
created_at: datetime
|
|
|
|
class Config:
|
|
from_attributes = True
|
|
|
|
class ProxmoxClusterBase(BaseModel):
|
|
name: str
|
|
host: str
|
|
username: str
|
|
password: str
|
|
port: int = 8006
|
|
verify_ssl: bool = True
|
|
|
|
class ProxmoxClusterCreate(ProxmoxClusterBase):
|
|
pass
|
|
|
|
class ProxmoxCluster(ProxmoxClusterBase):
|
|
id: int
|
|
created_at: datetime
|
|
|
|
class Config:
|
|
from_attributes = True
|
|
|
|
class ProxmoxVM(BaseModel):
|
|
vmid: str
|
|
name: str
|
|
status: str
|
|
node: str
|
|
type: str
|
|
|
|
class WolLogCreate(BaseModel):
|
|
server_id: int
|
|
action: str
|
|
success: bool = True
|
|
message: Optional[str] = None
|
|
|
|
class WolLog(WolLogCreate):
|
|
id: int
|
|
timestamp: datetime
|
|
|
|
class Config:
|
|
from_attributes = True
|
|
|
|
class ActionLogCreate(BaseModel):
|
|
action_type: str
|
|
target_id: Optional[int] = None
|
|
target_name: Optional[str] = None
|
|
action: str
|
|
success: bool = True
|
|
message: Optional[str] = None
|
|
details: Optional[str] = None
|
|
|
|
class ActionLog(ActionLogCreate):
|
|
id: int
|
|
timestamp: datetime
|
|
|
|
class Config:
|
|
from_attributes = True
|
|
|
|
class ProxmoxHostBase(BaseModel):
|
|
name: str
|
|
description: Optional[str] = None
|
|
ip_address: str
|
|
mac_address: str
|
|
proxmox_host: str
|
|
proxmox_username: str
|
|
proxmox_password: str
|
|
proxmox_port: int = 8006
|
|
verify_ssl: bool = True
|
|
shutdown_endpoint: Optional[str] = None
|
|
|
|
class ProxmoxHostCreate(ProxmoxHostBase):
|
|
pass
|
|
|
|
class ProxmoxHost(ProxmoxHostBase):
|
|
id: int
|
|
is_online: bool
|
|
last_ping: Optional[datetime] = None
|
|
created_at: datetime
|
|
|
|
class Config:
|
|
from_attributes = True |