Change in vdsm[master]: vdsm: refactor all_channels using etree
mpolednik at redhat.com
mpolednik at redhat.com
Thu Sep 4 08:44:45 UTC 2014
Martin Polednik has uploaded a new change for review.
Change subject: vdsm: refactor all_channels using etree
......................................................................
vdsm: refactor all_channels using etree
all_channels is a helper function currently located in vmxml
that lists all channels specified in domain's xml.
This patch refactors this function to use dom and adds simple
test to verify it is acting as before.
Change-Id: I8afeffe4a6373e8e6534f9c98b7bb844effaf565
Signed-off-by: Martin Polednik <mpolednik at redhat.com>
---
M tests/vmTests.py
M vdsm/virt/vmxml.py
2 files changed, 20 insertions(+), 9 deletions(-)
git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/48/32448/1
diff --git a/tests/vmTests.py b/tests/vmTests.py
index 33c944a..09e58c5 100644
--- a/tests/vmTests.py
+++ b/tests/vmTests.py
@@ -492,6 +492,21 @@
self.assertEqual(expected, vmxml.has_channel(domxml.dom.toprettyxml(),
'org.linux-kvm.port.0'))
+ def testAllChannels(self):
+ channels = {'org.linux-kvm.port.0': '/tmp/linux-socket',
+ 'org.redhat.port.0': '/tmp/redhat-socket',
+ 'org.dummy.port.0': '/tmp/dummy-socket',
+ 'org.dumb.port.0': '',
+ '': '/tmp/big-socket'}
+
+ domxml = vmxml.Domain(self.conf, self.log, caps.Architecture.X86_64)
+ for name, path in channels.items():
+ domxml._appendAgentDevice(path, name)
+
+ for name, path in vmxml.all_channels(domxml.dom.toprettyxml()):
+ self.assertIn(name, channels)
+ self.assertEqual(path, channels[name])
+
def testInputXMLX86_64(self):
expectedXMLs = [
"""<input bus="ps2" type="mouse"/>""",
diff --git a/vdsm/virt/vmxml.py b/vdsm/virt/vmxml.py
index 4171c5c..440ab37 100644
--- a/vdsm/virt/vmxml.py
+++ b/vdsm/virt/vmxml.py
@@ -45,16 +45,12 @@
def all_channels(domXML):
- domObj = xml.dom.minidom.parseString(domXML)
- for channel in domObj.childNodes[0]. \
- getElementsByTagName('devices')[0]. \
- getElementsByTagName('channel'):
+ domObj = etree.fromstring(domXML)
+ for channel in domObj.find('devices').findall('channel'):
try:
- name = channel.getElementsByTagName('target')[0].\
- getAttribute('name')
- path = channel.getElementsByTagName('source')[0].\
- getAttribute('path')
- except IndexError:
+ name = channel.find('target').attrib['name']
+ path = channel.find('source').attrib['path']
+ except KeyError:
continue
else:
yield name, path
--
To view, visit http://gerrit.ovirt.org/32448
To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I8afeffe4a6373e8e6534f9c98b7bb844effaf565
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