summaryrefslogtreecommitdiffstats
path: root/nova/compute
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2012-07-26 21:59:21 +0000
committerGerrit Code Review <review@openstack.org>2012-07-26 21:59:21 +0000
commit53046eb4e01d6676469fbeaeba2876e7b3df6c7c (patch)
treebdbe074135ca459df2dfefc8c73068b558f63482 /nova/compute
parent66f9e085aae73ecfbf9ac3a1447917fa99d8a606 (diff)
parentcce8270d30a4d8e4a9e6c021056d10e65dc0831c (diff)
Merge "Send a full instance via rpc for finish_resize."
Diffstat (limited to 'nova/compute')
-rw-r--r--nova/compute/manager.py47
-rw-r--r--nova/compute/rpcapi.py7
2 files changed, 29 insertions, 25 deletions
diff --git a/nova/compute/manager.py b/nova/compute/manager.py
index 559d7c33d..c969d9762 100644
--- a/nova/compute/manager.py
+++ b/nova/compute/manager.py
@@ -298,7 +298,7 @@ def _get_additional_capabilities():
class ComputeManager(manager.SchedulerDependentManager):
"""Manages the running instances from creation to destruction."""
- RPC_API_VERSION = '1.13'
+ RPC_API_VERSION = '1.14'
def __init__(self, compute_driver=None, *args, **kwargs):
"""Load configuration options and connect to the hypervisor."""
@@ -1592,7 +1592,7 @@ class ComputeManager(manager.SchedulerDependentManager):
self._notify_about_instance_usage(context, instance_ref, "resize.end",
network_info=network_info)
- def _finish_resize(self, context, instance_ref, migration_ref, disk_info,
+ def _finish_resize(self, context, instance, migration_ref, disk_info,
image):
resize_instance = False
old_instance_type_id = migration_ref['old_instance_type_id']
@@ -1600,9 +1600,9 @@ class ComputeManager(manager.SchedulerDependentManager):
if old_instance_type_id != new_instance_type_id:
instance_type = instance_types.get_instance_type(
new_instance_type_id)
- instance_ref = self._instance_update(
+ instance = self._instance_update(
context,
- instance_ref.uuid,
+ instance['uuid'],
instance_type_id=instance_type['id'],
memory_mb=instance_type['memory_mb'],
vcpus=instance_type['vcpus'],
@@ -1611,42 +1611,42 @@ class ComputeManager(manager.SchedulerDependentManager):
resize_instance = True
# NOTE(tr3buchet): setup networks on destination host
- self.network_api.setup_networks_on_host(context, instance_ref,
+ self.network_api.setup_networks_on_host(context, instance,
migration_ref['dest_compute'])
- network_info = self._get_instance_nw_info(context, instance_ref)
+ network_info = self._get_instance_nw_info(context, instance)
- self._instance_update(context, instance_ref.uuid,
+ self._instance_update(context, instance['uuid'],
task_state=task_states.RESIZE_FINISH)
self._notify_about_instance_usage(
- context, instance_ref, "finish_resize.start",
+ context, instance, "finish_resize.start",
network_info=network_info)
- self.driver.finish_migration(context, migration_ref, instance_ref,
+ self.driver.finish_migration(context, migration_ref, instance,
disk_info,
self._legacy_nw_info(network_info),
image, resize_instance)
- instance_ref = self._instance_update(context,
- instance_ref.uuid,
- vm_state=vm_states.RESIZED,
- host=migration_ref['dest_compute'],
- launched_at=timeutils.utcnow(),
- task_state=None)
+ instance = self._instance_update(context,
+ instance['uuid'],
+ vm_state=vm_states.RESIZED,
+ host=migration_ref['dest_compute'],
+ launched_at=timeutils.utcnow(),
+ task_state=None)
self.db.migration_update(context, migration_ref.id,
{'status': 'finished'})
self._notify_about_instance_usage(
- context, instance_ref, "finish_resize.end",
+ context, instance, "finish_resize.end",
network_info=network_info)
@exception.wrap_exception(notifier=notifier, publisher_id=publisher_id())
@checks_instance_lock
@wrap_instance_fault
- def finish_resize(self, context, instance_uuid, migration_id, disk_info,
- image):
+ def finish_resize(self, context, migration_id, disk_info, image,
+ instance_uuid=None, instance=None):
"""Completes the migration process.
Sets up the newly transferred disk and turns on the instance at its
@@ -1654,17 +1654,18 @@ class ComputeManager(manager.SchedulerDependentManager):
"""
migration_ref = self.db.migration_get(context, migration_id)
- instance_ref = self.db.instance_get_by_uuid(context,
- migration_ref.instance_uuid)
+ if not instance:
+ instance = self.db.instance_get_by_uuid(context,
+ migration_ref.instance_uuid)
try:
- self._finish_resize(context, instance_ref, migration_ref,
+ self._finish_resize(context, instance, migration_ref,
disk_info, image)
except Exception, error:
with excutils.save_and_reraise_exception():
LOG.error(_('%s. Setting instance vm_state to ERROR') % error,
- instance=instance_ref)
- self._set_instance_error_state(context, instance_ref.uuid)
+ instance=instance)
+ self._set_instance_error_state(context, instance['uuid'])
@exception.wrap_exception(notifier=notifier, publisher_id=publisher_id())
@checks_instance_lock
diff --git a/nova/compute/rpcapi.py b/nova/compute/rpcapi.py
index 18c86e462..1688273ff 100644
--- a/nova/compute/rpcapi.py
+++ b/nova/compute/rpcapi.py
@@ -74,6 +74,7 @@ class ComputeAPI(nova.openstack.common.rpc.proxy.RpcProxy):
check_can_live_migrate_source()
1.12 - Remove instance_uuid, add instance argument to confirm_resize()
1.13 - Remove instance_uuid, add instance argument to detach_volume()
+ 1.14 - Remove instance_uuid, add instance argument to finish_resize()
'''
BASE_RPC_API_VERSION = '1.0'
@@ -147,10 +148,12 @@ class ComputeAPI(nova.openstack.common.rpc.proxy.RpcProxy):
def finish_resize(self, ctxt, instance, migration_id, image, disk_info,
host):
+ instance_p = jsonutils.to_primitive(instance)
self.cast(ctxt, self.make_msg('finish_resize',
- instance_uuid=instance['uuid'], migration_id=migration_id,
+ instance=instance_p, migration_id=migration_id,
image=image, disk_info=disk_info),
- topic=_compute_topic(self.topic, ctxt, host, None))
+ topic=_compute_topic(self.topic, ctxt, host, None),
+ version='1.14')
def finish_revert_resize(self, ctxt, instance, migration_id, host):
self.cast(ctxt, self.make_msg('finish_revert_resize',