aboutsummaryrefslogtreecommitdiff
path: root/cmd
diff options
context:
space:
mode:
authorGibheer <gibheer+git@zero-knowledge.org>2018-12-11 20:21:14 +0100
committerGibheer <gibheer+git@zero-knowledge.org>2018-12-11 20:21:14 +0100
commitaf843d76e1aff287af3d07dd5890f814991e662a (patch)
treeac2fd386ab0059c03add6e602a5dfa13862e4344 /cmd
parent02e8142b6df146272bdcaba6d7f481061540cebe (diff)
moncheck - move notifications to dedicated table
It would be nice to support multiple notification mechanisms with a way to disable all or part of them. So for now, this is bound to the check but may change again in the future. Apart from that, all notifications get written to the notification table, so that the notifiers can do their job and ACK their own notifications.
Diffstat (limited to 'cmd')
-rw-r--r--cmd/moncheck/main.go18
1 files changed, 9 insertions, 9 deletions
diff --git a/cmd/moncheck/main.go b/cmd/moncheck/main.go
index bea8e77..e292637 100644
--- a/cmd/moncheck/main.go
+++ b/cmd/moncheck/main.go
@@ -81,7 +81,7 @@ func check(thread int, db *sql.DB, waitDuration, timeout time.Duration) {
log.Printf("[%d] could not start transaction: %s", thread, err)
continue
}
- rows, err := tx.Query(`select check_id, cmdLine, states, notify, mapping_id
+ rows, err := tx.Query(`select check_id, cmdLine, states, mapping_id
from active_checks
where next_time < now()
and enabled
@@ -97,7 +97,6 @@ func check(thread int, db *sql.DB, waitDuration, timeout time.Duration) {
id int64
cmdLine []string
states States
- notify bool
mapId int
state int
)
@@ -108,7 +107,7 @@ func check(thread int, db *sql.DB, waitDuration, timeout time.Duration) {
tx.Rollback()
break
}
- err := rows.Scan(&id, pq.Array(&cmdLine), &states, &notify, &mapId)
+ err := rows.Scan(&id, pq.Array(&cmdLine), &states, &mapId)
if err != nil {
log.Printf("could not scan values: %s", err)
tx.Rollback()
@@ -166,12 +165,13 @@ where check_id = $1`, id, &states, &msg, states.ToOK()); err != nil {
tx.Rollback()
continue
}
- if notify {
- if _, err := tx.Exec("insert into notifications(check_id, states, output, mapping_id) values ($1, $2, $3, $4);", &id, &states, &msg, &mapId); err != nil {
- log.Printf("[%d] could not create notification for '%d': %s", thread, id, err)
- tx.Rollback()
- continue
- }
+ if _, err := tx.Exec(`insert into notifications(check_id, states, output, mapping_id, notifier_id)
+ select $1, $2, $3, $4, cn.notifier_id
+ from checks_notify cn
+ where cn.check_id = $1`, &id, &states, &msg, &mapId); err != nil {
+ log.Printf("[%d] could not create notification for '%d': %s", thread, id, err)
+ tx.Rollback()
+ continue
}
tx.Commit()
}