From 1c307e592c20a53e8930e2999e885b59658e359e Mon Sep 17 00:00:00 2001 From: Jay Lau Date: Tue, 27 Aug 2013 12:17:12 +0800 Subject: [PATCH] compute rpcapi 2.29 is not backwards compatible patch 6fcf4133b49cfefa77151937dec4db097a85c349 which added compute rpcapi version 2.29 does not provide any backwards compatibility. Fix this issue with 'self.can_send_version' Fix bug 1217068 Change-Id: Idc49040b712058aab8d3ed769bdf18bdc0a4f067 --- nova/compute/rpcapi.py | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/nova/compute/rpcapi.py b/nova/compute/rpcapi.py index 35b2455bae..22f8bccaa3 100644 --- a/nova/compute/rpcapi.py +++ b/nova/compute/rpcapi.py @@ -648,17 +648,29 @@ class ComputeAPI(nova.openstack.common.rpc.proxy.RpcProxy): topic=_compute_topic(self.topic, ctxt, None, instance)) def start_instance(self, ctxt, instance): + if self.can_send_version('2.29'): + version = '2.29' + else: + version = '2.0' + instance = jsonutils.to_primitive( + objects_base.obj_to_primitive(instance)) self.cast(ctxt, self.make_msg('start_instance', instance=instance), topic=_compute_topic(self.topic, ctxt, None, instance), - version='2.29') + version=version) def stop_instance(self, ctxt, instance, do_cast=True): + if self.can_send_version('2.29'): + version = '2.29' + else: + version = '2.0' + instance = jsonutils.to_primitive( + objects_base.obj_to_primitive(instance)) rpc_method = self.cast if do_cast else self.call return rpc_method(ctxt, self.make_msg('stop_instance', instance=instance), topic=_compute_topic(self.topic, ctxt, None, instance), - version='2.29') + version=version) def suspend_instance(self, ctxt, instance): if self.can_send_version('2.33'):