Retrieval of RBD device information issue

Libvirt still doesnt support retrieval of RBD device information.
Fix skip "network" type devices and send message to LogWarning.

Change-Id: I1b8adb97d6f86c8fbe09a89760c5e1a776639b08
Partial-Bug: #1457440
This commit is contained in:
Ildar Svetlov
2016-07-13 16:47:59 +03:00
parent 123fa26585
commit 3b14d40a27
2 changed files with 51 additions and 13 deletions

View File

@@ -22,7 +22,7 @@ import six
from ceilometer.compute.pollsters import util
from ceilometer.compute.virt import inspector as virt_inspector
from ceilometer.i18n import _
from ceilometer.i18n import _LW, _
libvirt = None
@@ -205,19 +205,25 @@ class LibvirtInspector(virt_inspector.Inspector):
def inspect_disk_info(self, instance):
domain = self._get_domain_not_shut_off_or_raise(instance)
tree = etree.fromstring(domain.XMLDesc(0))
for device in filter(
bool,
[target.get("dev")
for target in tree.findall('devices/disk/target')]):
disk = virt_inspector.Disk(device=device)
block_info = domain.blockInfo(device)
info = virt_inspector.DiskInfo(capacity=block_info[0],
allocation=block_info[1],
physical=block_info[2])
yield (disk, info)
for disk in tree.findall('devices/disk'):
disk_type = disk.get('type')
if disk_type:
if disk_type == 'network':
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)
info = virt_inspector.DiskInfo(capacity=block_info[0],
allocation=block_info[1],
physical=block_info[2])
yield (dsk, info)
def inspect_memory_resident(self, instance, duration=None):
domain = self._get_domain_not_shut_off_or_raise(instance)