Compare commits

...

52 Commits

Author SHA1 Message Date
afb7a6eb92 cpuset is optional 2025-02-03 10:16:49 +01:00
2e804ee9ca update to 0.1.34 2024-12-17 10:36:54 +01:00
fe00221ff8 update to 0.1.33 2024-12-02 17:07:35 +01:00
31ae5415b4 ajout de la suppression simple d'une VM 2024-12-02 17:06:14 +01:00
970a0c2dff ajout de force stop 2024-12-02 16:16:03 +01:00
7e3ab673fa update 2024-12-01 13:17:41 +01:00
d8a0ebcfe0 update 2024-12-01 13:13:27 +01:00
9f32505843 update 2024-11-28 10:56:15 +01:00
70a934f55c update storage 2024-11-27 15:17:33 +01:00
55bef3ed30 update time 2024-11-20 15:14:31 +01:00
dba29c2842 update vm.py 2024-11-12 11:40:22 +01:00
97b98db65d update vm.py 2024-11-12 11:39:59 +01:00
e9a25cd4bd update current_time 2024-11-12 11:35:18 +01:00
76d643b3ab update current_time and interval for stats 2024-11-12 11:21:55 +01:00
491fc1116c oubli du default None sur la config XML. 2024-11-11 18:25:33 +01:00
a88e7672f8 ajout de la config xml et la gestion de l'état de la VM. 2024-11-11 18:24:42 +01:00
9d7c516245 add node to events 2024-11-10 17:42:11 +01:00
c736ffe998 update version to 0.1.25 2024-11-10 17:24:08 +01:00
e23d0e4c68 update storage & events 2024-11-10 17:23:41 +01:00
1af6b86242 update MongoStats 2024-11-08 12:27:37 +01:00
3ead1d1e27 update MongoStats 2024-11-08 12:27:20 +01:00
72e0d3b30d update MongoStats 2024-11-08 12:22:03 +01:00
0bc25a7602 update MongoStats 2024-11-08 12:21:47 +01:00
c5d5413136 update MongoStats 2024-11-08 12:12:12 +01:00
d360dfc6b9 update MongoStats 2024-11-08 12:11:05 +01:00
00fe9c67c9 je veux mourir sur scene 2024-11-08 09:19:12 +01:00
60f3a78e87 update mongoStats 2024-11-08 09:15:57 +01:00
948865e23a go go 2024-11-07 17:32:52 +01:00
669c5f5208 putain de pydantic de Mer.... 2024-11-07 17:28:21 +01:00
8300dcba26 update 2024-11-07 16:35:20 +01:00
00235f0084 update 2024-11-07 14:54:15 +01:00
f87313eef9 update 2024-11-07 14:51:41 +01:00
c0a777637e update 2024-11-07 14:46:38 +01:00
046884a6df update 2024-11-07 14:44:56 +01:00
2eaa413f3c inversion sysinfo et os 2024-11-07 14:36:05 +01:00
6e4c2b3d86 add name 2024-11-07 14:24:07 +01:00
d332bfe4f1 update vm 2024-11-07 14:20:12 +01:00
49be491f25 for you my love 3 fois :-8" 2024-11-07 11:43:44 +01:00
8b4da53586 for you my love 2024-11-07 11:40:15 +01:00
aa351df9f5 for you my love 2024-11-07 11:38:59 +01:00
cfb1647039 create new class MongoStats 2024-11-07 09:35:35 +01:00
6b386d6758 update version to 1.0.6 2024-10-30 12:35:56 +01:00
327a6d9979 correction for current_time for the stats. 2024-10-30 12:35:18 +01:00
781f265ca4 update deevirt metadata 2024-10-25 11:06:45 +02:00
f6ecaf3f9a update metadata 2024-10-24 16:39:28 +02:00
5793d9411d update metadata 2024-10-24 16:32:16 +02:00
b5e8c4b927 add datacenter_id to events & stats 2024-10-24 14:18:53 +02:00
ffee09f957 correction on stats file 2024-10-24 12:52:54 +02:00
9e03deeadc create stats api 2024-10-24 12:51:59 +02:00
f0667781a4 update events and stats 2024-10-24 11:53:14 +02:00
743accd9ba add company_id 2024-10-23 18:00:20 +02:00
dad13df1ef update stats 2024-10-23 15:26:46 +02:00
16 changed files with 359 additions and 194 deletions

View File

@@ -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

View File

@@ -1,6 +1,6 @@
from typing import List, Optional from typing import List, Optional
import uuid import uuid
from pydantic import UUID4, BaseModel, ConfigDict, Field from pydantic import UUID1, UUID4, BaseModel, ConfigDict, Field
class Cluster(BaseModel): class Cluster(BaseModel):
model_config = ConfigDict(from_attributes=True) model_config = ConfigDict(from_attributes=True)
@@ -8,5 +8,5 @@ class Cluster(BaseModel):
id: UUID4 id: UUID4
name: str name: str
compute_id: UUID4 compute_id: UUID4
storage_id: UUID4 storage_id: UUID1
network_switch_id: UUID4 network_switch_id: UUID4

View File

@@ -13,7 +13,7 @@ class Datacenter(BaseModel):
model_config = ConfigDict(from_attributes=True) model_config = ConfigDict(from_attributes=True)
company_id:UUID4 company_id:UUID4
id:UUID4 id:Optional[UUID4] = Field(default_factory=uuid.uuid4)
name:str name:str
cluster_id:UUID4 cluster_id:UUID4
storage_pool_id:Optional[UUID4] storage_pool_id:Optional[UUID4]
@@ -26,4 +26,4 @@ class DatacenterCreate(BaseModel):
id:Optional[UUID4] = Field(default_factory=lambda:uuid.uuid4()) id:Optional[UUID4] = Field(default_factory=lambda:uuid.uuid4())
name:str name:str
cluster_id:UUID4 cluster_id:UUID4
storage_pool_id:Optional[UUID4] storage_pool_id:Optional[UUID4] = Field(default=None)

