diff options
author | xiexianbin <xiexianbin@yovole.com> | 2017-11-03 17:27:31 +0800 |
---|---|---|
committer | Julien Danjou <julien@danjou.info> | 2017-11-21 12:48:31 +0100 |
commit | c477678e574a0a4c06dd29af2dbf9f58ec934b9a (patch) | |
tree | 819e22e42da0c0ea473fe72e60b5828d898ec401 /ceilometer/compute | |
parent | 671815fbccf21b92124263736a7e2b3cfaf50ef3 (diff) | |
download | ceilometer-c477678e574a0a4c06dd29af2dbf9f58ec934b9a.tar.gz |
fix ceilometer-compute invoke libvirt exception error
when nova compute start vm not create by nova-compute,
the ceilometer-compute will occur libvirtError: "metadata
not found: Requested metadata element is not present".
and cause all vm meter not report.
Change-Id: Id71788606bc0da9a7959831fb90d13c25c0b8dcb
Diffstat (limited to 'ceilometer/compute')
-rw-r--r-- | ceilometer/compute/discovery.py | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/ceilometer/compute/discovery.py b/ceilometer/compute/discovery.py index 3210b1e0..62835908 100644 --- a/ceilometer/compute/discovery.py +++ b/ceilometer/compute/discovery.py @@ -137,12 +137,21 @@ class InstanceDiscovery(plugin_base.DiscoveryBase): def discover_libvirt_polling(self, manager, param=None): instances = [] for domain in self.connection.listAllDomains(): + try: + xml_string = domain.metadata( + libvirt.VIR_DOMAIN_METADATA_ELEMENT, + "http://openstack.org/xmlns/libvirt/nova/1.0") + except libvirt.libvirtError as e: + if libvirt_utils.is_disconnection_exception(e): + # Re-raise the exception so it's handled and retries + raise + LOG.error( + "Fail to get domain uuid %s metadata, libvirtError: %s", + domain.UUIDString(), e.message) + continue + full_xml = etree.fromstring(domain.XMLDesc()) os_type_xml = full_xml.find("./os/type") - - xml_string = domain.metadata( - libvirt.VIR_DOMAIN_METADATA_ELEMENT, - "http://openstack.org/xmlns/libvirt/nova/1.0") metadata_xml = etree.fromstring(xml_string) # TODO(sileht): We don't have the flavor ID here So the Gnocchi |