summaryrefslogtreecommitdiff
path: root/ceilometer/compute
diff options
context:
space:
mode:
authorxiexianbin <xiexianbin@yovole.com>2017-11-03 17:27:31 +0800
committerJulien Danjou <julien@danjou.info>2017-11-21 12:48:31 +0100
commitc477678e574a0a4c06dd29af2dbf9f58ec934b9a (patch)
tree819e22e42da0c0ea473fe72e60b5828d898ec401 /ceilometer/compute
parent671815fbccf21b92124263736a7e2b3cfaf50ef3 (diff)
downloadceilometer-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.py17
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