summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--oslo_messaging/rpc/client.py8
-rw-r--r--oslo_messaging/rpc/server.py7
-rw-r--r--oslo_messaging/rpc/transport.py7
-rw-r--r--releasenotes/notes/get-rpc-helpers-cls-8911826ac08aef2a.yaml5
4 files changed, 20 insertions, 7 deletions
diff --git a/oslo_messaging/rpc/client.py b/oslo_messaging/rpc/client.py
index 8e997e9..b96e30f 100644
--- a/oslo_messaging/rpc/client.py
+++ b/oslo_messaging/rpc/client.py
@@ -550,14 +550,16 @@ class RPCClient(_BaseCallContext):
return self.prepare(version=version).can_send_version()
-def get_rpc_client(transport, target, **kwargs):
+def get_rpc_client(transport, target, client_cls=RPCClient, **kwargs):
"""Construct an RPC client.
:param transport: the messaging transport
:type transport: Transport
:param target: the exchange, topic and server to listen on
:type target: Target
+ :param client_cls: The client class to instantiate
+ :type client_cls: class
:param **kwargs: The kwargs will be passed down to the
- RPCClient constructor
+ client_cls constructor
"""
- return RPCClient(transport, target, _manual_load=False, **kwargs)
+ return client_cls(transport, target, _manual_load=False, **kwargs)
diff --git a/oslo_messaging/rpc/server.py b/oslo_messaging/rpc/server.py
index 78557e2..94d4888 100644
--- a/oslo_messaging/rpc/server.py
+++ b/oslo_messaging/rpc/server.py
@@ -200,7 +200,8 @@ class RPCServer(msg_server.MessageHandlingServer):
def get_rpc_server(transport, target, endpoints,
- executor=None, serializer=None, access_policy=None):
+ executor=None, serializer=None, access_policy=None,
+ server_cls=RPCServer):
"""Construct an RPC server.
:param transport: the messaging transport
@@ -217,10 +218,12 @@ def get_rpc_server(transport, target, endpoints,
:param access_policy: an optional access policy.
Defaults to DefaultRPCAccessPolicy
:type access_policy: RPCAccessPolicyBase
+ :param server_cls: The server class to instantiate
+ :type server_cls: class
"""
dispatcher = rpc_dispatcher.RPCDispatcher(endpoints, serializer,
access_policy)
- return RPCServer(transport, target, dispatcher, executor)
+ return server_cls(transport, target, dispatcher, executor)
def expected_exceptions(*exceptions):
diff --git a/oslo_messaging/rpc/transport.py b/oslo_messaging/rpc/transport.py
index 121d617..8f08db5 100644
--- a/oslo_messaging/rpc/transport.py
+++ b/oslo_messaging/rpc/transport.py
@@ -22,7 +22,8 @@ __all__ = [
def get_rpc_transport(conf, url=None,
- allowed_remote_exmods=None):
+ allowed_remote_exmods=None,
+ transport_cls=msg_transport.RPCTransport):
"""A factory method for Transport objects for RPCs.
This method should be used to ensure the correct messaging functionality
@@ -43,7 +44,9 @@ def get_rpc_transport(conf, url=None,
transport will deserialize remote exceptions
from
:type allowed_remote_exmods: list
+ :param transport_cls: the transport class to instantiate
+ :type transport_cls: class
"""
return msg_transport._get_transport(
conf, url, allowed_remote_exmods,
- transport_cls=msg_transport.RPCTransport)
+ transport_cls=transport_cls)
diff --git a/releasenotes/notes/get-rpc-helpers-cls-8911826ac08aef2a.yaml b/releasenotes/notes/get-rpc-helpers-cls-8911826ac08aef2a.yaml
new file mode 100644
index 0000000..6ac9aab
--- /dev/null
+++ b/releasenotes/notes/get-rpc-helpers-cls-8911826ac08aef2a.yaml
@@ -0,0 +1,5 @@
+---
+features:
+ - |
+ The ``get_rpc_transport``, ``get_rpc_server`` and ``get_rpc_client`` helper
+ functions now have support for overriding the class that is instantiated.