summaryrefslogtreecommitdiffstats
path: root/nova/virt
diff options
context:
space:
mode:
authorVishvananda Ishaya <vishvananda@gmail.com>2012-09-14 10:43:13 -0700
committerVishvananda Ishaya <vishvananda@gmail.com>2012-09-14 12:26:03 -0700
commitc6ddff821fef8d9edfc7498dbe19d5794d9adc8f (patch)
tree63acd9cc04c3bf8dcaf009f8f8ef9d4d1ebb0b42 /nova/virt
parentc1af117628e1010f17931487785422a284687151 (diff)
Allow older versions of libvirt to delete vms
Libvirt < 0.9.4 doesn't support undefineFlags, so the vms can't be deleted. This patch adds a workaround to fallback to the old style of undefine if undefineFlags throws an Attribute error. It also attempts to remove any managed save images that exist. Fixes bug 1051010 Change-Id: I155fe2ab3be347b1515c5aab4a9233921bd722ca
Diffstat (limited to 'nova/virt')
-rw-r--r--nova/virt/libvirt/driver.py12
1 files changed, 11 insertions, 1 deletions
diff --git a/nova/virt/libvirt/driver.py b/nova/virt/libvirt/driver.py
index 9b6e6e9b4..7632ad960 100644
--- a/nova/virt/libvirt/driver.py
+++ b/nova/virt/libvirt/driver.py
@@ -501,10 +501,20 @@ class LibvirtDriver(driver.ComputeDriver):
try:
virt_dom.undefineFlags(
libvirt.VIR_DOMAIN_UNDEFINE_MANAGED_SAVE)
- except libvirt.libvirtError as e:
+ except libvirt.libvirtError:
LOG.debug(_("Error from libvirt during undefineFlags."
" Retrying with undefine"), instance=instance)
virt_dom.undefine()
+ except AttributeError:
+ # NOTE(vish): Older versions of libvirt don't support
+ # undefine flags, so attempt to do the
+ # right thing.
+ try:
+ if virt_dom.hasManagedSaveImage(0):
+ virt_dom.managedSaveRemove(0)
+ except AttributeError:
+ pass
+ virt_dom.undefine()
except libvirt.libvirtError as e:
errcode = e.get_error_code()
LOG.error(_("Error from libvirt during undefine. "