From 0e85ba136e3c1c2f81f5ed7d594020539100939d Mon Sep 17 00:00:00 2001 From: Davanum Srinivas Date: Sat, 1 Dec 2012 22:53:34 -0500 Subject: Add notifications when libvirtd goes down During driver status update from periodic tasks, if we find that the libvirtd is down then we should send send notifications and log an error. Fixes LP #1011087 Change-Id: I447f24e4ac719d2d550810509f72be6f270ce326 --- nova/virt/libvirt/driver.py | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/nova/virt/libvirt/driver.py b/nova/virt/libvirt/driver.py index b39fd773b..4d2408ff1 100644 --- a/nova/virt/libvirt/driver.py +++ b/nova/virt/libvirt/driver.py @@ -67,6 +67,7 @@ from nova.openstack.common import fileutils from nova.openstack.common import importutils from nova.openstack.common import jsonutils from nova.openstack.common import log as logging +from nova.openstack.common.notifier import api as notifier from nova import utils from nova.virt import configdrive from nova.virt.disk import api as disk @@ -399,10 +400,22 @@ class LibvirtDriver(driver.ComputeDriver): _connect_auth_cb, None] - if read_only: - return libvirt.openReadOnly(uri) - else: - return libvirt.openAuth(uri, auth, 0) + try: + if read_only: + return libvirt.openReadOnly(uri) + else: + return libvirt.openAuth(uri, auth, 0) + except libvirt.libvirtError as ex: + LOG.exception(_("Connection to libvirt failed: %s"), ex) + payload = dict(ip=LibvirtDriver.get_host_ip_addr(), + method='_connect', + reason=ex) + notifier.notify(nova_context.get_admin_context(), + notifier.publisher_id('compute'), + 'compute.libvirt.error', + notifier.ERROR, + payload) + pass def get_num_instances(self): """Efficient override of base instance_exists method.""" -- cgit