Compare commits
52 Commits
0112e771e7
...
dev
Author | SHA1 | Date | |
---|---|---|---|
afb7a6eb92 | |||
2e804ee9ca | |||
fe00221ff8 | |||
31ae5415b4 | |||
970a0c2dff | |||
7e3ab673fa | |||
d8a0ebcfe0 | |||
9f32505843 | |||
70a934f55c | |||
55bef3ed30 | |||
dba29c2842 | |||
97b98db65d | |||
e9a25cd4bd | |||
76d643b3ab | |||
491fc1116c | |||
a88e7672f8 | |||
9d7c516245 | |||
c736ffe998 | |||
e23d0e4c68 | |||
1af6b86242 | |||
3ead1d1e27 | |||
72e0d3b30d | |||
0bc25a7602 | |||
c5d5413136 | |||
d360dfc6b9 | |||
00fe9c67c9 | |||
60f3a78e87 | |||
948865e23a | |||
669c5f5208 | |||
8300dcba26 | |||
00235f0084 | |||
f87313eef9 | |||
c0a777637e | |||
046884a6df | |||
2eaa413f3c | |||
6e4c2b3d86 | |||
d332bfe4f1 | |||
49be491f25 | |||
8b4da53586 | |||
aa351df9f5 | |||
cfb1647039 | |||
6b386d6758 | |||
327a6d9979 | |||
781f265ca4 | |||
f6ecaf3f9a | |||
5793d9411d | |||
b5e8c4b927 | |||
ffee09f957 | |||
9e03deeadc | |||
f0667781a4 | |||
743accd9ba | |||
dad13df1ef |
@@ -0,0 +1,5 @@
|
||||
from . import cluster as cluster_schema
|
||||
from . import datacenter as datacenter_schema
|
||||
from . import network as network_schema
|
||||
from . import storage as storage_schema
|
||||
from . import vm as vm_schema
|
@@ -1,6 +1,6 @@
|
||||
from typing import List, Optional
|
||||
import uuid
|
||||
from pydantic import UUID4, BaseModel, ConfigDict, Field
|
||||
from pydantic import UUID1, UUID4, BaseModel, ConfigDict, Field
|
||||
|
||||
class Cluster(BaseModel):
|
||||
model_config = ConfigDict(from_attributes=True)
|
||||
@@ -8,5 +8,5 @@ class Cluster(BaseModel):
|
||||
id: UUID4
|
||||
name: str
|
||||
compute_id: UUID4
|
||||
storage_id: UUID4
|
||||
storage_id: UUID1
|
||||
network_switch_id: UUID4
|
@@ -13,7 +13,7 @@ class Datacenter(BaseModel):
|
||||
model_config = ConfigDict(from_attributes=True)
|
||||
|
||||
company_id:UUID4
|
||||
id:UUID4
|
||||
id:Optional[UUID4] = Field(default_factory=uuid.uuid4)
|
||||
name:str
|
||||
cluster_id:UUID4
|
||||
storage_pool_id:Optional[UUID4]
|
||||
@@ -26,4 +26,4 @@ class DatacenterCreate(BaseModel):
|
||||
id:Optional[UUID4] = Field(default_factory=lambda:uuid.uuid4())
|
||||
name:str
|
||||
cluster_id:UUID4
|
||||
storage_pool_id:Optional[UUID4]
|
||||
storage_pool_id:Optional[UUID4] = Field(default=None)
|
@@ -1,5 +1,6 @@
|
||||
from ipaddress import IPv4Address, IPv6Address
|
||||
from typing import List, Optional
|
||||
from uuid import uuid4
|
||||
from pydantic_xml import element, attr
|
||||
from pydantic import UUID4, BaseModel, ConfigDict, Field
|
||||
from pydantic_extra_types.mac_address import MacAddress
|
||||
@@ -8,18 +9,24 @@ class lsp(BaseModel):
|
||||
model_config = ConfigDict(from_attributes=True)
|
||||
|
||||
id:UUID4 = Field()
|
||||
mac_addr:str = Field()
|
||||
mac_addr:Optional[str] = Field(default=None)
|
||||
ipv4_addr:Optional[IPv4Address] = Field(default=None)
|
||||
ipv6_addr:Optional[IPv6Address] = Field(default=None)
|
||||
|
||||
class lspCreate(lsp):
|
||||
id:Optional[UUID4] = Field(default_factory=uuid4)
|
||||
mac_addr:Optional[str] = Field(default=None)
|
||||
|
||||
class lspAttached(BaseModel):
|
||||
id:UUID4 = Field()
|
||||
|
||||
class ls(BaseModel):
|
||||
model_config = ConfigDict(from_attributes=True)
|
||||
|
||||
datacenter_id:Optional[UUID4] = Field(default=None)
|
||||
id:UUID4 = Field()
|
||||
name:str = Field()
|
||||
network_switch_port:Optional[List[lsp]] = Field(default=[])
|
||||
|
||||
class lspCreate(BaseModel):
|
||||
switch_id:UUID4 = Field(default=None)
|
||||
id:Optional[UUID4]
|
||||
mac_addr:Optional[str] = Field()
|
||||
class lsCreate(ls):
|
||||
id:Optional[UUID4] = Field(default_factory=uuid4)
|
17
deevirt_schema/api/stats.py
Normal file
17
deevirt_schema/api/stats.py
Normal file
@@ -0,0 +1,17 @@
|
||||
import time, datetime
|
||||
from typing import Optional
|
||||
from pydantic import BaseModel, ConfigDict, Field
|
||||
from ..libvirt.dom.stats import Stats, Memory
|
||||
|
||||
class MemorySwap(BaseModel):
|
||||
swp_in:Optional[int] = Field(default=None)
|
||||
swp_out:Optional[int] = Field(default=None)
|
||||
|
||||
class Memory(Memory):
|
||||
swap:MemorySwap = Field()
|
||||
|
||||
class Stats(Stats):
|
||||
memory:Memory = Field()
|
||||
|
||||
class MongoStats(Stats):
|
||||
created_at: Optional[float] = Field(default=None, alias='created_at')
|
@@ -1,5 +1,6 @@
|
||||
from typing import List, Optional
|
||||
from pydantic import UUID4, BaseModel, ConfigDict, Field
|
||||
from uuid import UUID
|
||||
from pydantic import UUID1, UUID4, BaseModel, ConfigDict, Field
|
||||
from pydantic_xml import attr
|
||||
|
||||
from ..libvirt.dom import config as configDom
|
||||
@@ -17,7 +18,7 @@ class StorageBlock(BaseModel):
|
||||
name:str = Field()
|
||||
size:int = Field()
|
||||
vm_hard_disk:Optional[List[VMHardDisk]] = Field(default=[])
|
||||
|
||||
|
||||
class StoragePool(BaseModel):
|
||||
model_config = ConfigDict(from_attributes=True)
|
||||
|
||||
@@ -28,11 +29,21 @@ class StoragePool(BaseModel):
|
||||
class Storage(BaseModel):
|
||||
model_config = ConfigDict(from_attributes=True)
|
||||
|
||||
id:UUID4 = Field()
|
||||
id:UUID1 = Field()
|
||||
name:str = Field()
|
||||
pool: Optional[List[StoragePool]] = Field(default=[], alias='storage_pool')
|
||||
|
||||
class DiskDriver(configDom.DevicesDiskDriver):
|
||||
class StorageBlockCreate(BaseModel):
|
||||
size:int = Field()
|
||||
|
||||
class StorageBlockAttached(BaseModel):
|
||||
id:UUID4 = Field()
|
||||
order:int = Field()
|
||||
|
||||
class StorageBlockDeattached(BaseModel):
|
||||
id:UUID4 = Field()
|
||||
|
||||
"""class DiskDriver(configDom.DevicesDiskDriver):
|
||||
name:str = Field(default="qemu")
|
||||
type:configDom.DevicesDiskDriver.typeEnum = Field(default=configDom.DevicesDiskDriver.typeEnum.raw)
|
||||
|
||||
@@ -66,8 +77,7 @@ class DiskCreate(Disk):
|
||||
order:int = Field(default=0, json_schema_extra={"hidden": True})
|
||||
|
||||
class DiskAttached(BaseModel):
|
||||
order:int = Field()
|
||||
order:int = Field()"""
|
||||
|
||||
|
||||
class BlockCreate(BaseModel):
|
||||
size:int = Field()
|
||||
|
||||
|
@@ -1,9 +1,11 @@
|
||||
from enum import Enum
|
||||
from typing import List, Optional
|
||||
from uuid import uuid4
|
||||
from pydantic import UUID4, Field, ConfigDict
|
||||
from pydantic import BaseModel as _BaseModel
|
||||
|
||||
from ..libvirt.dom import config as configDom
|
||||
from ..libvirt.dom.events import LifeCycle
|
||||
|
||||
class BaseModel(_BaseModel):
|
||||
class Config:
|
||||
@@ -65,10 +67,11 @@ class DevicesDisk(BaseModel):
|
||||
model_config = ConfigDict(from_attributes=True)
|
||||
|
||||
pool_id:Optional[UUID4] = Field(default=None)
|
||||
id:UUID4 = Field(default_factory=uuid4)
|
||||
id:Optional[UUID4] = Field(default_factory=uuid4)
|
||||
size:int = Field()
|
||||
unit:configDom.UnitEnum = Field(default=configDom.UnitEnum.GiB)
|
||||
bus:configDom.DevicesDiskTarget.busEnum = Field(default=configDom.DevicesDiskTarget.busEnum.scsi)
|
||||
order:Optional[int] = Field(default=0)
|
||||
|
||||
class DevicesCDROMSource(BaseModel):
|
||||
protocol:configDom.DevicesDiskSource.protocolEnum = Field(default=configDom.DevicesDiskSource.protocolEnum.https)
|
||||
@@ -159,20 +162,7 @@ class VM(BaseModel):
|
||||
# Devices
|
||||
devices:Devices = Field(default=Devices(), description="Matériel virtuel: Périphériques")
|
||||
|
||||
"""VM LIST GET"""
|
||||
class VMs(BaseModel):
|
||||
model_config = ConfigDict(from_attributes=True)
|
||||
|
||||
class Datacenter(BaseModel):
|
||||
model_config = ConfigDict(from_attributes=True)
|
||||
|
||||
id:UUID4
|
||||
name:str
|
||||
|
||||
id:UUID4
|
||||
name:str
|
||||
state:int
|
||||
datacenter:Optional[Datacenter] = Field(default=[])
|
||||
|
||||
"""VM GET"""
|
||||
class VMGetVCPU(VCPU):
|
||||
@@ -192,11 +182,38 @@ class VMGetDevices(Devices):
|
||||
interfaces:Optional[List[VMGetDevicesInterface]] = Field(default=None, description="Interfaces réseau")
|
||||
|
||||
class VMGet(VM):
|
||||
class StateEnum(Enum):
|
||||
NOSTATE = 0
|
||||
RUNNING = 1
|
||||
BLOCKED = 2
|
||||
PAUSED = 3
|
||||
SHUTDOWN = 4
|
||||
SHUTOFF = 5
|
||||
CRASHED = 6
|
||||
PMSUSPENDED = 7
|
||||
LAST = 8
|
||||
|
||||
state:StateEnum = Field(default=None)
|
||||
vcpu:VMGetVCPU = Field()
|
||||
gen_id:Optional[UUID4] = Field(default=None)
|
||||
os:VMGetOS = Field(default=VMGetOS(), description="Options VM: Options de démarrage.")
|
||||
devices:VMGetDevices = Field(default=VMGetDevices(), description="Matériel virtuel: Périphériques")
|
||||
|
||||
"""VM LIST GET"""
|
||||
class VMs(BaseModel):
|
||||
model_config = ConfigDict(from_attributes=True)
|
||||
|
||||
class Datacenter(BaseModel):
|
||||
model_config = ConfigDict(from_attributes=True)
|
||||
|
||||
id:UUID4
|
||||
name:str
|
||||
|
||||
id:UUID4
|
||||
name:str
|
||||
state:VMGet.StateEnum = Field(default=None)
|
||||
datacenter:Optional[Datacenter] = Field(default=[])
|
||||
|
||||
"""VM POST"""
|
||||
class VMPost(VM):
|
||||
id:UUID4 = Field(default_factory=uuid4)
|
||||
@@ -204,7 +221,11 @@ class VMPost(VM):
|
||||
|
||||
"""VM DELETE"""
|
||||
class VMDelete(BaseModel):
|
||||
id:UUID4 = Field()
|
||||
all_delete:Optional[bool] = Field(default=False)
|
||||
|
||||
"""VM STOP"""
|
||||
class VMStop(BaseModel):
|
||||
force:Optional[bool] = Field(default=False)
|
||||
|
||||
class HardDisk(BaseModel):
|
||||
pass
|
||||
|
@@ -20,19 +20,29 @@ class UnitEnum(str, Enum):
|
||||
GiB = "GiB"
|
||||
TiB = "TiB"
|
||||
|
||||
class Metadata(BaseXmlModel, search_mode='ordered'):
|
||||
# wrapped("metadata", element(default=None, ns="deevirt", nsmap={'deevirt': 'https://deevirt.com/'}))
|
||||
class MetadataDeevirt(BaseXmlModel, tag="instance"):
|
||||
company_id:UUID4 = element()
|
||||
datacenter_id:UUID4 = element()
|
||||
|
||||
class MetadataDeevirtNS(MetadataDeevirt, ns="deevirt", nsmap={'deevirt': 'https://deevirt.fr/schema/1.0'}):
|
||||
pass
|
||||
|
||||
class OSType(BaseXmlModel, search_mode='ordered'):
|
||||
class Metadata(BaseXmlModel):
|
||||
instance:Optional[MetadataDeevirtNS] = element(default=None, ns="deevirt", nsmap={'deevirt': 'https://deevirt.fr/schema/1.0'})
|
||||
|
||||
class OSType(BaseXmlModel, search_mode='unordered'):
|
||||
class archEnum(str, Enum):
|
||||
x86 = "x86"
|
||||
x86_64 = "x86_64"
|
||||
|
||||
class typeEnum(str, Enum):
|
||||
hvm = "hvm"
|
||||
|
||||
arch:archEnum = attr(default=archEnum.x86_64)
|
||||
machine:Optional[str] = attr(default="q35")
|
||||
value:typeEnum = typeEnum.hvm
|
||||
|
||||
class OSFirmwareFeature(BaseXmlModel, search_mode='ordered'):
|
||||
class OSFirmwareFeature(BaseXmlModel, search_mode='unordered'):
|
||||
class nameEnum(str, Enum):
|
||||
enrolled_keys = "enrolled-keys"
|
||||
secure_boot = "secure-boot"
|
||||
@@ -40,10 +50,10 @@ class OSFirmwareFeature(BaseXmlModel, search_mode='ordered'):
|
||||
enabled:YesNoEnum = attr(default=YesNoEnum.NO)
|
||||
name:nameEnum = attr()
|
||||
|
||||
class OSFirmware(BaseXmlModel, search_mode='ordered'):
|
||||
class OSFirmware(BaseXmlModel, search_mode='unordered'):
|
||||
feature:Optional[List[OSFirmwareFeature]] = element(default=None)
|
||||
|
||||
class OSLoader(BaseXmlModel, search_mode='ordered'):
|
||||
class OSLoader(BaseXmlModel, search_mode='unordered'):
|
||||
class typeEnum(str, Enum):
|
||||
nvram = "nvram"
|
||||
pflash = "pflash"
|
||||
@@ -53,7 +63,7 @@ class OSLoader(BaseXmlModel, search_mode='ordered'):
|
||||
type:typeEnum = attr(default=typeEnum.pflash)
|
||||
path:Optional[str] = ""
|
||||
|
||||
class OSBoot(BaseXmlModel, search_mode='ordered'):
|
||||
class OSBoot(BaseXmlModel, search_mode='unordered'):
|
||||
class bootEnum(str, Enum):
|
||||
hd = "hd",
|
||||
network = "network",
|
||||
@@ -61,17 +71,17 @@ class OSBoot(BaseXmlModel, search_mode='ordered'):
|
||||
|
||||
dev:bootEnum = attr()
|
||||
|
||||
class OSBootMenu(BaseXmlModel, search_mode='ordered'):
|
||||
class OSBootMenu(BaseXmlModel, search_mode='unordered'):
|
||||
enable:YesNoEnum = attr(default=YesNoEnum.NO)
|
||||
timeout:int = attr(default=0)
|
||||
|
||||
class OSSmbios(BaseXmlModel, search_mode='ordered'):
|
||||
class OSSmbios(BaseXmlModel, search_mode='unordered'):
|
||||
class modeEnum(str, Enum):
|
||||
sysinfo = "sysinfo"
|
||||
|
||||
mode:modeEnum = attr(default=modeEnum.sysinfo)
|
||||
|
||||
class OS(BaseXmlModel, search_mode='ordered'):
|
||||
class OS(BaseXmlModel, search_mode='unordered'):
|
||||
class firmwareEnum(str, Enum):
|
||||
bios = "bios"
|
||||
efi = "efi"
|
||||
@@ -85,14 +95,14 @@ class OS(BaseXmlModel, search_mode='ordered'):
|
||||
bootmenu:Optional[OSBootMenu] = element(default=None)
|
||||
smbios:OSSmbios = element(default=OSSmbios())
|
||||
|
||||
class SysinfoEntry(BaseXmlModel, search_mode='ordered'):
|
||||
class SysinfoEntry(BaseXmlModel, search_mode='unordered'):
|
||||
name:str = attr()
|
||||
value:str
|
||||
|
||||
class SysinfoBIOS(BaseXmlModel, search_mode='ordered'):
|
||||
class SysinfoBIOS(BaseXmlModel, search_mode='unordered'):
|
||||
entry:SysinfoEntry = element(default=None)
|
||||
|
||||
class SysinfoSystem(BaseXmlModel, search_mode='ordered'):
|
||||
class SysinfoSystem(BaseXmlModel, search_mode='unordered'):
|
||||
entry:List[SysinfoEntry] = element(default=[
|
||||
SysinfoEntry(
|
||||
name="manufacturer",
|
||||
@@ -112,89 +122,93 @@ class SysinfoSystem(BaseXmlModel, search_mode='ordered'):
|
||||
)
|
||||
])
|
||||
|
||||
class SysinfoBaseBoard(BaseXmlModel, search_mode='ordered'):
|
||||
class SysinfoBaseBoard(BaseXmlModel, search_mode='unordered'):
|
||||
entry:List[SysinfoEntry] = element(default=None)
|
||||
|
||||
class SysinfoChassis(BaseXmlModel, search_mode='ordered'):
|
||||
class SysinfoChassis(BaseXmlModel, search_mode='unordered'):
|
||||
entry:List[SysinfoEntry] = element(default=None)
|
||||
|
||||
class SysinfoOEMStrings(BaseXmlModel, search_mode='ordered'):
|
||||
class SysinfoOEMStrings(BaseXmlModel, search_mode='unordered'):
|
||||
entry:List[SysinfoEntry] = element(default=None)
|
||||
|
||||
class Sysinfo(BaseXmlModel, search_mode='ordered'):
|
||||
class Sysinfo(BaseXmlModel, search_mode='unordered'):
|
||||
class typeEnum(str, Enum):
|
||||
smbios = "smbios"
|
||||
|
||||
type:typeEnum = attr(default=typeEnum.smbios)
|
||||
bios:Optional[SysinfoBIOS] = element(default=None)
|
||||
system:Optional[SysinfoSystem] = element(default=SysinfoSystem())
|
||||
baseBoard:Optional[SysinfoBaseBoard] = element(default=None)
|
||||
chassis:Optional[SysinfoChassis] = element(default=None)
|
||||
oemStrings:Optional[SysinfoOEMStrings] = element(default=None)
|
||||
|
||||
class VCPU(BaseXmlModel, search_mode='ordered'):
|
||||
class VCPU(BaseXmlModel, search_mode='unordered'):
|
||||
class placementEnum(str, Enum):
|
||||
static = "static"
|
||||
auto = "auto"
|
||||
|
||||
placement:placementEnum = attr(default=placementEnum.auto)
|
||||
cpuset:str = attr(default=None)
|
||||
current:int = attr()
|
||||
cpuset:Optional[str] = attr(default=None)
|
||||
current:Optional[int] = attr(default=None)
|
||||
max:int = None
|
||||
|
||||
class VCPUS(BaseXmlModel, search_mode='ordered'):
|
||||
class VCPUS(BaseXmlModel, search_mode='unordered'):
|
||||
id:int = attr()
|
||||
enabled:YesNoEnum = attr(default=YesNoEnum.YES)
|
||||
hotpluggable:YesNoEnum = attr(default=YesNoEnum.YES)
|
||||
order:int = attr()
|
||||
|
||||
class CPUTune(BaseXmlModel, search_mode='ordered'):
|
||||
class CPUTune(BaseXmlModel, search_mode='unordered'):
|
||||
"""Not implemented"""
|
||||
pass
|
||||
|
||||
class MaxMemory(BaseXmlModel, search_mode='ordered'):
|
||||
class MaxMemory(BaseXmlModel, search_mode='unordered'):
|
||||
slots:int = attr()
|
||||
unit:UnitEnum = attr(default=UnitEnum.MiB)
|
||||
value:int
|
||||
|
||||
class Memory(BaseXmlModel, search_mode='ordered'):
|
||||
class Memory(BaseXmlModel, search_mode='unordered'):
|
||||
unit:UnitEnum = attr(default=UnitEnum.MiB)
|
||||
value:int
|
||||
|
||||
class CurrentMemory(BaseXmlModel, search_mode='ordered'):
|
||||
class CurrentMemory(BaseXmlModel, search_mode='unordered'):
|
||||
unit:UnitEnum = attr(default=UnitEnum.MiB)
|
||||
value:int
|
||||
|
||||
class MemoryBacking(BaseXmlModel, search_mode='ordered'):
|
||||
class MemoryBacking(BaseXmlModel, search_mode='unordered'):
|
||||
"""Not implemented"""
|
||||
pass
|
||||
|
||||
class MemTune(BaseXmlModel, search_mode='ordered'):
|
||||
class MemTune(BaseXmlModel, search_mode='unordered'):
|
||||
"""Not implemented"""
|
||||
pass
|
||||
|
||||
class NumaTuneMemory(BaseXmlModel, search_mode='ordered'):
|
||||
class NumaTuneMemory(BaseXmlModel, search_mode='unordered'):
|
||||
class modeEnum(str, Enum):
|
||||
interleave = "interleave"
|
||||
strict = "strict"
|
||||
preferred = "preferred"
|
||||
restrictive = "restrictive"
|
||||
|
||||
mode:modeEnum = attr()
|
||||
modeset:str = attr()
|
||||
mode:modeEnum = attr(default=None)
|
||||
modeset:str = attr(default=None)
|
||||
|
||||
class NumaMemnode(BaseXmlModel, search_mode='ordered'):
|
||||
class NumaMemnode(BaseXmlModel, search_mode='unordered'):
|
||||
cellid:int = attr()
|
||||
mode:NumaTuneMemory.modeEnum = attr()
|
||||
nodeset:str = attr()
|
||||
|
||||
class NumaTune(BaseXmlModel, search_mode='ordered'):
|
||||
memory:NumaTuneMemory = element()
|
||||
memnode:NumaMemnode = element()
|
||||
class NumaTune(BaseXmlModel, search_mode='unordered'):
|
||||
memory:NumaTuneMemory = element(default=None)
|
||||
memnode:NumaMemnode = element(default=None)
|
||||
|
||||
class ResourcePartition(BaseXmlModel, search_mode='ordered'):
|
||||
class ResourcePartition(BaseXmlModel, search_mode='unordered'):
|
||||
value:str
|
||||
|
||||
class Resource(BaseXmlModel, search_mode='ordered'):
|
||||
class Resource(BaseXmlModel, search_mode='unordered'):
|
||||
partition:ResourcePartition = element()
|
||||
|
||||
class CPUModel(BaseXmlModel, search_mode='ordered'):
|
||||
class CPUModel(BaseXmlModel, search_mode='unordered'):
|
||||
class fallbackEnum(str, Enum):
|
||||
force = "force"
|
||||
require = "require"
|
||||
@@ -205,14 +219,14 @@ class CPUModel(BaseXmlModel, search_mode='ordered'):
|
||||
fallback:fallbackEnum = attr()
|
||||
value:str
|
||||
|
||||
class CPUTopology(BaseXmlModel, search_mode='ordered'):
|
||||
class CPUTopology(BaseXmlModel, search_mode='unordered'):
|
||||
sockets:int = attr()
|
||||
dies:Optional[int] = attr(default=None)
|
||||
clusters:Optional[int] = attr(default=None)
|
||||
cores:int = attr()
|
||||
threads:int = attr()
|
||||
|
||||
class CPUCache(BaseXmlModel, search_mode='ordered'):
|
||||
class CPUCache(BaseXmlModel, search_mode='unordered'):
|
||||
class modeEnum(str, Enum):
|
||||
emulate = "emulate"
|
||||
passthrough = "passthrough"
|
||||
@@ -221,7 +235,7 @@ class CPUCache(BaseXmlModel, search_mode='ordered'):
|
||||
level:int = attr()
|
||||
mode:modeEnum = attr()
|
||||
|
||||
class CPUMaxphysaddr(BaseXmlModel, search_mode='ordered'):
|
||||
class CPUMaxphysaddr(BaseXmlModel, search_mode='unordered'):
|
||||
class modeEnum(str, Enum):
|
||||
emulate = "emulate"
|
||||
passthrough = "passthrough"
|
||||
@@ -229,7 +243,7 @@ class CPUMaxphysaddr(BaseXmlModel, search_mode='ordered'):
|
||||
mode:modeEnum = attr()
|
||||
bits:int = attr()
|
||||
|
||||
class CPUFeature(BaseXmlModel, search_mode='ordered'):
|
||||
class CPUFeature(BaseXmlModel, search_mode='unordered'):
|
||||
class policyEnum(str, Enum):
|
||||
force = "force"
|
||||
require = "require"
|
||||
@@ -240,14 +254,14 @@ class CPUFeature(BaseXmlModel, search_mode='ordered'):
|
||||
policy:policyEnum = attr()
|
||||
name:str = attr()
|
||||
|
||||
class CPUDistancesSibling(BaseXmlModel, search_mode='ordered'):
|
||||
class CPUDistancesSibling(BaseXmlModel, search_mode='unordered'):
|
||||
id:int = attr()
|
||||
value:int = attr()
|
||||
|
||||
class CPUDistances(BaseXmlModel, search_mode='ordered'):
|
||||
class CPUDistances(BaseXmlModel, search_mode='unordered'):
|
||||
sibling:Optional[List[CPUDistancesSibling]] = element(default=None)
|
||||
|
||||
class CPUNumaCell(BaseXmlModel, search_mode='ordered'):
|
||||
class CPUNumaCell(BaseXmlModel, search_mode='unordered'):
|
||||
class memaccessEnum(str, Enum):
|
||||
shared = "shared"
|
||||
private = "private"
|
||||
@@ -260,10 +274,10 @@ class CPUNumaCell(BaseXmlModel, search_mode='ordered'):
|
||||
memaccess:Optional[memaccessEnum] = attr(default=None)
|
||||
distances:Optional[CPUDistances] = element()
|
||||
|
||||
class CPUNuma(BaseXmlModel, search_mode='ordered'):
|
||||
class CPUNuma(BaseXmlModel, search_mode='unordered'):
|
||||
cell:Optional[List[CPUNumaCell]] = element(default=[])
|
||||
|
||||
class CPU(BaseXmlModel, search_mode='ordered'):
|
||||
class CPU(BaseXmlModel, search_mode='unordered'):
|
||||
class matchEnum(str, Enum):
|
||||
minimum = "minimum"
|
||||
exact = "exact"
|
||||
@@ -289,40 +303,40 @@ class CPU(BaseXmlModel, search_mode='ordered'):
|
||||
feature:Optional[CPUFeature] = element(default=None)
|
||||
numa:Optional[CPUNuma] = element(default=None)
|
||||
|
||||
class PMSuspendToDisk(BaseXmlModel, search_mode='ordered'):
|
||||
class PMSuspendToDisk(BaseXmlModel, search_mode='unordered'):
|
||||
enabled:YesNoEnum = attr(default=YesNoEnum.NO)
|
||||
|
||||
class PMSuspendToMem(BaseXmlModel, search_mode='ordered'):
|
||||
class PMSuspendToMem(BaseXmlModel, search_mode='unordered'):
|
||||
enabled:YesNoEnum = attr(default=YesNoEnum.NO)
|
||||
|
||||
class PM(BaseXmlModel, search_mode='ordered'):
|
||||
class PM(BaseXmlModel, search_mode='unordered'):
|
||||
suspend_to_disk:PMSuspendToDisk = element(tag="suspend-to-disk", default=PMSuspendToDisk())
|
||||
suspend_to_mem:PMSuspendToMem = element(tag="suspend-to-mem", default=PMSuspendToMem())
|
||||
|
||||
class FeaturesKVMHidden(BaseXmlModel, search_mode='ordered'):
|
||||
class FeaturesKVMHidden(BaseXmlModel, search_mode='unordered'):
|
||||
state:OnOffEnum = attr()
|
||||
|
||||
class FeaturesKVMHintDedicated(BaseXmlModel, search_mode='ordered'):
|
||||
class FeaturesKVMHintDedicated(BaseXmlModel, search_mode='unordered'):
|
||||
state:OnOffEnum = attr()
|
||||
|
||||
class FeaturesKVMPollControl(BaseXmlModel, search_mode='ordered'):
|
||||
class FeaturesKVMPollControl(BaseXmlModel, search_mode='unordered'):
|
||||
state:OnOffEnum = attr()
|
||||
|
||||
class FeaturesKVMPvIpi(BaseXmlModel, search_mode='ordered'):
|
||||
class FeaturesKVMPvIpi(BaseXmlModel, search_mode='unordered'):
|
||||
state:OnOffEnum = attr()
|
||||
|
||||
class FeaturesKVMDirtyRing(BaseXmlModel, search_mode='ordered'):
|
||||
class FeaturesKVMDirtyRing(BaseXmlModel, search_mode='unordered'):
|
||||
state:OnOffEnum = attr()
|
||||
size:int = attr()
|
||||
|
||||
class FeaturesKVM(BaseXmlModel, search_mode='ordered'):
|
||||
class FeaturesKVM(BaseXmlModel, search_mode='unordered'):
|
||||
hidden:Optional[FeaturesKVMHidden] = element(default=None)
|
||||
hint_dedicated:Optional[FeaturesKVMHintDedicated] = element(tag="hint-dedicated", default=None)
|
||||
poll_control:Optional[FeaturesKVMPollControl] = element(tag="poll-control", default=None)
|
||||
pv_ipi:Optional[FeaturesKVMPvIpi] = element(tag="pv-ipi", default=None)
|
||||
dirty_ring:Optional[FeaturesKVMDirtyRing] = element(tag="dirty-ring", default=None)
|
||||
|
||||
class Features(BaseXmlModel, search_mode='ordered'):
|
||||
class Features(BaseXmlModel, search_mode='unordered'):
|
||||
pae:str = element(default=None)
|
||||
acpi:str = element(default="")
|
||||
apic:str = element(default="")
|
||||
@@ -330,12 +344,12 @@ class Features(BaseXmlModel, search_mode='ordered'):
|
||||
privnet:str = element(default=None)
|
||||
kvm:FeaturesKVM = element(default=None)
|
||||
|
||||
class ClockTimerCatchup(BaseXmlModel, search_mode='ordered'):
|
||||
class ClockTimerCatchup(BaseXmlModel, search_mode='unordered'):
|
||||
threshold:int = attr()
|
||||
slew:int = attr()
|
||||
limit:int = attr()
|
||||
|
||||
class ClockTimer(BaseXmlModel, search_mode='ordered'):
|
||||
class ClockTimer(BaseXmlModel, search_mode='unordered'):
|
||||
class nameEnum(str, Enum):
|
||||
kvmclock = "kvmclock"
|
||||
|
||||
@@ -355,7 +369,7 @@ class ClockTimer(BaseXmlModel, search_mode='ordered'):
|
||||
track:Optional[trackEnum] = attr(default=None)
|
||||
catchup:Optional[ClockTimerCatchup] = element(default=None)
|
||||
|
||||
class Clock(BaseXmlModel, search_mode='ordered'):
|
||||
class Clock(BaseXmlModel, search_mode='unordered'):
|
||||
class offsetEnum(str, Enum):
|
||||
utc = "utc"
|
||||
localtime = "localtime"
|
||||
@@ -366,11 +380,11 @@ class Clock(BaseXmlModel, search_mode='ordered'):
|
||||
offset:Optional[offsetEnum] = attr(default=offsetEnum.utc)
|
||||
timer:Optional[ClockTimer] = element(default=None)
|
||||
|
||||
class Perf(BaseXmlModel, search_mode='ordered'):
|
||||
class Perf(BaseXmlModel, search_mode='unordered'):
|
||||
"""Not implemented"""
|
||||
pass
|
||||
|
||||
class DevicesDiskDriver(BaseXmlModel, search_mode='ordered'):
|
||||
class DevicesDiskDriver(BaseXmlModel, search_mode='unordered'):
|
||||
class nameEnum(str, Enum):
|
||||
qemu = "qemu"
|
||||
|
||||
@@ -385,22 +399,22 @@ class DevicesDiskDriver(BaseXmlModel, search_mode='ordered'):
|
||||
type:typeEnum = attr(default=typeEnum.raw)
|
||||
discard:discardEnum = attr(default=discardEnum.unmap)
|
||||
|
||||
class DevicesDiskAuthSecret(BaseXmlModel, search_mode='ordered'):
|
||||
class DevicesDiskAuthSecret(BaseXmlModel, search_mode='unordered'):
|
||||
class typeEnum(str, Enum):
|
||||
ceph = "ceph"
|
||||
|
||||
type:typeEnum = attr(default=typeEnum.ceph)
|
||||
uuid:UUID4 = attr(default=None)
|
||||
|
||||
class DevicesDiskAuth(BaseXmlModel, search_mode='ordered'):
|
||||
class DevicesDiskAuth(BaseXmlModel, search_mode='unordered'):
|
||||
username:str = attr()
|
||||
secret:DevicesDiskAuthSecret = element(default=DevicesDiskAuthSecret())
|
||||
|
||||
class DevicesDiskSourceHost(BaseXmlModel, search_mode='ordered'):
|
||||
class DevicesDiskSourceHost(BaseXmlModel, search_mode='unordered'):
|
||||
name:str = attr()
|
||||
port:int = attr()
|
||||
|
||||
class DevicesDiskSource(BaseXmlModel, search_mode='ordered'):
|
||||
class DevicesDiskSource(BaseXmlModel, search_mode='unordered'):
|
||||
class protocolEnum(str, Enum):
|
||||
rbd = "rbd"
|
||||
http = "http"
|
||||
@@ -412,7 +426,7 @@ class DevicesDiskSource(BaseXmlModel, search_mode='ordered'):
|
||||
name:str = attr()
|
||||
host:List[DevicesDiskSourceHost] = element(default=None)
|
||||
|
||||
class DevicesDiskTarget(BaseXmlModel, search_mode='ordered'):
|
||||
class DevicesDiskTarget(BaseXmlModel, search_mode='unordered'):
|
||||
class busEnum(str, Enum):
|
||||
virtio = "virtio"
|
||||
scsi = "scsi"
|
||||
@@ -421,7 +435,7 @@ class DevicesDiskTarget(BaseXmlModel, search_mode='ordered'):
|
||||
dev:str = attr()
|
||||
bus:busEnum = attr(default=busEnum.virtio)
|
||||
|
||||
class DevicesDisk(BaseXmlModel, search_mode='ordered'):
|
||||
class DevicesDisk(BaseXmlModel, search_mode='unordered'):
|
||||
"""
|
||||
Disk: CEPH Storage only
|
||||
CDROM: Network Only
|
||||
@@ -442,32 +456,32 @@ class DevicesDisk(BaseXmlModel, search_mode='ordered'):
|
||||
target:DevicesDiskTarget = element(default=None)
|
||||
serial:UUID4 = element(default_factory=uuid4)
|
||||
|
||||
class DevicesInterfaceMAC(BaseXmlModel, search_mode='ordered'):
|
||||
class DevicesInterfaceMAC(BaseXmlModel, search_mode='unordered'):
|
||||
address:Optional[str] = attr(default=None)
|
||||
|
||||
class DevicesInterfaceSource(BaseXmlModel, search_mode='ordered'):
|
||||
class DevicesInterfaceSource(BaseXmlModel, search_mode='unordered'):
|
||||
bridge:str = attr(default="br-int")
|
||||
|
||||
class DevicesInterfaceVirtualPortParameters(BaseXmlModel, search_mode='ordered'):
|
||||
class DevicesInterfaceVirtualPortParameters(BaseXmlModel, search_mode='unordered'):
|
||||
interfaceid:UUID4 = attr(default=None)
|
||||
|
||||
class DevicesInterfaceVirtualport(BaseXmlModel, search_mode='ordered'):
|
||||
class DevicesInterfaceVirtualport(BaseXmlModel, search_mode='unordered'):
|
||||
class typeEnum(str, Enum):
|
||||
openvswitch = "openvswitch"
|
||||
|
||||
type:typeEnum = attr(default=typeEnum.openvswitch)
|
||||
parameters:DevicesInterfaceVirtualPortParameters = element(default=DevicesInterfaceVirtualPortParameters())
|
||||
|
||||
class DevicesInterfaceModel(BaseXmlModel, search_mode='ordered'):
|
||||
class DevicesInterfaceModel(BaseXmlModel, search_mode='unordered'):
|
||||
class typeEnum(str, Enum):
|
||||
virtio = "virtio"
|
||||
|
||||
type:typeEnum = attr(default=typeEnum.virtio)
|
||||
|
||||
class DevicesInterfaceMTU(BaseXmlModel, search_mode='ordered'):
|
||||
class DevicesInterfaceMTU(BaseXmlModel, search_mode='unordered'):
|
||||
mtu:int = attr(default=1500)
|
||||
|
||||
class DevicesInterface(BaseXmlModel, search_mode='ordered'):
|
||||
class DevicesInterface(BaseXmlModel, search_mode='unordered'):
|
||||
"""Openvswitch Only"""
|
||||
|
||||
class typeEnum(str, Enum):
|
||||
@@ -480,14 +494,14 @@ class DevicesInterface(BaseXmlModel, search_mode='ordered'):
|
||||
model:DevicesInterfaceModel = element(default=DevicesInterfaceModel())
|
||||
mtu:DevicesInterfaceMTU = element(default=DevicesInterfaceMTU())
|
||||
|
||||
class DevicesChannelSource(BaseXmlModel, search_mode='ordered'):
|
||||
class DevicesChannelSource(BaseXmlModel, search_mode='unordered'):
|
||||
class modeEnum(str, Enum):
|
||||
bind = "bind"
|
||||
|
||||
mode:modeEnum = attr(default=modeEnum.bind)
|
||||
path:str = attr(default=None)
|
||||
|
||||
class DevicesChannelTarget(BaseXmlModel, search_mode='ordered'):
|
||||
class DevicesChannelTarget(BaseXmlModel, search_mode='unordered'):
|
||||
class typeEnum(str, Enum):
|
||||
virtio = "virtio"
|
||||
|
||||
@@ -502,7 +516,7 @@ class DevicesChannel(BaseXmlModel):
|
||||
source:DevicesChannelSource = element(default=DevicesChannelSource())
|
||||
target:DevicesChannelTarget = element(default=DevicesChannelTarget())
|
||||
|
||||
class Graphics(BaseXmlModel, search_mode='ordered'):
|
||||
class Graphics(BaseXmlModel, search_mode='unordered'):
|
||||
class typeEnum(str, Enum):
|
||||
vnc = "vnc"
|
||||
|
||||
@@ -548,10 +562,10 @@ class Graphics(BaseXmlModel, search_mode='ordered'):
|
||||
keymap:keymapEnum = attr(default=keymapEnum.en_us)
|
||||
powerControl:YesNoEnum = attr(default=YesNoEnum.YES)
|
||||
|
||||
class Audio(BaseXmlModel, search_mode='ordered'):
|
||||
class Audio(BaseXmlModel, search_mode='unordered'):
|
||||
pass
|
||||
|
||||
class VideoModel(BaseXmlModel, search_mode='ordered'):
|
||||
class VideoModel(BaseXmlModel, search_mode='unordered'):
|
||||
class typeEnum(str, Enum):
|
||||
vga = "vga"
|
||||
cirrus = "cirrus"
|
||||
@@ -561,10 +575,10 @@ class VideoModel(BaseXmlModel, search_mode='ordered'):
|
||||
vram:int = attr(default=16384)
|
||||
primary:YesNoEnum = attr(default=YesNoEnum.YES)
|
||||
|
||||
class Video(BaseXmlModel, search_mode='ordered'):
|
||||
class Video(BaseXmlModel, search_mode='unordered'):
|
||||
model:VideoModel = element()
|
||||
|
||||
class Watchdog(BaseXmlModel, search_mode='ordered'):
|
||||
class Watchdog(BaseXmlModel, search_mode='unordered'):
|
||||
class modelEnum(str, Enum):
|
||||
itco = "itco"
|
||||
|
||||
@@ -584,7 +598,7 @@ class Watchdog(BaseXmlModel, search_mode='ordered'):
|
||||
class TPMBackendEncryption(BaseXmlModel):
|
||||
secret:UUID4 = attr()
|
||||
|
||||
class TPMBackend(BaseXmlModel, search_mode='ordered'):
|
||||
class TPMBackend(BaseXmlModel, search_mode='unordered'):
|
||||
class typeEnum(str, Enum):
|
||||
emulator = "emulator"
|
||||
|
||||
@@ -596,7 +610,7 @@ class TPMBackend(BaseXmlModel, search_mode='ordered'):
|
||||
version:versionEnum = attr(default=versionEnum.v20)
|
||||
encryption:Optional[TPMBackendEncryption] = element(default=None)
|
||||
|
||||
class TPM(BaseXmlModel, search_mode='ordered'):
|
||||
class TPM(BaseXmlModel, search_mode='unordered'):
|
||||
class modelEnum(str, Enum):
|
||||
tpm_tis = "tpm-tis"
|
||||
tpm_crb = "tpm-crb"
|
||||
@@ -604,7 +618,7 @@ class TPM(BaseXmlModel, search_mode='ordered'):
|
||||
model:modelEnum = attr(default=modelEnum.tpm_tis)
|
||||
backend:TPMBackend = element(default=TPMBackend())
|
||||
|
||||
class Devices(BaseXmlModel, search_mode='ordered'):
|
||||
class Devices(BaseXmlModel, search_mode='unordered'):
|
||||
emulator:str = element(default="/usr/libexec/qemu-kvm")
|
||||
disk:Optional[List[DevicesDisk]] = element(default=[])
|
||||
interface:Optional[List[DevicesInterface]] = element(default=[])
|
||||
@@ -615,7 +629,10 @@ class Devices(BaseXmlModel, search_mode='ordered'):
|
||||
watchdog:Optional[Watchdog] = element(default=None)
|
||||
tpm:Optional[TPM] = element(default=None)
|
||||
|
||||
class Dom(BaseXmlModel, tag='domain', search_mode='ordered'):
|
||||
class Dom(BaseXmlModel, tag='domain', search_mode='unordered'):
|
||||
class typeEnum(str, Enum):
|
||||
kvm = "kvm"
|
||||
|
||||
class on_poweroffEnum(str, Enum):
|
||||
destroy = "destroy"
|
||||
restart = "restart"
|
||||
@@ -636,9 +653,12 @@ class Dom(BaseXmlModel, tag='domain', search_mode='ordered'):
|
||||
pause = "pause"
|
||||
ignore = "ignore"
|
||||
|
||||
type:typeEnum = attr(default=typeEnum.kvm)
|
||||
|
||||
# General metadata
|
||||
uuid:Optional[UUID4] = element(default=None)
|
||||
genid:Optional[UUID4] = element(default=None)
|
||||
name:Optional[str] = element(default=None)
|
||||
title:Optional[str] = element(default=None)
|
||||
description:Optional[str] = element(default=None)
|
||||
metadata:Optional[Metadata] = element(default=None)
|
||||
@@ -659,12 +679,12 @@ class Dom(BaseXmlModel, tag='domain', search_mode='ordered'):
|
||||
# Resource patitioning
|
||||
resource:Optional[Resource] = element(default=None)
|
||||
|
||||
# BIOS BootLoader
|
||||
os:OS = element(default=OS())
|
||||
|
||||
# SMBIOS System Information
|
||||
sysinfo:Sysinfo = element(default=Sysinfo())
|
||||
|
||||
# BIOS BootLoader
|
||||
os:OS = element(default=OS())
|
||||
|
||||
# CPU model and topology
|
||||
cpu:CPU = element(default=CPU())
|
||||
|
||||
|
97
deevirt_schema/libvirt/dom/events.py
Normal file
97
deevirt_schema/libvirt/dom/events.py
Normal file
@@ -0,0 +1,97 @@
|
||||
from enum import Enum
|
||||
from typing import List, Optional
|
||||
from uuid import UUID
|
||||
from pydantic import UUID4, BaseModel, Field
|
||||
|
||||
class HostAlive(BaseModel):
|
||||
class Status(Enum):
|
||||
UP = 1
|
||||
DOWN = 2
|
||||
|
||||
status:Status = Field(default=Status.DOWN)
|
||||
|
||||
class LifeCycle(BaseModel):
|
||||
|
||||
class EventType(Enum):
|
||||
DEFINED_UPDATED = 0
|
||||
DEFINED_RENAMED = 1
|
||||
DEFINED_FROM_SNAPSHOT = 2
|
||||
DEFINED_LAST = 3
|
||||
|
||||
UNDEFINED_REMOVED = 10
|
||||
UNDEFINED_RENAMED = 11
|
||||
UNDEFINED_LAST = 12
|
||||
|
||||
STARTED_BOOTED = 20
|
||||
STARTED_MIGRATED = 21
|
||||
STARTED_RESTORED = 22
|
||||
STARTED_FROM_SNAPSHOT = 23
|
||||
STARTED_WAKEUP = 24
|
||||
STARTED_LAST = 25
|
||||
|
||||
SUSPENDED_PAUSED = 30
|
||||
SUSPENDED_MIGRATED = 31
|
||||
SUSPENDED_IOERROR = 32
|
||||
SUSPENDED_WATCHDOG = 33
|
||||
SUSPENDED_RESTORED = 34
|
||||
SUSPENDED_FROM_SNAPSHOT = 35
|
||||
SUSPENDED_API_ERROR = 36
|
||||
SUSPENDED_POSTCOPY = 37
|
||||
SUSPENDED_POSTCOPY_FAILED = 38
|
||||
SUSPENDED_LAST = 39
|
||||
|
||||
RESUMED_UNPAUSED = 40
|
||||
RESUMED_MIGRATED = 41
|
||||
RESUMED_FROM_SNAPSHOT = 42
|
||||
RESUMED_POSTCOPY = 43
|
||||
RESUMED_POSTCOPY_FAILED = 44
|
||||
RESUMED_LAST = 45
|
||||
|
||||
STOPPED_SHUTDOWN = 50
|
||||
STOPPED_DESTROYED = 51
|
||||
STOPPED_CRASHED = 52
|
||||
STOPPED_MIGRATED = 53
|
||||
STOPPED_SAVED = 54
|
||||
STOPPED_FAILED = 55
|
||||
STOPPED_FROM_SNAPSHOT = 56
|
||||
STOPPED_LAST = 57
|
||||
|
||||
SHUTDOWN_FINISHED = 60
|
||||
SHUTDOWN_GUEST = 61
|
||||
SHUTDOWN_HOST = 62
|
||||
SHUTDOWN_LAST = 63
|
||||
|
||||
PMSUSPENDED_MEMORY = 70
|
||||
PMSUSPENDED_DISK = 71
|
||||
PMSUSPENDED_LAST = 72
|
||||
|
||||
CRASHED_PANICKED = 80
|
||||
CRASHED_CRASHLOADED = 81
|
||||
CRASHED_LAST = 82
|
||||
|
||||
LAST = 90
|
||||
|
||||
REBOOT = 100
|
||||
|
||||
node_id:UUID4 = Field()
|
||||
company_id:UUID4 = Field()
|
||||
datacenter_id:UUID4 = Field()
|
||||
vm_id:UUID = Field()
|
||||
action:EventType = Field()
|
||||
config:Optional[str] = Field(default=None)
|
||||
|
||||
class GraphicsAddr(BaseModel):
|
||||
family:int = Field()
|
||||
node:str = Field()
|
||||
service:int = Field()
|
||||
|
||||
class Graphics(BaseModel):
|
||||
node_id:UUID4 = Field()
|
||||
company_id:UUID4 = Field()
|
||||
datacenter_id:UUID4 = Field()
|
||||
vm_id:UUID = Field()
|
||||
phase:int = Field()
|
||||
localAddr:GraphicsAddr = Field()
|
||||
remoteAddr:GraphicsAddr = Field()
|
||||
authScheme:Optional[str] = Field(default=None)
|
||||
subject:Optional[List] = Field(default=None)
|
62
deevirt_schema/libvirt/dom/stats.py
Normal file
62
deevirt_schema/libvirt/dom/stats.py
Normal file
@@ -0,0 +1,62 @@
|
||||
import datetime
|
||||
from typing import List, Optional
|
||||
from pydantic import UUID4, BaseModel, ConfigDict, Field
|
||||
from time import time_ns
|
||||
|
||||
class CPU(BaseModel):
|
||||
model_config = ConfigDict()
|
||||
time:int = Field()
|
||||
user:int = Field()
|
||||
system:int = Field()
|
||||
count:int = Field()
|
||||
|
||||
class DiskFlows(BaseModel):
|
||||
bytes:int = Field()
|
||||
reqs:int = Field()
|
||||
times:int = Field()
|
||||
|
||||
class Disk(BaseModel):
|
||||
model_config = ConfigDict()
|
||||
uuid:UUID4 = Field()
|
||||
name:str = Field()
|
||||
read:DiskFlows = Field()
|
||||
write:DiskFlows = Field()
|
||||
|
||||
class MemorySwap(BaseModel):
|
||||
swp_in:Optional[int] = Field(default=None, serialization_alias="in")
|
||||
swp_out:Optional[int] = Field(default=None, serialization_alias="out")
|
||||
|
||||
class Memory(BaseModel):
|
||||
model_config = ConfigDict()
|
||||
current:int = Field()
|
||||
maximum:int = Field()
|
||||
disk_caches:Optional[int] = Field(default=None)
|
||||
rss:int = Field()
|
||||
swap:MemorySwap = Field()
|
||||
unused:Optional[int] = Field(default=None)
|
||||
usable:Optional[int] = Field(default=None)
|
||||
|
||||
class InterfaceFlows(BaseModel):
|
||||
bytes:int = Field()
|
||||
drop:int = Field()
|
||||
errs:int = Field()
|
||||
pkts:int = Field()
|
||||
|
||||
class Interface(BaseModel):
|
||||
model_config = ConfigDict()
|
||||
|
||||
uuid:UUID4 = Field()
|
||||
name:str = Field()
|
||||
rx:InterfaceFlows = Field()
|
||||
tx:InterfaceFlows = Field()
|
||||
|
||||
class Stats(BaseModel):
|
||||
current_time:int = Field(default_factory=time_ns)
|
||||
interval:int = Field()
|
||||
company_id:UUID4 = Field()
|
||||
datacenter_id:UUID4 = Field()
|
||||
vm_id:UUID4 = Field()
|
||||
cpu:CPU = Field()
|
||||
memory:Memory = Field()
|
||||
network:List[Interface] = Field()
|
||||
disk:List[Disk] = Field()
|
@@ -1,13 +0,0 @@
|
||||
from time import time_ns
|
||||
from typing import List
|
||||
from uuid import UUID
|
||||
from pydantic import BaseModel, Field
|
||||
|
||||
from . import cpu, memory, disk, network
|
||||
|
||||
class Stats(BaseModel):
|
||||
domain:UUID
|
||||
cpu:cpu.CPU
|
||||
memory:memory.Memory
|
||||
network:List[network.Interface]
|
||||
disk:List[disk.Disk]
|
@@ -1,9 +0,0 @@
|
||||
from pydantic import BaseModel, ConfigDict, Field
|
||||
from time import time_ns
|
||||
|
||||
class CPU(BaseModel):
|
||||
model_config = ConfigDict()
|
||||
time:int = Field(default_factory=time_ns)
|
||||
user:int = Field()
|
||||
system:int = Field()
|
||||
count:int = Field()
|
@@ -1,16 +0,0 @@
|
||||
|
||||
from pydantic import UUID4, BaseModel, ConfigDict, Field
|
||||
from time import time_ns
|
||||
|
||||
class DiskFlows(BaseModel):
|
||||
bytes:int = Field()
|
||||
reqs:int = Field()
|
||||
times:int = Field()
|
||||
|
||||
class Disk(BaseModel):
|
||||
model_config = ConfigDict()
|
||||
time:int = Field(default_factory=time_ns)
|
||||
uuid:UUID4 = Field()
|
||||
name:str = Field()
|
||||
read:DiskFlows = Field()
|
||||
write:DiskFlows = Field()
|
@@ -1,18 +0,0 @@
|
||||
from typing import Optional
|
||||
from pydantic import BaseModel, ConfigDict, Field
|
||||
|
||||
class MemorySwap(BaseModel):
|
||||
swp_in:int = Field(serialization_alias="in")
|
||||
swp_out:Optional[int] = Field(default=None, serialization_alias="out")
|
||||
|
||||
class Memory(BaseModel):
|
||||
model_config = ConfigDict()
|
||||
time:int = Field()
|
||||
available:Optional[int] = Field(default=None)
|
||||
current:int = Field()
|
||||
maximum:int = Field()
|
||||
disk_caches:Optional[int] = Field(default=None)
|
||||
rss:int = Field()
|
||||
swap:MemorySwap = Field()
|
||||
unused:Optional[int] = Field(default=None)
|
||||
usable:Optional[int] = Field(default=None)
|
@@ -1,18 +0,0 @@
|
||||
from typing import Any, List
|
||||
from pydantic import UUID4, BaseModel, ConfigDict, Field
|
||||
from time import time_ns
|
||||
|
||||
class InterfaceFlows(BaseModel):
|
||||
bytes:int = Field()
|
||||
drop:int = Field()
|
||||
errs:int = Field()
|
||||
pkts:int = Field()
|
||||
|
||||
class Interface(BaseModel):
|
||||
model_config = ConfigDict()
|
||||
|
||||
uuid:UUID4 = Field()
|
||||
time:int = Field(default_factory=time_ns)
|
||||
name:str = Field()
|
||||
rx:InterfaceFlows = Field()
|
||||
tx:InterfaceFlows = Field()
|
Reference in New Issue
Block a user