Merge "Retrieval of RBD device information issue"
This commit is contained in:
commit
70d86343a8
@ -22,7 +22,7 @@ import six
|
|||||||
|
|
||||||
from ceilometer.compute.pollsters import util
|
from ceilometer.compute.pollsters import util
|
||||||
from ceilometer.compute.virt import inspector as virt_inspector
|
from ceilometer.compute.virt import inspector as virt_inspector
|
||||||
from ceilometer.i18n import _
|
from ceilometer.i18n import _LW, _
|
||||||
|
|
||||||
libvirt = None
|
libvirt = None
|
||||||
|
|
||||||
@ -231,19 +231,25 @@ class LibvirtInspector(virt_inspector.Inspector):
|
|||||||
|
|
||||||
def inspect_disk_info(self, instance):
|
def inspect_disk_info(self, instance):
|
||||||
domain = self._get_domain_not_shut_off_or_raise(instance)
|
domain = self._get_domain_not_shut_off_or_raise(instance)
|
||||||
|
|
||||||
tree = etree.fromstring(domain.XMLDesc(0))
|
tree = etree.fromstring(domain.XMLDesc(0))
|
||||||
for device in filter(
|
for disk in tree.findall('devices/disk'):
|
||||||
bool,
|
disk_type = disk.get('type')
|
||||||
[target.get("dev")
|
if disk_type:
|
||||||
for target in tree.findall('devices/disk/target')]):
|
if disk_type == 'network':
|
||||||
disk = virt_inspector.Disk(device=device)
|
LOG.warning(
|
||||||
|
_LW('Inspection disk usage of network disk '
|
||||||
|
'%(instance_uuid)s unsupported by libvirt') % {
|
||||||
|
'instance_uuid': instance.id})
|
||||||
|
continue
|
||||||
|
target = disk.find('target')
|
||||||
|
device = target.get('dev')
|
||||||
|
if device:
|
||||||
|
dsk = virt_inspector.Disk(device=device)
|
||||||
block_info = domain.blockInfo(device)
|
block_info = domain.blockInfo(device)
|
||||||
info = virt_inspector.DiskInfo(capacity=block_info[0],
|
info = virt_inspector.DiskInfo(capacity=block_info[0],
|
||||||
allocation=block_info[1],
|
allocation=block_info[1],
|
||||||
physical=block_info[2])
|
physical=block_info[2])
|
||||||
|
yield (dsk, info)
|
||||||
yield (disk, info)
|
|
||||||
|
|
||||||
def inspect_memory_resident(self, instance, duration=None):
|
def inspect_memory_resident(self, instance, duration=None):
|
||||||
domain = self._get_domain_not_shut_off_or_raise(instance)
|
domain = self._get_domain_not_shut_off_or_raise(instance)
|
||||||
|
@ -316,6 +316,38 @@ class TestLibvirtInspection(base.BaseTestCase):
|
|||||||
self.assertEqual(2, info0.allocation)
|
self.assertEqual(2, info0.allocation)
|
||||||
self.assertEqual(3, info0.physical)
|
self.assertEqual(3, info0.physical)
|
||||||
|
|
||||||
|
def test_inspect_disk_info_network_type(self):
|
||||||
|
dom_xml = """
|
||||||
|
<domain type='kvm'>
|
||||||
|
<devices>
|
||||||
|
<disk type='network' device='disk'>
|
||||||
|
<driver name='qemu' type='qcow2' cache='none'/>
|
||||||
|
<source file='/path/instance-00000001/disk'/>
|
||||||
|
<target dev='vda' bus='virtio'/>
|
||||||
|
<alias name='virtio-disk0'/>
|
||||||
|
<address type='pci' domain='0x0000' bus='0x00'
|
||||||
|
slot='0x04' function='0x0'/>
|
||||||
|
</disk>
|
||||||
|
</devices>
|
||||||
|
</domain>
|
||||||
|
"""
|
||||||
|
|
||||||
|
with contextlib.ExitStack() as stack:
|
||||||
|
stack.enter_context(mock.patch.object(self.inspector.connection,
|
||||||
|
'lookupByUUIDString',
|
||||||
|
return_value=self.domain))
|
||||||
|
stack.enter_context(mock.patch.object(self.domain, 'XMLDesc',
|
||||||
|
return_value=dom_xml))
|
||||||
|
stack.enter_context(mock.patch.object(self.domain, 'blockInfo',
|
||||||
|
return_value=(1, 2, 3,
|
||||||
|
-1)))
|
||||||
|
stack.enter_context(mock.patch.object(self.domain, 'info',
|
||||||
|
return_value=(0, 0, 0,
|
||||||
|
2, 999999)))
|
||||||
|
disks = list(self.inspector.inspect_disk_info(self.instance))
|
||||||
|
|
||||||
|
self.assertEqual(0, len(disks))
|
||||||
|
|
||||||
def test_inspect_memory_usage_with_domain_shutoff(self):
|
def test_inspect_memory_usage_with_domain_shutoff(self):
|
||||||
connection = self.inspector.connection
|
connection = self.inspector.connection
|
||||||
with mock.patch.object(connection, 'lookupByUUIDString',
|
with mock.patch.object(connection, 'lookupByUUIDString',
|
||||||
|
Loading…
Reference in New Issue
Block a user