diff options
| author | Russell Bryant <rbryant@redhat.com> | 2012-05-29 18:39:07 -0400 |
|---|---|---|
| committer | Russell Bryant <rbryant@redhat.com> | 2012-05-31 15:19:31 -0400 |
| commit | 093bdd6edff7ec391145018a0d3ce8e9dc1f84ff (patch) | |
| tree | 81f47a5cd2b7edaf1abad37dba5172ffde2c01c6 | |
| parent | 3a829e3543b8a346fce95f71cd51f68e7c4aae41 (diff) | |
Add pre_live_migration() to the compute rpcapi.
Part of bug 1006467.
This patch adds pre_live_migration() to the compute rpcapi. It is used
by the compute manager.
Change-Id: I70fb66ad194837faa1139e644888c4a7c7a5a0a6
| -rw-r--r-- | nova/compute/manager.py | 8 | ||||
| -rw-r--r-- | nova/compute/rpcapi.py | 6 | ||||
| -rw-r--r-- | nova/tests/compute/test_compute.py | 15 | ||||
| -rw-r--r-- | nova/tests/compute/test_rpcapi.py | 8 |
4 files changed, 24 insertions, 13 deletions
diff --git a/nova/compute/manager.py b/nova/compute/manager.py index 95c5bd763..2ac5a7eaf 100644 --- a/nova/compute/manager.py +++ b/nova/compute/manager.py @@ -2027,12 +2027,8 @@ class ComputeManager(manager.SchedulerDependentManager): else: disk = None - rpc.call(context, - rpc.queue_get_for(context, FLAGS.compute_topic, dest), - {'method': 'pre_live_migration', - 'args': {'instance_id': instance_id, - 'block_migration': block_migration, - 'disk': disk}}) + self.compute_rpcapi.pre_live_migration(context, instance_ref, + block_migration, disk, dest) except Exception: with excutils.save_and_reraise_exception(): diff --git a/nova/compute/rpcapi.py b/nova/compute/rpcapi.py index c08cdfe15..18da7b779 100644 --- a/nova/compute/rpcapi.py +++ b/nova/compute/rpcapi.py @@ -176,6 +176,12 @@ class ComputeAPI(nova.rpc.proxy.RpcProxy): instance_uuid=instance['uuid']), topic=self._compute_topic(ctxt, None, instance)) + def pre_live_migration(self, ctxt, instance, block_migration, disk, + host): + return self.call(ctxt, self.make_msg('pre_live_migration', + instance_id=instance['id'], block_migration=block_migration, + disk=disk), self._compute_topic(ctxt, host, None)) + def reboot_instance(self, ctxt, instance, reboot_type): self.cast(ctxt, self.make_msg('reboot_instance', instance_uuid=instance['uuid'], reboot_type=reboot_type), diff --git a/nova/tests/compute/test_compute.py b/nova/tests/compute/test_compute.py index f1903bd4c..e218fe60b 100644 --- a/nova/tests/compute/test_compute.py +++ b/nova/tests/compute/test_compute.py @@ -1447,8 +1447,9 @@ class ComputeTestCase(BaseTestCase): {"method": "pre_live_migration", "args": {'instance_id': inst_ref['id'], 'block_migration': True, - 'disk': None} - }).AndRaise(rpc.common.RemoteError('', '', '')) + 'disk': None}, + "version": compute_rpcapi.ComputeAPI.RPC_API_VERSION + }, None).AndRaise(rpc.common.RemoteError('', '', '')) # mocks for rollback rpc.call(c, 'network', {'method': 'setup_networks_on_host', @@ -1485,10 +1486,12 @@ class ComputeTestCase(BaseTestCase): # create self.mox.StubOutWithMock(rpc, 'call') - rpc.call(c, topic, {"method": "pre_live_migration", - "args": {'instance_id': instance_id, - 'block_migration': False, - 'disk': None}}) + rpc.call(c, topic, + {"method": "pre_live_migration", + "args": {'instance_id': instance_id, + 'block_migration': False, + 'disk': None}, + "version": compute_rpcapi.ComputeAPI.RPC_API_VERSION}, None) # start test self.mox.ReplayAll() diff --git a/nova/tests/compute/test_rpcapi.py b/nova/tests/compute/test_rpcapi.py index 95edb3622..b817d04af 100644 --- a/nova/tests/compute/test_rpcapi.py +++ b/nova/tests/compute/test_rpcapi.py @@ -57,7 +57,8 @@ class ComputeRpcAPITestCase(test.TestCase): if 'instance' in expected_msg['args']: instance = expected_msg['args']['instance'] del expected_msg['args']['instance'] - if method in ['rollback_live_migration_at_destination']: + if method in ['rollback_live_migration_at_destination', + 'pre_live_migration']: expected_msg['args']['instance_id'] = instance['id'] else: expected_msg['args']['instance_uuid'] = instance['uuid'] @@ -172,6 +173,11 @@ class ComputeRpcAPITestCase(test.TestCase): self._test_compute_api('power_on_instance', 'cast', instance=self.fake_instance) + def test_pre_live_migration(self): + self._test_compute_api('pre_live_migration', 'call', + instance=self.fake_instance, block_migration='block_migration', + disk='disk', host='host') + def test_reboot_instance(self): self._test_compute_api('reboot_instance', 'cast', instance=self.fake_instance, reboot_type='type') |
