From df744204b334f68edc34f703a1a7b89840b0d9ad Mon Sep 17 00:00:00 2001 From: Russell Bryant Date: Sat, 3 Nov 2012 21:01:53 -0400 Subject: Send all migration data to revert_resize. Update the revert_resize method of the compute rpc api to take all of the migration data instead of just the migration id. This removes the need for doing a db read at the beginning of revert_resize. Part of blueprint no-db-compute. Change-Id: I821cfcbd8edf83a0ffdf64100b6f9224205dea0a --- nova/compute/api.py | 2 +- nova/compute/manager.py | 15 ++++++++------- nova/compute/rpcapi.py | 9 ++++++--- nova/tests/compute/test_rpcapi.py | 4 ++-- 4 files changed, 17 insertions(+), 13 deletions(-) diff --git a/nova/compute/api.py b/nova/compute/api.py index 1bbcdbda9..2e77c128b 100644 --- a/nova/compute/api.py +++ b/nova/compute/api.py @@ -1557,7 +1557,7 @@ class API(base.Base): expected_task_state=None) self.compute_rpcapi.revert_resize(context, - instance=instance, migration_id=migration_ref['id'], + instance=instance, migration=migration_ref, host=migration_ref['dest_compute'], reservations=reservations) self.db.migration_update(elevated, migration_ref['id'], diff --git a/nova/compute/manager.py b/nova/compute/manager.py index 39c3faddf..b9f301ba1 100644 --- a/nova/compute/manager.py +++ b/nova/compute/manager.py @@ -230,7 +230,7 @@ class ComputeVirtAPI(virtapi.VirtAPI): class ComputeManager(manager.SchedulerDependentManager): """Manages the running instances from creation to destruction.""" - RPC_API_VERSION = '2.11' + RPC_API_VERSION = '2.12' def __init__(self, compute_driver=None, *args, **kwargs): """Load configuration options and connect to the hypervisor.""" @@ -1532,16 +1532,17 @@ class ComputeManager(manager.SchedulerDependentManager): @exception.wrap_exception(notifier=notifier, publisher_id=publisher_id()) @reverts_task_state @wrap_instance_fault - def revert_resize(self, context, instance, migration_id, - reservations=None): + def revert_resize(self, context, instance, migration=None, + migration_id=None, reservations=None): """Destroys the new instance on the destination machine. Reverts the model changes, and powers on the old instance on the source machine. """ - migration_ref = self.db.migration_get(context.elevated(), - migration_id) + if not migration: + migration = self.db.migration_get(context.elevated(), + migration_id) # NOTE(comstud): A revert_resize is essentially a resize back to # the old size, so we need to send a usage event here. @@ -1555,7 +1556,7 @@ class ComputeManager(manager.SchedulerDependentManager): teardown=True) self.network_api.migrate_instance_start(context, instance, - migration_ref) + migration) network_info = self._get_instance_nw_info(context, instance) block_device_info = self._get_instance_volume_block_device_info( @@ -1567,7 +1568,7 @@ class ComputeManager(manager.SchedulerDependentManager): self._terminate_volume_connections(context, instance) self.compute_rpcapi.finish_revert_resize(context, instance, - migration_ref['id'], migration_ref['source_compute'], + migration['id'], migration['source_compute'], reservations) @exception.wrap_exception(notifier=notifier, publisher_id=publisher_id()) diff --git a/nova/compute/rpcapi.py b/nova/compute/rpcapi.py index e42e025dc..6785ab23f 100644 --- a/nova/compute/rpcapi.py +++ b/nova/compute/rpcapi.py @@ -139,6 +139,7 @@ class ComputeAPI(nova.openstack.common.rpc.proxy.RpcProxy): 2.9 - Add publish_service_capabilities() 2.10 - Adds filter_properties and request_spec to prep_resize() 2.11 - Adds soft_delete_instance() and restore_instance() + 2.12 - Remove migration_id, add migration to revert_resize ''' # @@ -441,13 +442,15 @@ class ComputeAPI(nova.openstack.common.rpc.proxy.RpcProxy): instance=instance_p), topic=_compute_topic(self.topic, ctxt, None, instance)) - def revert_resize(self, ctxt, instance, migration_id, host, + def revert_resize(self, ctxt, instance, migration, host, reservations=None): instance_p = jsonutils.to_primitive(instance) + migration_p = jsonutils.to_primitive(migration) self.cast(ctxt, self.make_msg('revert_resize', - instance=instance_p, migration_id=migration_id, + instance=instance_p, migration=migration_p, reservations=reservations), - topic=_compute_topic(self.topic, ctxt, host, instance)) + topic=_compute_topic(self.topic, ctxt, host, instance), + version='2.12') def rollback_live_migration_at_destination(self, ctxt, instance, host): instance_p = jsonutils.to_primitive(instance) diff --git a/nova/tests/compute/test_rpcapi.py b/nova/tests/compute/test_rpcapi.py index f94cca857..14b416a5b 100644 --- a/nova/tests/compute/test_rpcapi.py +++ b/nova/tests/compute/test_rpcapi.py @@ -293,8 +293,8 @@ class ComputeRpcAPITestCase(test.TestCase): def test_revert_resize(self): self._test_compute_api('revert_resize', 'cast', - instance=self.fake_instance, migration_id='id', host='host', - reservations=list('fake_res')) + instance=self.fake_instance, migration={'id': 'fake_id'}, + host='host', reservations=list('fake_res'), version='2.12') def test_rollback_live_migration_at_destination(self): self._test_compute_api('rollback_live_migration_at_destination', -- cgit