add builtin rules hook

Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
This commit is contained in:
Nicola Murino
2024-08-08 07:41:39 +02:00
parent 4edecc5c77
commit b94451f731
4 changed files with 118 additions and 31 deletions

View File

@@ -70,6 +70,7 @@ var (
// eventManager handle the supported event rules actions
eventManager eventRulesContainer
multipartQuoteEscaper = strings.NewReplacer("\\", "\\\\", `"`, "\\\"")
loadBuiltinRulesFn func() []dataprovider.EventRule
)
func init() {
@@ -272,11 +273,15 @@ func (r *eventRulesContainer) addUpdateRuleInternal(rule dataprovider.EventRule)
func (r *eventRulesContainer) loadRules() {
eventManagerLog(logger.LevelDebug, "loading updated rules")
modTime := util.GetTimeAsMsSinceEpoch(time.Now())
rules, err := dataprovider.GetRecentlyUpdatedRules(r.getLastLoadTime())
lastLoadTime := r.getLastLoadTime()
rules, err := dataprovider.GetRecentlyUpdatedRules(lastLoadTime)
if err != nil {
eventManagerLog(logger.LevelError, "unable to load event rules: %v", err)
return
}
if loadBuiltinRulesFn != nil {
rules = append(rules, loadBuiltinRulesFn()...)
}
eventManagerLog(logger.LevelDebug, "recently updated event rules loaded: %d", len(rules))
if len(rules) > 0 {
@@ -2778,9 +2783,20 @@ func (j *eventCronJob) getTask(rule *dataprovider.EventRule) (dataprovider.Task,
return dataprovider.Task{}, nil
}
func (j *eventCronJob) getEventRule() (dataprovider.EventRule, error) {
if loadBuiltinRulesFn != nil {
for _, rule := range loadBuiltinRulesFn() {
if rule.Name == j.ruleName {
return rule, nil
}
}
}
return dataprovider.EventRuleExists(j.ruleName)
}
func (j *eventCronJob) Run() {
eventManagerLog(logger.LevelDebug, "executing scheduled rule %q", j.ruleName)
rule, err := dataprovider.EventRuleExists(j.ruleName)
rule, err := j.getEventRule()
if err != nil {
eventManagerLog(logger.LevelError, "unable to load rule with name %q", j.ruleName)
return