fix(event-filter): return error when using a missing key in a template
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
-