diff options
author | Jenkins <jenkins@review.openstack.org> | 2013-06-17 23:46:31 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2013-06-17 23:46:31 +0000 |
commit | bf0f41d141ebdf7ead1e3a4f34cca2a16ff75056 (patch) | |
tree | eb1cfc42b10819974cf7d8d624a5b17d81cc4575 | |
parent | b57b6d76328e22db56600e02ae531b6f68ad9f53 (diff) | |
parent | 0fed513b695cd15aaca24d24926a1c7d13e63509 (diff) | |
download | nova-bf0f41d141ebdf7ead1e3a4f34cca2a16ff75056.tar.gz nova-bf0f41d141ebdf7ead1e3a4f34cca2a16ff75056.tar.xz nova-bf0f41d141ebdf7ead1e3a4f34cca2a16ff75056.zip |
Merge "Allow confirm_resize if instance is in 'deleting' status"
-rwxr-xr-x | nova/compute/manager.py | 3 | ||||
-rw-r--r-- | nova/tests/compute/test_compute.py | 37 |
2 files changed, 39 insertions, 1 deletions
diff --git a/nova/compute/manager.py b/nova/compute/manager.py index 11ec70e44..15d1d7d28 100755 --- a/nova/compute/manager.py +++ b/nova/compute/manager.py @@ -2239,7 +2239,8 @@ class ComputeManager(manager.SchedulerDependentManager): instance = self._instance_update(context, instance['uuid'], vm_state=vm_state, task_state=None, - expected_task_state=None) + expected_task_state=[None, + task_states.DELETING]) self._notify_about_instance_usage( context, instance, "resize.confirm.end", diff --git a/nova/tests/compute/test_compute.py b/nova/tests/compute/test_compute.py index bf6508803..8c6fce3a5 100644 --- a/nova/tests/compute/test_compute.py +++ b/nova/tests/compute/test_compute.py @@ -6704,6 +6704,43 @@ class ComputeAPITestCase(BaseTestCase): self.compute.terminate_instance(self.context, instance=jsonutils.to_primitive(instance)) + def test_allow_confirm_resize_on_instance_in_deleting_task_state(self): + instance = self._create_fake_instance() + old_type = flavors.extract_flavor(instance) + new_type = flavors.get_flavor_by_flavor_id('4') + sys_meta = utils.metadata_to_dict(instance['system_metadata']) + sys_meta = flavors.save_flavor_info(sys_meta, + old_type, 'old_') + sys_meta = flavors.save_flavor_info(sys_meta, + new_type, 'new_') + sys_meta = flavors.save_flavor_info(sys_meta, + new_type) + + fake_rt = self.mox.CreateMockAnything() + + def fake_drop_resize_claim(*args, **kwargs): + pass + + def fake_get_resource_tracker(self): + return fake_rt + + self.stubs.Set(fake_rt, 'drop_resize_claim', fake_drop_resize_claim) + self.stubs.Set(self.compute, '_get_resource_tracker', + fake_get_resource_tracker) + + migration = db.migration_create(self.context.elevated(), + {'instance_uuid': instance['uuid'], + 'status': 'finished'}) + instance = db.instance_update(self.context, instance['uuid'], + {'task_state': task_states.DELETING, + 'vm_state': vm_states.RESIZED, + 'system_metadata': sys_meta}) + + self.compute.confirm_resize(self.context, instance, + migration=migration) + instance = db.instance_get_by_uuid(self.context, instance['uuid']) + self.assertEqual(vm_states.ACTIVE, instance['vm_state']) + def test_resize_revert_through_api(self): instance = jsonutils.to_primitive(self._create_fake_instance()) instance = db.instance_get_by_uuid(self.context, instance['uuid']) |