Skip to content

Commit

Permalink
Merge "Add check for no domains in libvirt driver."
Browse files Browse the repository at this point in the history
  • Loading branch information
Jenkins authored and openstack-gerrit committed Jul 2, 2012
2 parents 2b1eaa0 + dabbb82 commit 7504c13
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 5 deletions.
3 changes: 3 additions & 0 deletions nova/tests/fakelibvirt.py
Expand Up @@ -480,6 +480,9 @@ def getInfo(self):
node_cores,
node_threads]

def numOfDomains(self):
return len(self._running_vms)

def listDomainsID(self):
return self._running_vms.keys()

Expand Down
3 changes: 3 additions & 0 deletions nova/tests/test_libvirt.py
Expand Up @@ -759,6 +759,7 @@ def test_xml_disk_bus_ide(self):
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()
Expand Down Expand Up @@ -810,6 +811,7 @@ def fake_lookup(id):
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

Expand Down Expand Up @@ -869,6 +871,7 @@ def fake_lookup_name(name):
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
Expand Down
16 changes: 11 additions & 5 deletions nova/virt/libvirt/driver.py
Expand Up @@ -390,9 +390,15 @@ def instance_exists(self, instance_id):
except libvirt.libvirtError:
return False

# TODO(Shrews): Remove when libvirt Bugzilla bug # 836647 is fixed.
def list_instance_ids(self):
if self._conn.numOfDomains() == 0:
return []
return self._conn.listDomainsID()

def list_instances(self):
return [self._conn.lookupByID(x).name()
for x in self._conn.listDomainsID()
for x in self.list_instance_ids()
if x != 0] # We skip domains with ID 0 (hypervisors).

@staticmethod
Expand All @@ -415,7 +421,7 @@ def _map_to_instance_info(domain):

def list_instances_detail(self):
infos = []
for domain_id in self._conn.listDomainsID():
for domain_id in self.list_instance_ids():
domain = self._conn.lookupByID(domain_id)
info = self._map_to_instance_info(domain)
infos.append(info)
Expand Down Expand Up @@ -1825,7 +1831,7 @@ def get_all_block_devices(self):
Return all block devices in use on this node.
"""
devices = []
for dom_id in self._conn.listDomainsID():
for dom_id in self.list_instance_ids():
domain = self._conn.lookupByID(dom_id)
try:
doc = etree.fromstring(domain.XMLDesc(0))
Expand Down Expand Up @@ -1939,7 +1945,7 @@ def get_vcpu_used(self):
"""

total = 0
for dom_id in self._conn.listDomainsID():
for dom_id in self.list_instance_ids():
dom = self._conn.lookupByID(dom_id)
vcpus = dom.vcpus()
if vcpus is None:
Expand All @@ -1966,7 +1972,7 @@ def get_memory_mb_used(self):
idx3 = m.index('Cached:')
if FLAGS.libvirt_type == 'xen':
used = 0
for domain_id in self._conn.listDomainsID():
for domain_id in self.list_instance_ids():
# skip dom0
dom_mem = int(self._conn.lookupByID(domain_id).info()[2])
if domain_id != 0:
Expand Down

0 comments on commit 7504c13

Please sign in to comment.