View File

@@ -1,5 +1,6 @@
from ipaddress import IPv4Address, IPv6Address from ipaddress import IPv4Address, IPv6Address
from typing import List, Optional from typing import List, Optional
from uuid import uuid4
from pydantic_xml import element, attr from pydantic_xml import element, attr
from pydantic import UUID4, BaseModel, ConfigDict, Field from pydantic import UUID4, BaseModel, ConfigDict, Field
from pydantic_extra_types.mac_address import MacAddress from pydantic_extra_types.mac_address import MacAddress
@@ -8,18 +9,24 @@ class lsp(BaseModel):
model_config = ConfigDict(from_attributes=True) model_config = ConfigDict(from_attributes=True)
id:UUID4 = Field() id:UUID4 = Field()
mac_addr:str = Field() mac_addr:Optional[str] = Field(default=None)
ipv4_addr:Optional[IPv4Address] = Field(default=None) ipv4_addr:Optional[IPv4Address] = Field(default=None)
ipv6_addr:Optional[IPv6Address] = 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): class ls(BaseModel):
model_config = ConfigDict(from_attributes=True) model_config = ConfigDict(from_attributes=True)
datacenter_id:Optional[UUID4] = Field(default=None)
id:UUID4 = Field() id:UUID4 = Field()
name:str = Field() name:str = Field()
network_switch_port:Optional[List[lsp]] = Field(default=[]) network_switch_port:Optional[List[lsp]] = Field(default=[])
class lspCreate(BaseModel): class lsCreate(ls):
switch_id:UUID4 = Field(default=None) id:Optional[UUID4] = Field(default_factory=uuid4)
id:Optional[UUID4]
mac_addr:Optional[str] = Field()

View 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')

View File

