[event-filter] Implémentation du socle
Cette MR implémente un event-filter dans che. La documentation et l'API sont ajoutées dans https://git.canopsis.net/canopsis/canopsis/merge_requests/531.
La spécification est implémentée, sauf :
- dans les patterns, l'opérateur
in
(c'est plus compliqué à implémenter que je ne le pensais avec les types go, pour le moment on peut s'en passer en définissant plusieurs règles). - les règles d'enrichissement. J'ai implémenté une partie du décodage pour faire tous les tests d'une traite, je pense faire la suite dans une autre MR.
Il y a pas mal de modifications :
- le plus gros du code est dans le package
lib/canopsis/eventfilter/pattern
qui implémente les patterns permettant de sélectionner les événements auxquels les règles sont appliquées. Il y a (en gros) un fichier par type (par exemple les filtres sur les entiers sont implémentés dansinteger.go
). - le reste de la logique de l'eventfilter est implémentée dans
lib/canopsis/eventfilter
Tests
- Créer des règles avec l'API (https://git.canopsis.net/canopsis/canopsis/merge_requests/531)
- Vérifier que les règles invalides sont rejetées par l'API (la validation des règles ne vérifie pas les patterns, ce serait trop complexe, sachant qu'ils ne sont pas implémentés en python).
- Vérifier que l'on peut bien lister, supprimer, modifier les règles avec l'API.
- Envoyer des événements (pour logger le passage des événements dans l'event-filter, ajouter un champs
debug
valanttrue
à l'événement)- Vérifier que les patterns reconnaissent bien les événements correspondants (cf. doc pour les patterns)
- Vérifier que les règles inactives sont ignorées
- Vérifier que les actions
drop
etbreak
ont le comportement attendu - Vérifier que les règles sont bien appliquées comme décrit dans la partie "Application des règles" de la spec.
Edited by Lucas Seguinot