devices: disk: remove default_cb usage

This commit is contained in:
Cole Robinson 2018-09-01 22:16:26 -04:00
parent fff3c88f9c
commit 221dd00cb9
3 changed files with 35 additions and 8 deletions

View File

@ -4,6 +4,7 @@
- <disk type="block" device="floppy">
- <source dev="/dev/null"/>
+ <disk device="floppy">
+ <source file="/foo/bar"/>
<target dev="fda" bus="fdc"/>
- <boot order="5"/>
- <address type="drive" controller="0" bus="0" target="0" unit="0"/>

View File

@ -469,7 +469,7 @@ class DeviceDisk(Device):
_XML_PROP_ORDER = [
"type", "device", "snapshot_policy",
"_type", "_device", "snapshot_policy",
"driver_name", "driver_type",
"driver_cache", "driver_discard", "driver_detect_zeroes",
"driver_io", "error_policy",
@ -686,7 +686,6 @@ class DeviceDisk(Device):
if self.source_protocol:
return DeviceDisk.TYPE_NETWORK
return self.TYPE_FILE
type = XMLProperty("./@type", default_cb=_get_default_type)
def _clear_source_xml(self):
"""
@ -743,13 +742,30 @@ class DeviceDisk(Device):
# XML properties #
##################
device = XMLProperty("./@device",
default_cb=lambda s: s.DEVICE_DISK)
# type, device, driver_name, driver_type handling
# These are all weirdly intertwined so require some special handling
def _get_type(self):
if self._type:
return self._type
return self._get_default_type()
def _set_type(self, val):
self._type = val
type = property(_get_type, _set_type)
_type = XMLProperty("./@type")
def _get_device(self):
if self._device:
return self._device
return self.DEVICE_DISK
def _set_device(self, val):
self._device = val
device = property(_get_device, _set_device)
_device = XMLProperty("./@device")
driver_name = XMLProperty("./driver/@name")
driver_type = XMLProperty("./driver/@type")
snapshot_policy = XMLProperty("./@snapshot")
driver_name = XMLProperty("./driver/@name",
default_cb=_get_default_driver_name)
driver_type = XMLProperty("./driver/@type",
default_cb=_get_default_driver_type)
driver_copy_on_read = XMLProperty("./driver/@copy_on_read", is_onoff=True)
@ -1063,6 +1079,14 @@ class DeviceDisk(Device):
return "ide"
def set_defaults(self, guest):
if not self._device:
self._device = self._get_device()
if not self._type:
self._type = self._get_default_type()
if not self.driver_name:
self.driver_name = self._get_default_driver_name()
if not self.driver_type:
self.driver_type = self._get_default_driver_type()
if not self.bus:
self.bus = self._default_bus(guest)
if self.is_cdrom():

View File

@ -296,6 +296,7 @@ class Guest(XMLBuilder):
# Initialize install device list
if self._install_cdrom_device:
self._install_cdrom_device.path = self.installer.cdrom_path()
self._install_cdrom_device.sync_path_props()
self._install_cdrom_device.validate()
def _prepare_get_install_xml(self):
@ -740,6 +741,7 @@ class Guest(XMLBuilder):
getattr(dev, "installer_media", False) and
not self.osinfo.is_windows()):
dev.path = None
dev.sync_path_props()
def _set_defaults(self):
if not self.uuid: