Build Proxmox visualizer app
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
from typing import Any, Dict, List, Literal, Optional
|
||||
|
||||
from pydantic import BaseModel, Field, HttpUrl
|
||||
|
||||
|
||||
class ProxmoxServerConfig(BaseModel):
|
||||
name: str
|
||||
url: HttpUrl
|
||||
token_name: str
|
||||
token_value: str = Field(repr=False)
|
||||
|
||||
|
||||
class ServerInfo(BaseModel):
|
||||
name: str
|
||||
url: str
|
||||
configured: bool = True
|
||||
|
||||
|
||||
class ServerScanStatus(BaseModel):
|
||||
name: str
|
||||
url: str
|
||||
ok: bool
|
||||
vm_count: int = 0
|
||||
errors: List[str] = Field(default_factory=list)
|
||||
|
||||
|
||||
class VmRecord(BaseModel):
|
||||
id: str
|
||||
server: str
|
||||
node: str
|
||||
vmid: int
|
||||
type: Literal["qemu", "lxc"]
|
||||
name: str
|
||||
status: Optional[str] = None
|
||||
cpu: Optional[float] = None
|
||||
mem: Optional[int] = None
|
||||
maxmem: Optional[int] = None
|
||||
disk: Optional[int] = None
|
||||
maxdisk: Optional[int] = None
|
||||
uptime: Optional[int] = None
|
||||
tags: Optional[str] = None
|
||||
duplicate_id: Optional[int] = None
|
||||
description_available: bool = False
|
||||
raw: Dict[str, Any] = Field(default_factory=dict)
|
||||
|
||||
|
||||
class DuplicateGroup(BaseModel):
|
||||
id: str
|
||||
label: str
|
||||
reason: Literal["name", "metadata"]
|
||||
count: int
|
||||
items: List[VmRecord]
|
||||
|
||||
|
||||
class ScanResponse(BaseModel):
|
||||
servers: List[ServerScanStatus]
|
||||
items: List[VmRecord]
|
||||
duplicates: List[DuplicateGroup]
|
||||
Reference in New Issue
Block a user