예제 #1
0
def get_rpc_server():

    endpoints = [ResultEndpoint()]
    transport = messaging.get_transport(CONF)
    s_target = target.Target('murano', 'results', server=str(uuid.uuid4()))
    access_policy = dispatcher.DefaultRPCAccessPolicy
    server = messaging.get_rpc_server(transport,
                                      s_target,
                                      endpoints,
                                      'threading',
                                      access_policy=access_policy)

    return server
예제 #2
0
 def listen_for_notifications(self, targets_and_priorities, pool,
                              on_incoming_callback, batch_size,
                              batch_timeout):
     LOG.debug("Listen for notifications %s", targets_and_priorities)
     if pool:
         raise NotImplementedError('"pool" not implemented by '
                                   'this transport driver')
     listener = ProtonListener(self)
     for target, priority in targets_and_priorities:
         topic = '%s.%s' % (target.topic, priority)
         t = messaging_target.Target(topic=topic)
         self._ctrl.add_task(drivertasks.ListenTask(t, listener, True))
     return base.PollStyleListenerAdapter(listener, on_incoming_callback,
                                          batch_size, batch_timeout)
예제 #3
0
    def __init__(self, endpoints, serializer, access_policy=None):
        """Construct a rpc server dispatcher.

        :param endpoints: list of endpoint objects for dispatching to
        :param serializer: optional message serializer
        """
        cfg.CONF.register_opts(_dispatcher_opts)
        oslo_rpc_server_ping = None

        for ep in endpoints:
            # Check if we have an attribute named 'target'
            target = getattr(ep, 'target', None)
            if target and not isinstance(target, msg_target.Target):
                errmsg = "'target' is a reserved Endpoint attribute used" + \
                         " for namespace and version filtering.  It must" + \
                         " be of type oslo_messaging.Target. Do not" + \
                         " define an Endpoint method named 'target'"
                raise TypeError("%s: endpoint=%s" % (errmsg, ep))

            # Check if we have an attribute named 'oslo_rpc_server_ping'
            oslo_rpc_server_ping = getattr(ep, 'oslo_rpc_server_ping', None)
            if oslo_rpc_server_ping:
                errmsg = "'oslo_rpc_server_ping' is a reserved Endpoint" + \
                         " attribute which can be use to ping the" + \
                         " endpoint. Please avoid using any oslo_* " + \
                         " naming."
                LOG.warning("%s (endpoint=%s)" % (errmsg, ep))

        self.endpoints = endpoints

        # Add ping endpoint if enabled in config
        if cfg.CONF.rpc_ping_enabled:
            if oslo_rpc_server_ping:
                LOG.warning("rpc_ping_enabled=True in config but "
                            "oslo_rpc_server_ping is already declared "
                            "in an other Endpoint. Not enabling rpc_ping "
                            "Endpoint.")
            else:
                self.endpoints.append(PingEndpoint())

        self.serializer = serializer or msg_serializer.NoOpSerializer()
        self._default_target = msg_target.Target()
        if access_policy is not None:
            if issubclass(access_policy, RPCAccessPolicyBase):
                self.access_policy = access_policy()
            else:
                raise TypeError('access_policy must be a subclass of '
                                'RPCAccessPolicyBase')
        else:
            self.access_policy = DefaultRPCAccessPolicy()
예제 #4
0
    def start(self):
        endpoints = [
            TaskProcessingEndpoint(),
            StaticActionEndpoint(),
            SchemaEndpoint()
        ]

        transport = messaging.get_rpc_transport(CONF)
        s_target = target.Target('murano', 'tasks', server=str(uuid.uuid4()))
        access_policy = dispatcher.DefaultRPCAccessPolicy
        self.server = messaging.get_rpc_server(
            transport, s_target, endpoints, 'eventlet',
            access_policy=access_policy)
        self.server.start()
        super(EngineService, self).start()
예제 #5
0
def start_listener(conf, exchange, topic, endpoints):
    """Starts up a notification listener."""
    trans = transport.get_transport(conf)
    targets = [target.Target(exchange=exchange, topic=topic)]
    pool_name = get_pool_name(exchange)

    notification_listener = listener.get_notification_listener(
        trans,
        targets,
        endpoints,
        executor='threading',
        allow_requeue=False,
        pool=pool_name)
    notification_listener.start()

    return notification_listener
예제 #6
0
    def __init__(self, endpoints, serializer, access_policy=None):
        """Construct a rpc server dispatcher.

        :param endpoints: list of endpoint objects for dispatching to
        :param serializer: optional message serializer
        """

        self.endpoints = endpoints
        self.serializer = serializer or msg_serializer.NoOpSerializer()
        self._default_target = msg_target.Target()
        if access_policy is not None:
            if issubclass(access_policy, RPCAccessPolicyBase):
                self.access_policy = access_policy()
            else:
                raise TypeError('access_policy must be a subclass of '
                                'RPCAccessPolicyBase')
        else:
            # TODO(pvinci): Change to DefaultRPCAccessPolicy when setting to
            # DefaultRCPAccessPolicy no longer breaks in tempest tests.
            self.access_policy = LegacyRPCAccessPolicy()
예제 #7
0
파일: rpc.py 프로젝트: toby82/murano
 def __init__(self, transport):
     client_target = target.Target('murano', 'tasks')
     self._client = rpc.RPCClient(transport, client_target, timeout=15)
예제 #8
0
def _prepare_rpc_service(server_id):
    endpoints = [TaskProcessingEndpoint()]

    transport = messaging.get_transport(CONF)
    s_target = target.Target('murano', 'tasks', server=server_id)
    return messaging.get_rpc_server(transport, s_target, endpoints, 'eventlet')