Beispiel #1
0
    def test_nominal(self):
        """Analyse de publication avec et sans durée de vie"""
        publications = { "un":     "uno",
                         "deux":   " dos ",
                         "trois":  "tres:42",
                         "quatre": " cuatro : 42 "}
        res_ok =       { "un":     ("uno", None),
                         "deux":   ("dos", None),
                         "trois":  ("tres",  42000),
                         "quatre": ("cuatro",  42000) }

        self.assertEqual(res_ok, parsePublications(publications))
Beispiel #2
0
def buspublisher_factory(settings, client=None):
    """Instanciation d'un L{BusPublisher}.

    @param settings: fichier de configuration
    @type  settings: C{vigilo.common.conf.settings}
    @param client: client du bus
    @type  client: L{vigilo.connector.client.VigiloClient}
    """
    publications = parsePublications(settings.get('publications', {}).copy())
    batch_send_perf = int(settings["bus"].get("batch_send_perf", 1))
    publisher = BusPublisher(publications, batch_send_perf)
    if client is not None:
        publisher.setClient(client)
    return publisher
Beispiel #3
0
def statuspublisher_factory(settings, client, providers=None):
    """
    Construit une instance de L{StatusPublisher}

    @param settings: fichier de configuration
    @type  settings: C{vigilo.common.conf.settings}
    @param client: client du bus
    @type  client: L{vigilo.connector.client.VigiloClient}
    @param providers: liste de fournisseurs de statistiques
    @type  providers: C{list}
    """
    hostname = settings.get("connector", {}).get("hostname", None)
    if hostname is None:
        hostname = socket.gethostname()
        if "." in hostname: # on ne veut pas le FQDN
            hostname = hostname[:hostname.index(".")]

    idinstance = settings.get("instance", "")
    servicename = os.path.basename(sys.argv[0])
    if idinstance:
        servicename = servicename + "-" + str(idinstance)
    servicename = settings.get("connector", {}).get("status_service",
            servicename)
    smne = settings["connector"].get("self_monitoring_nagios_exchange", None)
    smpe = settings["connector"].get("self_monitoring_perf_exchange", None)
    publications = settings.get('publications', {}).copy()
    try:
        # Si besoin (paramètre de surcharge défini dans la configuration)
        # surcharger le paramètre de publication pour les messages qui viennent
        # de l'auto-supervision du connecteur.
        if smne is not None:
            publications["nagios"] = smne
        if smpe is not None:
            publications["perf"] = smpe
        publications = parsePublications(publications)
    except Exception, e:
        LOGGER.error(_('Invalid configuration option for publications: '
                       '(%(error)s).') % {"error": get_error_message(e)})
        sys.exit(1)
Beispiel #4
0
def ruledispatcher_factory(settings, database, client):
    nagios_hls_host = settings['correlator']['nagios_hls_host']

    timeout = settings['correlator'].as_int('rules_timeout')
    if timeout <= 0:
        timeout = None

    min_runner = settings['correlator'].as_int('min_rule_runners')
    max_runner = settings['correlator'].as_int('max_rule_runners')

    # Identifiant (supposé) unique de l'instance.
    instance = settings['instance']

    try:
        max_idle = settings['correlator'].as_int('rule_runners_max_idle')
    except KeyError:
        max_idle = 20

    msg_handler = RuleDispatcher(database, nagios_hls_host, timeout,
                                 min_runner, max_runner, max_idle, instance)
    msg_handler.check_database_connectivity()
    msg_handler.setClient(client)
    subs = parseSubscriptions(settings)
    queue = settings["bus"]["queue"]
    queue_message_ttl = int(settings['bus'].get('queue_messages_ttl', 0))
    msg_handler.subscribe(queue, queue_message_ttl, subs)

    # Expéditeur de messages
    publications = parsePublications(settings.get('publications', {}).copy())
    publisher = MessagePublisher(nagios_hls_host, publications)
    publisher.setClient(client)
    msg_handler.bus_publisher = publisher

    # Créateur de correvents
    correvent_builder = CorrEventBuilder(publisher, database)
    msg_handler.correvent_builder = correvent_builder

    return msg_handler