diff options
-rw-r--r-- | nova/tests/test_libvirt.py | 4 | ||||
-rwxr-xr-x | nova/virt/libvirt/driver.py | 7 |
2 files changed, 8 insertions, 3 deletions
diff --git a/nova/tests/test_libvirt.py b/nova/tests/test_libvirt.py index c544da724..6d8332769 100644 --- a/nova/tests/test_libvirt.py +++ b/nova/tests/test_libvirt.py @@ -1072,6 +1072,10 @@ class LibvirtConnTestCase(test.TestCase): libvirt_driver.LibvirtDriver._conn.listDomainsID = lambda: [0, 1] libvirt_driver.LibvirtDriver._conn.listDefinedDomains = lambda: [] + self.mox.StubOutWithMock(libvirt.libvirtError, "get_error_code") + libvirt.libvirtError.get_error_code().AndReturn( + libvirt.VIR_ERR_NO_DOMAIN) + self.mox.ReplayAll() conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) instances = conn.list_instances() diff --git a/nova/virt/libvirt/driver.py b/nova/virt/libvirt/driver.py index f61f85995..12bc03e66 100755 --- a/nova/virt/libvirt/driver.py +++ b/nova/virt/libvirt/driver.py @@ -673,9 +673,10 @@ class LibvirtDriver(driver.ComputeDriver): if domain_id != 0: domain = self._conn.lookupByID(domain_id) names.append(domain.name()) - except libvirt.libvirtError: - # Instance was deleted while listing... ignore it - pass + except libvirt.libvirtError as e: + if e.get_error_code() != libvirt.VIR_ERR_NO_DOMAIN: + # Ignore deleted instance while listing + raise # extend instance list to contain also defined domains names.extend([vm for vm in self._conn.listDefinedDomains() |