diff options
| author | Jenkins <jenkins@review.openstack.org> | 2013-01-04 12:30:15 +0000 |
|---|---|---|
| committer | Gerrit Code Review <review@openstack.org> | 2013-01-04 12:30:15 +0000 |
| commit | 89c2e6b71482db9ccd1d39bf0299b46c15477690 (patch) | |
| tree | 9fe74175cb4594b90ea9b205f5fad7ece5b69e7c /nova | |
| parent | b34c7f32b303e4b6d6cea45094c487a0230005b3 (diff) | |
| parent | 54928267e8807167fb96c8fe414a482833a39465 (diff) | |
Merge "Fix race condition of resize confirmation"
Diffstat (limited to 'nova')
| -rw-r--r-- | nova/compute/manager.py | 6 | ||||
| -rw-r--r-- | nova/tests/compute/test_compute.py | 9 |
2 files changed, 12 insertions, 3 deletions
diff --git a/nova/compute/manager.py b/nova/compute/manager.py index 9e4ac301e..489deef42 100644 --- a/nova/compute/manager.py +++ b/nova/compute/manager.py @@ -2006,6 +2006,9 @@ class ComputeManager(manager.SchedulerDependentManager): image, resize_instance, block_device_info) + migration = self.conductor_api.migration_update(context, + migration, 'finished') + instance = self._instance_update(context, instance['uuid'], vm_state=vm_states.RESIZED, @@ -2014,9 +2017,6 @@ class ComputeManager(manager.SchedulerDependentManager): expected_task_state=task_states. RESIZE_FINISH) - migration = self.conductor_api.migration_update(context, - migration, 'finished') - self._notify_about_instance_usage( context, instance, "finish_resize.end", network_info=network_info) diff --git a/nova/tests/compute/test_compute.py b/nova/tests/compute/test_compute.py index 8d9d9fadd..01a4c4de7 100644 --- a/nova/tests/compute/test_compute.py +++ b/nova/tests/compute/test_compute.py @@ -1726,7 +1726,16 @@ class ComputeTestCase(BaseTestCase): def fake(*args, **kwargs): pass + def fake_migration_update(context, id, values): + # Ensure instance status updates is after the migration finish + migration_ref = db.migration_get(context, id) + instance_uuid = migration_ref['instance_uuid'] + instance = db.instance_get_by_uuid(context, instance_uuid) + self.assertFalse(instance['vm_state'] == vm_states.RESIZED) + self.assertEqual(instance['task_state'], task_states.RESIZE_FINISH) + self.stubs.Set(self.compute.driver, 'finish_migration', fake) + self.stubs.Set(db, 'migration_update', fake_migration_update) reservations = self._ensure_quota_reservations_committed() |
