Merge "Fix drop_move_claim() on revert resize"
This commit is contained in:
commit
0967572f1e
|
@ -298,3 +298,4 @@ class MoveClaim(Claim):
|
|||
self.tracker.drop_move_claim(
|
||||
self.context,
|
||||
self.instance, instance_type=self.instance_type)
|
||||
self.instance.drop_migration_context()
|
||||
|
|
|
@ -3436,6 +3436,7 @@ class ComputeManager(manager.Manager):
|
|||
rt = self._get_resource_tracker(migration.source_node)
|
||||
rt.drop_move_claim(context, instance, old_instance_type,
|
||||
prefix='old_')
|
||||
instance.drop_migration_context()
|
||||
|
||||
# NOTE(mriedem): The old_vm_state could be STOPPED but the user
|
||||
# might have manually powered up the instance to confirm the
|
||||
|
@ -3587,6 +3588,7 @@ class ComputeManager(manager.Manager):
|
|||
network_info,
|
||||
block_device_info, power_on)
|
||||
|
||||
instance.drop_migration_context()
|
||||
instance.launched_at = timeutils.utcnow()
|
||||
instance.save(expected_task_state=task_states.RESIZE_REVERTING)
|
||||
|
||||
|
|
|
@ -377,8 +377,6 @@ class ResourceTracker(object):
|
|||
ctxt = context.elevated()
|
||||
self._update(ctxt)
|
||||
|
||||
instance.drop_migration_context()
|
||||
|
||||
@utils.synchronized(COMPUTE_RESOURCE_SEMAPHORE)
|
||||
def update_usage(self, context, instance):
|
||||
"""Update the resource usage and stats after a change in an
|
||||
|
|
|
@ -415,9 +415,11 @@ class MoveClaimTestCase(ClaimTestCase):
|
|||
limits=limits)
|
||||
return get_claim()
|
||||
|
||||
def test_abort(self):
|
||||
@mock.patch('nova.objects.Instance.drop_migration_context')
|
||||
def test_abort(self, mock_drop):
|
||||
claim = self._abort()
|
||||
self.assertTrue(claim.tracker.rcalled)
|
||||
mock_drop.assert_called_once_with()
|
||||
|
||||
def test_image_meta(self):
|
||||
claim = self._claim()
|
||||
|
|
|
@ -31,6 +31,7 @@ import nova
|
|||
from nova.compute import build_results
|
||||
from nova.compute import manager
|
||||
from nova.compute import power_state
|
||||
from nova.compute import resource_tracker
|
||||
from nova.compute import task_states
|
||||
from nova.compute import utils as compute_utils
|
||||
from nova.compute import vm_states
|
||||
|
@ -4683,6 +4684,7 @@ class ComputeManagerMigrationTestCase(test.NoDBTestCase):
|
|||
|
||||
fault_create.return_value = (
|
||||
test_instance_fault.fake_faults['fake-uuid'][0])
|
||||
self.instance.migration_context = objects.MigrationContext()
|
||||
self.migration.source_compute = self.instance['host']
|
||||
self.migration.source_node = self.instance['host']
|
||||
self.compute.finish_revert_resize(context=self.context,
|
||||
|
@ -4694,6 +4696,73 @@ class ComputeManagerMigrationTestCase(test.NoDBTestCase):
|
|||
|
||||
do_test()
|
||||
|
||||
def test_finish_revert_resize_migration_context(self):
|
||||
fake_rt = resource_tracker.ResourceTracker(None, None, None)
|
||||
fake_rt.tracked_migrations[self.instance['uuid']] = (
|
||||
self.migration, None)
|
||||
|
||||
@mock.patch('nova.compute.rpcapi.ComputeAPI.finish_revert_resize')
|
||||
@mock.patch.object(fake_rt, '_get_instance_type', return_value=None)
|
||||
@mock.patch.object(self.instance, 'revert_migration_context')
|
||||
@mock.patch.object(self.compute.network_api, 'get_instance_nw_info')
|
||||
@mock.patch.object(self.compute, '_is_instance_storage_shared')
|
||||
@mock.patch.object(self.compute, '_instance_update')
|
||||
@mock.patch.object(self.compute, '_get_resource_tracker',
|
||||
return_value=fake_rt)
|
||||
@mock.patch.object(self.compute.driver, 'destroy')
|
||||
@mock.patch.object(self.compute.network_api, 'setup_networks_on_host')
|
||||
@mock.patch.object(self.compute.network_api, 'migrate_instance_start')
|
||||
@mock.patch.object(compute_utils, 'notify_usage_exists')
|
||||
@mock.patch.object(self.migration, 'save')
|
||||
@mock.patch.object(objects.BlockDeviceMappingList,
|
||||
'get_by_instance_uuid')
|
||||
def do_revert_resize(mock_get_by_instance_uuid,
|
||||
mock_migration_save,
|
||||
mock_notify_usage_exists,
|
||||
mock_migrate_instance_start,
|
||||
mock_setup_networks_on_host,
|
||||
mock_destroy,
|
||||
mock_get_resource_tracker,
|
||||
mock_instance_update,
|
||||
mock_is_instance_storage_shared,
|
||||
mock_get_instance_nw_info,
|
||||
mock_revert_migration_context,
|
||||
mock_get_itype,
|
||||
mock_finish_revert):
|
||||
|
||||
self.instance.migration_context = objects.MigrationContext()
|
||||
self.migration.source_compute = self.instance['host']
|
||||
self.migration.source_node = self.instance['node']
|
||||
|
||||
self.compute.revert_resize(context=self.context,
|
||||
migration=self.migration,
|
||||
instance=self.instance,
|
||||
reservations=None)
|
||||
self.assertIsNotNone(self.instance.migration_context)
|
||||
|
||||
@mock.patch.object(self.compute, "_notify_about_instance_usage")
|
||||
@mock.patch.object(self.compute, "_set_instance_info")
|
||||
@mock.patch.object(self.instance, 'save')
|
||||
@mock.patch.object(self.migration, 'save')
|
||||
@mock.patch.object(self.compute.network_api, 'setup_networks_on_host')
|
||||
@mock.patch.object(self.compute.network_api, 'migrate_instance_finish')
|
||||
@mock.patch.object(self.compute.network_api, 'get_instance_nw_info')
|
||||
def do_finish_revert_resize(mock_get_instance_nw_info,
|
||||
mock_instance_finish,
|
||||
mock_setup_network,
|
||||
mock_mig_save,
|
||||
mock_inst_save,
|
||||
mock_set,
|
||||
mock_notify):
|
||||
self.compute.finish_revert_resize(context=self.context,
|
||||
instance=self.instance,
|
||||
reservations=None,
|
||||
migration=self.migration)
|
||||
self.assertIsNone(self.instance.migration_context)
|
||||
|
||||
do_revert_resize()
|
||||
do_finish_revert_resize()
|
||||
|
||||
def test_consoles_enabled(self):
|
||||
self.flags(enabled=False, group='vnc')
|
||||
self.flags(enabled=False, group='spice')
|
||||
|
|
Loading…
Reference in New Issue