Merge "libvirt: use proper disk_info in _hard_reboot"
This commit is contained in:
@@ -8660,12 +8660,15 @@ class LibvirtConnTestCase(test.NoDBTestCase):
|
|||||||
@mock.patch('nova.virt.libvirt.LibvirtDriver._create_images_and_backing')
|
@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_guest_xml')
|
||||||
@mock.patch('nova.virt.libvirt.LibvirtDriver._get_instance_disk_info')
|
@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')
|
@mock.patch('nova.virt.libvirt.LibvirtDriver._destroy')
|
||||||
def test_hard_reboot(self, mock_destroy, mock_get_instance_disk_info,
|
def test_hard_reboot(self, mock_destroy, mock_get_disk_info,
|
||||||
mock_get_guest_xml, mock_create_images_and_backing,
|
mock_get_instance_disk_info, mock_get_guest_xml,
|
||||||
|
mock_create_images_and_backing,
|
||||||
mock_create_domain_and_network, mock_get_info):
|
mock_create_domain_and_network, mock_get_info):
|
||||||
self.context.auth_token = True # any non-None value will suffice
|
self.context.auth_token = True # any non-None value will suffice
|
||||||
instance = objects.Instance(**self.test_instance)
|
instance = objects.Instance(**self.test_instance)
|
||||||
|
instance_path = libvirt_utils.get_instance_path(instance)
|
||||||
network_info = _fake_network_info(self.stubs, 1)
|
network_info = _fake_network_info(self.stubs, 1)
|
||||||
block_device_info = None
|
block_device_info = None
|
||||||
|
|
||||||
@@ -8685,14 +8688,29 @@ class LibvirtConnTestCase(test.NoDBTestCase):
|
|||||||
hardware.InstanceInfo(state=power_state.RUNNING)]
|
hardware.InstanceInfo(state=power_state.RUNNING)]
|
||||||
mock_get_info.side_effect = return_values
|
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_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,
|
drvr._hard_reboot(self.context, instance, network_info,
|
||||||
block_device_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_utils.fileutils.ensure_tree')
|
||||||
@mock.patch('oslo_service.loopingcall.FixedIntervalLoopingCall')
|
@mock.patch('oslo_service.loopingcall.FixedIntervalLoopingCall')
|
||||||
@mock.patch('nova.pci.manager.get_instance_pci_devs')
|
@mock.patch('nova.pci.manager.get_instance_pci_devs')
|
||||||
|
|||||||
@@ -2177,13 +2177,13 @@ class LibvirtDriver(driver.ComputeDriver):
|
|||||||
block_device_info=block_device_info,
|
block_device_info=block_device_info,
|
||||||
write_to_disk=True)
|
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:
|
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,
|
self._create_images_and_backing(context, instance, instance_dir,
|
||||||
disk_info)
|
backing_disk_info)
|
||||||
|
|
||||||
# Initialize all the necessary networking, block devices and
|
# Initialize all the necessary networking, block devices and
|
||||||
# start the instance.
|
# start the instance.
|
||||||
|
|||||||
Reference in New Issue
Block a user