Merge "Remove and deprecate conductor object_backport()"

This commit is contained in:
Jenkins 2015-09-10 18:08:23 +00:00 committed by Gerrit Code Review
commit fd72f2200c
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."""