From 9da547ebbcd7a2f4e8304aa7d070d3dd27821c6b Mon Sep 17 00:00:00 2001 From: Leehom Li Date: Thu, 17 Mar 2016 22:26:25 -0400 Subject: Change "libvirt.xml" back to the original after doing unrescue After doing rescue and unrescue "libvirt.xml" is not changed back to the original. This patch write back "libvirt.xml" using xml info stored in "unrescue.xml" Conflicts: nova/tests/unit/virt/libvirt/test_driver.py NOTE(lyarwood): conflict due to the use of contextlib.nested prior to Mitaka and 8dde6c7. Change-Id: I524ff57d7f21a1b5ecd20ab9b0e377ad9f7e04b9 Closes-Bug: #1558877 (cherry picked from commit 2e39d6444aa4c231da96b4d6314519578dd3dbf2) --- nova/tests/unit/virt/libvirt/test_driver.py | 7 +++++-- nova/virt/libvirt/driver.py | 2 ++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/nova/tests/unit/virt/libvirt/test_driver.py b/nova/tests/unit/virt/libvirt/test_driver.py index 9bdb4a26be..43c7e6e677 100644 --- a/nova/tests/unit/virt/libvirt/test_driver.py +++ b/nova/tests/unit/virt/libvirt/test_driver.py @@ -13737,10 +13737,12 @@ class LibvirtDriverTestCase(test.NoDBTestCase): mock_get_domain.return_value = fake_dom mock_load_file.return_value = "fake_unrescue_xml" unrescue_xml_path = os.path.join('/path', 'unrescue.xml') + xml_path = os.path.join('/path', 'libvirt.xml') rescue_file = os.path.join('/path', 'rescue.file') drvr = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) with contextlib.nested( + mock.patch.object(libvirt_utils, 'write_to_file'), mock.patch.object(drvr, '_destroy'), mock.patch.object(drvr, '_create_domain'), mock.patch.object(libvirt_utils, 'file_delete'), @@ -13748,9 +13750,10 @@ class LibvirtDriverTestCase(test.NoDBTestCase): return_value=['lvm.rescue']), mock.patch.object(lvm, 'remove_volumes'), mock.patch.object(glob, 'iglob', return_value=[rescue_file]) - ) as (mock_destroy, mock_create, mock_del, mock_lvm_disks, - mock_remove_volumes, mock_glob): + ) as (mock_write, mock_destroy, mock_create, mock_del, + mock_lvm_disks, mock_remove_volumes, mock_glob): drvr.unrescue(instance, None) + mock_write.assert_called_once_with(xml_path, "fake_unrescue_xml") mock_destroy.assert_called_once_with(instance) mock_create.assert_called_once_with("fake_unrescue_xml", fake_dom) diff --git a/nova/virt/libvirt/driver.py b/nova/virt/libvirt/driver.py index 9d8f8dfd9e..2a72bb6acf 100644 --- a/nova/virt/libvirt/driver.py +++ b/nova/virt/libvirt/driver.py @@ -2487,7 +2487,9 @@ class LibvirtDriver(driver.ComputeDriver): """ instance_dir = libvirt_utils.get_instance_path(instance) unrescue_xml_path = os.path.join(instance_dir, 'unrescue.xml') + xml_path = os.path.join(instance_dir, 'libvirt.xml') xml = libvirt_utils.load_file(unrescue_xml_path) + libvirt_utils.write_to_file(xml_path, xml) guest = self._host.get_guest(instance) # TODO(sahid): We are converting all calls from a -- cgit v1.2.1