diff options
| -rw-r--r-- | nova/compute/api.py | 7 | ||||
| -rwxr-xr-x | nova/compute/manager.py | 3 | ||||
| -rw-r--r-- | nova/tests/compute/test_compute.py | 6 |
3 files changed, 10 insertions, 6 deletions
diff --git a/nova/compute/api.py b/nova/compute/api.py index dc90748a4..78667882a 100644 --- a/nova/compute/api.py +++ b/nova/compute/api.py @@ -1848,11 +1848,12 @@ class API(base.Base): @wrap_check_policy @check_instance_lock @check_instance_state(vm_state=[vm_states.RESIZED]) - def confirm_resize(self, context, instance): + def confirm_resize(self, context, instance, migration_ref=None): """Confirms a migration/resize and deletes the 'old' instance.""" elevated = context.elevated() - migration_ref = self.db.migration_get_by_instance_and_status(elevated, - instance['uuid'], 'finished') + if migration_ref is None: + migration_ref = self.db.migration_get_by_instance_and_status( + elevated, instance['uuid'], 'finished') # reserve quota only for any decrease in resource usage deltas = self._downsize_quota_delta(context, migration_ref) diff --git a/nova/compute/manager.py b/nova/compute/manager.py index 338708f4e..f1b0f6fe0 100755 --- a/nova/compute/manager.py +++ b/nova/compute/manager.py @@ -3322,7 +3322,8 @@ class ComputeManager(manager.SchedulerDependentManager): instance=instance) continue try: - self.compute_api.confirm_resize(context, instance) + self.compute_api.confirm_resize(context, instance, + migration_ref=migration) except Exception, e: msg = _("Error auto-confirming resize: %(e)s. " "Will retry later.") diff --git a/nova/tests/compute/test_compute.py b/nova/tests/compute/test_compute.py index e94d8b788..0e41678b3 100644 --- a/nova/tests/compute/test_compute.py +++ b/nova/tests/compute/test_compute.py @@ -3414,13 +3414,15 @@ class ComputeTestCase(BaseTestCase): if migration['id'] == m['id']: migration['status'] = status - def fake_confirm_resize(context, instance): + def fake_confirm_resize(context, instance, migration_ref=None): # raise exception for 'fake_uuid4' to check migration status # does not get set to 'error' on confirm_resize failure. if instance['uuid'] == 'fake_uuid4': raise test.TestingException + self.assertNotEqual(migration_ref, None) for migration in migrations: - if migration['instance_uuid'] == instance['uuid']: + if (migration['instance_uuid'] == + migration_ref['instance_uuid']): migration['status'] = 'confirmed' self.stubs.Set(db, 'instance_get_by_uuid', |
