summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRussell Bryant <rbryant@redhat.com>2012-10-24 14:32:52 -0400
committerRussell Bryant <rbryant@redhat.com>2012-10-24 18:47:13 -0400
commit151a4a7548549871e5d489ee0e86e64259266ff0 (patch)
tree866ac00ff9b5a0e894b48e7ce69488efc9438499
parent569df8b30f4b94e6287a971c0f41bf5bb2cfad15 (diff)
downloadnova-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.py4
-rw-r--r--nova/compute/manager.py13
-rw-r--r--nova/compute/rpcapi.py9
-rw-r--r--nova/tests/compute/test_rpcapi.py8
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',