summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2013-01-23 18:37:10 +0000
committerGerrit Code Review <review@openstack.org>2013-01-23 18:37:10 +0000
commit4573344edffb285717e23f70823a4f7068d5a952 (patch)
treefd0e1ee0cbc017843b29a830d21b36bcda660ef3
parent9159e3be63b45aedaab83d5e92149779e4823807 (diff)
parent67376d34ed6bf68b15ac87ef444887cbc27dc6b0 (diff)
downloadnova-4573344edffb285717e23f70823a4f7068d5a952.tar.gz
nova-4573344edffb285717e23f70823a4f7068d5a952.tar.xz
nova-4573344edffb285717e23f70823a4f7068d5a952.zip
Merge "Map libvirt error to InstanceNotFound in get_instance_disk_info"
-rw-r--r--nova/tests/test_libvirt.py19
-rw-r--r--nova/virt/libvirt/driver.py10
2 files changed, 28 insertions, 1 deletions
diff --git a/nova/tests/test_libvirt.py b/nova/tests/test_libvirt.py
index 75e758cde..f96536893 100644
--- a/nova/tests/test_libvirt.py
+++ b/nova/tests/test_libvirt.py
@@ -4747,6 +4747,25 @@ class LibvirtDriverTestCase(test.TestCase):
self.libvirtconnection._cleanup_resize(ins_ref,
_fake_network_info(self.stubs, 1))
+ def test_get_instance_disk_info_exception(self):
+ instance_name = "fake-instance-name"
+
+ class FakeExceptionDomain(FakeVirtDomain):
+ def __init__(self):
+ super(FakeExceptionDomain, self).__init__()
+
+ def XMLDesc(self, *args):
+ raise libvirt.libvirtError("Libvirt error")
+
+ def fake_lookup_by_name(instance_name):
+ return FakeExceptionDomain()
+
+ self.stubs.Set(self.libvirtconnection, '_lookup_by_name',
+ fake_lookup_by_name)
+ self.assertRaises(exception.InstanceNotFound,
+ self.libvirtconnection.get_instance_disk_info,
+ instance_name)
+
class LibvirtVolumeUsageTestCase(test.TestCase):
"""Test for nova.virt.libvirt.libvirt_driver.LibvirtDriver
diff --git a/nova/virt/libvirt/driver.py b/nova/virt/libvirt/driver.py
index e4da5cbde..7439ad40a 100644
--- a/nova/virt/libvirt/driver.py
+++ b/nova/virt/libvirt/driver.py
@@ -2831,7 +2831,15 @@ class LibvirtDriver(driver.ComputeDriver):
disk_info = []
virt_dom = self._lookup_by_name(instance_name)
- xml = virt_dom.XMLDesc(0)
+ try:
+ xml = virt_dom.XMLDesc(0)
+ except libvirt.libvirtError as ex:
+ error_code = ex.get_error_code()
+ msg = _("Error from libvirt while getting description of "
+ "%(instance_name)s: [Error Code %(error_code)s] "
+ "%(ex)s") % locals()
+ LOG.warn(msg)
+ raise exception.InstanceNotFound(instance_id=instance_name)
doc = etree.fromstring(xml)
disk_nodes = doc.findall('.//devices/disk')
path_nodes = doc.findall('.//devices/disk/source')