From fceef3a8d9670e4569bf43e84905ad7d37b717eb Mon Sep 17 00:00:00 2001
From: Anael Beutot <anael.beutot@smartjog.com>
Date: Mon, 18 Jun 2012 17:58:49 +0200
Subject: [PATCH] Fix bad libvirt behaviour.

Sometimes, libvirt tells us too late that a domain has been removed.
---
 cloudcontrol/node/hypervisor/domains/vm_tags.py | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/cloudcontrol/node/hypervisor/domains/vm_tags.py b/cloudcontrol/node/hypervisor/domains/vm_tags.py
index 32def24..4f9d83c 100644
--- a/cloudcontrol/node/hypervisor/domains/vm_tags.py
+++ b/cloudcontrol/node/hypervisor/domains/vm_tags.py
@@ -23,7 +23,13 @@ def _vir_tag(func):
             return
         try:
             return func(dom)
-        except libvirt.libvirtError:
+        except libvirt.libvirtError as exc:
+            if 'Domain not found' in str(exc):
+                # sometimes, libvirt tells us too late when a domain is removed
+                # we just ignore the error and remove the domain
+                dom.hypervisor.domains.pop(dom.name)
+                dom.tag_db.remove_sub_object(dom.name)
+                return
             logger.exception('Unexpected libvirt error')
             dom.hypervisor.handler.virt_connect_restart()
 
-- 
GitLab