Remove and deprecate conductor object_backport()

Two recent changes[1][2] related to objects support for manifests-based
versions replaced calls to existing methods object_backport() and
object_class_action(), leaving them unused. This will clean out the old
client-side api:s and prepare for the removal of server-side api:s in an
upcoming conductor major version bump.

Since oslo.versionedobjects still need some work before the client-side
of object_class_action() can be removed, add a TODO about removal once
the needed changes are in place.

[1] commit d5f59c1a32
[2] commit 452053e8c7

Related to blueprint liberty-bump-object-and-rpcapi-versions

Change-Id: I9158920152b69d80e8d452d7d1a3187cba3f81f1
This commit is contained in:
Hans Lindgren 2015-09-05 12:07:02 +02:00
parent e68db1157a
commit 410a4de45e
4 changed files with 26 additions and 6 deletions

View File

@ -17,6 +17,7 @@
from oslo_config import cfg
from oslo_log import log as logging
import oslo_messaging as messaging
from oslo_versionedobjects import base as ovo_base
from nova import baserpc
from nova.conductor import manager
@ -65,7 +66,11 @@ class LocalAPI(object):
return self._manager.provider_fw_rule_get_all(context)
def object_backport(self, context, objinst, target_version):
return self._manager.object_backport(context, objinst, target_version)
# NOTE(hanlind): This shouldn't be called anymore but leaving it for
# now just in case. Collect the object version manifest and redirect
# to the newer backport call.
object_versions = ovo_base.obj_tree_get_versions(objinst.obj_name())
return self.object_backport_versions(context, objinst, object_versions)
def object_backport_versions(self, context, objinst, object_versions):
return self._manager.object_backport_versions(context, objinst,

View File

@ -447,6 +447,7 @@ class ConductorManager(manager.Manager):
except Exception:
raise messaging.ExpectedException()
# NOTE(hanlind): This can be removed in version 3.0 of the RPC API
def object_class_action(self, context, objname, objmethod,
objver, args, kwargs):
"""Perform a classmethod action on an object."""
@ -494,6 +495,7 @@ class ConductorManager(manager.Manager):
updates['obj_what_changed'] = objinst.obj_what_changed()
return updates, result
# NOTE(hanlind): This can be removed in version 3.0 of the RPC API
def object_backport(self, context, objinst, target_version):
return objinst.obj_to_primitive(target_version=target_version)

View File

@ -188,6 +188,7 @@ class ConductorAPI(object):
* 2.2 - Add object_backport_versions()
* 2.3 - Add object_class_action_versions()
* Remove compute_node_create()
* Remove object_backport()
"""
VERSION_ALIASES = {
@ -212,6 +213,9 @@ class ConductorAPI(object):
cctxt = self.client.prepare()
return cctxt.call(context, 'provider_fw_rule_get_all')
# TODO(hanlind): This method can be removed once oslo.versionedobjects
# has been converted to use version_manifests in remotable_classmethod
# operations, which will use the new class action handler.
def object_class_action(self, context, objname, objmethod, objver,
args, kwargs):
if self.client.can_send_version('2.3'):
@ -242,11 +246,6 @@ class ConductorAPI(object):
return cctxt.call(context, 'object_action', objinst=objinst,
objmethod=objmethod, args=args, kwargs=kwargs)
def object_backport(self, context, objinst, target_version):
cctxt = self.client.prepare()
return cctxt.call(context, 'object_backport', objinst=objinst,
target_version=target_version)
def object_backport_versions(self, context, objinst, object_versions):
cctxt = self.client.prepare(version='2.2')
return cctxt.call(context, 'object_backport_versions', objinst=objinst,

View File

@ -840,6 +840,20 @@ class ConductorAPITestCase(_BaseTestCase, test.TestCase):
self.assertEqual(timeouts.count(10), 10)
self.assertIn(None, timeouts)
@mock.patch('oslo_versionedobjects.base.obj_tree_get_versions')
def test_object_backport_redirect(self, mock_ovo):
mock_ovo.return_value = mock.sentinel.obj_versions
mock_objinst = mock.Mock()
with mock.patch.object(self.conductor,
'object_backport_versions') as mock_call:
self.conductor.object_backport(mock.sentinel.ctxt,
mock_objinst,
mock.sentinel.target_version)
mock_call.assert_called_once_with(mock.sentinel.ctxt,
mock_objinst,
mock.sentinel.obj_versions)
class ConductorLocalAPITestCase(ConductorAPITestCase):
"""Conductor LocalAPI Tests."""