diff options
author | Zuul <zuul@review.openstack.org> | 2017-11-14 22:32:30 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2017-11-14 22:32:30 +0000 |
commit | b3725525a7e2cb8dba696f6335b0f442aff399d4 (patch) | |
tree | b34b43c28eb73512b6b36bb86d3160548ca6ba45 | |
parent | 8a39efdfd96f1dfd9eb86b8aa380d5dc5ed50a35 (diff) | |
parent | 903e5423afbb4423e57767f20f603743cfc96d1a (diff) | |
download | ceilometer-b3725525a7e2cb8dba696f6335b0f442aff399d4.tar.gz |
Merge "Fix bug for ceilometer polling generates an exception" into stable/ocata8.1.2
-rwxr-xr-x[-rw-r--r--] | ceilometer/compute/virt/libvirt/inspector.py | 3 | ||||
-rwxr-xr-x[-rw-r--r--] | ceilometer/tests/unit/compute/virt/libvirt/test_inspector.py | 38 |
2 files changed, 40 insertions, 1 deletions
diff --git a/ceilometer/compute/virt/libvirt/inspector.py b/ceilometer/compute/virt/libvirt/inspector.py index 65852350..86f5c29c 100644..100755 --- a/ceilometer/compute/virt/libvirt/inspector.py +++ b/ceilometer/compute/virt/libvirt/inspector.py @@ -181,7 +181,8 @@ class LibvirtInspector(virt_inspector.Inspector): for device in filter( bool, [target.get("dev") - for target in tree.findall('devices/disk/target')]): + for target in tree.findall('devices/disk/target') + if target.getparent().find('source') is not None]): disk = virt_inspector.Disk(device=device) block_stats = domain.blockStats(device) stats = virt_inspector.DiskStats(read_requests=block_stats[0], diff --git a/ceilometer/tests/unit/compute/virt/libvirt/test_inspector.py b/ceilometer/tests/unit/compute/virt/libvirt/test_inspector.py index 882d0ac2..28280e94 100644..100755 --- a/ceilometer/tests/unit/compute/virt/libvirt/test_inspector.py +++ b/ceilometer/tests/unit/compute/virt/libvirt/test_inspector.py @@ -423,6 +423,44 @@ class TestLibvirtInspection(base.BaseTestCase): self.assertEqual(0, len(disks)) + def test_inspect_disks_without_source_element(self): + dom_xml = """ + <domain type='kvm'> + <devices> + <disk type='file' device='cdrom'> + <driver name='qemu' type='raw' cache='none'/> + <backingStore/> + <target dev='hdd' bus='ide' tray='open'/> + <readonly/> + <alias name='ide0-1-1'/> + <address type='drive' controller='0' bus='1' + target='0' unit='1'/> + </disk> + </devices> + </domain> + """ + blockStatsFlags = {'wr_total_times': 91752302267, + 'rd_operations': 6756, + 'flush_total_times': 1310427331, + 'rd_total_times': 29142253616, + 'rd_bytes': 171460096, + 'flush_operations': 746, + 'wr_operations': 1437, + 'wr_bytes': 13574656} + domain = mock.Mock() + domain.XMLDesc.return_value = dom_xml + domain.info.return_value = (0, 0, 0, 2, 999999) + domain.blockStats.return_value = (1, 2, 3, 4, -1) + domain.blockStatsFlags.return_value = blockStatsFlags + conn = mock.Mock() + conn.lookupByUUIDString.return_value = domain + + with mock.patch('ceilometer.compute.virt.libvirt.utils.' + 'get_libvirt_connection', return_value=conn): + disks = list(self.inspector.inspect_disks(self.instance)) + + self.assertEqual(0, len(disks)) + def test_inspect_memory_usage_with_domain_shutoff(self): connection = self.inspector.connection with mock.patch.object(connection, 'lookupByUUIDString', |