From 8768e3326300cc27646b5efd84bd3b5f09c4135b Mon Sep 17 00:00:00 2001 From: David Shrewsbury Date: Fri, 29 Jun 2012 12:18:50 -0400 Subject: [PATCH] Add check for no domains in libvirt driver. A check is needed to see if there are any domains before calling the listDomainsID() method. This check is needed to add support for OpenVZ which will throw an exception from this method if there are no domains. The 'virsh' source code does this check, too. This change circumvents this libvirt bug: https://bugzilla.redhat.com/show_bug.cgi?id=836647 Change-Id: Ia71d996722a1b531e720e91c1fa68f561ad4d58d --- nova/tests/fakelibvirt.py | 3 +++ nova/tests/test_libvirt.py | 3 +++ 2 files changed, 6 insertions(+) diff --git a/nova/tests/fakelibvirt.py b/nova/tests/fakelibvirt.py index 4350a887..d533760b 100644 --- a/nova/tests/fakelibvirt.py +++ b/nova/tests/fakelibvirt.py @@ -478,6 +478,9 @@ class Connection(object): node_cores, node_threads] + def numOfDomains(self): + return len(self._running_vms) + def listDomainsID(self): return self._running_vms.keys() diff --git a/nova/tests/test_libvirt.py b/nova/tests/test_libvirt.py index 55e8286a..55163b4c 100644 --- a/nova/tests/test_libvirt.py +++ b/nova/tests/test_libvirt.py @@ -759,6 +759,7 @@ class LibvirtConnTestCase(test.TestCase): def test_list_instances(self): self.mox.StubOutWithMock(libvirt_driver.LibvirtDriver, '_conn') libvirt_driver.LibvirtDriver._conn.lookupByID = self.fake_lookup + libvirt_driver.LibvirtDriver._conn.numOfDomains = lambda: 2 libvirt_driver.LibvirtDriver._conn.listDomainsID = lambda: [0, 1] self.mox.ReplayAll() @@ -810,6 +811,7 @@ class LibvirtConnTestCase(test.TestCase): return FakeVirtDomain(xml[id]) self.mox.StubOutWithMock(libvirt_driver.LibvirtDriver, '_conn') + libvirt_driver.LibvirtDriver._conn.numOfDomains = lambda: 4 libvirt_driver.LibvirtDriver._conn.listDomainsID = lambda: range(4) libvirt_driver.LibvirtDriver._conn.lookupByID = fake_lookup @@ -869,6 +871,7 @@ class LibvirtConnTestCase(test.TestCase): return FakeVirtDomain(xml[1]) self.mox.StubOutWithMock(libvirt_driver.LibvirtDriver, '_conn') + libvirt_driver.LibvirtDriver._conn.numOfDomains = lambda: 4 libvirt_driver.LibvirtDriver._conn.listDomainsID = lambda: range(4) libvirt_driver.LibvirtDriver._conn.lookupByID = fake_lookup libvirt_driver.LibvirtDriver._conn.lookupByName = fake_lookup_name