Merge "Call terminate_connection when shelve_offloading" into stable/ocata
This commit is contained in:
commit
684ad9dac2
|
@ -4372,11 +4372,19 @@ class ComputeManager(manager.Manager):
|
|||
self.network_api.cleanup_instance_network_on_host(context, instance,
|
||||
instance.host)
|
||||
network_info = self.network_api.get_instance_nw_info(context, instance)
|
||||
bdms = objects.BlockDeviceMappingList.get_by_instance_uuid(
|
||||
context, instance.uuid)
|
||||
|
||||
block_device_info = self._get_instance_block_device_info(context,
|
||||
instance)
|
||||
instance,
|
||||
bdms=bdms)
|
||||
self.driver.destroy(context, instance, network_info,
|
||||
block_device_info)
|
||||
|
||||
# the instance is going to be removed from the host so we want to
|
||||
# terminate all the connections with the volume server and the host
|
||||
self._terminate_volume_connections(context, instance, bdms)
|
||||
|
||||
instance.power_state = current_power_state
|
||||
# NOTE(mriedem): The vm_state has to be set before updating the
|
||||
# resource tracker, see vm_states.ALLOW_RESOURCE_REMOVAL. The host/node
|
||||
|
|
|
@ -44,6 +44,8 @@ def _fake_resources():
|
|||
|
||||
|
||||
class ShelveComputeManagerTestCase(test_compute.BaseTestCase):
|
||||
@mock.patch.object(nova.compute.manager.ComputeManager,
|
||||
'_terminate_volume_connections')
|
||||
@mock.patch.object(nova.virt.fake.SmallFakeDriver, 'power_off')
|
||||
@mock.patch.object(nova.virt.fake.SmallFakeDriver, 'snapshot')
|
||||
@mock.patch.object(nova.compute.manager.ComputeManager, '_get_power_state')
|
||||
|
@ -52,7 +54,7 @@ class ShelveComputeManagerTestCase(test_compute.BaseTestCase):
|
|||
@mock.patch('nova.compute.utils.notify_about_instance_action')
|
||||
def _shelve_instance(self, shelved_offload_time, mock_notify,
|
||||
mock_notify_instance_usage, mock_get_power_state,
|
||||
mock_snapshot, mock_power_off,
|
||||
mock_snapshot, mock_power_off, mock_terminate,
|
||||
clean_shutdown=True):
|
||||
mock_get_power_state.return_value = 123
|
||||
|
||||
|
@ -156,6 +158,9 @@ class ShelveComputeManagerTestCase(test_compute.BaseTestCase):
|
|||
'fake_image_id', mock.ANY)
|
||||
mock_get_power_state.assert_has_calls(mock_get_power_state_call_list)
|
||||
|
||||
if CONF.shelved_offload_time == 0:
|
||||
self.assertTrue(mock_terminate.called)
|
||||
|
||||
def test_shelve(self):
|
||||
self._shelve_instance(-1)
|
||||
|
||||
|
@ -176,6 +181,8 @@ class ShelveComputeManagerTestCase(test_compute.BaseTestCase):
|
|||
instance = self._shelve_offload(clean_shutdown=False)
|
||||
mock_power_off.assert_called_once_with(instance, 0, 0)
|
||||
|
||||
@mock.patch.object(nova.compute.manager.ComputeManager,
|
||||
'_terminate_volume_connections')
|
||||
@mock.patch.object(nova.compute.manager.ComputeManager,
|
||||
'_update_resource_tracker')
|
||||
@mock.patch.object(nova.compute.manager.ComputeManager,
|
||||
|
@ -185,7 +192,7 @@ class ShelveComputeManagerTestCase(test_compute.BaseTestCase):
|
|||
@mock.patch('nova.compute.utils.notify_about_instance_action')
|
||||
def _shelve_offload(self, mock_notify, mock_notify_instance_usage,
|
||||
mock_get_power_state, mock_update_resource_tracker,
|
||||
clean_shutdown=True):
|
||||
mock_terminate, clean_shutdown=True):
|
||||
host = 'fake-mini'
|
||||
instance = self._create_fake_instance_obj(params={'host': host})
|
||||
instance.task_state = task_states.SHELVING
|
||||
|
@ -203,6 +210,7 @@ class ShelveComputeManagerTestCase(test_compute.BaseTestCase):
|
|||
|
||||
self.assertEqual(vm_states.SHELVED_OFFLOADED, instance.vm_state)
|
||||
self.assertIsNone(instance.task_state)
|
||||
self.assertTrue(mock_terminate.called)
|
||||
|
||||
# prepare expect call lists
|
||||
mock_notify_instance_usage_call_list = [
|
||||
|
|
Loading…
Reference in New Issue