diff --git a/oslo_messaging/rpc/dispatcher.py b/oslo_messaging/rpc/dispatcher.py index 06c72a763..313298d3c 100644 --- a/oslo_messaging/rpc/dispatcher.py +++ b/oslo_messaging/rpc/dispatcher.py @@ -34,7 +34,6 @@ import sys import six -from debtcollector.updating import updated_kwarg_default_value from oslo_messaging import _utils as utils from oslo_messaging import dispatcher from oslo_messaging import serializer as msg_serializer @@ -145,14 +144,6 @@ class RPCDispatcher(dispatcher.DispatcherBase): """ - @updated_kwarg_default_value('access_policy', None, DefaultRPCAccessPolicy, - message='access_policy defaults to ' - 'LegacyRPCAccessPolicy which ' - 'exposes private methods. Explicitly ' - 'set access_policy to ' - 'DefaultRPCAccessPolicy or ' - 'ExplicitRPCAccessPolicy.', - version='?') def __init__(self, endpoints, serializer, access_policy=None): """Construct a rpc server dispatcher. diff --git a/oslo_messaging/rpc/server.py b/oslo_messaging/rpc/server.py index 9623db907..cc2fc025f 100644 --- a/oslo_messaging/rpc/server.py +++ b/oslo_messaging/rpc/server.py @@ -127,6 +127,8 @@ __all__ = [ import logging import sys +from debtcollector.updating import updated_kwarg_default_value + from oslo_messaging._i18n import _LE from oslo_messaging.rpc import dispatcher as rpc_dispatcher from oslo_messaging import server as msg_server @@ -177,6 +179,15 @@ class RPCServer(msg_server.MessageHandlingServer): del failure +@updated_kwarg_default_value('access_policy', None, + rpc_dispatcher.DefaultRPCAccessPolicy, + message='access_policy defaults to ' + 'LegacyRPCAccessPolicy which ' + 'exposes private methods. Explicitly ' + 'set access_policy to ' + 'DefaultRPCAccessPolicy or ' + 'ExplicitRPCAccessPolicy.', + version='?') def get_rpc_server(transport, target, endpoints, executor='blocking', serializer=None, access_policy=None): """Construct an RPC server. diff --git a/oslo_messaging/tests/rpc/test_server.py b/oslo_messaging/tests/rpc/test_server.py index 4aa8b36ec..56b5bd1f5 100644 --- a/oslo_messaging/tests/rpc/test_server.py +++ b/oslo_messaging/tests/rpc/test_server.py @@ -13,15 +13,17 @@ # License for the specific language governing permissions and limitations # under the License. -import eventlet import threading +import warnings +import eventlet from oslo_config import cfg from six.moves import mock import testscenarios import oslo_messaging from oslo_messaging import rpc +from oslo_messaging.rpc import dispatcher from oslo_messaging.rpc import server as rpc_server_module from oslo_messaging import server as server_module from oslo_messaging.tests import utils as test_utils @@ -114,10 +116,16 @@ class TestRPCServer(test_utils.BaseTestCase, ServerSetupMixin): target = oslo_messaging.Target(topic='foo', server='bar') endpoints = [object()] serializer = object() + access_policy = dispatcher.DefaultRPCAccessPolicy - server = oslo_messaging.get_rpc_server(transport, target, endpoints, - serializer=serializer) - + with warnings.catch_warnings(record=True) as capture: + warnings.simplefilter("always", FutureWarning) + server = oslo_messaging.get_rpc_server(transport, + target, + endpoints, + serializer=serializer, + access_policy=access_policy) + self.assertEqual(0, len(capture)) self.assertIs(server.conf, self.conf) self.assertIs(server.transport, transport) self.assertIsInstance(server.dispatcher, oslo_messaging.RPCDispatcher) @@ -125,6 +133,19 @@ class TestRPCServer(test_utils.BaseTestCase, ServerSetupMixin): self.assertIs(server.dispatcher.serializer, serializer) self.assertEqual('blocking', server.executor_type) + def test_constructor_without_explicit_RPCAccessPolicy(self): + transport = oslo_messaging.get_transport(self.conf, url='fake:') + target = oslo_messaging.Target(topic='foo', server='bar') + endpoints = [object()] + serializer = object() + with warnings.catch_warnings(record=True) as capture: + warnings.simplefilter("always", FutureWarning) + oslo_messaging.get_rpc_server(transport, target, + endpoints, serializer=serializer) + self.assertEqual(1, len(capture)) + w = capture[0] + self.assertEqual(FutureWarning, w.category) + def test_server_wait_method(self): transport = oslo_messaging.get_transport(self.conf, url='fake:') target = oslo_messaging.Target(topic='foo', server='bar')