@@ -1,5 +1,6 @@
from typing import List, Optional 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 pydantic_xml import attr
from ..libvirt.dom import config as configDom from ..libvirt.dom import config as configDom
@@ -17,7 +18,7 @@ class StorageBlock(BaseModel):
name:str = Field() name:str = Field()
size:int = Field() size:int = Field()
vm_hard_disk:Optional[List[VMHardDisk]] = Field(default=[]) vm_hard_disk:Optional[List[VMHardDisk]] = Field(default=[])
class StoragePool(BaseModel): class StoragePool(BaseModel):
model_config = ConfigDict(from_attributes=True) model_config = ConfigDict(from_attributes=True)
@@ -28,11 +29,21 @@ class StoragePool(BaseModel):
class Storage(BaseModel): class Storage(BaseModel):
model_config = ConfigDict(from_attributes=True) model_config = ConfigDict(from_attributes=True)
id:UUID4 = Field() id:UUID1 = Field()
name:str = Field() name:str = Field()
pool: Optional[List[StoragePool]] = Field(default=[], alias='storage_pool') 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") name:str = Field(default="qemu")
type:configDom.DevicesDiskDriver.typeEnum = Field(default=configDom.DevicesDiskDriver.typeEnum.raw) 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}) order:int = Field(default=0, json_schema_extra={"hidden": True})
class DiskAttached(BaseModel): class DiskAttached(BaseModel):
order:int = Field() order:int = Field()"""
class BlockCreate(BaseModel):
size:int = Field()

View File

@@ -1,9 +1,11 @@
from enum import Enum
from typing import List, Optional from typing import List, Optional
from uuid import uuid4 from uuid import uuid4
from pydantic import UUID4, Field, ConfigDict from pydantic import UUID4, Field, ConfigDict
from pydantic import BaseModel as _BaseModel from pydantic import BaseModel as _BaseModel
from ..libvirt.dom import config as configDom from ..libvirt.dom import config as configDom
from ..libvirt.dom.events import LifeCycle
class BaseModel(_BaseModel): class BaseModel(_BaseModel):
class Config: class Config:
@@ -65,10 +67,11 @@ class DevicesDisk(BaseModel):
model_config = ConfigDict(from_attributes=True) model_config = ConfigDict(from_attributes=True)
pool_id:Optional[UUID4] = Field(default=None) pool_id:Optional[UUID4] = Field(default=None)
id:UUID4 = Field(default_factory=uuid4) id:Optional[UUID4] = Field(default_factory=uuid4)
size:int = Field() size:int = Field()
unit:configDom.UnitEnum = Field(default=configDom.UnitEnum.GiB) unit:configDom.UnitEnum = Field(default=configDom.UnitEnum.GiB)
bus:configDom.DevicesDiskTarget.busEnum = Field(default=configDom.DevicesDiskTarget.busEnum.scsi) bus:configDom.DevicesDiskTarget.busEnum = Field(default=configDom.DevicesDiskTarget.busEnum.scsi)
order:Optional[int] = Field(default=0)
class DevicesCDROMSource(BaseModel): class DevicesCDROMSource(BaseModel):
protocol:configDom.DevicesDiskSource.protocolEnum = Field(default=configDom.DevicesDiskSource.protocolEnum.https) protocol:configDom.DevicesDiskSource.protocolEnum = Field(default=configDom.DevicesDiskSource.protocolEnum.https)
@@ -159,20 +162,7 @@ class VM(BaseModel):
# Devices # Devices
devices:Devices = Field(default=Devices(), description="Matériel virtuel: Périphériques") 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""" """VM GET"""
class VMGetVCPU(VCPU): class VMGetVCPU(VCPU):
@@ -192,11 +182,38 @@ class VMGetDevices(Devices):
interfaces:Optional[List[VMGetDevicesInterface]] = Field(default=None, description="Interfaces réseau") interfaces:Optional[List[VMGetDevicesInterface]] = Field(default=None, description="Interfaces réseau")
class VMGet(VM): 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() vcpu:VMGetVCPU = Field()
gen_id:Optional[UUID4] = Field(default=None) gen_id:Optional[UUID4] = Field(default=None)
os:VMGetOS = Field(default=VMGetOS(), description="Options VM: Options de démarrage.") os:VMGetOS = Field(default=VMGetOS(), description="Options VM: Options de démarrage.")
devices:VMGetDevices = Field(default=VMGetDevices(), description="Matériel virtuel: Périphériques") 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""" """VM POST"""
class VMPost(VM): class VMPost(VM):
id:UUID4 = Field(default_factory=uuid4) id:UUID4 = Field(default_factory=uuid4)
@@ -204,7 +221,11 @@ class VMPost(VM):
"""VM DELETE""" """VM DELETE"""
class VMDelete(BaseModel): 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): class HardDisk(BaseModel):
pass pass

View File

@@ -20,19 +20,29 @@ class UnitEnum(str, Enum):
GiB = "GiB" GiB = "GiB"
TiB = "TiB" TiB = "TiB"
class Metadata(BaseXmlModel, search_mode='ordered'): class MetadataDeevirt(BaseXmlModel, tag="instance"):
# wrapped("metadata", element(default=None, ns="deevirt", nsmap={'deevirt': 'https://deevirt.com/'})) company_id:UUID4 = element()
datacenter_id:UUID4 = element()
class MetadataDeevirtNS(MetadataDeevirt, ns="deevirt", nsmap={'deevirt': 'https://deevirt.fr/schema/1.0'}):
pass 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): class archEnum(str, Enum):
x86 = "x86" x86 = "x86"
x86_64 = "x86_64" x86_64 = "x86_64"
class typeEnum(str, Enum):
hvm = "hvm"
arch:archEnum = attr(default=archEnum.x86_64) arch:archEnum = attr(default=archEnum.x86_64)
machine:Optional[str] = attr(default="q35") 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): class nameEnum(str, Enum):
enrolled_keys = "enrolled-keys" enrolled_keys = "enrolled-keys"
secure_boot = "secure-boot" secure_boot = "secure-boot"
@@ -40,10 +50,10 @@ class OSFirmwareFeature(BaseXmlModel, search_mode='ordered'):
enabled:YesNoEnum = attr(default=YesNoEnum.NO) enabled:YesNoEnum = attr(default=YesNoEnum.NO)
name:nameEnum = attr() name:nameEnum = attr()
class OSFirmware(BaseXmlModel, search_mode='ordered'): class OSFirmware(BaseXmlModel, search_mode='unordered'):
feature:Optional[List[OSFirmwareFeature]] = element(default=None) feature:Optional[List[OSFirmwareFeature]] = element(default=None)
class OSLoader(BaseXmlModel, search_mode='ordered'): class OSLoader(BaseXmlModel, search_mode='unordered'):
class typeEnum(str, Enum): class typeEnum(str, Enum):
nvram = "nvram" nvram = "nvram"
pflash = "pflash" pflash = "pflash"
@@ -53,7 +63,7 @@ class OSLoader(BaseXmlModel, search_mode='ordered'):
type:typeEnum = attr(default=typeEnum.pflash) type:typeEnum = attr(default=typeEnum.pflash)
path:Optional[str] = "" path:Optional[str] = ""
class OSBoot(BaseXmlModel, search_mode='ordered'): class OSBoot(BaseXmlModel, search_mode='unordered'):
class bootEnum(str, Enum): class bootEnum(str, Enum):
hd = "hd", hd = "hd",
network = "network", network = "network",
@@ -61,17 +71,17 @@ class OSBoot(BaseXmlModel, search_mode='ordered'):
dev:bootEnum = attr() dev:bootEnum = attr()
class OSBootMenu(BaseXmlModel, search_mode='ordered'): class OSBootMenu(BaseXmlModel, search_mode='unordered'):
enable:YesNoEnum = attr(default=YesNoEnum.NO) enable:YesNoEnum = attr(default=YesNoEnum.NO)
timeout:int = attr(default=0) timeout:int = attr(default=0)
class OSSmbios(BaseXmlModel, search_mode='ordered'): class OSSmbios(BaseXmlModel, search_mode='unordered'):
class modeEnum(str, Enum): class modeEnum(str, Enum):
sysinfo = "sysinfo" sysinfo = "sysinfo"
mode:modeEnum = attr(default=modeEnum.sysinfo) mode:modeEnum = attr(default=modeEnum.sysinfo)
class OS(BaseXmlModel, search_mode='ordered'): class OS(BaseXmlModel, search_mode='unordered'):
class firmwareEnum(str, Enum): class firmwareEnum(str, Enum):
bios = "bios" bios = "bios"
efi = "efi" efi = "efi"
@@ -85,14 +95,14 @@ class OS(BaseXmlModel, search_mode='ordered'):
bootmenu:Optional[OSBootMenu] = element(default=None) bootmenu:Optional[OSBootMenu] = element(default=None)
smbios:OSSmbios = element(default=OSSmbios()) smbios:OSSmbios = element(default=OSSmbios())
class SysinfoEntry(BaseXmlModel, search_mode='ordered'): class SysinfoEntry(BaseXmlModel, search_mode='unordered'):
name:str = attr() name:str = attr()
value:str value:str
class SysinfoBIOS(BaseXmlModel, search_mode='ordered'): class SysinfoBIOS(BaseXmlModel, search_mode='unordered'):
entry:SysinfoEntry = element(default=None) entry:SysinfoEntry = element(default=None)
class SysinfoSystem(BaseXmlModel, search_mode='ordered'): class SysinfoSystem(BaseXmlModel, search_mode='unordered'):
entry:List[SysinfoEntry] = element(default=[ entry:List[SysinfoEntry] = element(default=[
SysinfoEntry( SysinfoEntry(
name="manufacturer", 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) entry:List[SysinfoEntry] = element(default=None)
class SysinfoChassis(BaseXmlModel, search_mode='ordered'): class SysinfoChassis(BaseXmlModel, search_mode='unordered'):
entry:List[SysinfoEntry] = element(default=None) entry:List[SysinfoEntry] = element(default=None)
class SysinfoOEMStrings(BaseXmlModel, search_mode='ordered'): class SysinfoOEMStrings(BaseXmlModel, search_mode='unordered'):
entry:List[SysinfoEntry] = element(default=None) 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) bios:Optional[SysinfoBIOS] = element(default=None)
system:Optional[SysinfoSystem] = element(default=SysinfoSystem()) system:Optional[SysinfoSystem] = element(default=SysinfoSystem())
baseBoard:Optional[SysinfoBaseBoard] = element(default=None) baseBoard:Optional[SysinfoBaseBoard] = element(default=None)
chassis:Optional[SysinfoChassis] = element(default=None) chassis:Optional[SysinfoChassis] = element(default=None)
oemStrings:Optional[SysinfoOEMStrings] = 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): class placementEnum(str, Enum):
static = "static" static = "static"
auto = "auto" auto = "auto"
placement:placementEnum = attr(default=placementEnum.auto) placement:placementEnum = attr(default=placementEnum.auto)
cpuset:str = attr(default=None) cpuset:Optional[str] = attr(default=None)
current:int = attr() current:Optional[int] = attr(default=None)
max:int = None max:int = None
class VCPUS(BaseXmlModel, search_mode='ordered'): class VCPUS(BaseXmlModel, search_mode='unordered'):
id:int = attr() id:int = attr()
enabled:YesNoEnum = attr(default=YesNoEnum.YES) enabled:YesNoEnum = attr(default=YesNoEnum.YES)
hotpluggable:YesNoEnum = attr(default=YesNoEnum.YES) hotpluggable:YesNoEnum = attr(default=YesNoEnum.YES)
order:int = attr() order:int = attr()
class CPUTune(BaseXmlModel, search_mode='ordered'): class CPUTune(BaseXmlModel, search_mode='unordered'):
"""Not implemented""" """Not implemented"""
pass pass
class MaxMemory(BaseXmlModel, search_mode='ordered'): class MaxMemory(BaseXmlModel, search_mode='unordered'):
slots:int = attr() slots:int = attr()
unit:UnitEnum = attr(default=UnitEnum.MiB) unit:UnitEnum = attr(default=UnitEnum.MiB)
value:int value:int
class Memory(BaseXmlModel, search_mode='ordered'): class Memory(BaseXmlModel, search_mode='unordered'):
unit:UnitEnum = attr(default=UnitEnum.MiB) unit:UnitEnum = attr(default=UnitEnum.MiB)
value:int value:int
class CurrentMemory(BaseXmlModel, search_mode='ordered'): class CurrentMemory(BaseXmlModel, search_mode='unordered'):
unit:UnitEnum = attr(default=UnitEnum.MiB) unit:UnitEnum = attr(default=UnitEnum.MiB)
value:int value:int
class MemoryBacking(BaseXmlModel, search_mode='ordered'): class MemoryBacking(BaseXmlModel, search_mode='unordered'):
"""Not implemented""" """Not implemented"""
pass pass
class MemTune(BaseXmlModel, search_mode='ordered'): class MemTune(BaseXmlModel, search_mode='unordered'):
"""Not implemented""" """Not implemented"""
pass pass
class NumaTuneMemory(BaseXmlModel, search_mode='ordered'): class NumaTuneMemory(BaseXmlModel, search_mode='unordered'):
class modeEnum(str, Enum): class modeEnum(str, Enum):
interleave = "interleave" interleave = "interleave"
strict = "strict" strict = "strict"
preferred = "preferred" preferred = "preferred"
restrictive = "restrictive" restrictive = "restrictive"
mode:modeEnum = attr() mode:modeEnum = attr(default=None)
modeset:str = attr() modeset:str = attr(default=None)
class NumaMemnode(BaseXmlModel, search_mode='ordered'): class NumaMemnode(BaseXmlModel, search_mode='unordered'):
cellid:int = attr() cellid:int = attr()
mode:NumaTuneMemory.modeEnum = attr() mode:NumaTuneMemory.modeEnum = attr()
nodeset:str = attr() nodeset:str = attr()
class NumaTune(BaseXmlModel, search_mode='ordered'): class NumaTune(BaseXmlModel, search_mode='unordered'):
memory:NumaTuneMemory = element() memory:NumaTuneMemory = element(default=None)
memnode:NumaMemnode = element() memnode:NumaMemnode = element(default=None)
class ResourcePartition(BaseXmlModel, search_mode='ordered'): class ResourcePartition(BaseXmlModel, search_mode='unordered'):
value:str value:str
class Resource(BaseXmlModel, search_mode='ordered'): class Resource(BaseXmlModel, search_mode='unordered'):
partition:ResourcePartition = element() partition:ResourcePartition = element()
class CPUModel(BaseXmlModel, search_mode='ordered'): class CPUModel(BaseXmlModel, search_mode='unordered'):
class fallbackEnum(str, Enum): class fallbackEnum(str, Enum):
force = "force" force = "force"
require = "require" require = "require"
@@ -205,14 +219,14 @@ class CPUModel(BaseXmlModel, search_mode='ordered'):
fallback:fallbackEnum = attr() fallback:fallbackEnum = attr()
value:str value:str
class CPUTopology(BaseXmlModel, search_mode='ordered'): class CPUTopology(BaseXmlModel, search_mode='unordered'):
sockets:int = attr() sockets:int = attr()
dies:Optional[int] = attr(default=None) dies:Optional[int] = attr(default=None)
clusters:Optional[int] = attr(default=None) clusters:Optional[int] = attr(default=None)
cores:int = attr() cores:int = attr()
threads:int = attr() threads:int = attr()
class CPUCache(BaseXmlModel, search_mode='ordered'): class CPUCache(BaseXmlModel, search_mode='unordered'):
class modeEnum(str, Enum): class modeEnum(str, Enum):
emulate = "emulate" emulate = "emulate"
passthrough = "passthrough" passthrough = "passthrough"
@@ -221,7 +235,7 @@ class CPUCache(BaseXmlModel, search_mode='ordered'):
level:int = attr() level:int = attr()
mode:modeEnum = attr() mode:modeEnum = attr()
class CPUMaxphysaddr(BaseXmlModel, search_mode='ordered'): class CPUMaxphysaddr(BaseXmlModel, search_mode='unordered'):
class modeEnum(str, Enum): class modeEnum(str, Enum):
emulate = "emulate" emulate = "emulate"
passthrough = "passthrough" passthrough = "passthrough"
@@ -229,7 +243,7 @@ class CPUMaxphysaddr(BaseXmlModel, search_mode='ordered'):
mode:modeEnum = attr() mode:modeEnum = attr()
bits:int = attr() bits:int = attr()
class CPUFeature(BaseXmlModel, search_mode='ordered'): class CPUFeature(BaseXmlModel, search_mode='unordered'):
class policyEnum(str, Enum): class policyEnum(str, Enum):
force = "force" force = "force"
require = "require" require = "require"
@@ -240,14 +254,14 @@ class CPUFeature(BaseXmlModel, search_mode='ordered'):
policy:policyEnum = attr() policy:policyEnum = attr()
name:str = attr() name:str = attr()
class CPUDistancesSibling(BaseXmlModel, search_mode='ordered'): class CPUDistancesSibling(BaseXmlModel, search_mode='unordered'):
id:int = attr() id:int = attr()
value:int = attr() value:int = attr()
class CPUDistances(BaseXmlModel, search_mode='ordered'): class CPUDistances(BaseXmlModel, search_mode='unordered'):
sibling:Optional[List[CPUDistancesSibling]] = element(default=None) sibling:Optional[List[CPUDistancesSibling]] = element(default=None)
class CPUNumaCell(BaseXmlModel, search_mode='ordered'): class CPUNumaCell(BaseXmlModel, search_mode='unordered'):
class memaccessEnum(str, Enum): class memaccessEnum(str, Enum):
shared = "shared" shared = "shared"
private = "private" private = "private"
@@ -260,10 +274,10 @@ class CPUNumaCell(BaseXmlModel, search_mode='ordered'):
memaccess:Optional[memaccessEnum] = attr(default=None) memaccess:Optional[memaccessEnum] = attr(default=None)
distances:Optional[CPUDistances] = element() distances:Optional[CPUDistances] = element()
class CPUNuma(BaseXmlModel, search_mode='ordered'): class CPUNuma(BaseXmlModel, search_mode='unordered'):
cell:Optional[List[CPUNumaCell]] = element(default=[]) cell:Optional[List[CPUNumaCell]] = element(default=[])
class CPU(BaseXmlModel, search_mode='ordered'): class CPU(BaseXmlModel, search_mode='unordered'):
class matchEnum(str, Enum): class matchEnum(str, Enum):
minimum = "minimum" minimum = "minimum"
exact = "exact" exact = "exact"
@@ -289,40 +303,40 @@ class CPU(BaseXmlModel, search_mode='ordered'):
feature:Optional[CPUFeature] = element(default=None) feature:Optional[CPUFeature] = element(default=None)
numa:Optional[CPUNuma] = 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) enabled:YesNoEnum = attr(default=YesNoEnum.NO)
class PMSuspendToMem(BaseXmlModel, search_mode='ordered'): class PMSuspendToMem(BaseXmlModel, search_mode='unordered'):
enabled:YesNoEnum = attr(default=YesNoEnum.NO) 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_disk:PMSuspendToDisk = element(tag="suspend-to-disk", default=PMSuspendToDisk())
suspend_to_mem:PMSuspendToMem = element(tag="suspend-to-mem", default=PMSuspendToMem()) 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() state:OnOffEnum = attr()
class FeaturesKVMHintDedicated(BaseXmlModel, search_mode='ordered'): class FeaturesKVMHintDedicated(BaseXmlModel, search_mode='unordered'):
state:OnOffEnum = attr() state:OnOffEnum = attr()
class FeaturesKVMPollControl(BaseXmlModel, search_mode='ordered'): class FeaturesKVMPollControl(BaseXmlModel, search_mode='unordered'):
state:OnOffEnum = attr() state:OnOffEnum = attr()
class FeaturesKVMPvIpi(BaseXmlModel, search_mode='ordered'): class FeaturesKVMPvIpi(BaseXmlModel, search_mode='unordered'):
state:OnOffEnum = attr() state:OnOffEnum = attr()
class FeaturesKVMDirtyRing(BaseXmlModel, search_mode='ordered'): class FeaturesKVMDirtyRing(BaseXmlModel, search_mode='unordered'):
state:OnOffEnum = attr() state:OnOffEnum = attr()
size:int = attr() size:int = attr()
class FeaturesKVM(BaseXmlModel, search_mode='ordered'): class FeaturesKVM(BaseXmlModel, search_mode='unordered'):
hidden:Optional[FeaturesKVMHidden] = element(default=None) hidden:Optional[FeaturesKVMHidden] = element(default=None)
hint_dedicated:Optional[FeaturesKVMHintDedicated] = element(tag="hint-dedicated", default=None) hint_dedicated:Optional[FeaturesKVMHintDedicated] = element(tag="hint-dedicated", default=None)
poll_control:Optional[FeaturesKVMPollControl] = element(tag="poll-control", default=None) poll_control:Optional[FeaturesKVMPollControl] = element(tag="poll-control", default=None)
pv_ipi:Optional[FeaturesKVMPvIpi] = element(tag="pv-ipi", default=None) pv_ipi:Optional[FeaturesKVMPvIpi] = element(tag="pv-ipi", default=None)
dirty_ring:Optional[FeaturesKVMDirtyRing] = element(tag="dirty-ring", 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) pae:str = element(default=None)
acpi:str = element(default="") acpi:str = element(default="")
apic:str = element(default="") apic:str = element(default="")
@@ -330,12 +344,12 @@ class Features(BaseXmlModel, search_mode='ordered'):
privnet:str = element(default=None) privnet:str = element(default=None)
kvm:FeaturesKVM = element(default=None) kvm:FeaturesKVM = element(default=None)
class ClockTimerCatchup(BaseXmlModel, search_mode='ordered'): class ClockTimerCatchup(BaseXmlModel, search_mode='unordered'):
threshold:int = attr() threshold:int = attr()
slew:int = attr() slew:int = attr()
limit:int = attr() limit:int = attr()
class ClockTimer(BaseXmlModel, search_mode='ordered'): class ClockTimer(BaseXmlModel, search_mode='unordered'):
class nameEnum(str, Enum): class nameEnum(str, Enum):
kvmclock = "kvmclock" kvmclock = "kvmclock"
@@ -355,7 +369,7 @@ class ClockTimer(BaseXmlModel, search_mode='ordered'):
track:Optional[trackEnum] = attr(default=None) track:Optional[trackEnum] = attr(default=None)
catchup:Optional[ClockTimerCatchup] = element(default=None) catchup:Optional[ClockTimerCatchup] = element(default=None)
class Clock(BaseXmlModel, search_mode='ordered'): class Clock(BaseXmlModel, search_mode='unordered'):
class offsetEnum(str, Enum): class offsetEnum(str, Enum):
utc = "utc" utc = "utc"
localtime = "localtime" localtime = "localtime"
@@ -366,11 +380,11 @@ class Clock(BaseXmlModel, search_mode='ordered'):
offset:Optional[offsetEnum] = attr(default=offsetEnum.utc) offset:Optional[offsetEnum] = attr(default=offsetEnum.utc)
timer:Optional[ClockTimer] = element(default=None) timer:Optional[ClockTimer] = element(default=None)
class Perf(BaseXmlModel, search_mode='ordered'): class Perf(BaseXmlModel, search_mode='unordered'):
"""Not implemented""" """Not implemented"""
pass pass
class DevicesDiskDriver(BaseXmlModel, search_mode='ordered'): class DevicesDiskDriver(BaseXmlModel, search_mode='unordered'):
class nameEnum(str, Enum): class nameEnum(str, Enum):
qemu = "qemu" qemu = "qemu"
@@ -385,22 +399,22 @@ class DevicesDiskDriver(BaseXmlModel, search_mode='ordered'):
type:typeEnum = attr(default=typeEnum.raw) type:typeEnum = attr(default=typeEnum.raw)
discard:discardEnum = attr(default=discardEnum.unmap) discard:discardEnum = attr(default=discardEnum.unmap)
class DevicesDiskAuthSecret(BaseXmlModel, search_mode='ordered'): class DevicesDiskAuthSecret(BaseXmlModel, search_mode='unordered'):
class typeEnum(str, Enum): class typeEnum(str, Enum):
ceph = "ceph" ceph = "ceph"
type:typeEnum = attr(default=typeEnum.ceph) type:typeEnum = attr(default=typeEnum.ceph)
uuid:UUID4 = attr(default=None) uuid:UUID4 = attr(default=None)
class DevicesDiskAuth(BaseXmlModel, search_mode='ordered'): class DevicesDiskAuth(BaseXmlModel, search_mode='unordered'):
username:str = attr() username:str = attr()
secret:DevicesDiskAuthSecret = element(default=DevicesDiskAuthSecret()) secret:DevicesDiskAuthSecret = element(default=DevicesDiskAuthSecret())
class DevicesDiskSourceHost(BaseXmlModel, search_mode='ordered'): class DevicesDiskSourceHost(BaseXmlModel, search_mode='unordered'):
name:str = attr() name:str = attr()
port:int = attr() port:int = attr()
class DevicesDiskSource(BaseXmlModel, search_mode='ordered'): class DevicesDiskSource(BaseXmlModel, search_mode='unordered'):
class protocolEnum(str, Enum): class protocolEnum(str, Enum):
rbd = "rbd" rbd = "rbd"
http = "http" http = "http"
@@ -412,7 +426,7 @@ class DevicesDiskSource(BaseXmlModel, search_mode='ordered'):
name:str = attr() name:str = attr()
host:List[DevicesDiskSourceHost] = element(default=None) host:List[DevicesDiskSourceHost] = element(default=None)
class DevicesDiskTarget(BaseXmlModel, search_mode='ordered'): class DevicesDiskTarget(BaseXmlModel, search_mode='unordered'):
class busEnum(str, Enum): class busEnum(str, Enum):
virtio = "virtio" virtio = "virtio"
scsi = "scsi" scsi = "scsi"
@@ -421,7 +435,7 @@ class DevicesDiskTarget(BaseXmlModel, search_mode='ordered'):
dev:str = attr() dev:str = attr()
bus:busEnum = attr(default=busEnum.virtio) bus:busEnum = attr(default=busEnum.virtio)
class DevicesDisk(BaseXmlModel, search_mode='ordered'): class DevicesDisk(BaseXmlModel, search_mode='unordered'):
""" """
Disk: CEPH Storage only Disk: CEPH Storage only
CDROM: Network Only CDROM: Network Only
@@ -442,32 +456,32 @@ class DevicesDisk(BaseXmlModel, search_mode='ordered'):
target:DevicesDiskTarget = element(default=None) target:DevicesDiskTarget = element(default=None)
serial:UUID4 = element(default_factory=uuid4) serial:UUID4 = element(default_factory=uuid4)
class DevicesInterfaceMAC(BaseXmlModel, search_mode='ordered'): class DevicesInterfaceMAC(BaseXmlModel, search_mode='unordered'):
address:Optional[str] = attr(default=None) address:Optional[str] = attr(default=None)
class DevicesInterfaceSource(BaseXmlModel, search_mode='ordered'): class DevicesInterfaceSource(BaseXmlModel, search_mode='unordered'):
bridge:str = attr(default="br-int") bridge:str = attr(default="br-int")
class DevicesInterfaceVirtualPortParameters(BaseXmlModel, search_mode='ordered'): class DevicesInterfaceVirtualPortParameters(BaseXmlModel, search_mode='unordered'):
interfaceid:UUID4 = attr(default=None) interfaceid:UUID4 = attr(default=None)
class DevicesInterfaceVirtualport(BaseXmlModel, search_mode='ordered'): class DevicesInterfaceVirtualport(BaseXmlModel, search_mode='unordered'):
class typeEnum(str, Enum): class typeEnum(str, Enum):
openvswitch = "openvswitch" openvswitch = "openvswitch"
type:typeEnum = attr(default=typeEnum.openvswitch) type:typeEnum = attr(default=typeEnum.openvswitch)
parameters:DevicesInterfaceVirtualPortParameters = element(default=DevicesInterfaceVirtualPortParameters()) parameters:DevicesInterfaceVirtualPortParameters = element(default=DevicesInterfaceVirtualPortParameters())
class DevicesInterfaceModel(BaseXmlModel, search_mode='ordered'): class DevicesInterfaceModel(BaseXmlModel, search_mode='unordered'):
class typeEnum(str, Enum): class typeEnum(str, Enum):
virtio = "virtio" virtio = "virtio"
type:typeEnum = attr(default=typeEnum.virtio) type:typeEnum = attr(default=typeEnum.virtio)
class DevicesInterfaceMTU(BaseXmlModel, search_mode='ordered'): class DevicesInterfaceMTU(BaseXmlModel, search_mode='unordered'):
mtu:int = attr(default=1500) mtu:int = attr(default=1500)
class DevicesInterface(BaseXmlModel, search_mode='ordered'): class DevicesInterface(BaseXmlModel, search_mode='unordered'):
"""Openvswitch Only""" """Openvswitch Only"""
class typeEnum(str, Enum): class typeEnum(str, Enum):
@@ -480,14 +494,14 @@ class DevicesInterface(BaseXmlModel, search_mode='ordered'):
model:DevicesInterfaceModel = element(default=DevicesInterfaceModel()) model:DevicesInterfaceModel = element(default=DevicesInterfaceModel())
mtu:DevicesInterfaceMTU = element(default=DevicesInterfaceMTU()) mtu:DevicesInterfaceMTU = element(default=DevicesInterfaceMTU())
class DevicesChannelSource(BaseXmlModel, search_mode='ordered'): class DevicesChannelSource(BaseXmlModel, search_mode='unordered'):
class modeEnum(str, Enum): class modeEnum(str, Enum):
bind = "bind" bind = "bind"
mode:modeEnum = attr(default=modeEnum.bind) mode:modeEnum = attr(default=modeEnum.bind)
path:str = attr(default=None) path:str = attr(default=None)
class DevicesChannelTarget(BaseXmlModel, search_mode='ordered'): class DevicesChannelTarget(BaseXmlModel, search_mode='unordered'):
class typeEnum(str, Enum): class typeEnum(str, Enum):
virtio = "virtio" virtio = "virtio"
@@ -502,7 +516,7 @@ class DevicesChannel(BaseXmlModel):
source:DevicesChannelSource = element(default=DevicesChannelSource()) source:DevicesChannelSource = element(default=DevicesChannelSource())
target:DevicesChannelTarget = element(default=DevicesChannelTarget()) target:DevicesChannelTarget = element(default=DevicesChannelTarget())
class Graphics(BaseXmlModel, search_mode='ordered'): class Graphics(BaseXmlModel, search_mode='unordered'):
class typeEnum(str, Enum): class typeEnum(str, Enum):
vnc = "vnc" vnc = "vnc"
@@ -548,10 +562,10 @@ class Graphics(BaseXmlModel, search_mode='ordered'):
keymap:keymapEnum = attr(default=keymapEnum.en_us) keymap:keymapEnum = attr(default=keymapEnum.en_us)
powerControl:YesNoEnum = attr(default=YesNoEnum.YES) powerControl:YesNoEnum = attr(default=YesNoEnum.YES)
class Audio(BaseXmlModel, search_mode='ordered'): class Audio(BaseXmlModel, search_mode='unordered'):
pass pass
class VideoModel(BaseXmlModel, search_mode='ordered'): class VideoModel(BaseXmlModel, search_mode='unordered'):
class typeEnum(str, Enum): class typeEnum(str, Enum):
vga = "vga" vga = "vga"
cirrus = "cirrus" cirrus = "cirrus"
@@ -561,10 +575,10 @@ class VideoModel(BaseXmlModel, search_mode='ordered'):
vram:int = attr(default=16384) vram:int = attr(default=16384)
primary:YesNoEnum = attr(default=YesNoEnum.YES) primary:YesNoEnum = attr(default=YesNoEnum.YES)
class Video(BaseXmlModel, search_mode='ordered'): class Video(BaseXmlModel, search_mode='unordered'):
model:VideoModel = element() model:VideoModel = element()
class Watchdog(BaseXmlModel, search_mode='ordered'): class Watchdog(BaseXmlModel, search_mode='unordered'):
class modelEnum(str, Enum): class modelEnum(str, Enum):
itco = "itco" itco = "itco"
@@ -584,7 +598,7 @@ class Watchdog(BaseXmlModel, search_mode='ordered'):
class TPMBackendEncryption(BaseXmlModel): class TPMBackendEncryption(BaseXmlModel):
secret:UUID4 = attr() secret:UUID4 = attr()
class TPMBackend(BaseXmlModel, search_mode='ordered'): class TPMBackend(BaseXmlModel, search_mode='unordered'):
class typeEnum(str, Enum): class typeEnum(str, Enum):
emulator = "emulator" emulator = "emulator"
@@ -596,7 +610,7 @@ class TPMBackend(BaseXmlModel, search_mode='ordered'):
version:versionEnum = attr(default=versionEnum.v20) version:versionEnum = attr(default=versionEnum.v20)
encryption:Optional[TPMBackendEncryption] = element(default=None) encryption:Optional[TPMBackendEncryption] = element(default=None)
class TPM(BaseXmlModel, search_mode='ordered'): class TPM(BaseXmlModel, search_mode='unordered'):
class modelEnum(str, Enum): class modelEnum(str, Enum):
tpm_tis = "tpm-tis" tpm_tis = "tpm-tis"
tpm_crb = "tpm-crb" tpm_crb = "tpm-crb"
@@ -604,7 +618,7 @@ class TPM(BaseXmlModel, search_mode='ordered'):
model:modelEnum = attr(default=modelEnum.tpm_tis) model:modelEnum = attr(default=modelEnum.tpm_tis)
backend:TPMBackend = element(default=TPMBackend()) 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") emulator:str = element(default="/usr/libexec/qemu-kvm")
disk:Optional[List[DevicesDisk]] = element(default=[]) disk:Optional[List[DevicesDisk]] = element(default=[])
interface:Optional[List[DevicesInterface]] = element(default=[]) interface:Optional[List[DevicesInterface]] = element(default=[])
@@ -615,7 +629,10 @@ class Devices(BaseXmlModel, search_mode='ordered'):
watchdog:Optional[Watchdog] = element(default=None) watchdog:Optional[Watchdog] = element(default=None)
tpm:Optional[TPM] = 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): class on_poweroffEnum(str, Enum):
destroy = "destroy" destroy = "destroy"
restart = "restart" restart = "restart"
@@ -636,9 +653,12 @@ class Dom(BaseXmlModel, tag='domain', search_mode='ordered'):
pause = "pause" pause = "pause"
ignore = "ignore" ignore = "ignore"
type:typeEnum = attr(default=typeEnum.kvm)
# General metadata # General metadata
uuid:Optional[UUID4] = element(default=None) uuid:Optional[UUID4] = element(default=None)
genid:Optional[UUID4] = element(default=None) genid:Optional[UUID4] = element(default=None)
name:Optional[str] = element(default=None)
title:Optional[str] = element(default=None) title:Optional[str] = element(default=None)
description:Optional[str] = element(default=None) description:Optional[str] = element(default=None)
metadata:Optional[Metadata] = element(default=None) metadata:Optional[Metadata] = element(default=None)
@@ -659,12 +679,12 @@ class Dom(BaseXmlModel, tag='domain', search_mode='ordered'):
# Resource patitioning # Resource patitioning
resource:Optional[Resource] = element(default=None) resource:Optional[Resource] = element(default=None)
# BIOS BootLoader
os:OS = element(default=OS())
# SMBIOS System Information # SMBIOS System Information
sysinfo:Sysinfo = element(default=Sysinfo()) sysinfo:Sysinfo = element(default=Sysinfo())
# BIOS BootLoader
os:OS = element(default=OS())
# CPU model and topology # CPU model and topology
cpu:CPU = element(default=CPU()) cpu:CPU = element(default=CPU())

View 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)

View 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()

View File

@@ -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]

View File

@@ -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()

View File

@@ -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()

View File

@@ -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)

View File

@@ -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()

View File

@@ -2,7 +2,7 @@ from setuptools import find_packages, setup
setup( setup(
name='deevirt_schema', name='deevirt_schema',
version='0.1.2', version='0.1.35',
description='Deevirt Schema', description='Deevirt Schema',
url='https://git.celeonet.fr/Deevirt/deevirt_schema.git', url='https://git.celeonet.fr/Deevirt/deevirt_schema.git',
author='Celeonet', author='Celeonet',