diff options
| author | Russell Bryant <rbryant@redhat.com> | 2012-10-24 14:32:52 -0400 |
|---|---|---|
| committer | Russell Bryant <rbryant@redhat.com> | 2012-10-24 18:47:13 -0400 |
| commit | 151a4a7548549871e5d489ee0e86e64259266ff0 (patch) | |
| tree | 866ac00ff9b5a0e894b48e7ce69488efc9438499 | |
| parent | 569df8b30f4b94e6287a971c0f41bf5bb2cfad15 (diff) | |
| download | nova-151a4a7548549871e5d489ee0e86e64259266ff0.tar.gz nova-151a4a7548549871e5d489ee0e86e64259266ff0.tar.xz nova-151a4a7548549871e5d489ee0e86e64259266ff0.zip | |
Send full migration to confirm_resize.
Update the confirm_resize method of the compute rpc api to receive all
of the migration data from the db instead of having to look it up as the
first step.
Part of blueprint no-db-compute.
Change-Id: I7eee64937a4b978287457f0213d4d4364f171f45
| -rw-r--r-- | nova/compute/api.py | 4 | ||||
| -rw-r--r-- | nova/compute/manager.py | 13 | ||||
| -rw-r--r-- | nova/compute/rpcapi.py | 9 | ||||
| -rw-r--r-- | nova/tests/compute/test_rpcapi.py | 8 |
4 files changed, 19 insertions, 15 deletions
diff --git a/nova/compute/api.py b/nova/compute/api.py index 7773d9f32..7b5dcd0f0 100644 --- a/nova/compute/api.py +++ b/nova/compute/api.py @@ -904,7 +904,7 @@ class API(base.Base): downsize_reservations = self._reserve_quota_delta(context, deltas) self.compute_rpcapi.confirm_resize(context, - instance, migration_ref['id'], + instance, migration_ref, host=src_host, cast=False, reservations=downsize_reservations) @@ -1537,7 +1537,7 @@ class API(base.Base): expected_task_state=None) self.compute_rpcapi.confirm_resize(context, - instance=instance, migration_id=migration_ref['id'], + instance=instance, migration=migration_ref, host=migration_ref['source_compute'], reservations=reservations) diff --git a/nova/compute/manager.py b/nova/compute/manager.py index 0b2d1995a..e3a6a2986 100644 --- a/nova/compute/manager.py +++ b/nova/compute/manager.py @@ -216,7 +216,7 @@ def _get_image_meta(context, image_ref): class ComputeManager(manager.SchedulerDependentManager): """Manages the running instances from creation to destruction.""" - RPC_API_VERSION = '2.6' + RPC_API_VERSION = '2.7' def __init__(self, compute_driver=None, *args, **kwargs): """Load configuration options and connect to the hypervisor.""" @@ -1431,10 +1431,11 @@ class ComputeManager(manager.SchedulerDependentManager): @exception.wrap_exception(notifier=notifier, publisher_id=publisher_id()) @wrap_instance_fault - def confirm_resize(self, context, migration_id, instance, - reservations=None): + def confirm_resize(self, context, instance, reservations=None, + migration=None, migration_id=None): """Destroys the source instance.""" - migration_ref = self.db.migration_get(context, migration_id) + if not migration: + migration = self.db.migration_get(context, migration_id) self._notify_about_instance_usage(context, instance, "resize.confirm.start") @@ -1443,10 +1444,10 @@ class ComputeManager(manager.SchedulerDependentManager): reservations): # NOTE(tr3buchet): tear down networks on source host self.network_api.setup_networks_on_host(context, instance, - migration_ref['source_compute'], teardown=True) + migration['source_compute'], teardown=True) network_info = self._get_instance_nw_info(context, instance) - self.driver.confirm_migration(migration_ref, instance, + self.driver.confirm_migration(migration, instance, self._legacy_nw_info(network_info)) self._notify_about_instance_usage( diff --git a/nova/compute/rpcapi.py b/nova/compute/rpcapi.py index e9d82361f..e0988d92b 100644 --- a/nova/compute/rpcapi.py +++ b/nova/compute/rpcapi.py @@ -134,6 +134,7 @@ class ComputeAPI(nova.openstack.common.rpc.proxy.RpcProxy): 2.4 - Add bdms to terminate_instance 2.5 - Add block device and network info to reboot_instance 2.6 - Remove migration_id, add migration to resize_instance + 2.7 - Remove migration_id, add migration to confirm_resize ''' # @@ -205,14 +206,16 @@ class ComputeAPI(nova.openstack.common.rpc.proxy.RpcProxy): dest_check_data=dest_check_data), topic=_compute_topic(self.topic, ctxt, None, instance)) - def confirm_resize(self, ctxt, instance, migration_id, host, + def confirm_resize(self, ctxt, instance, migration, host, reservations=None, cast=True): rpc_method = self.cast if cast else self.call instance_p = jsonutils.to_primitive(instance) + migration_p = jsonutils.to_primitive(migration) return rpc_method(ctxt, self.make_msg('confirm_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.7') def detach_volume(self, ctxt, instance, volume_id): instance_p = jsonutils.to_primitive(instance) diff --git a/nova/tests/compute/test_rpcapi.py b/nova/tests/compute/test_rpcapi.py index dd374ac55..ee863cc8a 100644 --- a/nova/tests/compute/test_rpcapi.py +++ b/nova/tests/compute/test_rpcapi.py @@ -123,13 +123,13 @@ class ComputeRpcAPITestCase(test.TestCase): def test_confirm_resize_cast(self): self._test_compute_api('confirm_resize', 'cast', - instance=self.fake_instance, migration_id='id', host='host', - reservations=list('fake_res')) + instance=self.fake_instance, migration={'id': 'foo'}, + host='host', reservations=list('fake_res'), version='2.7') def test_confirm_resize_call(self): self._test_compute_api('confirm_resize', 'call', - instance=self.fake_instance, migration_id='id', host='host', - reservations=list('fake_res')) + instance=self.fake_instance, migration={'id': 'foo'}, + host='host', reservations=list('fake_res'), version='2.7') def test_detach_volume(self): self._test_compute_api('detach_volume', 'cast', |
