summaryrefslogtreecommitdiffstats
path: root/nova
diff options
context:
space:
mode:
authorJian Wen <wenjianhn@gmail.com>2012-09-24 23:30:02 +0800
committerJian Wen <wenjianhn@gmail.com>2012-09-25 12:30:47 +0800
commitd272415fd6fe9cdbd66fdfdf9aedc8a43b87d9b5 (patch)
tree5644956bf5bd1ffd1e963ba0778187a177c9d1e8 /nova
parentbd9767b1aa664e25ca905b40bd9de4ead2f6a959 (diff)
downloadnova-d272415fd6fe9cdbd66fdfdf9aedc8a43b87d9b5.tar.gz
nova-d272415fd6fe9cdbd66fdfdf9aedc8a43b87d9b5.tar.xz
nova-d272415fd6fe9cdbd66fdfdf9aedc8a43b87d9b5.zip
libvirt: Fix _cleanup_resize
Undefine domain and unplug vifs in _cleanup_resize if the instance was migrated to another host. Fixes bug 1015731 Change-Id: If6eb1ada029d462777bbd6ea113c98c3b801cf5d
Diffstat (limited to 'nova')
-rw-r--r--nova/tests/test_libvirt.py10
-rw-r--r--nova/virt/libvirt/driver.py6
2 files changed, 15 insertions, 1 deletions
diff --git a/nova/tests/test_libvirt.py b/nova/tests/test_libvirt.py
index 10db13e17..55ee3f811 100644
--- a/nova/tests/test_libvirt.py
+++ b/nova/tests/test_libvirt.py
@@ -3892,11 +3892,21 @@ class LibvirtDriverTestCase(test.TestCase):
def fake_shutil_rmtree(target):
pass
+ def fake_undefine_domain(instance):
+ pass
+
+ def fake_unplug_vifs(instance, network_info):
+ pass
+
def fake_unfilter_instance(instance, network_info):
pass
self.stubs.Set(os.path, 'exists', fake_os_path_exists)
self.stubs.Set(shutil, 'rmtree', fake_shutil_rmtree)
+ self.stubs.Set(self.libvirtconnection, '_undefine_domain',
+ fake_undefine_domain)
+ self.stubs.Set(self.libvirtconnection, 'unplug_vifs',
+ fake_unplug_vifs)
self.stubs.Set(self.libvirtconnection.firewall_driver,
'unfilter_instance', fake_unfilter_instance)
diff --git a/nova/virt/libvirt/driver.py b/nova/virt/libvirt/driver.py
index 7e828163c..eb39b0cb5 100644
--- a/nova/virt/libvirt/driver.py
+++ b/nova/virt/libvirt/driver.py
@@ -495,7 +495,7 @@ class LibvirtDriver(driver.ComputeDriver):
self._destroy(instance)
self._cleanup(instance, network_info, block_device_info)
- def _cleanup(self, instance, network_info, block_device_info):
+ def _undefine_domain(self, instance):
try:
virt_dom = self._lookup_by_name(instance['name'])
except exception.NotFound:
@@ -526,6 +526,8 @@ class LibvirtDriver(driver.ComputeDriver):
locals(), instance=instance)
raise
+ def _cleanup(self, instance, network_info, block_device_info):
+ self._undefine_domain(instance)
self.unplug_vifs(instance, network_info)
try:
self.firewall_driver.unfilter_instance(instance,
@@ -615,6 +617,8 @@ class LibvirtDriver(driver.ComputeDriver):
shutil.rmtree(target)
if instance['host'] != FLAGS.host:
+ self._undefine_domain(instance)
+ self.unplug_vifs(instance, network_info)
self.firewall_driver.unfilter_instance(instance, network_info)
def volume_driver_method(self, method_name, connection_info,