[che] Recalcule les liens avec les watchers quand une entité est modifiée par l'event-filter.
Corrige https://git.canopsis.net/canopsis/go-revolution/issues/104.
Je me suis permis de faire un peu de refacto, pour clarifier les rôles des méthodes du context.builder
.
Validation
-
Monter un environnement go, avec che en mode debug
-
Créer un watcher surveillant les entités avec un champ enrichi, par exemple :
POST /api/v2/watcherng { "_id": "watcher-capensis", "name": "watcher-capensis", "type": "watcher", "entities": [{ "infos": { "customer": { "value": "Capensis" } } }], "state": { "method": "worst" }, "output_template": "Alarmes critiques : {{.State.Critical}}" }
-
Créer une règle d'enrichissement qui ajoute ce champ enrichi à des entités, par exemple :
{ "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": "Capensis" } ], "on_success": "pass", "on_failure": "drop", "priority": 120 }
La première règle ajoute l'entité à l'événement, la seconde modifie l'information
customer
, et met sa valeur àCapensis
. -
Créer une nouvelle entité en envoyant UN SEUL événement
check
. -
Dans les logs de che, chercher la ligne correspondant à l'événement envoyé contenant :
2019/05/06 14:55:51 DEBUG | output event: ...
. Elle doit contenir les informations suivantes :{ // ..., "current_entity": { // ... "impact": ["component", "watcher-capensis"], // <- contient le watcher "infos": { "customer": { "name": "customer", "description": "", "value": "Capensis" // <- l'information a été modifiée } } // ... } // ... }
-
Vérifier qu'au bout d'une minute, le watcher est bien dans les
impact
de l'entité, et l'entité est bien dans lesdepends
du watcher en base.