Clean up ElementTree usage

Use lxml in favor of ElementTree to
make things more consistent.

Fixes LP: #953449

Change-Id: I7f48528d7df47fe7207ca88bce196dea7535df0e
Signed-off-by: Chuck Short <chuck.short@canonical.com>
This commit is contained in:
Chuck Short
2012-04-30 13:52:37 -04:00
parent 83b0b7bae9
commit b5820bef15
4 changed files with 30 additions and 35 deletions

View File

@@ -14,12 +14,7 @@
# License for the specific language governing permissions and limitations # License for the specific language governing permissions and limitations
# under the License. # under the License.
from xml.etree import ElementTree from lxml import etree
try:
ParseError = ElementTree.ParseError
except AttributeError:
from xml.parsers import expat
ParseError = expat.ExpatError
import uuid import uuid
@@ -141,7 +136,7 @@ class NWFilter(object):
self._parse_xml(xml) self._parse_xml(xml)
def _parse_xml(self, xml): def _parse_xml(self, xml):
tree = ElementTree.fromstring(xml) tree = etree.fromstring(xml)
root = tree.find('.') root = tree.find('.')
self._name = root.get('name') self._name = root.get('name')
@@ -163,8 +158,8 @@ class Domain(object):
def _parse_definition(self, xml): def _parse_definition(self, xml):
try: try:
tree = ElementTree.fromstring(xml) tree = etree.fromstring(xml)
except ParseError: except etree.ParseError:
raise libvirtError(VIR_ERR_XML_DETAIL, VIR_FROM_DOMAIN, raise libvirtError(VIR_ERR_XML_DETAIL, VIR_FROM_DOMAIN,
"Invalid XML.") "Invalid XML.")
@@ -301,13 +296,13 @@ class Domain(object):
123456789L] 123456789L]
def attachDevice(self, xml): def attachDevice(self, xml):
disk_info = _parse_disk_info(ElementTree.fromstring(xml)) disk_info = _parse_disk_info(etree.fromstring(xml))
disk_info['_attached'] = True disk_info['_attached'] = True
self._def['devices']['disks'] += [disk_info] self._def['devices']['disks'] += [disk_info]
return True return True
def detachDevice(self, xml): def detachDevice(self, xml):
disk_info = _parse_disk_info(ElementTree.fromstring(xml)) disk_info = _parse_disk_info(etree.fromstring(xml))
disk_info['_attached'] = True disk_info['_attached'] = True
return disk_info in self._def['devices']['disks'] return disk_info in self._def['devices']['disks']
@@ -404,7 +399,7 @@ class Domain(object):
self._state = VIR_DOMAIN_RUNNING self._state = VIR_DOMAIN_RUNNING
def snapshotCreateXML(self, xml, flags): def snapshotCreateXML(self, xml, flags):
tree = ElementTree.fromstring(xml) tree = etree.fromstring(xml)
name = tree.find('./name').text name = tree.find('./name').text
snapshot = DomainSnapshot(name, self) snapshot = DomainSnapshot(name, self)
self._snapshots[name] = snapshot self._snapshots[name] = snapshot
@@ -741,7 +736,7 @@ class Connection(object):
</capabilities>''' </capabilities>'''
def compareCPU(self, xml, flags): def compareCPU(self, xml, flags):
tree = ElementTree.fromstring(xml) tree = etree.fromstring(xml)
arch_node = tree.find('./arch') arch_node = tree.find('./arch')
if arch_node is not None: if arch_node is not None:

View File

@@ -16,7 +16,7 @@
from nova import test from nova import test
from xml.etree import ElementTree from lxml import etree
import fakelibvirt as libvirt import fakelibvirt as libvirt
@@ -252,7 +252,7 @@ class FakeLibvirtTests(test.TestCase):
conn.defineXML(get_vm_xml()) conn.defineXML(get_vm_xml())
dom = conn.lookupByName('testname') dom = conn.lookupByName('testname')
xml = dom.XMLDesc(0) xml = dom.XMLDesc(0)
ElementTree.fromstring(xml) etree.fromstring(xml)
def _test_accepts_source_type(self, source_type): def _test_accepts_source_type(self, source_type):
conn = self.get_openAuth_curry_func()('qemu:///system') conn = self.get_openAuth_curry_func()('qemu:///system')
@@ -260,7 +260,7 @@ class FakeLibvirtTests(test.TestCase):
conn.defineXML(get_vm_xml(source_type=source_type)) conn.defineXML(get_vm_xml(source_type=source_type))
dom = conn.lookupByName('testname') dom = conn.lookupByName('testname')
xml = dom.XMLDesc(0) xml = dom.XMLDesc(0)
tree = ElementTree.fromstring(xml) tree = etree.fromstring(xml)
elem = tree.find('./devices/disk/source') elem = tree.find('./devices/disk/source')
self.assertEquals(elem.get('file'), '/somefile') self.assertEquals(elem.get('file'), '/somefile')
@@ -282,7 +282,7 @@ class FakeLibvirtTests(test.TestCase):
conn.defineXML(get_vm_xml(interface_type=network_type)) conn.defineXML(get_vm_xml(interface_type=network_type))
dom = conn.lookupByName('testname') dom = conn.lookupByName('testname')
xml = dom.XMLDesc(0) xml = dom.XMLDesc(0)
tree = ElementTree.fromstring(xml) tree = etree.fromstring(xml)
elem = tree.find('./devices/interface') elem = tree.find('./devices/interface')
self.assertEquals(elem.get('type'), network_type) self.assertEquals(elem.get('type'), network_type)
elem = elem.find('./source') elem = elem.find('./source')
@@ -298,7 +298,7 @@ class FakeLibvirtTests(test.TestCase):
def test_getCapabilities(self): def test_getCapabilities(self):
conn = self.get_openAuth_curry_func()('qemu:///system') conn = self.get_openAuth_curry_func()('qemu:///system')
ElementTree.fromstring(conn.getCapabilities()) etree.fromstring(conn.getCapabilities())
def test_nwfilter_define_undefine(self): def test_nwfilter_define_undefine(self):
conn = self.get_openAuth_curry_func()('qemu:///system') conn = self.get_openAuth_curry_func()('qemu:///system')

