Merge "Pass migration_ref when when auto-confirming"

This commit is contained in:
Jenkins 2013-03-12 00:55:49 +00:00 committed by Gerrit Code Review
commit ae251b99a3
3 changed files with 10 additions and 6 deletions

View File

@ -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)

View File

@ -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.")

View File

@ -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',