summaryrefslogtreecommitdiffstats
path: root/nova
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 /nova
parent569df8b30f4b94e6287a971c0f41bf5bb2cfad15 (diff)
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
Diffstat (limited to 'nova')
-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',