View File

@@ -24,7 +24,7 @@ import shutil
import sys import sys
import tempfile import tempfile
from xml.etree import ElementTree from lxml import etree
from xml.dom import minidom from xml.dom import minidom
from nova import context from nova import context
@@ -884,7 +884,7 @@ class LibvirtConnTestCase(test.TestCase):
conn = connection.LibvirtConnection(True) conn = connection.LibvirtConnection(True)
instance_ref = db.instance_create(self.context, instance_data) instance_ref = db.instance_create(self.context, instance_data)
xml = conn.to_xml(instance_ref, network_info, None, False) xml = conn.to_xml(instance_ref, network_info, None, False)
tree = ElementTree.fromstring(xml) tree = etree.fromstring(xml)
interfaces = tree.findall("./devices/interface") interfaces = tree.findall("./devices/interface")
self.assertEquals(len(interfaces), 2) self.assertEquals(len(interfaces), 2)
parameters = interfaces[0].findall('./filterref/parameter') parameters = interfaces[0].findall('./filterref/parameter')
@@ -906,7 +906,7 @@ class LibvirtConnTestCase(test.TestCase):
network_info = _fake_network_info(self.stubs, 1) network_info = _fake_network_info(self.stubs, 1)
xml = conn.to_xml(instance_ref, network_info) xml = conn.to_xml(instance_ref, network_info)
tree = ElementTree.fromstring(xml) tree = etree.fromstring(xml)
check = [ check = [
(lambda t: t.find('.').get('type'), 'lxc'), (lambda t: t.find('.').get('type'), 'lxc'),
@@ -947,7 +947,7 @@ class LibvirtConnTestCase(test.TestCase):
network_info = _fake_network_info(self.stubs, 1) network_info = _fake_network_info(self.stubs, 1)
xml = conn.to_xml(instance_ref, network_info) xml = conn.to_xml(instance_ref, network_info)
tree = ElementTree.fromstring(xml) tree = etree.fromstring(xml)
for i, (check, expected_result) in enumerate(checks): for i, (check, expected_result) in enumerate(checks):
self.assertEqual(check(tree), self.assertEqual(check(tree),
@@ -982,7 +982,7 @@ class LibvirtConnTestCase(test.TestCase):
xml = connection.LibvirtConnection(True).to_xml(instance_ref, xml = connection.LibvirtConnection(True).to_xml(instance_ref,
network_info, network_info,
image_meta) image_meta)
tree = ElementTree.fromstring(xml) tree = etree.fromstring(xml)
disks = tree.findall('./devices/disk/driver') disks = tree.findall('./devices/disk/driver')
for disk in disks: for disk in disks:
self.assertEqual(disk.get("cache"), "none") self.assertEqual(disk.get("cache"), "none")
@@ -994,7 +994,7 @@ class LibvirtConnTestCase(test.TestCase):
xml = connection.LibvirtConnection(True).to_xml(instance_ref, xml = connection.LibvirtConnection(True).to_xml(instance_ref,
network_info, network_info,
image_meta) image_meta)
tree = ElementTree.fromstring(xml) tree = etree.fromstring(xml)
disks = tree.findall('./devices/disk/driver') disks = tree.findall('./devices/disk/driver')
for disk in disks: for disk in disks:
self.assertEqual(disk.get("cache"), "writethrough") self.assertEqual(disk.get("cache"), "writethrough")
@@ -1007,7 +1007,7 @@ class LibvirtConnTestCase(test.TestCase):
xml = connection.LibvirtConnection(True).to_xml(instance_ref, xml = connection.LibvirtConnection(True).to_xml(instance_ref,
network_info, network_info,
image_meta) image_meta)
tree = ElementTree.fromstring(xml) tree = etree.fromstring(xml)
self.assertEqual(tree.find('./devices/disk').get('device'), self.assertEqual(tree.find('./devices/disk').get('device'),
device_type) device_type)
self.assertEqual(tree.find('./devices/disk/target').get('bus'), bus) self.assertEqual(tree.find('./devices/disk/target').get('bus'), bus)
@@ -1020,7 +1020,7 @@ class LibvirtConnTestCase(test.TestCase):
xml = connection.LibvirtConnection(True).to_xml(instance_ref, xml = connection.LibvirtConnection(True).to_xml(instance_ref,
network_info, network_info,
image_meta) image_meta)
tree = ElementTree.fromstring(xml) tree = etree.fromstring(xml)
self.assertEqual(tree.find('./uuid').text, self.assertEqual(tree.find('./uuid').text,
instance_ref['uuid']) instance_ref['uuid'])
@@ -1119,7 +1119,7 @@ class LibvirtConnTestCase(test.TestCase):
network_info = _fake_network_info(self.stubs, 1) network_info = _fake_network_info(self.stubs, 1)
xml = conn.to_xml(instance_ref, network_info, None, rescue) xml = conn.to_xml(instance_ref, network_info, None, rescue)
tree = ElementTree.fromstring(xml) tree = etree.fromstring(xml)
for i, (check, expected_result) in enumerate(checks): for i, (check, expected_result) in enumerate(checks):
self.assertEqual(check(tree), self.assertEqual(check(tree),
expected_result, expected_result,
@@ -1676,7 +1676,7 @@ class NWFilterFakes:
def undefine(self): def undefine(self):
del self.parent.filters[self.name] del self.parent.filters[self.name]
pass pass
tree = ElementTree.fromstring(xml) tree = etree.fromstring(xml)
name = tree.get('name') name = tree.get('name')
if name not in self.filters: if name not in self.filters:
self.filters[name] = FakeNWFilterInternal(self, name) self.filters[name] = FakeNWFilterInternal(self, name)

View File

@@ -14,15 +14,15 @@
# License for the specific language governing permissions and limitations # License for the specific language governing permissions and limitations
# under the License. # under the License.
from xml.etree import ElementTree from lxml import etree
from nova import flags from nova import flags
from nova import test from nova import test
from nova import utils from nova import utils
from nova.virt import firewall from nova.virt import firewall
from nova.virt.libvirt import vif
from nova.virt.libvirt import connection
from nova.virt.libvirt import config from nova.virt.libvirt import config
from nova.virt.libvirt import connection
from nova.virt.libvirt import vif
FLAGS = flags.FLAGS FLAGS = flags.FLAGS
@@ -83,7 +83,7 @@ class LibvirtVifTestCase(test.TestCase):
d = vif.LibvirtBridgeDriver() d = vif.LibvirtBridgeDriver()
xml = self._get_instance_xml(d) xml = self._get_instance_xml(d)
doc = ElementTree.fromstring(xml) doc = etree.fromstring(xml)
ret = doc.findall('./devices/interface') ret = doc.findall('./devices/interface')
self.assertEqual(len(ret), 1) self.assertEqual(len(ret), 1)
node = ret[0] node = ret[0]
@@ -99,7 +99,7 @@ class LibvirtVifTestCase(test.TestCase):
d = vif.LibvirtOpenVswitchDriver() d = vif.LibvirtOpenVswitchDriver()
xml = self._get_instance_xml(d) xml = self._get_instance_xml(d)
doc = ElementTree.fromstring(xml) doc = etree.fromstring(xml)
ret = doc.findall('./devices/interface') ret = doc.findall('./devices/interface')
self.assertEqual(len(ret), 1) self.assertEqual(len(ret), 1)
node = ret[0] node = ret[0]
@@ -117,7 +117,7 @@ class LibvirtVifTestCase(test.TestCase):
d = vif.LibvirtOpenVswitchVirtualPortDriver() d = vif.LibvirtOpenVswitchVirtualPortDriver()
xml = self._get_instance_xml(d) xml = self._get_instance_xml(d)
doc = ElementTree.fromstring(xml) doc = etree.fromstring(xml)
ret = doc.findall('./devices/interface') ret = doc.findall('./devices/interface')
self.assertEqual(len(ret), 1) self.assertEqual(len(ret), 1)
node = ret[0] node = ret[0]
@@ -143,7 +143,7 @@ class LibvirtVifTestCase(test.TestCase):
d = vif.QuantumLinuxBridgeVIFDriver() d = vif.QuantumLinuxBridgeVIFDriver()
xml = self._get_instance_xml(d) xml = self._get_instance_xml(d)
doc = ElementTree.fromstring(xml) doc = etree.fromstring(xml)
ret = doc.findall('./devices/interface') ret = doc.findall('./devices/interface')
self.assertEqual(len(ret), 1) self.assertEqual(len(ret), 1)
node = ret[0] node = ret[0]