diff options
-rw-r--r-- | nova/compute/manager.py | 7 | ||||
-rw-r--r-- | nova/compute/rpcapi.py | 7 | ||||
-rw-r--r-- | nova/tests/compute/test_compute.py | 3 | ||||
-rw-r--r-- | nova/tests/compute/test_rpcapi.py | 8 |
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) |