Esempio n. 1
0
    def __init__(self, conf):
        super(KombuRPCServer, self).__init__(conf)

        CONF.register_opts(_pool_opts)

        kombu_base.set_transport_options()

        self._register_mistral_serialization()

        self.topic = conf.topic
        self.server_id = conf.host

        self._hosts = kombu_hosts.KombuHosts(CONF)

        self._executor_threads = CONF.executor_thread_pool_size
        self.exchange = CONF.control_exchange
        # TODO(rakhmerov): We shouldn't rely on any properties related
        # to oslo.messaging. Only "transport_url" should matter.
        self.durable_queue = CONF.oslo_messaging_rabbit.amqp_durable_queues
        self.auto_delete = CONF.oslo_messaging_rabbit.amqp_auto_delete
        self.routing_key = self.topic
        self.channel = None
        self.conn = None
        self._running = threading.Event()
        self._stopped = threading.Event()
        self.endpoints = []
        self._worker = None
        self._thread = None

        # TODO(ddeja): Those 2 options should be gathered from config.
        self._sleep_time = 1
        self._max_sleep_time = 10
Esempio n. 2
0
    def test_transport_url_multiple_hosts(self):
        self.override_config(
            'transport_url',
            'rabbit://{user_1}:{password_1}@{host_1}:{port_1},'
            '{user_2}:{password_2}@{host_2}:{port_2}/{virtual_host}'.format(
                user_1=USER_1,
                password_1=PASSWORD_1,
                port_1=PORT_1,
                host_1=HOST_1,
                user_2=USER_2,
                password_2=PASSWORD_2,
                host_2=HOST_2,
                port_2=PORT_2,
                virtual_host=VIRTUAL_HOST_1))

        hosts = kombu_hosts.KombuHosts(cfg.CONF)

        self.assertEqual(VIRTUAL_HOST_1, hosts.virtual_host)
        self.assert_transports_host([
            oslo_messaging.TransportHost(
                hostname=HOST_1,
                port=PORT_1,
                username=USER_1,
                password=PASSWORD_1,
            ),
            oslo_messaging.TransportHost(
                hostname=HOST_2,
                port=PORT_2,
                username=USER_2,
                password=PASSWORD_2,
            )
        ], hosts.hosts)
Esempio n. 3
0
    def test_prefer_transport_url(self):
        self.override_config('rabbit_userid', USER_1, 'oslo_messaging_rabbit')
        self.override_config('rabbit_password', PASSWORD_1,
                             'oslo_messaging_rabbit')
        self.override_config('rabbit_virtual_host', VIRTUAL_HOST_1,
                             'oslo_messaging_rabbit')
        self.override_config('rabbit_host', HOST_1, 'oslo_messaging_rabbit')
        self.override_config('rabbit_port', PORT_1, 'oslo_messaging_rabbit')

        self.override_config(
            'transport_url',
            'rabbit://{user}:{password}@{host}:{port}/{virtual_host}'.format(
                user=USER_2,
                port=PORT_2,
                host=HOST_2,
                password=PASSWORD_2,
                virtual_host=VIRTUAL_HOST_2))

        hosts = kombu_hosts.KombuHosts(cfg.CONF)

        self.assertEqual(VIRTUAL_HOST_2, hosts.virtual_host)
        self.assert_transports_host([
            oslo_messaging.TransportHost(
                hostname=HOST_2,
                port=PORT_2,
                username=USER_2,
                password=PASSWORD_2,
            )
        ], hosts.hosts)
Esempio n. 4
0
    def test_oslo_messaging_rabbit_multiple_hosts(self):
        self.override_config('rabbit_userid', USER_1, 'oslo_messaging_rabbit')
        self.override_config('rabbit_password', PASSWORD_1,
                             'oslo_messaging_rabbit')
        self.override_config('rabbit_virtual_host', VIRTUAL_HOST_1,
                             'oslo_messaging_rabbit')
        self.override_config(
            'rabbit_hosts',
            '{host_1}:{port_1},{host_2}:{port_2}'.format(host_1=HOST_1,
                                                         port_1=PORT_1,
                                                         host_2=HOST_2,
                                                         port_2=PORT_2),
            'oslo_messaging_rabbit')
        self.override_config('rabbit_port', PORT_1, 'oslo_messaging_rabbit')

        hosts = kombu_hosts.KombuHosts(cfg.CONF)

        self.assertEqual(VIRTUAL_HOST_1, hosts.virtual_host)
        self.assert_transports_host([
            oslo_messaging.TransportHost(
                hostname=HOST_1,
                port=PORT_1,
                username=USER_1,
                password=PASSWORD_1,
            ),
            oslo_messaging.TransportHost(
                hostname=HOST_2,
                port=PORT_2,
                username=USER_1,
                password=PASSWORD_1,
            )
        ], hosts.hosts)
    def __init__(self, conf):
        super(KombuRPCClient, self).__init__(conf)

        kombu_base.set_transport_options()

        self._register_mistral_serialization()

        self.topic = conf.topic
        self.server_id = conf.host

        self._hosts = kombu_hosts.KombuHosts(CONF)

        self.exchange = CONF.control_exchange
        self.virtual_host = CONF.oslo_messaging_rabbit.rabbit_virtual_host
        self.durable_queue = CONF.oslo_messaging_rabbit.amqp_durable_queues
        self.auto_delete = CONF.oslo_messaging_rabbit.amqp_auto_delete
        self._timeout = CONF.rpc_response_timeout
        self.routing_key = self.topic

        hosts = self._hosts.get_hosts()

        connections = []

        for host in hosts:
            conn = self._make_connection(
                host.hostname,
                host.port,
                host.username,
                host.password,
                self.virtual_host
            )
            connections.append(conn)

        self._connections = itertools.cycle(connections)

        # Create exchange.
        exchange = self._make_exchange(
            self.exchange,
            durable=self.durable_queue,
            auto_delete=self.auto_delete
        )

        # Create queue.
        self.queue_name = utils.generate_unicode_uuid()
        self.callback_queue = kombu.Queue(
            self.queue_name,
            exchange=exchange,
            routing_key=self.queue_name,
            durable=False,
            exclusive=True,
            auto_delete=True
        )

        self._listener = kombu_listener.KombuRPCListener(
            connections=self._connections,
            callback_queue=self.callback_queue
        )

        self._listener.start()
Esempio n. 6
0
    def test_oslo_messaging_rabbit(self):
        self.override_config('rabbit_userid', USER_1, 'oslo_messaging_rabbit')
        self.override_config('rabbit_password', PASSWORD_1,
                             'oslo_messaging_rabbit')
        self.override_config('rabbit_virtual_host', VIRTUAL_HOST_1,
                             'oslo_messaging_rabbit')
        self.override_config('rabbit_host', HOST_1, 'oslo_messaging_rabbit')
        self.override_config('rabbit_port', PORT_1, 'oslo_messaging_rabbit')

        hosts = kombu_hosts.KombuHosts(cfg.CONF)

        self.assertEqual(VIRTUAL_HOST_1, hosts.virtual_host)
        self.assert_transports_host([
            oslo_messaging.TransportHost(
                hostname=HOST_1,
                port=PORT_1,
                username=USER_1,
                password=PASSWORD_1,
            )
        ], hosts.hosts)