def setUp(self): super(ZmqBaseTestCase, self).setUp() self.messaging_conf.transport_driver = 'zmq' zmq_options.register_opts(self.conf) # Set config values self.internal_ipc_dir = self.useFixture(fixtures.TempDir()).path kwargs = {'rpc_zmq_bind_address': '127.0.0.1', 'rpc_zmq_host': '127.0.0.1', 'rpc_zmq_ipc_dir': self.internal_ipc_dir, 'use_pub_sub': False, 'use_router_proxy': False, 'rpc_zmq_matchmaker': 'dummy'} self.config(group='oslo_messaging_zmq', **kwargs) self.config(rpc_response_timeout=5) # Get driver transport = oslo_messaging.get_transport(self.conf) self.driver = transport._driver self.listener = TestServerListener(self.driver) self.addCleanup( StopRpc(self, [('listener', 'stop'), ('driver', 'cleanup')]) )
def __init__(self, conf, url, default_exchange=None, allowed_remote_exmods=None): """Construct ZeroMQ driver. Initialize driver options. Construct matchmaker - pluggable interface to targets management Name Service Construct client and server controllers :param conf: oslo messaging configuration object :type conf: oslo_config.CONF :param url: transport URL :type url: TransportUrl :param default_exchange: Not used in zmq implementation :type default_exchange: None :param allowed_remote_exmods: remote exception passing options :type allowed_remote_exmods: list """ zmq = zmq_async.import_zmq() if zmq is None: raise ImportError(_LE("ZeroMQ is not available!")) zmq_options.register_opts(conf) self.conf = conf self.allowed_remote_exmods = allowed_remote_exmods self.matchmaker = driver.DriverManager( 'oslo.messaging.zmq.matchmaker', self.get_matchmaker_backend(self.conf, url), ).driver(self.conf, url=url) client_cls = zmq_client.ZmqClientProxy if conf.oslo_messaging_zmq.use_pub_sub and not \ conf.oslo_messaging_zmq.use_router_proxy: client_cls = zmq_client.ZmqClientMixDirectPubSub elif not conf.oslo_messaging_zmq.use_pub_sub and not \ conf.oslo_messaging_zmq.use_router_proxy: client_cls = zmq_client.ZmqClientDirect self.client = LazyDriverItem(client_cls, self.conf, self.matchmaker, self.allowed_remote_exmods) self.notifier = LazyDriverItem(client_cls, self.conf, self.matchmaker, self.allowed_remote_exmods) super(ZmqDriver, self).__init__(conf, url, default_exchange, allowed_remote_exmods)
def __init__(self, conf, url, default_exchange=None, allowed_remote_exmods=None): """Construct ZeroMQ driver. Initialize driver options. Construct matchmaker - pluggable interface to targets management Name Service Construct client and server controllers :param conf: oslo messaging configuration object :type conf: oslo_config.CONF :param url: transport URL :type url: TransportUrl :param default_exchange: Not used in zmq implementation :type default_exchange: None :param allowed_remote_exmods: remote exception passing options :type allowed_remote_exmods: list """ zmq = zmq_async.import_zmq() if zmq is None: raise ImportError(_LE("ZeroMQ is not available!")) zmq_options.register_opts(conf) self.conf = conf self.allowed_remote_exmods = allowed_remote_exmods self.matchmaker = driver.DriverManager( 'oslo.messaging.zmq.matchmaker', self.get_matchmaker_backend(self.conf, url), ).driver(self.conf, url=url) client_cls = zmq_client.ZmqClientProxy if conf.oslo_messaging_zmq.use_pub_sub and not \ conf.oslo_messaging_zmq.use_router_proxy: client_cls = zmq_client.ZmqClientMixDirectPubSub elif not conf.oslo_messaging_zmq.use_pub_sub and not \ conf.oslo_messaging_zmq.use_router_proxy: client_cls = zmq_client.ZmqClientDirect self.client = LazyDriverItem( client_cls, self.conf, self.matchmaker, self.allowed_remote_exmods) self.notifier = LazyDriverItem( client_cls, self.conf, self.matchmaker, self.allowed_remote_exmods) super(ZmqDriver, self).__init__(conf, url, default_exchange, allowed_remote_exmods)
def setUp(self, conf=cfg.CONF): super(SkipIfNoTransportURL, self).setUp(conf=conf) driver = os.environ.get("TRANSPORT_DRIVER") if driver: self.url = os.environ.get('PIFPAF_URL') if driver == "pika" and self.url: self.url = self.url.replace("rabbit://", "pika://") else: self.url = os.environ.get('TRANSPORT_URL') if not self.url: self.skipTest("No transport url configured") transport_url = oslo_messaging.TransportURL.parse(conf, self.url) zmq_options.register_opts(conf, transport_url) zmq_matchmaker = os.environ.get('ZMQ_MATCHMAKER') if zmq_matchmaker: self.config(rpc_zmq_matchmaker=zmq_matchmaker, group="oslo_messaging_zmq") zmq_ipc_dir = os.environ.get('ZMQ_IPC_DIR') if zmq_ipc_dir: self.config(group="oslo_messaging_zmq", rpc_zmq_ipc_dir=zmq_ipc_dir) zmq_redis_port = os.environ.get('ZMQ_REDIS_PORT') if zmq_redis_port: self.config(port=zmq_redis_port, check_timeout=10000, wait_timeout=1000, group="matchmaker_redis") zmq_use_pub_sub = os.environ.get('ZMQ_USE_PUB_SUB') zmq_use_router_proxy = os.environ.get('ZMQ_USE_ROUTER_PROXY') zmq_use_acks = os.environ.get('ZMQ_USE_ACKS') self.config(use_pub_sub=zmq_use_pub_sub, use_router_proxy=zmq_use_router_proxy, rpc_use_acks=zmq_use_acks, group='oslo_messaging_zmq') zmq_use_dynamic_connections = \ os.environ.get('ZMQ_USE_DYNAMIC_CONNECTIONS') self.config(use_dynamic_connections=zmq_use_dynamic_connections, group='oslo_messaging_zmq') kafka_options.register_opts(conf, transport_url) self.config(producer_batch_size=0, group='oslo_messaging_kafka')
def setUp(self, conf=cfg.CONF): super(SkipIfNoTransportURL, self).setUp(conf=conf) driver = os.environ.get("TRANSPORT_DRIVER") if driver: self.url = os.environ.get('PIFPAF_URL') if driver == "pika" and self.url: self.url = self.url.replace("rabbit://", "pika://") else: self.url = os.environ.get('TRANSPORT_URL') if not self.url: self.skipTest("No transport url configured") zmq_options.register_opts(conf) zmq_matchmaker = os.environ.get('ZMQ_MATCHMAKER') if zmq_matchmaker: self.config(rpc_zmq_matchmaker=zmq_matchmaker, group="oslo_messaging_zmq") zmq_ipc_dir = os.environ.get('ZMQ_IPC_DIR') if zmq_ipc_dir: self.config(group="oslo_messaging_zmq", rpc_zmq_ipc_dir=zmq_ipc_dir) zmq_redis_port = os.environ.get('ZMQ_REDIS_PORT') if zmq_redis_port: self.config(port=zmq_redis_port, check_timeout=10000, wait_timeout=1000, group="matchmaker_redis") zmq_use_pub_sub = os.environ.get('ZMQ_USE_PUB_SUB') zmq_use_router_proxy = os.environ.get('ZMQ_USE_ROUTER_PROXY') zmq_use_acks = os.environ.get('ZMQ_USE_ACKS') self.config(use_pub_sub=zmq_use_pub_sub, use_router_proxy=zmq_use_router_proxy, rpc_use_acks=zmq_use_acks, group='oslo_messaging_zmq') zmq_use_dynamic_connections = \ os.environ.get('ZMQ_USE_DYNAMIC_CONNECTIONS') self.config(use_dynamic_connections=zmq_use_dynamic_connections, group='oslo_messaging_zmq') kafka_options.register_opts(conf) self.config(producer_batch_size=0, group='oslo_messaging_kafka')
def main(): conf = cfg.CONF opt_group = cfg.OptGroup(name='zmq_proxy_opts', title='ZeroMQ proxy options') conf.register_opts(zmq_proxy.zmq_proxy_opts, group=opt_group) zmq_options.register_opts(conf) zmq_proxy.parse_command_line_args(conf) reactor = zmq_proxy.ZmqProxy(conf) try: while True: reactor.run() except (KeyboardInterrupt, SystemExit): LOG.info(_LI("Exit proxy by interrupt signal.")) finally: reactor.close()
def setUp(self): super(TestZmqAckManager, self).setUp() # register and set necessary config opts self.messaging_conf.transport_driver = 'zmq' zmq_options.register_opts(self.conf) kwargs = { 'rpc_zmq_matchmaker': 'dummy', 'use_pub_sub': False, 'use_router_proxy': True, 'rpc_thread_pool_size': 1, 'rpc_use_acks': True, 'rpc_ack_timeout_base': 5, 'rpc_ack_timeout_multiplier': 1, 'rpc_retry_attempts': 2 } self.config(group='oslo_messaging_zmq', **kwargs) self.conf.register_opts(zmq_proxy.zmq_proxy_opts, group='zmq_proxy_opts') # mock set_result method of futures self.set_result_patcher = mock.patch.object( zmq_receivers.futurist.Future, 'set_result', side_effect=zmq_receivers.futurist.Future.set_result, autospec=True) self.set_result = self.set_result_patcher.start() # mock send method of senders self.send_patcher = mock.patch.object( zmq_senders.RequestSenderProxy, 'send', side_effect=zmq_senders.RequestSenderProxy.send, autospec=True) self.send = self.send_patcher.start() # get driver transport = oslo_messaging.get_transport(self.conf) self.driver = transport._driver # prepare and launch proxy self.proxy = zmq_proxy.ZmqProxy(self.conf) vars(self.driver.matchmaker).update(vars(self.proxy.matchmaker)) self.executor = zmq_async.get_executor(self.proxy.run) self.executor.execute() # create listener self.listener = zmq_common.TestServerListener(self.driver) # create target and message self.target = oslo_messaging.Target(topic='topic', server='server') self.message = {'method': 'xyz', 'args': {'x': 1, 'y': 2, 'z': 3}} # start listening to target self.listener.listen(self.target) # get ack manager self.ack_manager = self.driver.client.get().publishers['default'] self.addCleanup( zmq_common.StopRpc(self, [('listener', 'stop'), ('executor', 'stop'), ('proxy', 'close'), ('driver', 'cleanup'), ('send_patcher', 'stop'), ('set_result_patcher', 'stop')])) # wait for all connections to be established # and all parties to be ready for messaging time.sleep(1)
def setUp(self): super(TestZmqAckManager, self).setUp() # register and set necessary config opts self.messaging_conf.transport_driver = 'zmq' zmq_options.register_opts(self.conf) kwargs = {'rpc_zmq_matchmaker': 'dummy', 'use_pub_sub': False, 'use_router_proxy': True, 'rpc_thread_pool_size': 1, 'rpc_use_acks': True, 'rpc_ack_timeout_base': 5, 'rpc_ack_timeout_multiplier': 1, 'rpc_retry_attempts': 2} self.config(group='oslo_messaging_zmq', **kwargs) self.conf.register_opts(zmq_proxy.zmq_proxy_opts, group='zmq_proxy_opts') # mock set_result method of futures self.set_result_patcher = mock.patch.object( zmq_receivers.futurist.Future, 'set_result', side_effect=zmq_receivers.futurist.Future.set_result, autospec=True ) self.set_result = self.set_result_patcher.start() # mock send method of senders self.send_patcher = mock.patch.object( zmq_senders.RequestSenderProxy, 'send', side_effect=zmq_senders.RequestSenderProxy.send, autospec=True ) self.send = self.send_patcher.start() # get driver transport = oslo_messaging.get_transport(self.conf) self.driver = transport._driver # prepare and launch proxy self.proxy = zmq_proxy.ZmqProxy(self.conf) vars(self.driver.matchmaker).update(vars(self.proxy.matchmaker)) self.executor = zmq_async.get_executor(self.proxy.run) self.executor.execute() # create listener self.listener = zmq_common.TestServerListener(self.driver) # create target and message self.target = oslo_messaging.Target(topic='topic', server='server') self.message = {'method': 'xyz', 'args': {'x': 1, 'y': 2, 'z': 3}} # start listening to target self.listener.listen(self.target) # get ack manager self.ack_manager = self.driver.client.get().publishers['default'] self.addCleanup( zmq_common.StopRpc( self, [('listener', 'stop'), ('executor', 'stop'), ('proxy', 'close'), ('driver', 'cleanup'), ('send_patcher', 'stop'), ('set_result_patcher', 'stop')] ) ) # wait for all connections to be established # and all parties to be ready for messaging time.sleep(1)
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import argparse import logging from oslo_config import cfg from oslo_messaging._drivers.zmq_driver.proxy import zmq_proxy from oslo_messaging._drivers.zmq_driver.proxy import zmq_queue_proxy from oslo_messaging._drivers.zmq_driver import zmq_options CONF = cfg.CONF zmq_options.register_opts(CONF) opt_group = cfg.OptGroup(name='zmq_proxy_opts', title='ZeroMQ proxy options') CONF.register_opts(zmq_proxy.zmq_proxy_opts, group=opt_group) USAGE = """ Usage: ./zmq-proxy.py [-h] [] ... Usage example: python oslo_messaging/_cmd/zmq-proxy.py""" def main(): parser = argparse.ArgumentParser(description='ZeroMQ proxy service', usage=USAGE) parser.add_argument('-c',