summaryrefslogtreecommitdiffstats
path: root/nova
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2012-10-26 14:44:58 +0000
committerGerrit Code Review <review@openstack.org>2012-10-26 14:44:58 +0000
commit05ab9d7beb97bfbc4689a2290730e2486eb2f228 (patch)
treec046a72fe13d0c0daf61fa91bc796ef9c2411fcf /nova
parent50a0f3efb6cc4ae9c94439eea346828d35080d6c (diff)
parent569df8b30f4b94e6287a971c0f41bf5bb2cfad15 (diff)
downloadnova-05ab9d7beb97bfbc4689a2290730e2486eb2f228.tar.gz
nova-05ab9d7beb97bfbc4689a2290730e2486eb2f228.tar.xz
nova-05ab9d7beb97bfbc4689a2290730e2486eb2f228.zip
Merge "Send full migration to resize_instance."
Diffstat (limited to 'nova')
-rw-r--r--nova/compute/manager.py29
-rw-r--r--nova/compute/rpcapi.py9
-rw-r--r--nova/tests/compute/test_compute.py10
-rw-r--r--nova/tests/compute/test_rpcapi.py4
4 files changed, 28 insertions, 24 deletions
diff --git a/nova/compute/manager.py b/nova/compute/manager.py
index 4acccf0a3..253850cea 100644
--- a/nova/compute/manager.py
+++ b/nova/compute/manager.py
@@ -217,7 +217,7 @@ def _get_image_meta(context, image_ref):
class ComputeManager(manager.SchedulerDependentManager):
"""Manages the running instances from creation to destruction."""
- RPC_API_VERSION = '2.5'
+ RPC_API_VERSION = '2.6'
def __init__(self, compute_driver=None, *args, **kwargs):
"""Load configuration options and connect to the hypervisor."""
@@ -1624,7 +1624,7 @@ class ComputeManager(manager.SchedulerDependentManager):
LOG.audit(_('Migrating'), context=context, instance=instance)
self.compute_rpcapi.resize_instance(context, instance,
- migration_ref['id'], image, reservations)
+ migration_ref, image, reservations)
extra_usage_info = dict(
new_instance_type=instance_type['name'],
@@ -1637,20 +1637,21 @@ class ComputeManager(manager.SchedulerDependentManager):
@exception.wrap_exception(notifier=notifier, publisher_id=publisher_id())
@reverts_task_state
@wrap_instance_fault
- def resize_instance(self, context, instance,
- migration_id, image, reservations=None):
+ def resize_instance(self, context, instance, image,
+ reservations=None, migration=None, migration_id=None):
"""Starts the migration of a running instance to another host."""
context = context.elevated()
- migration_ref = self.db.migration_get(context, migration_id)
+ if not migration:
+ migration = self.db.migration_get(context, migration_id)
with self._error_out_instance_on_exception(context, instance['uuid'],
reservations):
instance_type_ref = self.db.instance_type_get(context,
- migration_ref.new_instance_type_id)
+ migration['new_instance_type_id'])
network_info = self._get_instance_nw_info(context, instance)
self.db.migration_update(context,
- migration_id,
+ migration['id'],
{'status': 'migrating'})
self._instance_update(context, instance['uuid'],
@@ -1664,7 +1665,7 @@ class ComputeManager(manager.SchedulerDependentManager):
context, instance['uuid'])
disk_info = self.driver.migrate_disk_and_power_off(
- context, instance, migration_ref['dest_host'],
+ context, instance, migration['dest_host'],
instance_type_ref, self._legacy_nw_info(network_info),
block_device_info)
@@ -1677,23 +1678,23 @@ class ComputeManager(manager.SchedulerDependentManager):
self.volume_api.terminate_connection(context, volume,
connector)
- if migration_ref['dest_compute'] != \
- migration_ref['source_compute']:
+ if migration['dest_compute'] != migration['source_compute']:
self.network_api.migrate_instance_start(context, instance,
self.host)
self.db.migration_update(context,
- migration_id,
+ migration['id'],
{'status': 'post-migrating'})
self._instance_update(context, instance['uuid'],
- host=migration_ref['dest_compute'],
+ host=migration['dest_compute'],
task_state=task_states.RESIZE_MIGRATED,
expected_task_state=task_states.
RESIZE_MIGRATING)
- self.compute_rpcapi.finish_resize(context, instance, migration_id,
- image, disk_info, migration_ref['dest_compute'], reservations)
+ self.compute_rpcapi.finish_resize(context, instance,
+ migration['id'], image, disk_info,
+ migration['dest_compute'], reservations)
self._notify_about_instance_usage(context, instance, "resize.end",
network_info=network_info)
diff --git a/nova/compute/rpcapi.py b/nova/compute/rpcapi.py
index 6a47bb096..e9d82361f 100644
--- a/nova/compute/rpcapi.py
+++ b/nova/compute/rpcapi.py
@@ -133,6 +133,7 @@ class ComputeAPI(nova.openstack.common.rpc.proxy.RpcProxy):
2.3 - Adds volume_id to reserve_block_device_name()
2.4 - Add bdms to terminate_instance
2.5 - Add block device and network info to reboot_instance
+ 2.6 - Remove migration_id, add migration to resize_instance
'''
#
@@ -411,13 +412,15 @@ class ComputeAPI(nova.openstack.common.rpc.proxy.RpcProxy):
instance=instance_p),
topic=_compute_topic(self.topic, ctxt, None, instance))
- def resize_instance(self, ctxt, instance, migration_id, image,
+ def resize_instance(self, ctxt, instance, migration, image,
reservations=None):
topic = _compute_topic(self.topic, ctxt, None, instance)
instance_p = jsonutils.to_primitive(instance)
+ migration_p = jsonutils.to_primitive(migration)
self.cast(ctxt, self.make_msg('resize_instance',
- instance=instance_p, migration_id=migration_id,
- image=image, reservations=reservations), topic)
+ instance=instance_p, migration=migration_p,
+ image=image, reservations=reservations), topic,
+ version='2.6')
def resume_instance(self, ctxt, instance):
instance_p = jsonutils.to_primitive(instance)
diff --git a/nova/tests/compute/test_compute.py b/nova/tests/compute/test_compute.py
index c56d0b1ae..d61d1182b 100644
--- a/nova/tests/compute/test_compute.py
+++ b/nova/tests/compute/test_compute.py
@@ -1744,7 +1744,7 @@ class ComputeTestCase(BaseTestCase):
instance['uuid'],
'pre-migrating')
self.compute.resize_instance(context, instance=instance,
- migration_id=migration_ref['id'],
+ migration=migration_ref,
image={})
timeutils.set_time_override(cur_time)
test_notifier.NOTIFICATIONS = []
@@ -1870,7 +1870,7 @@ class ComputeTestCase(BaseTestCase):
#verify
self.assertRaises(test.TestingException, self.compute.resize_instance,
context, instance=instance,
- migration_id=migration_ref['id'], image={},
+ migration=migration_ref, image={},
reservations=reservations)
instance = db.instance_get_by_uuid(context, instance['uuid'])
self.assertEqual(instance['vm_state'], vm_states.ERROR)
@@ -1894,7 +1894,7 @@ class ComputeTestCase(BaseTestCase):
db.instance_update(self.context, instance['uuid'],
{"task_state": task_states.RESIZE_PREP})
self.compute.resize_instance(context, instance=instance,
- migration_id=migration_ref['id'],
+ migration=migration_ref,
image={})
inst = db.instance_get_by_uuid(context, instance['uuid'])
self.assertEqual(migration_ref['dest_compute'], inst['host'])
@@ -1940,7 +1940,7 @@ class ComputeTestCase(BaseTestCase):
db.instance_update(self.context, instance["uuid"],
{"task_state": task_states.RESIZE_PREP})
self.compute.resize_instance(context, instance=instance,
- migration_id=migration_ref['id'],
+ migration=migration_ref,
image={})
self.compute.finish_resize(context,
migration_id=int(migration_ref['id']), disk_info={},
@@ -2029,7 +2029,7 @@ class ComputeTestCase(BaseTestCase):
{"task_state": task_states.RESIZE_PREP})
self.assertRaises(test.TestingException, self.compute.resize_instance,
context, instance=inst_ref,
- migration_id=migration_ref['id'], image={},
+ migration=migration_ref, image={},
reservations=reservations)
inst_ref = db.instance_get_by_uuid(context, inst_ref['uuid'])
self.assertEqual(inst_ref['vm_state'], vm_states.ERROR)
diff --git a/nova/tests/compute/test_rpcapi.py b/nova/tests/compute/test_rpcapi.py
index 2fa6bf9ee..dd374ac55 100644
--- a/nova/tests/compute/test_rpcapi.py
+++ b/nova/tests/compute/test_rpcapi.py
@@ -273,8 +273,8 @@ class ComputeRpcAPITestCase(test.TestCase):
def test_resize_instance(self):
self._test_compute_api('resize_instance', 'cast',
- instance=self.fake_instance, migration_id='id', image='image',
- reservations=list('fake_res'))
+ instance=self.fake_instance, migration={'id': 'fake_id'},
+ image='image', reservations=list('fake_res'), version='2.6')
def test_resume_instance(self):
self._test_compute_api('resume_instance', 'cast',