summaryrefslogtreecommitdiffstats
path: root/nova/virt
diff options
context:
space:
mode:
authorJosh Kearney <josh.kearney@rackspace.com>2010-12-09 13:37:30 -0600
committerJosh Kearney <josh.kearney@rackspace.com>2010-12-09 13:37:30 -0600
commita00c8015e4ffe417f6c111a5eaf0578d9ef79b7d (patch)
tree1aeb0a2290395093a88123905c63daf6515d9f41 /nova/virt
parent470dcfdf793f9a8b34c320731dcfc8d403a61bd2 (diff)
Added exception handling to get_rrd()
Diffstat (limited to 'nova/virt')
-rw-r--r--nova/virt/xenapi/vm_utils.py30
1 files changed, 17 insertions, 13 deletions
diff --git a/nova/virt/xenapi/vm_utils.py b/nova/virt/xenapi/vm_utils.py
index ff062fba0..77edb576e 100644
--- a/nova/virt/xenapi/vm_utils.py
+++ b/nova/virt/xenapi/vm_utils.py
@@ -242,13 +242,14 @@ class VMHelper():
"Kernel": metrics["os_version"]["uname"],
"Distro": metrics["os_version"]["name"]}
xml = get_rrd(host_ip, record["uuid"])
- rrd = minidom.parseString(xml)
- for i, node in enumerate(rrd.firstChild.childNodes):
- # We don't want all of the extra garbage
- if i >= 3 and i <= 11:
- ref = node.childNodes
- # Name and Value
- diags[ref[0].firstChild.data] = ref[6].firstChild.data
+ if xml:
+ rrd = minidom.parseString(xml)
+ for i, node in enumerate(rrd.firstChild.childNodes):
+ # We don't want all of the extra garbage
+ if i >= 3 and i <= 11:
+ ref = node.childNodes
+ # Name and Value
+ diags[ref[0].firstChild.data] = ref[6].firstChild.data
return diags
except XenAPI.Failure as e:
return {"Unable to retrieve diagnostics": e}
@@ -256,9 +257,12 @@ class VMHelper():
def get_rrd(host, uuid):
"""Return the VM RRD XML as a string"""
- xml = urllib.urlopen("http://%s:%s@%s/vm_rrd?uuid=%s" % (
- FLAGS.xenapi_connection_username,
- FLAGS.xenapi_connection_password,
- host,
- uuid))
- return xml.read()
+ try:
+ xml = urllib.urlopen("http://%s:%s@%s/vm_rrd?uuid=%s" % (
+ FLAGS.xenapi_connection_username,
+ FLAGS.xenapi_connection_password,
+ host,
+ uuid))
+ return xml.read()
+ except IOError:
+ return None