summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--nova/tests/fakelibvirt.py3
-rw-r--r--nova/tests/test_libvirt.py16
-rw-r--r--nova/virt/libvirt/driver.py5
3 files changed, 24 insertions, 0 deletions
diff --git a/nova/tests/fakelibvirt.py b/nova/tests/fakelibvirt.py
index 7c9d5b238..8d9561c7e 100644
--- a/nova/tests/fakelibvirt.py
+++ b/nova/tests/fakelibvirt.py
@@ -839,6 +839,9 @@ class Connection(object):
nwfilter = NWFilter(self, xml)
self._add_filter(nwfilter)
+ def listDefinedDomains(self):
+ return []
+
def openReadOnly(uri):
return Connection(uri, readonly=True)
diff --git a/nova/tests/test_libvirt.py b/nova/tests/test_libvirt.py
index fbafe27f3..0373fe48c 100644
--- a/nova/tests/test_libvirt.py
+++ b/nova/tests/test_libvirt.py
@@ -1072,6 +1072,7 @@ class LibvirtConnTestCase(test.TestCase):
libvirt_driver.LibvirtDriver._conn.lookupByID = self.fake_lookup
libvirt_driver.LibvirtDriver._conn.numOfDomains = lambda: 2
libvirt_driver.LibvirtDriver._conn.listDomainsID = lambda: [0, 1]
+ libvirt_driver.LibvirtDriver._conn.listDefinedDomains = lambda: []
self.mox.ReplayAll()
conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False)
@@ -1079,6 +1080,19 @@ class LibvirtConnTestCase(test.TestCase):
# Only one should be listed, since domain with ID 0 must be skiped
self.assertEquals(len(instances), 1)
+ def test_list_defined_instances(self):
+ self.mox.StubOutWithMock(libvirt_driver.LibvirtDriver, '_conn')
+ libvirt_driver.LibvirtDriver._conn.lookupByID = self.fake_lookup
+ libvirt_driver.LibvirtDriver._conn.numOfDomains = lambda: 1
+ libvirt_driver.LibvirtDriver._conn.listDomainsID = lambda: [0]
+ libvirt_driver.LibvirtDriver._conn.listDefinedDomains = lambda: [1]
+
+ self.mox.ReplayAll()
+ conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False)
+ instances = conn.list_instances()
+ # Only one defined domain should be listed
+ self.assertEquals(len(instances), 1)
+
def test_list_instances_when_instance_deleted(self):
def fake_lookup(instance_name):
@@ -1088,6 +1102,7 @@ class LibvirtConnTestCase(test.TestCase):
libvirt_driver.LibvirtDriver._conn.lookupByID = fake_lookup
libvirt_driver.LibvirtDriver._conn.numOfDomains = lambda: 1
libvirt_driver.LibvirtDriver._conn.listDomainsID = lambda: [0, 1]
+ libvirt_driver.LibvirtDriver._conn.listDefinedDomains = lambda: []
self.mox.ReplayAll()
conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False)
@@ -1202,6 +1217,7 @@ class LibvirtConnTestCase(test.TestCase):
libvirt_driver.LibvirtDriver._conn.listDomainsID = lambda: range(4)
libvirt_driver.LibvirtDriver._conn.lookupByID = fake_lookup
libvirt_driver.LibvirtDriver._conn.lookupByName = fake_lookup_name
+ libvirt_driver.LibvirtDriver._conn.listDefinedDomains = lambda: []
self.mox.ReplayAll()
conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False)
diff --git a/nova/virt/libvirt/driver.py b/nova/virt/libvirt/driver.py
index 263fd5ca4..e8dee77e1 100644
--- a/nova/virt/libvirt/driver.py
+++ b/nova/virt/libvirt/driver.py
@@ -447,6 +447,11 @@ class LibvirtDriver(driver.ComputeDriver):
except libvirt.libvirtError:
# Instance was deleted while listing... ignore it
pass
+
+ # extend instance list to contain also defined domains
+ names.extend([vm for vm in self._conn.listDefinedDomains()
+ if vm not in names])
+
return names
def plug_vifs(self, instance, network_info):