libvirt: use proper disk_info in _hard_reboot
Previous commmit:
commit a7a0b4e542
Author: Joel Coffman <joel.coffman@jhuapl.edu>
Date: Fri Apr 24 16:14:25 2015 -0400
libvirt: Remove unnecessary JSON conversions
Renamed the result from _get_instance_disk_info from disk_info_json
to disk_info. This over shadowed a previous disk_info and thus
overwrote the proper data used to call _create_domain_and_network.
This patch uses a different variable, backing_disk_info, for the
disk info used to call _creat_images_and_backing.
Co-Authored-By: Matt Riedemann <mriedem@us.ibm.com>
Change-Id: Ia0ca86bd5c89e8d5c5ece0438ed45af314f21748
Closes-bug: #1370590
This commit is contained in:
@@ -8657,12 +8657,15 @@ class LibvirtConnTestCase(test.NoDBTestCase):
|
||||
@mock.patch('nova.virt.libvirt.LibvirtDriver._create_images_and_backing')
|
||||
@mock.patch('nova.virt.libvirt.LibvirtDriver._get_guest_xml')
|
||||
@mock.patch('nova.virt.libvirt.LibvirtDriver._get_instance_disk_info')
|
||||
@mock.patch('nova.virt.libvirt.blockinfo.get_disk_info')
|
||||
@mock.patch('nova.virt.libvirt.LibvirtDriver._destroy')
|
||||
def test_hard_reboot(self, mock_destroy, mock_get_instance_disk_info,
|
||||
mock_get_guest_xml, mock_create_images_and_backing,
|
||||
def test_hard_reboot(self, mock_destroy, mock_get_disk_info,
|
||||
mock_get_instance_disk_info, mock_get_guest_xml,
|
||||
mock_create_images_and_backing,
|
||||
mock_create_domain_and_network, mock_get_info):
|
||||
self.context.auth_token = True # any non-None value will suffice
|
||||
instance = objects.Instance(**self.test_instance)
|
||||
instance_path = libvirt_utils.get_instance_path(instance)
|
||||
network_info = _fake_network_info(self.stubs, 1)
|
||||
block_device_info = None
|
||||
|
||||
@@ -8682,14 +8685,29 @@ class LibvirtConnTestCase(test.NoDBTestCase):
|
||||
hardware.InstanceInfo(state=power_state.RUNNING)]
|
||||
mock_get_info.side_effect = return_values
|
||||
|
||||
disk_info = [{"virt_disk_size": 2}]
|
||||
backing_disk_info = [{"virt_disk_size": 2}]
|
||||
|
||||
mock_get_disk_info.return_value = mock.sentinel.disk_info
|
||||
mock_get_guest_xml.return_value = dummyxml
|
||||
mock_get_instance_disk_info.return_value = disk_info
|
||||
mock_get_instance_disk_info.return_value = backing_disk_info
|
||||
|
||||
drvr._hard_reboot(self.context, instance, network_info,
|
||||
block_device_info)
|
||||
|
||||
# make sure that _create_images_and_backing is passed the disk_info
|
||||
# returned from _get_instance_disk_info and not the one that is in
|
||||
# scope from blockinfo.get_disk_info
|
||||
mock_create_images_and_backing.assert_called_once_with(self.context,
|
||||
instance, instance_path, backing_disk_info)
|
||||
|
||||
# make sure that _create_domain_and_network is passed the disk_info
|
||||
# returned from blockinfo.get_disk_info and not the one that's
|
||||
# returned from _get_instance_disk_info
|
||||
mock_create_domain_and_network.assert_called_once_with(self.context,
|
||||
dummyxml, instance, network_info, mock.sentinel.disk_info,
|
||||
block_device_info=block_device_info,
|
||||
reboot=True, vifs_already_plugged=True)
|
||||
|
||||
@mock.patch('oslo_utils.fileutils.ensure_tree')
|
||||
@mock.patch('oslo_service.loopingcall.FixedIntervalLoopingCall')
|
||||
@mock.patch('nova.pci.manager.get_instance_pci_devs')
|
||||
|
||||
@@ -2173,13 +2173,13 @@ class LibvirtDriver(driver.ComputeDriver):
|
||||
block_device_info=block_device_info,
|
||||
write_to_disk=True)
|
||||
|
||||
# NOTE (rmk): Re-populate any missing backing files.
|
||||
disk_info = self._get_instance_disk_info(instance.name, xml,
|
||||
block_device_info)
|
||||
|
||||
if context.auth_token is not None:
|
||||
# NOTE (rmk): Re-populate any missing backing files.
|
||||
backing_disk_info = self._get_instance_disk_info(instance.name,
|
||||
xml,
|
||||
block_device_info)
|
||||
self._create_images_and_backing(context, instance, instance_dir,
|
||||
disk_info)
|
||||
backing_disk_info)
|
||||
|
||||
# Initialize all the necessary networking, block devices and
|
||||
# start the instance.
|
||||
|
||||
Reference in New Issue
Block a user