summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLeehom Li <feli5@cisco.com>2016-03-17 22:26:25 -0400
committerLee Yarwood <lyarwood@redhat.com>2016-04-13 15:59:49 +0100
commit9da547ebbcd7a2f4e8304aa7d070d3dd27821c6b (patch)
tree61b0ab0c5aa1342d9e0c0ad91b906b341d96e895
parent7bc335535fc9daa7cf0bdf68f6ec5857f6f27d9b (diff)
downloadnova-9da547ebbcd7a2f4e8304aa7d070d3dd27821c6b.tar.gz
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)
-rw-r--r--nova/tests/unit/virt/libvirt/test_driver.py7
-rw-r--r--nova/virt/libvirt/driver.py2
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