Exemple #1
0
    def test_services(self):
        """
        The right type and number of services are created.
        """
        config = {'redis-hosts': set(['10.0.0.2', '10.0.0.3']),
                  'redis-port': 6379,
                  'redis-key': 'udplog'}
        dispatcher = Dispatcher()
        multiService = redis.makeService(config, dispatcher)
        services = list(multiService)

        self.assertEqual(3, len(services))

        for service in services[:-1]:
            self.assertIsInstance(service, TCPClient)

        self.assertIsInstance(services[-1], redis.RedisPublisher)
Exemple #2
0
def makeService(config):

    s = service.MultiService()

    # Set up event dispatcher

    dispatcher = Dispatcher()

    # Set up UDPLog server.
    udplogProtocol = UDPLogProtocol(dispatcher.eventReceived)

    udplogServer = internet.UDPServer(port=config['udplog-port'],
                                      protocol=udplogProtocol,
                                      interface=config['udplog-interface'],
                                      maxPacketSize=65536)
    udplogServer.setServiceParent(s)

    # Set up syslog server
    if (config['syslog-port'] is not None or
        config['syslog-unix-socket'] is not None):
        syslogProtocol = syslog.SyslogDatagramProtocol(dispatcher.eventReceived)

        if config['syslog-unix-socket'] is not None:
            syslogServer = internet.UNIXDatagramServer(
                address=config['syslog-unix-socket'],
                protocol=syslogProtocol,
                maxPacketSize=65536)
            syslogServer.setServiceParent(s)
        if config['syslog-port'] is not None:
            syslogServer = internet.UDPServer(port=config['syslog-port'],
                                              protocol=syslogProtocol,
                                              interface=config['syslog-interface'],
                                              maxPacketSize=65536)
            syslogServer.setServiceParent(s)


    # Set up Thrift/Scribe client.
    if config['scribe-host']:
        from udplog import scribe
        factory = UDPLogClientFactory(scribe.ScribeProtocol,
                                      dispatcher)
        scribeClient = internet.TCPClient(config['scribe-host'],
                                          config['scribe-port'],
                                          factory)
        scribeClient.setServiceParent(s)

    # Set up RabbitMQ client.
    if config['rabbitmq-host']:
        from udplog import rabbitmq
        factory = UDPLogClientFactory(
            rabbitmq.RabbitMQPublisher, dispatcher,
            vhost=config['rabbitmq-vhost'],
            exchange=config['rabbitmq-exchange'],
            queueSize=config['rabbitmq-queue-size'])
        rabbitmqClient = internet.TCPClient(config['rabbitmq-host'],
                                            config['rabbitmq-port'],
                                            factory)
        rabbitmqClient.setServiceParent(s)

    # Set up Redis client.
    if config['redis-hosts']:
        from udplog import redis
        redisService = redis.makeService(config, dispatcher)
        redisService.setServiceParent(s)

    # Set up Kafka client.
    if config['kafka-brokers']:
        from udplog import kafka
        kafkaService = kafka.makeService(config, dispatcher)
        kafkaService.setServiceParent(s)

    if config['verbose']:
        UDPLogToTwistedLog(dispatcher)

    return s
