summaryrefslogtreecommitdiffstats
path: root/nova
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2013-01-04 12:30:15 +0000
committerGerrit Code Review <review@openstack.org>2013-01-04 12:30:15 +0000
commit89c2e6b71482db9ccd1d39bf0299b46c15477690 (patch)
tree9fe74175cb4594b90ea9b205f5fad7ece5b69e7c /nova
parentb34c7f32b303e4b6d6cea45094c487a0230005b3 (diff)
parent54928267e8807167fb96c8fe414a482833a39465 (diff)
Merge "Fix race condition of resize confirmation"
Diffstat (limited to 'nova')
-rw-r--r--nova/compute/manager.py6
-rw-r--r--nova/tests/compute/test_compute.py9
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()