summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--nova/compute/manager.py7
-rw-r--r--nova/compute/rpcapi.py7
-rw-r--r--nova/tests/compute/test_compute.py3
-rw-r--r--nova/tests/compute/test_rpcapi.py8
4 files changed, 18 insertions, 7 deletions
diff --git a/nova/compute/manager.py b/nova/compute/manager.py
index 2ac5a7eaf..d9f3ee14f 100644
--- a/nova/compute/manager.py
+++ b/nova/compute/manager.py
@@ -2105,11 +2105,8 @@ class ComputeManager(manager.SchedulerDependentManager):
# Define domain at destination host, without doing it,
# pause/suspend/terminate do not work.
- rpc.call(ctxt,
- rpc.queue_get_for(ctxt, FLAGS.compute_topic, dest),
- {"method": "post_live_migration_at_destination",
- "args": {'instance_id': instance_ref['id'],
- 'block_migration': block_migration}})
+ self.compute_rpcapi.post_live_migration_at_destination(ctxt,
+ instance_ref, block_migration, dest)
# No instance booting at source host, but instance dir
# must be deleted for preparing next block migration
diff --git a/nova/compute/rpcapi.py b/nova/compute/rpcapi.py
index 18da7b779..005b5a8a5 100644
--- a/nova/compute/rpcapi.py
+++ b/nova/compute/rpcapi.py
@@ -161,6 +161,13 @@ class ComputeAPI(nova.rpc.proxy.RpcProxy):
instance_uuid=instance['uuid']),
topic=self._compute_topic(ctxt, None, instance))
+ def post_live_migration_at_destination(self, ctxt, instance,
+ block_migration, host):
+ return self.call(ctxt,
+ self.make_msg('post_live_migration_at_destination',
+ instance_id=instance['id'], block_migration=block_migration),
+ self._compute_topic(ctxt, host, None))
+
def pause_instance(self, ctxt, instance):
self.cast(ctxt, self.make_msg('pause_instance',
instance_uuid=instance['uuid']),
diff --git a/nova/tests/compute/test_compute.py b/nova/tests/compute/test_compute.py
index 2d9ef9e4b..6e9457062 100644
--- a/nova/tests/compute/test_compute.py
+++ b/nova/tests/compute/test_compute.py
@@ -1528,7 +1528,8 @@ class ComputeTestCase(BaseTestCase):
self.mox.StubOutWithMock(rpc, 'call')
rpc.call(c, rpc.queue_get_for(c, FLAGS.compute_topic, dest),
{"method": "post_live_migration_at_destination",
- "args": {'instance_id': i_ref['id'], 'block_migration': False}})
+ "args": {'instance_id': i_ref['id'], 'block_migration': False},
+ "version": compute_rpcapi.ComputeAPI.RPC_API_VERSION}, None)
self.mox.StubOutWithMock(self.compute.driver, 'unplug_vifs')
self.compute.driver.unplug_vifs(i_ref, [])
rpc.call(c, 'network', {'method': 'setup_networks_on_host',
diff --git a/nova/tests/compute/test_rpcapi.py b/nova/tests/compute/test_rpcapi.py
index b817d04af..3f5e63d35 100644
--- a/nova/tests/compute/test_rpcapi.py
+++ b/nova/tests/compute/test_rpcapi.py
@@ -58,7 +58,8 @@ class ComputeRpcAPITestCase(test.TestCase):
instance = expected_msg['args']['instance']
del expected_msg['args']['instance']
if method in ['rollback_live_migration_at_destination',
- 'pre_live_migration']:
+ 'pre_live_migration',
+ 'post_live_migration_at_destination']:
expected_msg['args']['instance_id'] = instance['id']
else:
expected_msg['args']['instance_uuid'] = instance['uuid']
@@ -161,6 +162,11 @@ class ComputeRpcAPITestCase(test.TestCase):
self._test_compute_api('lock_instance', 'cast',
instance=self.fake_instance)
+ def test_post_live_migration_at_destination(self):
+ self._test_compute_api('post_live_migration_at_destination', 'call',
+ instance=self.fake_instance, block_migration='block_migration',
+ host='host')
+
def test_pause_instance(self):
self._test_compute_api('pause_instance', 'cast',
instance=self.fake_instance)