Trigger expression evaluated and problems managed
This commit is contained in:
parent
ffe0c3def2
commit
b0a0f9290e
3 changed files with 82 additions and 20 deletions
36
main.go
36
main.go
|
|
@ -172,10 +172,42 @@ func entryDatapoint(w http.ResponseWriter, r *http.Request, sess *session.T) { /
|
|||
|
||||
var triggers []Trigger
|
||||
triggers, err = TriggersRetrieveByDatapoint(dpoint)
|
||||
for _, trigger := range triggers {
|
||||
trigger.Run()
|
||||
if err != nil {
|
||||
logger.Error("entry", "error", err)
|
||||
}
|
||||
for _, trigger := range triggers {
|
||||
var out any
|
||||
out, err = trigger.Run()
|
||||
if err != nil {
|
||||
err = we.Wrap(err).Log()
|
||||
logger.Error("entry", "error", err)
|
||||
|
||||
}
|
||||
logger.Debug("entry", "datapoint", dpoint, "value", value, "trigger", trigger, "result", out)
|
||||
|
||||
switch v := out.(type) {
|
||||
case bool:
|
||||
// Trigger returning true - a problem occured
|
||||
if v {
|
||||
err = ProblemStart(trigger)
|
||||
if err != nil {
|
||||
err = we.Wrap(err).Log()
|
||||
logger.Error("entry", "error", err)
|
||||
}
|
||||
} else {
|
||||
err = ProblemClose(trigger)
|
||||
if err != nil {
|
||||
err = we.Wrap(err).Log()
|
||||
logger.Error("entry", "error", err)
|
||||
}
|
||||
}
|
||||
|
||||
default:
|
||||
err := fmt.Errorf(`Expression for trigger %s not returning bool (%T)`, trigger.Name, v)
|
||||
logger.Info("entry", "error", err)
|
||||
we.Wrap(err).WithData(v).Log()
|
||||
}
|
||||
}
|
||||
|
||||
j, _ := json.Marshal(struct{ OK bool }{true})
|
||||
w.Write(j)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue