diff options
| author | Alvaro Lopez Garcia <aloga@ifca.unican.es> | 2012-01-16 17:12:35 +0100 |
|---|---|---|
| committer | Alvaro Lopez Garcia <aloga@ifca.unican.es> | 2012-01-18 14:44:05 +0100 |
| commit | 0c2eb242580caff24dc95a9e2b3092cf0b04e958 (patch) | |
| tree | 0d6e39c0fd1daa986146a759087a7c069db92210 /nova | |
| parent | d49d4b98f950b896ee9cfb9890b863d008f09a01 (diff) | |
| download | nova-0c2eb242580caff24dc95a9e2b3092cf0b04e958.tar.gz nova-0c2eb242580caff24dc95a9e2b3092cf0b04e958.tar.xz nova-0c2eb242580caff24dc95a9e2b3092cf0b04e958.zip | |
Fixed bug 912701
Add an check to the list_instances method so that the domains whose ID
is 0 are not listed, since this is reserved in libvirt for hypervisors.
Refers to https://lists.launchpad.net/openstack/msg06699.html
Change-Id: I55f6f370cbaf8bd2254e08afad8b36d833726817
Diffstat (limited to 'nova')
| -rw-r--r-- | nova/tests/fakelibvirt.py | 2 | ||||
| -rw-r--r-- | nova/tests/test_libvirt.py | 14 | ||||
| -rw-r--r-- | nova/virt/libvirt/connection.py | 3 |
3 files changed, 17 insertions, 2 deletions
diff --git a/nova/tests/fakelibvirt.py b/nova/tests/fakelibvirt.py index e47830e5c..309a6f10f 100644 --- a/nova/tests/fakelibvirt.py +++ b/nova/tests/fakelibvirt.py @@ -433,7 +433,7 @@ class Connection(object): self._uri = uri self._vms = {} self._running_vms = {} - self._id_counter = 0 + self._id_counter = 1 # libvirt reserves 0 for the hypervisor. self._nwfilters = {} def _add_filter(self, nwfilter): diff --git a/nova/tests/test_libvirt.py b/nova/tests/test_libvirt.py index 1490f9173..894ac583e 100644 --- a/nova/tests/test_libvirt.py +++ b/nova/tests/test_libvirt.py @@ -91,6 +91,9 @@ class FakeVirtDomain(object): </domain> """ + def name(self): + return "fake-domain %s" % self + def snapshotCreateXML(self, *args): return FakeVirDomainSnapshot(self) @@ -401,6 +404,17 @@ class LibvirtConnTestCase(test.TestCase): self._check_xml_and_disk_bus({"disk_format": "iso"}, "cdrom", "ide") + def test_list_instances(self): + self.mox.StubOutWithMock(connection.LibvirtConnection, '_conn') + connection.LibvirtConnection._conn.lookupByID = self.fake_lookup + connection.LibvirtConnection._conn.listDomainsID = lambda: [0, 1] + + self.mox.ReplayAll() + conn = connection.LibvirtConnection(False) + instances = conn.list_instances() + # Only one should be listed, since domain with ID 0 must be skiped + self.assertEquals(len(instances), 1) + @test.skip_if(missing_libvirt(), "Test requires libvirt") def test_snapshot_in_ami_format(self): self.flags(image_service='nova.image.fake.FakeImageService') diff --git a/nova/virt/libvirt/connection.py b/nova/virt/libvirt/connection.py index 4e5c86ea4..1a179b16b 100644 --- a/nova/virt/libvirt/connection.py +++ b/nova/virt/libvirt/connection.py @@ -268,7 +268,8 @@ class LibvirtConnection(driver.ComputeDriver): def list_instances(self): return [self._conn.lookupByID(x).name() - for x in self._conn.listDomainsID()] + for x in self._conn.listDomainsID() + if x != 0] # We skip domains with ID 0 (hypervisors). @staticmethod def _map_to_instance_info(domain): |
