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