Change in vdsm[master]: vdsm: refactor all_devices using etree

mpolednik at redhat.com mpolednik at redhat.com
Thu Sep 4 09:40:31 UTC 2014


Martin Polednik has uploaded a new change for review.

Change subject: vdsm: refactor all_devices using etree
......................................................................

vdsm: refactor all_devices using etree

More hacky than functions which return standard values,
all_devices is expected to return back xml.dom.Element - small
hack is therefore introduced to keep this behaviour even when
internally using etree

Change-Id: Id83e7282319041bd5e6fdc0ef48eb2e1cd543841
Signed-off-by: Martin Polednik <mpolednik at redhat.com>
---
M vdsm/virt/vmxml.py
1 file changed, 13 insertions(+), 5 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/53/32453/1

diff --git a/vdsm/virt/vmxml.py b/vdsm/virt/vmxml.py
index 4171c5c..17443f6 100644
--- a/vdsm/virt/vmxml.py
+++ b/vdsm/virt/vmxml.py
@@ -61,12 +61,11 @@
 
 
 def all_devices(domXML):
-    domObj = xml.dom.minidom.parseString(domXML)
-    devices = domObj.childNodes[0].getElementsByTagName('devices')[0]
+    domObj = etree.fromstring(domXML)
+    devices = domObj.find('devices')
 
-    for deviceXML in devices.childNodes:
-        if deviceXML.nodeType == xml.dom.Node.ELEMENT_NODE:
-            yield deviceXML
+    for deviceXML in devices:
+        yield _domElement(deviceXML)
 
 
 def filter_devices_with_alias(devices):
@@ -494,6 +493,15 @@
         return self.conf.get('maxVCpus', self._getSmp())
 
 
+def _domElement(etreeElement):
+    """
+    Hack required in order to refactor functions in this module while
+    keeping other modules working as intended. Returns xml.dom.Element
+    instead of etree.Element
+    """
+    return xml.dom.minidom.parseString(etreeElement.tostring())
+
+
 if sys.version_info[:2] == (2, 6):
     # A little unrelated hack to make xml.dom.minidom.Document.toprettyxml()
     # not wrap Text node with whitespace.


-- 
To view, visit http://gerrit.ovirt.org/32453
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Id83e7282319041bd5e6fdc0ef48eb2e1cd543841
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Martin Polednik <mpolednik at redhat.com>


More information about the vdsm-patches mailing list