diff options
Diffstat (limited to 'nova/compute')
| -rw-r--r-- | nova/compute/manager.py | 12 | ||||
| -rw-r--r-- | nova/compute/rpcapi.py | 25 |
2 files changed, 24 insertions, 13 deletions
diff --git a/nova/compute/manager.py b/nova/compute/manager.py index 61703318f..1b8115531 100644 --- a/nova/compute/manager.py +++ b/nova/compute/manager.py @@ -247,7 +247,7 @@ def _get_image_meta(context, image_ref): class ComputeManager(manager.SchedulerDependentManager): """Manages the running instances from creation to destruction.""" - RPC_API_VERSION = '1.42' + RPC_API_VERSION = '1.43' def __init__(self, compute_driver=None, *args, **kwargs): """Load configuration options and connect to the hypervisor.""" @@ -2181,6 +2181,9 @@ class ComputeManager(manager.SchedulerDependentManager): in) nova.db.sqlalchemy.models.Instance.Id :param block_migration: if true, prepare for block migration :param disk_over_commit: if true, allow disk over commit + + Returns a mapping of values required in case of block migration + and None otherwise. """ if not instance: instance = self.db.instance_get(ctxt, instance_id) @@ -2192,6 +2195,8 @@ class ComputeManager(manager.SchedulerDependentManager): finally: self.driver.check_can_live_migrate_destination_cleanup(ctxt, dest_check_data) + if dest_check_data and 'migrate_data' in dest_check_data: + return dest_check_data['migrate_data'] @exception.wrap_exception(notifier=notifier, publisher_id=publisher_id()) def check_can_live_migrate_source(self, ctxt, dest_check_data, @@ -2261,7 +2266,7 @@ class ComputeManager(manager.SchedulerDependentManager): self.driver.pre_block_migration(context, instance, disk) def live_migration(self, context, dest, block_migration=False, - instance=None, instance_id=None): + instance=None, instance_id=None, migrate_data=None): """Executing live migration. :param context: security context @@ -2269,6 +2274,7 @@ class ComputeManager(manager.SchedulerDependentManager): :param instance: instance dict :param dest: destination host :param block_migration: if true, prepare for block migration + :param migrate_data: implementation specific params """ # Get instance for error handling. @@ -2306,7 +2312,7 @@ class ComputeManager(manager.SchedulerDependentManager): self.driver.live_migration(context, instance, dest, self._post_live_migration, self.rollback_live_migration, - block_migration) + block_migration, migrate_data) def _post_live_migration(self, ctxt, instance_ref, dest, block_migration=False): diff --git a/nova/compute/rpcapi.py b/nova/compute/rpcapi.py index 366eaaacf..c81d75356 100644 --- a/nova/compute/rpcapi.py +++ b/nova/compute/rpcapi.py @@ -123,6 +123,7 @@ class ComputeAPI(nova.openstack.common.rpc.proxy.RpcProxy): 1.42 - Add reservations arg to prep_resize(), resize_instance(), finish_resize(), confirm_resize(), revert_resize() and finish_revert_resize() + 1.43 - Add migrate_data to live_migration() ''' BASE_RPC_API_VERSION = '1.0' @@ -168,14 +169,16 @@ class ComputeAPI(nova.openstack.common.rpc.proxy.RpcProxy): version='1.36') def check_can_live_migrate_destination(self, ctxt, instance, destination, - block_migration, disk_over_commit): + block_migration, disk_over_commit): instance_p = jsonutils.to_primitive(instance) - self.call(ctxt, self.make_msg('check_can_live_migrate_destination', - instance=instance_p, - block_migration=block_migration, - disk_over_commit=disk_over_commit), - topic=_compute_topic(self.topic, ctxt, destination, None), - version='1.10') + return self.call(ctxt, + self.make_msg('check_can_live_migrate_destination', + instance=instance_p, + block_migration=block_migration, + disk_over_commit=disk_over_commit), + topic=_compute_topic(self.topic, + ctxt, destination, None), + version='1.10') def check_can_live_migrate_source(self, ctxt, instance, dest_check_data): instance_p = jsonutils.to_primitive(instance) @@ -283,12 +286,14 @@ class ComputeAPI(nova.openstack.common.rpc.proxy.RpcProxy): topic=_compute_topic(self.topic, ctxt, None, instance), version='1.19') - def live_migration(self, ctxt, instance, dest, block_migration, host): + def live_migration(self, ctxt, instance, dest, block_migration, host, + migrate_data=None): instance_p = jsonutils.to_primitive(instance) self.cast(ctxt, self.make_msg('live_migration', instance=instance_p, - dest=dest, block_migration=block_migration), + dest=dest, block_migration=block_migration, + migrate_data=migrate_data), topic=_compute_topic(self.topic, ctxt, host, None), - version='1.40') + version='1.43') def pause_instance(self, ctxt, instance): instance_p = jsonutils.to_primitive(instance) |
