summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--nova/compute/manager.py12
-rw-r--r--nova/compute/rpcapi.py15
-rw-r--r--nova/tests/compute/test_compute.py3
-rw-r--r--nova/tests/compute/test_rpcapi.py12
4 files changed, 24 insertions, 18 deletions
diff --git a/nova/compute/manager.py b/nova/compute/manager.py
index 31428675c..fd0f9049a 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.35'
+ RPC_API_VERSION = '1.36'
def __init__(self, compute_driver=None, *args, **kwargs):
"""Load configuration options and connect to the hypervisor."""
@@ -1371,12 +1371,14 @@ class ComputeManager(manager.SchedulerDependentManager):
@exception.wrap_exception(notifier=notifier, publisher_id=publisher_id())
@checks_instance_lock
@wrap_instance_fault
- def change_instance_metadata(self, context, instance_uuid, diff):
+ def change_instance_metadata(self, context, diff, instance=None,
+ instance_uuid=None):
"""Update the metadata published to the instance."""
- instance_ref = self.db.instance_get_by_uuid(context, instance_uuid)
+ if not instance:
+ instance = self.db.instance_get_by_uuid(context, instance)
LOG.debug(_("Changing instance metadata according to %(diff)r") %
- locals(), instance=instance_ref)
- self.driver.change_instance_metadata(context, instance_ref, diff)
+ locals(), instance=instance)
+ self.driver.change_instance_metadata(context, instance, diff)
@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 435cae50b..7bc9ddaf5 100644
--- a/nova/compute/rpcapi.py
+++ b/nova/compute/rpcapi.py
@@ -110,6 +110,8 @@ class ComputeAPI(nova.openstack.common.rpc.proxy.RpcProxy):
snapshot_instance()
1.35 - Remove instance_uuid, add instance argument to
unrescue_instance()
+ 1.36 - Remove instance_uuid, add instance argument to
+ change_instance_metadata()
'''
BASE_RPC_API_VERSION = '1.0'
@@ -147,6 +149,13 @@ class ComputeAPI(nova.openstack.common.rpc.proxy.RpcProxy):
topic=_compute_topic(self.topic, ctxt, None, instance),
version='1.9')
+ def change_instance_metadata(self, ctxt, instance, diff):
+ instance_p = jsonutils.to_primitive(instance)
+ self.cast(ctxt, self.make_msg('change_instance_metadata',
+ instance=instance_p, diff=diff),
+ topic=_compute_topic(self.topic, ctxt, None, instance),
+ version='1.36')
+
def check_can_live_migrate_destination(self, ctxt, instance, destination,
block_migration, disk_over_commit):
instance_p = jsonutils.to_primitive(instance)
@@ -468,12 +477,6 @@ class ComputeAPI(nova.openstack.common.rpc.proxy.RpcProxy):
topic=_compute_topic(self.topic, ctxt, None, instance),
version='1.35')
- def change_instance_metadata(self, ctxt, instance, diff):
- self.cast(ctxt, self.make_msg('change_instance_metadata',
- instance_uuid=instance['uuid'], diff=diff),
- topic=_compute_topic(self.topic, ctxt, None, instance),
- version='1.3')
-
class SecurityGroupAPI(nova.openstack.common.rpc.proxy.RpcProxy):
'''Client side of the security group rpc API.
diff --git a/nova/tests/compute/test_compute.py b/nova/tests/compute/test_compute.py
index d8bf703ea..5cee6f94d 100644
--- a/nova/tests/compute/test_compute.py
+++ b/nova/tests/compute/test_compute.py
@@ -3382,7 +3382,8 @@ class ComputeAPITestCase(BaseTestCase):
def test_instance_metadata(self):
meta_changes = [None]
- def fake_change_instance_metadata(inst, ctxt, instance, diff):
+ def fake_change_instance_metadata(inst, ctxt, diff, instance=None,
+ instance_uuid=None):
meta_changes[0] = diff
self.stubs.Set(compute_rpcapi.ComputeAPI, 'change_instance_metadata',
fake_change_instance_metadata)
diff --git a/nova/tests/compute/test_rpcapi.py b/nova/tests/compute/test_rpcapi.py
index 3c9806b57..e099a776c 100644
--- a/nova/tests/compute/test_rpcapi.py
+++ b/nova/tests/compute/test_rpcapi.py
@@ -50,7 +50,7 @@ class ComputeRpcAPITestCase(test.TestCase):
methods_with_instance = [
'add_fixed_ip_to_instance', 'attach_volume',
- 'check_can_live_migrate_destination',
+ 'change_instance_metadata', 'check_can_live_migrate_destination',
'check_can_live_migrate_source', 'confirm_resize',
'detach_volume', 'finish_resize', 'finish_revert_resize',
'get_console_output', 'get_diagnostics', 'get_vnc_console',
@@ -132,6 +132,11 @@ class ComputeRpcAPITestCase(test.TestCase):
instance=self.fake_instance, volume_id='id', mountpoint='mp',
version='1.9')
+ def test_change_instance_metadata(self):
+ self._test_compute_api('change_instance_metadata', 'cast',
+ instance=self.fake_instance, diff={},
+ version='1.36')
+
def test_check_can_live_migrate_destination(self):
self._test_compute_api('check_can_live_migrate_destination', 'call',
version='1.10', instance=self.fake_instance,
@@ -337,8 +342,3 @@ class ComputeRpcAPITestCase(test.TestCase):
def test_unrescue_instance(self):
self._test_compute_api('unrescue_instance', 'cast',
instance=self.fake_instance, version='1.35')
-
- def test_change_instance_metadata(self):
- self._test_compute_api('change_instance_metadata', 'cast',
- instance=self.fake_instance, diff={},
- version='1.3')