summaryrefslogtreecommitdiffstats
path: root/nova
diff options
context:
space:
mode:
Diffstat (limited to 'nova')
-rw-r--r--nova/compute/manager.py20
-rw-r--r--nova/compute/rpcapi.py7
-rw-r--r--nova/tests/compute/test_compute.py8
-rw-r--r--nova/tests/compute/test_rpcapi.py8
4 files changed, 25 insertions, 18 deletions
diff --git a/nova/compute/manager.py b/nova/compute/manager.py
index ff6723f9f..f1de42d61 100644
--- a/nova/compute/manager.py
+++ b/nova/compute/manager.py
@@ -272,7 +272,7 @@ def _get_image_meta(context, image_ref):
class ComputeManager(manager.SchedulerDependentManager):
"""Manages the running instances from creation to destruction."""
- RPC_API_VERSION = '1.30'
+ RPC_API_VERSION = '1.31'
def __init__(self, compute_driver=None, *args, **kwargs):
"""Load configuration options and connect to the hypervisor."""
@@ -1413,7 +1413,8 @@ class ComputeManager(manager.SchedulerDependentManager):
@exception.wrap_exception(notifier=notifier, publisher_id=publisher_id())
@checks_instance_lock
@wrap_instance_fault
- def revert_resize(self, context, instance_uuid, migration_id):
+ def revert_resize(self, context, migration_id, instance=None,
+ instance_uuid=None):
"""Destroys the new instance on the destination machine.
Reverts the model changes, and powers on the old instance on the
@@ -1421,16 +1422,17 @@ 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)
# NOTE(tr3buchet): tear down networks on destination host
- self.network_api.setup_networks_on_host(context, instance_ref,
- teardown=True)
+ self.network_api.setup_networks_on_host(context, instance,
+ teardown=True)
- network_info = self._get_instance_nw_info(context, instance_ref)
- self.driver.destroy(instance_ref, self._legacy_nw_info(network_info))
- self.compute_rpcapi.finish_revert_resize(context, instance_ref,
+ network_info = self._get_instance_nw_info(context, instance)
+ self.driver.destroy(instance, self._legacy_nw_info(network_info))
+ self.compute_rpcapi.finish_revert_resize(context, instance,
migration_ref['id'], migration_ref['source_compute'])
@exception.wrap_exception(notifier=notifier, publisher_id=publisher_id())
diff --git a/nova/compute/rpcapi.py b/nova/compute/rpcapi.py
index b09211d1a..107bf4d8d 100644
--- a/nova/compute/rpcapi.py
+++ b/nova/compute/rpcapi.py
@@ -101,6 +101,7 @@ class ComputeAPI(nova.openstack.common.rpc.proxy.RpcProxy):
1.28 - Remove instance_uuid, add instance argument to reset_network()
1.29 - Remove instance_uuid, add instance argument to resize_instance()
1.30 - Remove instance_uuid, add instance argument to resume_instance()
+ 1.31 - Remove instance_uuid, add instance argument to revert_resize()
'''
BASE_RPC_API_VERSION = '1.0'
@@ -378,9 +379,11 @@ class ComputeAPI(nova.openstack.common.rpc.proxy.RpcProxy):
version='1.30')
def revert_resize(self, ctxt, instance, migration_id, host):
+ instance_p = jsonutils.to_primitive(instance)
self.cast(ctxt, self.make_msg('revert_resize',
- instance_uuid=instance['uuid'], migration_id=migration_id),
- topic=_compute_topic(self.topic, ctxt, host, instance))
+ instance=instance_p, migration_id=migration_id),
+ topic=_compute_topic(self.topic, ctxt, host, instance),
+ version='1.31')
def rollback_live_migration_at_destination(self, ctxt, instance, host):
self.cast(ctxt, self.make_msg('rollback_live_migration_at_destination',
diff --git a/nova/tests/compute/test_compute.py b/nova/tests/compute/test_compute.py
index 4e1c57201..36d001966 100644
--- a/nova/tests/compute/test_compute.py
+++ b/nova/tests/compute/test_compute.py
@@ -1380,11 +1380,11 @@ class ComputeTestCase(BaseTestCase):
self.assertEqual(instance_type_ref['flavorid'], '3')
# Finally, revert and confirm the old flavor has been applied
- self.compute.revert_resize(context, inst_ref['uuid'],
- migration_ref['id'])
+ rpcinst = jsonutils.to_primitive(inst_ref)
+ self.compute.revert_resize(context,
+ migration_id=migration_ref['id'], instance=rpcinst)
self.compute.finish_revert_resize(context,
- migration_id=migration_ref['id'],
- instance=jsonutils.to_primitive(inst_ref))
+ migration_id=migration_ref['id'], instance=rpcinst)
instance = db.instance_get_by_uuid(context, instance['uuid'])
self.assertEqual(instance['vm_state'], vm_states.ACTIVE)
diff --git a/nova/tests/compute/test_rpcapi.py b/nova/tests/compute/test_rpcapi.py
index f47d081be..7a1195fe0 100644
--- a/nova/tests/compute/test_rpcapi.py
+++ b/nova/tests/compute/test_rpcapi.py
@@ -59,8 +59,9 @@ class ComputeRpcAPITestCase(test.TestCase):
'power_on_instance', 'pre_live_migration', 'reboot_instance',
'rebuild_instance', 'remove_fixed_ip_from_instance',
'remove_volume_connection', 'rescue_instance', 'reset_network',
- 'resize_instance', 'resume_instance', 'start_instance',
- 'stop_instance', 'suspend_instance', 'unpause_instance'
+ 'resize_instance', 'resume_instance', 'revert_resize',
+ 'start_instance', 'stop_instance', 'suspend_instance',
+ 'unpause_instance'
]
if 'rpcapi_class' in kwargs:
@@ -285,7 +286,8 @@ class ComputeRpcAPITestCase(test.TestCase):
def test_revert_resize(self):
self._test_compute_api('revert_resize', 'cast',
- instance=self.fake_instance, migration_id='id', host='host')
+ instance=self.fake_instance, migration_id='id', host='host',
+ version='1.31')
def test_rollback_live_migration_at_destination(self):
self._test_compute_api('rollback_live_migration_at_destination',