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
|
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
|
@@ -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)
|
@@ -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()
|
|
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 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()
|
|
||||||
|
|
||||||
|
@@ -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
|
||||||
|
@@ -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())
|
||||||
|
|
||||||
|
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()
|
|
2
setup.py
2
setup.py
@@ -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',
|
||||||
|
Reference in New Issue
Block a user