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 1c127f79c3
commit 7a5c505a3b
8 changed files with 51 additions and 57 deletions

View File

@ -24,10 +24,10 @@ import os
import shutil
import tarfile
import tempfile
from xml.etree import ElementTree
import boto.s3.connection
import eventlet
from lxml import etree
from nova import rpc
from nova import exception
@ -180,7 +180,7 @@ class S3ImageService(object):
return local_filename
def _s3_parse_manifest(self, context, metadata, manifest):
manifest = ElementTree.fromstring(manifest)
manifest = etree.fromstring(manifest)
image_format = 'ami'
image_type = 'machine'

View File

@ -16,6 +16,7 @@
# License for the specific language governing permissions and limitations
# under the License.
from lxml import etree
import webob
import webob.dec
import webob.exc
@ -27,8 +28,6 @@ from nova import flags
from nova import test
from nova import utils
from xml.etree import ElementTree
FLAGS = flags.FLAGS
@ -108,7 +107,7 @@ class ExecutorTestCase(test.TestCase):
return self.executor(fake_wsgi_request)
def _extract_message(self, result):
tree = ElementTree.fromstring(result.body)
tree = etree.fromstring(result.body)
return tree.findall('./Errors')[0].find('Error/Message').text
def test_instance_not_found(self):

View File

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

View File

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

View File

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

View File

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

View File

@ -39,8 +39,8 @@ Supports KVM, LXC, QEMU, UML, and XEN.
"""
import errno
import hashlib
import functools
import hashlib
import glob
import multiprocessing
import os
@ -51,9 +51,8 @@ import uuid
from eventlet import greenthread
from eventlet import tpool
from lxml import etree
from xml.dom import minidom
from xml.etree import ElementTree
from nova import block_device
from nova.compute import instance_types
@ -528,7 +527,7 @@ class LibvirtConnection(driver.ComputeDriver):
def _get_disk_xml(xml, device):
"""Returns the xml for the disk mounted at device"""
try:
doc = ElementTree.fromstring(xml)
doc = etree.fromstring(xml)
except Exception:
return None
ret = doc.findall('./devices/disk')
@ -536,7 +535,7 @@ class LibvirtConnection(driver.ComputeDriver):
for child in node.getchildren():
if child.tag == 'target':
if child.get('dev') == device:
return ElementTree.tostring(node)
return etree.tostring(node)
@exception.wrap_exception()
def detach_volume(self, connection_info, instance_name, mountpoint):
@ -586,7 +585,7 @@ class LibvirtConnection(driver.ComputeDriver):
@staticmethod
def get_lxc_container_root(virt_dom):
xml = virt_dom.XMLDesc(0)
doc = ElementTree.fromstring(xml)
doc = etree.fromstring(xml)
filesystem_block = doc.findall('./devices/filesystem')
for cnt, filesystem_nodes in enumerate(filesystem_block):
return filesystem_nodes[cnt].get('dir')
@ -661,7 +660,7 @@ class LibvirtConnection(driver.ComputeDriver):
# Find the disk
xml_desc = virt_dom.XMLDesc(0)
domain = ElementTree.fromstring(xml_desc)
domain = etree.fromstring(xml_desc)
source = domain.find('devices/disk/source')
disk_path = source.get('file')
@ -946,7 +945,7 @@ class LibvirtConnection(driver.ComputeDriver):
def get_console_output(self, instance):
virt_dom = self._lookup_by_name(instance['name'])
xml = virt_dom.XMLDesc(0)
tree = ElementTree.fromstring(xml)
tree = etree.fromstring(xml)
console_types = {}
@ -1746,7 +1745,7 @@ class LibvirtConnection(driver.ComputeDriver):
for dom_id in self._conn.listDomainsID():
domain = self._conn.lookupByID(dom_id)
try:
doc = ElementTree.fromstring(domain.XMLDesc(0))
doc = etree.fromstring(domain.XMLDesc(0))
except Exception:
continue
ret = doc.findall('./devices/disk')
@ -1769,7 +1768,7 @@ class LibvirtConnection(driver.ComputeDriver):
doc = None
try:
doc = ElementTree.fromstring(xml)
doc = etree.fromstring(xml)
except Exception:
return []
@ -1802,7 +1801,7 @@ class LibvirtConnection(driver.ComputeDriver):
doc = None
try:
doc = ElementTree.fromstring(xml)
doc = etree.fromstring(xml)
except Exception:
return []
@ -1960,7 +1959,7 @@ class LibvirtConnection(driver.ComputeDriver):
"""
xml = self._conn.getCapabilities()
xml = ElementTree.fromstring(xml)
xml = etree.fromstring(xml)
nodes = xml.findall('.//host/cpu')
if len(nodes) != 1:
reason = _("'<cpu>' must be 1, but %d\n") % len(nodes)
@ -2363,7 +2362,7 @@ class LibvirtConnection(driver.ComputeDriver):
virt_dom = self._lookup_by_name(instance_name)
xml = virt_dom.XMLDesc(0)
doc = ElementTree.fromstring(xml)
doc = etree.fromstring(xml)
disk_nodes = doc.findall('.//devices/disk')
path_nodes = doc.findall('.//devices/disk/source')
driver_nodes = doc.findall('.//devices/disk/driver')

View File

@ -30,7 +30,8 @@ import random
import socket
import string
import uuid
from xml.etree import ElementTree
from lxml import etree
from nova import exception
from nova import flags
@ -145,7 +146,7 @@ class SanISCSIDriver(nova.volume.driver.ISCSIDriver):
pass
def check_for_setup_error(self):
"""Returns an error if prerequisites aren't met"""
"""Returns an error if prerequisites aren't met."""
if not self.run_local:
if not (FLAGS.san_password or FLAGS.san_private_key):
raise exception.Error(_('Specify san_password or '
@ -451,7 +452,7 @@ class HpSanISCSIDriver(SanISCSIDriver):
LOG.debug(_("CLIQ command returned %s"), out)
result_xml = ElementTree.fromstring(out)
result_xml = etree.fromstring(out)
if check_cliq_result:
response_node = result_xml.find("response")
if response_node is None:
@ -492,7 +493,7 @@ class HpSanISCSIDriver(SanISCSIDriver):
if len(vips) == 1:
return vips[0]
_xml = ElementTree.tostring(cluster_xml)
_xml = etree.tostring(cluster_xml)
msg = (_("Unexpected number of virtual ips for cluster "
" %(cluster_name)s. Result=%(_xml)s") %
locals())