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:
@@ -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:
|
||||||
|
|||||||
@@ -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')
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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]
|
||||||
|
|||||||
Reference in New Issue
Block a user