diff options
| author | Jian Wen <wenjianhn@gmail.com> | 2012-09-24 23:30:02 +0800 |
|---|---|---|
| committer | Jian Wen <wenjianhn@gmail.com> | 2012-09-25 12:30:47 +0800 |
| commit | d272415fd6fe9cdbd66fdfdf9aedc8a43b87d9b5 (patch) | |
| tree | 5644956bf5bd1ffd1e963ba0778187a177c9d1e8 /nova | |
| parent | bd9767b1aa664e25ca905b40bd9de4ead2f6a959 (diff) | |
| download | nova-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.py | 10 | ||||
| -rw-r--r-- | nova/virt/libvirt/driver.py | 6 |
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, |
