diff options
| author | Jenkins <jenkins@review.openstack.org> | 2013-03-23 05:14:50 +0000 |
|---|---|---|
| committer | Gerrit Code Review <review@openstack.org> | 2013-03-23 05:14:50 +0000 |
| commit | d0daaeedae8f0a5fd4a32d2e29df365588f15f7f (patch) | |
| tree | bc24324c19d96bdfb41c5bab3a112995c3791023 | |
| parent | c3d4bc42535e17f86cb1a040c8a7cc00ffa843b9 (diff) | |
| parent | 5908b60b0420f1ad528e56b0c147a330e9a1a5d6 (diff) | |
| download | nova-d0daaeedae8f0a5fd4a32d2e29df365588f15f7f.tar.gz nova-d0daaeedae8f0a5fd4a32d2e29df365588f15f7f.tar.xz nova-d0daaeedae8f0a5fd4a32d2e29df365588f15f7f.zip | |
Merge "Make _downsize_quota_delta() use stashed instance types"
| -rw-r--r-- | nova/compute/api.py | 16 | ||||
| -rw-r--r-- | nova/tests/compute/test_compute.py | 14 |
2 files changed, 20 insertions, 10 deletions
diff --git a/nova/compute/api.py b/nova/compute/api.py index d9105470a..997251c24 100644 --- a/nova/compute/api.py +++ b/nova/compute/api.py @@ -1074,8 +1074,7 @@ class API(base.Base): # 2. down-resize: here -instance['vcpus'/'memory_mb'] are # shy by delta(old, new) from the quota usages accounted # for this instance, so we must adjust - deltas = self._downsize_quota_delta(context, - migration_ref) + deltas = self._downsize_quota_delta(context, instance) downsize_reservations = self._reserve_quota_delta(context, deltas) @@ -1857,7 +1856,7 @@ class API(base.Base): elevated, instance['uuid'], 'finished') # reserve quota only for any decrease in resource usage - deltas = self._downsize_quota_delta(context, migration_ref) + deltas = self._downsize_quota_delta(context, instance) reservations = self._reserve_quota_delta(context, deltas) instance = self.update(context, instance, vm_state=vm_states.ACTIVE, @@ -1932,15 +1931,14 @@ class API(base.Base): old_instance_type, -1, -1) @staticmethod - def _downsize_quota_delta(context, migration_ref): + def _downsize_quota_delta(context, instance): """ Calculate deltas required to adjust quota for an instance downsize. """ - old_instance_type = instance_types.get_instance_type( - migration_ref['old_instance_type_id']) - new_instance_type = instance_types.get_instance_type( - migration_ref['new_instance_type_id']) - + old_instance_type = instance_types.extract_instance_type(instance, + 'old_') + new_instance_type = instance_types.extract_instance_type(instance, + 'new_') return API._resize_quota_delta(context, new_instance_type, old_instance_type, 1, -1) diff --git a/nova/tests/compute/test_compute.py b/nova/tests/compute/test_compute.py index ebf7a38b4..ce688eb90 100644 --- a/nova/tests/compute/test_compute.py +++ b/nova/tests/compute/test_compute.py @@ -5293,6 +5293,17 @@ class ComputeAPITestCase(BaseTestCase): instance = db.instance_get_by_uuid(self.context, instance['uuid']) self.compute_api.resize(self.context, instance, '4') + # Do the prep/finish_resize steps (manager does this) + old_type = instance_types.extract_instance_type(instance) + new_type = instance_types.get_instance_type_by_flavor_id('4') + sys_meta = utils.metadata_to_dict(instance['system_metadata']) + sys_meta = instance_types.save_instance_type_info(sys_meta, + old_type, 'old_') + sys_meta = instance_types.save_instance_type_info(sys_meta, + new_type, 'new_') + sys_meta = instance_types.save_instance_type_info(sys_meta, + new_type) + # create a fake migration record (manager does this) db.migration_create(self.context.elevated(), {'instance_uuid': instance['uuid'], @@ -5300,7 +5311,8 @@ class ComputeAPITestCase(BaseTestCase): # set the state that the instance gets when resize finishes instance = db.instance_update(self.context, instance['uuid'], {'task_state': None, - 'vm_state': vm_states.RESIZED}) + 'vm_state': vm_states.RESIZED, + 'system_metadata': sys_meta}) self.compute_api.confirm_resize(self.context, instance) self.compute.terminate_instance(self.context, |
