This commit is contained in:
ge
2023-11-06 17:47:56 +03:00
parent ffa7605201
commit 76969a37e3
16 changed files with 158 additions and 48 deletions

View File

@ -162,16 +162,16 @@ class DeviceConfig:
class Instance:
"""Class for manipulating compute instance."""
"""Manage compute instances."""
def __init__(self, domain: libvirt.virDomain):
"""
Initialise Instance.
:prop domain libvirt.virDomain:
:prop connection libvirt.virConnect:
:prop name str:
:prop guest_agent GuestAgent:
:ivar libvirt.virDomain domain: domain object
:ivar libvirt.virConnect connection: connection object
:ivar str name: domain name
:ivar GuestAgent guest_agent: :class:`GuestAgent` object
:param domain: libvirt domain object
"""

View File

@ -44,27 +44,27 @@ class CPUSchema(BaseModel):
features: CPUFeaturesSchema
class StorageVolumeType(StrEnum):
class VolumeType(StrEnum):
"""Storage volume types enumeration."""
FILE = 'file'
NETWORK = 'network'
class StorageVolumeCapacitySchema(BaseModel):
class VolumeCapacitySchema(BaseModel):
"""Storage volume capacity field model."""
value: int
unit: DataUnit
class StorageVolumeSchema(BaseModel):
class VolumeSchema(BaseModel):
"""Storage volume model."""
type: StorageVolumeType # noqa: A003
type: VolumeType # noqa: A003
source: Path
target: str
capacity: StorageVolumeCapacitySchema
capacity: VolumeCapacitySchema
readonly: bool = False
is_system: bool = False
@ -98,7 +98,7 @@ class InstanceSchema(BaseModel):
arch: str
image: str
boot: BootOptionsSchema
volumes: list[StorageVolumeSchema]
volumes: list[VolumeSchema]
network_interfaces: list[NetworkInterfaceSchema]
@validator('name')

View File

@ -29,16 +29,25 @@ class Capabilities(NamedTuple):
class Session(AbstractContextManager):
"""Hypervisor session manager."""
"""
Hypervisor session context manager.
:cvar IMAGES_POOL: images storage pool name taken from env
:cvar VOLUMES_POOL: volumes storage pool name taken from env
"""
IMAGES_POOL = os.getenv('CMP_IMAGES_POOL')
VOLUMES_POOL = os.getenv('CMP_VOLUMES_POOL')
def __init__(self, uri: str | None = None):
"""
Initialise session with hypervisor.
:ivar str uri: libvirt connection URI.
:ivar libvirt.virConnect connection: libvirt connection object.
:param uri: libvirt connection URI.
"""
self.IMAGES_POOL = os.getenv('CMP_IMAGES_POOL')
self.VOLUMES_POOL = os.getenv('CMP_VOLUMES_POOL')
self.uri = uri or 'qemu:///system'
self.connection = libvirt.open(self.uri)
@ -74,11 +83,16 @@ class Session(AbstractContextManager):
"""
Create and return new compute instance.
:param name str: Instance name.
:param title str: Instance title for humans.
:param description str: Some information about instance
:param memory int: Memory in MiB.
:param max_memory int: Maximum memory in MiB.
:param name: Instance name.
:type name: str
:param title: Instance title for humans.
:type title: str
:param description: Some information about instance
:type description: str
:param memory: Memory in MiB.
:type memory: int
:param max_memory: Maximum memory in MiB.
:type max_memory: int
"""
# TODO @ge: create instances in transaction
data = InstanceSchema(**kwargs)

View File

@ -24,7 +24,7 @@ class InvalidDataUnitError(ValueError):
def to_bytes(value: int, unit: DataUnit = DataUnit.BYTES) -> int:
"""Convert value to bytes. See `DataUnit`."""
"""Convert value to bytes. See :class:`DataUnit`."""
try:
_ = DataUnit(unit)
except ValueError as e: