various improvements
This commit is contained in:
@ -7,7 +7,7 @@ from typing import NamedTuple
|
||||
import libvirt
|
||||
from lxml import etree
|
||||
|
||||
from compute.exceptions import StoragePoolError
|
||||
from compute.exceptions import StoragePoolError, VolumeNotFoundError
|
||||
|
||||
from .volume import Volume, VolumeConfig
|
||||
|
||||
@ -99,13 +99,8 @@ class StoragePool:
|
||||
vol = self.pool.storageVolLookupByName(name)
|
||||
return Volume(self.pool, vol)
|
||||
except libvirt.libvirtError as e:
|
||||
# TODO @ge: Raise VolumeNotFoundError instead
|
||||
if (
|
||||
e.get_error_domain() == libvirt.VIR_FROM_STORAGE
|
||||
or e.get_error_code() == libvirt.VIR_ERR_NO_STORAGE_VOL
|
||||
):
|
||||
log.exception(e.get_error_message())
|
||||
return None
|
||||
if e.get_error_code() == libvirt.VIR_ERR_NO_STORAGE_VOL:
|
||||
raise VolumeNotFoundError(name) from e
|
||||
log.exception('unexpected error from libvirt')
|
||||
raise StoragePoolError(e) from e
|
||||
|
||||
|
@ -56,15 +56,17 @@ class DiskConfig:
|
||||
to compute instances.
|
||||
"""
|
||||
|
||||
disk_type: str
|
||||
source: str | Path
|
||||
target: str
|
||||
path: str
|
||||
readonly: bool = False
|
||||
|
||||
def to_xml(self) -> str:
|
||||
"""Return XML config for libvirt."""
|
||||
xml = E.disk(type='file', device='disk')
|
||||
xml = E.disk(type=self.disk_type, device='disk')
|
||||
xml.append(E.driver(name='qemu', type='qcow2', cache='writethrough'))
|
||||
xml.append(E.source(file=self.path))
|
||||
if self.disk_type == 'file':
|
||||
xml.append(E.source(file=str(self.source)))
|
||||
xml.append(E.target(dev=self.target, bus='virtio'))
|
||||
if self.readonly:
|
||||
xml.append(E.readonly())
|
||||
|
Reference in New Issue
Block a user