Plugins postprocessing au moteur axe
Ajouter des plugins de postprocessing au moteur axe
. Un plugin est un package go exportant un objet AxePostProcessor
implémentant l'interface suivante :
type AxePostProcessor interface {
Init() error
Beat() error
ProcessEvent(event types.Event, alarmChange types.AlarmChange) error
ProcessAlarms(alarms []types.Alarm, alarmChange types.AlarmChange) error
}
Les plugins doivent être chargés et initialisés (avec Init()
) au lancement du moteur. Il faut ajouter un mécanisme pour configurer le dossier contenant les plugins (ajouter un flag --postProcessorsDirectory
par exemple).
Note : Il faudrait éviter de charger des plugins qui n'ont pas été activés explicitement. À voir quand on aura remis la conf à plat.
La méthode Beat
est appelée au beat du moteur, et est par exemple utilisée pour recharger les webhooks depuis la base de donnée.
La méthode ProcessEvent
est appelée à la fin de la méthode WorkerProcess
de cmd/engine-axe/engine.go
.
La méthode ProcessAlarms
est appelée quand des modifications sont effectuées par lot (par exemple la résolution ou sortie de snooze au beat).