libvirt: Parse basic attributes of LibvirtConfigGuest from xml
LibvirtConfigGuest.parse_dom does not parse basic attributes (like uuid, name), which decreases area of its usage. This patch adds parsing of such elements. Change-Id: I09d64335ee052450af4584f053085dd33a8f8dc8
This commit is contained in:
parent
961b5febf1
commit
531f3b7d71
|
@ -2389,6 +2389,38 @@ class LibvirtConfigGuestTest(LibvirtConfigBaseTest):
|
|||
self.assertFalse(obj.os_bootmenu)
|
||||
self.assertIsNone(obj.os_smbios)
|
||||
|
||||
def test_ConfigGuest_parse_basic_props(self):
|
||||
xmldoc = """
|
||||
<domain>
|
||||
<uuid>b38a3f43-4be2-4046-897f-b67c2f5e0147</uuid>
|
||||
<name>demo</name>
|
||||
<memory>104857600</memory>
|
||||
<vcpu cpuset="0-1,3-5">2</vcpu>
|
||||
</domain>
|
||||
"""
|
||||
obj = config.LibvirtConfigGuest()
|
||||
obj.parse_str(xmldoc)
|
||||
|
||||
self.assertEqual('b38a3f43-4be2-4046-897f-b67c2f5e0147', obj.uuid)
|
||||
self.assertEqual('demo', obj.name)
|
||||
self.assertEqual(100 * units.Mi, obj.memory)
|
||||
self.assertEqual(2, obj.vcpus)
|
||||
self.assertEqual(set([0, 1, 3, 4, 5]), obj.cpuset)
|
||||
|
||||
xmldoc = """
|
||||
<domain>
|
||||
<vcpu>3</vcpu>
|
||||
</domain>
|
||||
"""
|
||||
obj = config.LibvirtConfigGuest()
|
||||
obj.parse_str(xmldoc)
|
||||
|
||||
self.assertIsNone(obj.uuid)
|
||||
self.assertIsNone(obj.name)
|
||||
self.assertEqual(500 * units.Mi, obj.memory) # default value
|
||||
self.assertEqual(3, obj.vcpus)
|
||||
self.assertIsNone(obj.cpuset)
|
||||
|
||||
|
||||
class LibvirtConfigGuestSnapshotTest(LibvirtConfigBaseTest):
|
||||
|
||||
|
|
|
@ -2186,6 +2186,20 @@ class LibvirtConfigGuest(LibvirtConfigObject):
|
|||
|
||||
return root
|
||||
|
||||
def _parse_basic_props(self, xmldoc):
|
||||
# memmbacking, memtune, numatune, metadata are skipped just because
|
||||
# corresponding config types do not implement parse_dom method
|
||||
if xmldoc.tag == 'uuid':
|
||||
self.uuid = xmldoc.text
|
||||
elif xmldoc.tag == 'name':
|
||||
self.name = xmldoc.text
|
||||
elif xmldoc.tag == 'memory':
|
||||
self.memory = int(xmldoc.text)
|
||||
elif xmldoc.tag == 'vcpu':
|
||||
self.vcpus = int(xmldoc.text)
|
||||
if xmldoc.get('cpuset') is not None:
|
||||
self.cpuset = hardware.parse_cpu_spec(xmldoc.get('cpuset'))
|
||||
|
||||
def _parse_os(self, xmldoc):
|
||||
# smbios is skipped just because LibvirtConfigGuestSMBIOS
|
||||
# does not implement parse_dom method
|
||||
|
@ -2262,6 +2276,8 @@ class LibvirtConfigGuest(LibvirtConfigObject):
|
|||
self.add_perf_event(p.get('name'))
|
||||
elif c.tag == 'os':
|
||||
self._parse_os(c)
|
||||
else:
|
||||
self._parse_basic_props(c)
|
||||
|
||||
def add_device(self, dev):
|
||||
self.devices.append(dev)
|
||||
|
|
Loading…
Reference in New Issue