Remove unnecessary retrieval of Migration object

This has already been retrieved with an elevated context. There's no
need to retrieve it again.

Change-Id: I5fa7786523bc1b6001247c6daaee7e984e9a3b65
Signed-off-by: Stephen Finucane <stephenfin@redhat.com>
This commit is contained in:
Stephen Finucane 2020-05-22 12:34:46 +01:00
parent a9e0b0573d
commit 6ae11a0bcf
3 changed files with 8 additions and 36 deletions

View File

@ -4171,29 +4171,19 @@ class ComputeManager(manager.Manager):
source host.
"""
@utils.synchronized(instance.uuid)
def do_confirm_resize(context, instance, migration_id):
# NOTE(wangpan): Get the migration status from db, if it has been
# confirmed, we do nothing and return here
LOG.debug("Going to confirm migration %s", migration_id,
def do_confirm_resize(context, instance, migration):
LOG.debug("Going to confirm migration %s", migration.id,
instance=instance)
try:
# TODO(russellb) Why are we sending the migration object just
# to turn around and look it up from the db again?
migration = objects.Migration.get_by_id(
context.elevated(), migration_id)
except exception.MigrationNotFound:
LOG.error("Migration %s is not found during confirmation",
migration_id, instance=instance)
return
if migration.status == 'confirmed':
LOG.info("Migration %s is already confirmed",
migration_id, instance=instance)
migration.id, instance=instance)
return
elif migration.status not in ('finished', 'confirming'):
if migration.status not in ('finished', 'confirming'):
LOG.warning("Unexpected confirmation status '%(status)s' "
"of migration %(id)s, exit confirmation process",
{"status": migration.status, "id": migration_id},
{"status": migration.status, "id": migration.id},
instance=instance)
return
@ -4237,7 +4227,7 @@ class ComputeManager(manager.Manager):
self._delete_scheduler_instance_info(
context, instance.uuid)
do_confirm_resize(context, instance, migration.id)
do_confirm_resize(context, instance, migration)
def _get_updated_nw_info_with_pci_mapping(self, nw_info, pci_mapping):
# NOTE(adrianc): This method returns a copy of nw_info if modifications

View File

@ -8110,21 +8110,6 @@ class ComputeTestCase(BaseTestCase,
event.EVENT_LIFECYCLE_STOPPED)
self.compute.handle_events(event_instance)
@mock.patch.object(objects.Migration, 'get_by_id')
def test_confirm_resize_roll_back_quota_migration_not_found(self,
mock_get_by_id):
instance = self._create_fake_instance_obj()
migration = objects.Migration()
migration.instance_uuid = instance.uuid
migration.status = 'finished'
migration.id = 0
mock_get_by_id.side_effect = exception.MigrationNotFound(
migration_id=0)
self.compute.confirm_resize(self.context, instance=instance,
migration=migration)
@mock.patch.object(instance_obj.Instance, 'get_by_uuid')
def test_confirm_resize_roll_back_quota_instance_not_found(self,
mock_get_by_id):

View File

@ -8615,20 +8615,18 @@ class ComputeManagerMigrationTestCase(test.NoDBTestCase,
@mock.patch('nova.objects.MigrationContext.get_pci_mapping_for_migration')
@mock.patch('nova.compute.utils.add_instance_fault_from_exc')
@mock.patch('nova.objects.Migration.get_by_id')
@mock.patch('nova.objects.Instance.get_by_uuid')
@mock.patch('nova.compute.utils.notify_about_instance_usage')
@mock.patch('nova.compute.utils.notify_about_instance_action')
@mock.patch('nova.objects.Instance.save')
def test_confirm_resize_driver_confirm_migration_fails(
self, instance_save, notify_action, notify_usage,
instance_get_by_uuid, migration_get_by_id, add_fault, get_mapping):
instance_get_by_uuid, add_fault, get_mapping):
"""Tests the scenario that driver.confirm_migration raises some error
to make sure the error is properly handled, like the instance and
migration status is set to 'error'.
"""
self.migration.status = 'confirming'
migration_get_by_id.return_value = self.migration
instance_get_by_uuid.return_value = self.instance
self.instance.migration_context = objects.MigrationContext()
@ -8667,7 +8665,6 @@ class ComputeManagerMigrationTestCase(test.NoDBTestCase,
confirm_migration.assert_called_once()
network_api.setup_networks_on_host.assert_called_once()
instance_get_by_uuid.assert_called_once()
migration_get_by_id.assert_called_once()
def test_confirm_resize_calls_virt_driver_with_old_pci(self):
@mock.patch.object(self.migration, 'save')