Exemple #3
0
def makeService(config):

    s = service.MultiService()

    # Set up event dispatcher

    dispatcher = Dispatcher()

    # Set up UDPLog server.
    udplogProtocol = UDPLogProtocol(dispatcher.eventReceived)

    udplogServer = internet.UDPServer(port=config['udplog-port'],
                                      protocol=udplogProtocol,
                                      interface=config['udplog-interface'],
                                      maxPacketSize=65536)
    udplogServer.setServiceParent(s)

    # Set up syslog server
    if (config.get('syslog-port') is not None or
        config.get('syslog-unix-socket') is not None):
        hostname = socket.gethostname()
        hostnames = {
            hostname.split('.')[0]: hostname,
            '': hostname
        }
        syslogProtocol = syslog.SyslogDatagramProtocol(
            dispatcher.eventReceived, hostnames=hostnames)

        if config.get('syslog-unix-socket') is not None:
            syslogServer = internet.UNIXDatagramServer(
                address=config['syslog-unix-socket'],
                protocol=syslogProtocol,
                maxPacketSize=65536)
            syslogServer.setServiceParent(s)
        if config.get('syslog-port') is not None:
            syslogServer = internet.UDPServer(
                port=config['syslog-port'],
                protocol=syslogProtocol,
                interface=config.get('syslog-interface', ''),
                maxPacketSize=65536)
            syslogServer.setServiceParent(s)


    # Set up Thrift/Scribe client.
    if config['scribe-host']:
        from udplog import scribe
        factory = UDPLogClientFactory(scribe.ScribeProtocol,
                                      dispatcher)
        scribeClient = internet.TCPClient(config['scribe-host'],
                                          config['scribe-port'],
                                          factory)
        scribeClient.setServiceParent(s)

    # Set up RabbitMQ client.
    if config['rabbitmq-host']:
        from udplog import rabbitmq
        factory = UDPLogClientFactory(
            rabbitmq.RabbitMQPublisher, dispatcher,
            vhost=config['rabbitmq-vhost'],
            exchange=config['rabbitmq-exchange'],
            queueSize=config['rabbitmq-queue-size'])
        rabbitmqClient = internet.TCPClient(config['rabbitmq-host'],
                                            config['rabbitmq-port'],
                                            factory)
        rabbitmqClient.setServiceParent(s)

    # Set up Redis client.
    if config['redis-hosts']:
        from udplog import redis
        redisService = redis.makeService(config, dispatcher)
        redisService.setServiceParent(s)

    # Set up Kafka client.
    if config['kafka-brokers']:
        from udplog import kafka
        kafkaService = kafka.makeService(config, dispatcher)
        kafkaService.setServiceParent(s)

    if config['verbose']:
        UDPLogToTwistedLog(dispatcher)

    return s
Exemple #4
0
def makeService(config):

    s = service.MultiService()

    # Set up event dispatcher

    dispatcher = Dispatcher()

    # Set up UDPLog server.
    udplogProtocol = UDPLogProtocol(dispatcher.eventReceived)

    udplogServer = internet.UDPServer(
        port=config["udplog-port"], protocol=udplogProtocol, interface=config["udplog-interface"], maxPacketSize=65536
    )
    udplogServer.setServiceParent(s)

    # Set up syslog server
    if config.get("syslog-port") is not None or config.get("syslog-unix-socket") is not None:
        hostname = socket.gethostname()
        hostnames = {hostname.split(".")[0]: hostname, "": hostname}
        syslogProtocol = syslog.SyslogDatagramProtocol(dispatcher.eventReceived, hostnames=hostnames)

        if config.get("syslog-unix-socket") is not None:
            syslogServer = internet.UNIXDatagramServer(
                address=config["syslog-unix-socket"], protocol=syslogProtocol, maxPacketSize=65536
            )
            syslogServer.setServiceParent(s)
        if config.get("syslog-port") is not None:
            syslogServer = internet.UDPServer(
                port=config["syslog-port"],
                protocol=syslogProtocol,
                interface=config.get("syslog-interface", ""),
                maxPacketSize=65536,
            )
            syslogServer.setServiceParent(s)

    # Set up Thrift/Scribe client.
    if config["scribe-host"]:
        from udplog import scribe

        factory = UDPLogClientFactory(scribe.ScribeProtocol, dispatcher)
        scribeClient = internet.TCPClient(config["scribe-host"], config["scribe-port"], factory)
        scribeClient.setServiceParent(s)

    # Set up RabbitMQ client.
    if config["rabbitmq-host"]:
        from udplog import rabbitmq

        factory = UDPLogClientFactory(
            rabbitmq.RabbitMQPublisher,
            dispatcher,
            vhost=config["rabbitmq-vhost"],
            exchange=config["rabbitmq-exchange"],
            queueSize=config["rabbitmq-queue-size"],
        )
        rabbitmqClient = internet.TCPClient(config["rabbitmq-host"], config["rabbitmq-port"], factory)
        rabbitmqClient.setServiceParent(s)

    # Set up Redis client.
    if config["redis-hosts"]:
        from udplog import redis

        redisService = redis.makeService(config, dispatcher)
        redisService.setServiceParent(s)

    # Set up Kafka client.
    if config["kafka-brokers"]:
        from udplog import kafka

        kafkaService = kafka.makeService(config, dispatcher)
        kafkaService.setServiceParent(s)

    if config["verbose"]:
        UDPLogToTwistedLog(dispatcher)

    return s