mirror of
https://github.com/virt-manager/virt-manager.git
synced 2025-02-25 18:55:27 -06:00
VirtualDisk: Convert 'type' to new style XML property
This commit is contained in:
parent
ae74bd662f
commit
1a74a8fda6
@ -268,6 +268,7 @@ class XMLParseTest(unittest.TestCase):
|
||||
check("serial", "WD-WMAP9A966149", "frob")
|
||||
|
||||
check = self._make_checker(disk3)
|
||||
check("type", "block", "dir", "file", "block")
|
||||
check("path", "/dev/loop0", None)
|
||||
check("device", "cdrom", "floppy")
|
||||
check("read_only", True, False)
|
||||
|
@ -390,13 +390,12 @@ class VirtualDisk(VirtualDevice):
|
||||
|
||||
|
||||
_XMLELEMENTORDER = ["driver", "source", "target"]
|
||||
_XMLPROPORDER = ["target", "bus"]
|
||||
_XMLPROPORDER = ["target", "bus", "type", "device"]
|
||||
|
||||
def __init__(self, conn, parsexml=None, parsexmlnode=None):
|
||||
VirtualDevice.__init__(self, conn, parsexml, parsexmlnode)
|
||||
|
||||
self._DEFAULT_SENTINEL = -1234
|
||||
self._type = self._DEFAULT_SENTINEL
|
||||
self._driverName = self._DEFAULT_SENTINEL
|
||||
self._driverType = self._DEFAULT_SENTINEL
|
||||
|
||||
@ -440,15 +439,6 @@ class VirtualDisk(VirtualDevice):
|
||||
_TARGET_PROPS])
|
||||
|
||||
|
||||
def get_type(self):
|
||||
if self._type != self._DEFAULT_SENTINEL:
|
||||
return self._type
|
||||
return self._get_default_type()
|
||||
def set_type(self, val):
|
||||
self._type = val
|
||||
type = XMLProperty(get_type, set_type,
|
||||
xpath="./@type")
|
||||
|
||||
def get_driver_name(self):
|
||||
if self._driverName != self._DEFAULT_SENTINEL:
|
||||
return self._driverName
|
||||
@ -468,6 +458,15 @@ class VirtualDisk(VirtualDevice):
|
||||
xpath="./driver/@type")
|
||||
|
||||
|
||||
#############################
|
||||
# Internal defaults helpers #
|
||||
#############################
|
||||
|
||||
def _get_default_type(self):
|
||||
if self._storage_creator:
|
||||
return self._storage_creator.get_dev_type()
|
||||
return self._storage_backend.get_dev_type()
|
||||
|
||||
|
||||
#########################
|
||||
# Simple XML properties #
|
||||
@ -475,6 +474,7 @@ class VirtualDisk(VirtualDevice):
|
||||
|
||||
device = XMLProperty(xpath="./@device",
|
||||
default_cb=lambda s: s.DEVICE_DISK)
|
||||
type = XMLProperty(xpath="./@type", default_cb=_get_default_type)
|
||||
|
||||
bus = XMLProperty(xpath="./target/@bus")
|
||||
target = XMLProperty(xpath="./target/@dev")
|
||||
@ -588,11 +588,6 @@ class VirtualDisk(VirtualDevice):
|
||||
self.refresh_xml_prop("driver_type")
|
||||
|
||||
|
||||
def _get_default_type(self):
|
||||
if self._storage_creator:
|
||||
return self._storage_creator.get_dev_type()
|
||||
return self._storage_backend.get_dev_type()
|
||||
|
||||
def _get_default_driver(self):
|
||||
"""
|
||||
Set driverName and driverType from passed parameters
|
||||
@ -744,7 +739,7 @@ class VirtualDisk(VirtualDevice):
|
||||
if path:
|
||||
path = util.xml_escape(path)
|
||||
|
||||
ret = " <disk type='%s'>\n" % self.type
|
||||
ret = " <disk>\n"
|
||||
|
||||
drvxml = ""
|
||||
if self.driver_type is not None:
|
||||
|
@ -529,22 +529,28 @@ class XMLProperty(property):
|
||||
continue
|
||||
node.setContent(util.xml_escape(str(val)))
|
||||
|
||||
def _prop_is_unset(self, xmlbuilder):
|
||||
propstore = getattr(xmlbuilder, "_propstore")
|
||||
propname = self._findpropname(xmlbuilder)
|
||||
return (propname not in propstore)
|
||||
|
||||
def refresh_xml(self, xmlbuilder):
|
||||
def refresh_xml(self, xmlbuilder, force_call_fset=False):
|
||||
call_fset = True
|
||||
if not self._is_new_style_prop():
|
||||
call_fset = False
|
||||
elif getattr(xmlbuilder, "_is_parse")():
|
||||
call_fset = False
|
||||
elif self._prop_is_unset(xmlbuilder) and self._default_cb:
|
||||
call_fset = False
|
||||
|
||||
if force_call_fset:
|
||||
call_fset = True
|
||||
self.fset(xmlbuilder, self.fget(xmlbuilder), call_fset=call_fset)
|
||||
|
||||
def set_default(self, xmlbuilder):
|
||||
propstore = getattr(xmlbuilder, "_propstore")
|
||||
propname = self._findpropname(xmlbuilder)
|
||||
unset = (propname not in propstore)
|
||||
if not unset:
|
||||
if not self._prop_is_unset(xmlbuilder) or not self._default_cb:
|
||||
return
|
||||
self.refresh_xml(xmlbuilder)
|
||||
self.refresh_xml(xmlbuilder, force_call_fset=True)
|
||||
|
||||
|
||||
class XMLBuilder(object):
|
||||
|
Loading…
Reference in New Issue
Block a user