Remove rpc_compat which is not used at all.
Change-Id: I46df9cb666ff2bc258b3e235c509478d00559d35 Partial-Bug: #1552282
This commit is contained in:
parent
4a66645c1c
commit
2048383106
@ -1,167 +0,0 @@
|
|||||||
# Copyright (c) 2014 Red Hat, Inc.
|
|
||||||
# All Rights Reserved.
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
|
||||||
# not use this file except in compliance with the License. You may obtain
|
|
||||||
# a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
||||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
||||||
# License for the specific language governing permissions and limitations
|
|
||||||
# under the License.
|
|
||||||
|
|
||||||
from oslo_config import cfg
|
|
||||||
from oslo_log import log as logging
|
|
||||||
import oslo_messaging
|
|
||||||
|
|
||||||
from tacker.common import rpc as n_rpc
|
|
||||||
from tacker.openstack.common import service
|
|
||||||
|
|
||||||
|
|
||||||
LOG = logging.getLogger(__name__)
|
|
||||||
|
|
||||||
|
|
||||||
class RpcProxy(object):
|
|
||||||
'''Emulates RpcProxy class behaviour using oslo.messaging.
|
|
||||||
|
|
||||||
This class is created to facilitate migration from oslo-incubator
|
|
||||||
RPC layer implementation to oslo.messaging and is intended to
|
|
||||||
emulate RpcProxy class behaviour using oslo.messaging API once the
|
|
||||||
migration is applied.
|
|
||||||
'''
|
|
||||||
RPC_API_NAMESPACE = None
|
|
||||||
|
|
||||||
def __init__(self, topic, default_version, version_cap=None):
|
|
||||||
self.topic = topic
|
|
||||||
target = oslo_messaging.Target(topic=topic, version=default_version)
|
|
||||||
self._client = n_rpc.get_client(target, version_cap=version_cap)
|
|
||||||
|
|
||||||
def make_msg(self, method, **kwargs):
|
|
||||||
return {'method': method,
|
|
||||||
'namespace': self.RPC_API_NAMESPACE,
|
|
||||||
'args': kwargs}
|
|
||||||
|
|
||||||
def call(self, context, msg, **kwargs):
|
|
||||||
return self.__call_rpc_method(
|
|
||||||
context, msg, rpc_method='call', **kwargs)
|
|
||||||
|
|
||||||
def cast(self, context, msg, **kwargs):
|
|
||||||
self.__call_rpc_method(context, msg, rpc_method='cast', **kwargs)
|
|
||||||
|
|
||||||
def fanout_cast(self, context, msg, **kwargs):
|
|
||||||
kwargs['fanout'] = True
|
|
||||||
self.__call_rpc_method(context, msg, rpc_method='cast', **kwargs)
|
|
||||||
|
|
||||||
def __call_rpc_method(self, context, msg, **kwargs):
|
|
||||||
options = dict(
|
|
||||||
((opt, kwargs[opt])
|
|
||||||
for opt in ('fanout', 'timeout', 'topic', 'version')
|
|
||||||
if kwargs.get(opt))
|
|
||||||
)
|
|
||||||
if msg['namespace']:
|
|
||||||
options['namespace'] = msg['namespace']
|
|
||||||
|
|
||||||
if options:
|
|
||||||
callee = self._client.prepare(**options)
|
|
||||||
else:
|
|
||||||
callee = self._client
|
|
||||||
|
|
||||||
func = getattr(callee, kwargs['rpc_method'])
|
|
||||||
return func(context, msg['method'], **msg['args'])
|
|
||||||
|
|
||||||
|
|
||||||
class RpcCallback(object):
|
|
||||||
'''Sets callback version using oslo.messaging API.
|
|
||||||
|
|
||||||
This class is created to facilitate migration from oslo-incubator
|
|
||||||
RPC layer implementation to oslo.messaging and is intended to set
|
|
||||||
callback version using oslo.messaging API once the migration is
|
|
||||||
applied.
|
|
||||||
'''
|
|
||||||
RPC_API_VERSION = '1.0'
|
|
||||||
|
|
||||||
def __init__(self):
|
|
||||||
super(RpcCallback, self).__init__()
|
|
||||||
self.target = oslo_messaging.Target(version=self.RPC_API_VERSION)
|
|
||||||
|
|
||||||
|
|
||||||
class Service(service.Service):
|
|
||||||
"""Service object for binaries running on hosts.
|
|
||||||
|
|
||||||
A service enables rpc by listening to queues based on topic and host.
|
|
||||||
"""
|
|
||||||
def __init__(self, host, topic, manager=None, serializer=None):
|
|
||||||
super(Service, self).__init__()
|
|
||||||
self.host = host
|
|
||||||
self.topic = topic
|
|
||||||
self.serializer = serializer
|
|
||||||
if manager is None:
|
|
||||||
self.manager = self
|
|
||||||
else:
|
|
||||||
self.manager = manager
|
|
||||||
|
|
||||||
def start(self):
|
|
||||||
super(Service, self).start()
|
|
||||||
|
|
||||||
self.conn = create_connection(new=True)
|
|
||||||
LOG.debug("Creating Consumer connection for Service %s",
|
|
||||||
self.topic)
|
|
||||||
|
|
||||||
endpoints = [self.manager]
|
|
||||||
|
|
||||||
# Share this same connection for these Consumers
|
|
||||||
self.conn.create_consumer(self.topic, endpoints, fanout=False)
|
|
||||||
|
|
||||||
node_topic = '%s.%s' % (self.topic, self.host)
|
|
||||||
self.conn.create_consumer(node_topic, endpoints, fanout=False)
|
|
||||||
|
|
||||||
self.conn.create_consumer(self.topic, endpoints, fanout=True)
|
|
||||||
|
|
||||||
# Hook to allow the manager to do other initializations after
|
|
||||||
# the rpc connection is created.
|
|
||||||
if callable(getattr(self.manager, 'initialize_service_hook', None)):
|
|
||||||
self.manager.initialize_service_hook(self)
|
|
||||||
|
|
||||||
# Consume from all consumers in threads
|
|
||||||
self.conn.consume_in_threads()
|
|
||||||
|
|
||||||
def stop(self):
|
|
||||||
# Try to shut the connection down, but if we get any sort of
|
|
||||||
# errors, go ahead and ignore them.. as we're shutting down anyway
|
|
||||||
try:
|
|
||||||
self.conn.close()
|
|
||||||
except Exception:
|
|
||||||
pass
|
|
||||||
super(Service, self).stop()
|
|
||||||
|
|
||||||
|
|
||||||
class Connection(object):
|
|
||||||
|
|
||||||
def __init__(self):
|
|
||||||
super(Connection, self).__init__()
|
|
||||||
self.servers = []
|
|
||||||
|
|
||||||
def create_consumer(self, topic, endpoints, fanout=False):
|
|
||||||
target = oslo_messaging.Target(
|
|
||||||
topic=topic, server=cfg.CONF.host, fanout=fanout)
|
|
||||||
server = n_rpc.get_server(target, endpoints)
|
|
||||||
self.servers.append(server)
|
|
||||||
|
|
||||||
def consume_in_threads(self):
|
|
||||||
for server in self.servers:
|
|
||||||
server.start()
|
|
||||||
return self.servers
|
|
||||||
|
|
||||||
|
|
||||||
# functions
|
|
||||||
def create_connection(new=True):
|
|
||||||
return Connection()
|
|
||||||
|
|
||||||
|
|
||||||
# exceptions
|
|
||||||
RPCException = oslo_messaging.MessagingException
|
|
||||||
RemoteError = oslo_messaging.RemoteError
|
|
||||||
MessagingTimeout = oslo_messaging.MessagingTimeout
|
|
@ -16,7 +16,6 @@
|
|||||||
from oslo_config import cfg
|
from oslo_config import cfg
|
||||||
from oslo_log import log as logging
|
from oslo_log import log as logging
|
||||||
|
|
||||||
from tacker.common import rpc_compat
|
|
||||||
from tacker.common import utils
|
from tacker.common import utils
|
||||||
from tacker.openstack.common import periodic_task
|
from tacker.openstack.common import periodic_task
|
||||||
|
|
||||||
@ -24,7 +23,7 @@ from tacker.openstack.common import periodic_task
|
|||||||
LOG = logging.getLogger(__name__)
|
LOG = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
class Manager(rpc_compat.RpcCallback, periodic_task.PeriodicTasks):
|
class Manager(periodic_task.PeriodicTasks):
|
||||||
|
|
||||||
# Set RPC API version to 1.0 by default.
|
# Set RPC API version to 1.0 by default.
|
||||||
RPC_API_VERSION = '1.0'
|
RPC_API_VERSION = '1.0'
|
||||||
|
@ -165,11 +165,6 @@ class BaseTestCase(testtools.TestCase):
|
|||||||
'tacker.common.exceptions.TackerException.use_fatal_exceptions',
|
'tacker.common.exceptions.TackerException.use_fatal_exceptions',
|
||||||
fake_use_fatal_exceptions))
|
fake_use_fatal_exceptions))
|
||||||
|
|
||||||
# don't actually start RPC listeners when testing
|
|
||||||
self.useFixture(fixtures.MonkeyPatch(
|
|
||||||
'tacker.common.rpc_compat.Connection.consume_in_threads',
|
|
||||||
fake_consume_in_threads))
|
|
||||||
|
|
||||||
self.useFixture(fixtures.MonkeyPatch(
|
self.useFixture(fixtures.MonkeyPatch(
|
||||||
'oslo.messaging.Notifier', fake_notifier.FakeNotifier))
|
'oslo.messaging.Notifier', fake_notifier.FakeNotifier))
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user