Skip to content

fix(event-filter): return error when using a missing key in a template

Lucas Seguinot requested to merge fix/event-filter-no-value into develop

Corrige https://git.canopsis.net/canopsis/go-revolution/issues/66

Validation

  • Créer les règles d'enrichissements suivantes dans l'event-filter :

    POST /api/v2/eventfilter/rules
    {
        "type": "enrichment",
        "pattern": {},
        "external_data": {
            "entity": {
                "type": "entity"
            }
        },
        "actions": [
            {
                "type": "copy",
                "from": "ExternalData.entity",
                "to": "Entity"
            }
        ],
        "on_success": "pass",
        "on_failure": "pass",
        "priority": 100
    }
    POST /api/v2/eventfilter/rules
    {
        "_id": "enrichment-customer",
        "type": "enrichment",
        "pattern": {},
        "actions": [
            {
                "type": "set_entity_info_from_template",
                "name": "customer",
                "description": "Event-filter info",
                "value": "{{.Event.ExtraInfos.customer}}"
            }
        ],
        "on_success": "pass",
        "on_failure": "drop",
        "priority": 120
    }

    La première règle ajoute l'entité à l'événement, la seconde est celle sur laquelle on effectue le test : elle ajoute une information (Event.ExtraInfos.customer) à l'entité, et supprime l'événement en cas d'échec.

  • Envoyer un événement sans champ customer :

        {
             "event_type": "check",
             "connector": "connector",
             "connector_name": "connector_name",
             "source_type": "resource",
             "component": "component",
             "resource": "resource",
             "output": "",
             "state": 3,
             "debug": true
         }
  • Attendre une minute, puis vérifier que :

    • Sans cette MR, l'événement est traité par Canopsis, et l'information customer de l'entité resource/component est modifiée, et vaut alors <no value>.

    • Avec cette MR, l'événement est supprimé par l'event-filter. Il n'y a donc pas d'alarme dans le bac à alarmes, et le résultat suivant dans les logs :

      >>> rule enrichment-customer
      2019/04/30 17:35:04 eventfilter | event matches, applying rule with regex matches {...}
      2019/04/30 17:35:04 eventfilter | failed to apply action: template: value:1:8: executing "value" at <.Event.ExtraInfos.customer>: map has no entry for key "customer"
      2019/04/30 17:35:04 eventfilter | outcome: drop

Merge request reports