diff --git a/cmd/monfront/main.go b/cmd/monfront/main.go index 989759a..fd3d3ec 100644 --- a/cmd/monfront/main.go +++ b/cmd/monfront/main.go @@ -48,6 +48,7 @@ type ( MappingId int State int Enabled bool + Notify bool Notice sql.NullString NextTime time.Time Msg string @@ -126,9 +127,9 @@ func checkAction(w http.ResponseWriter, r *http.Request) { setTable = "checks_notify" setClause = "enabled = true" case "enable": - setClause = "enabled = true" + setClause = "enabled = true, updated = now()" case "disable": - setClause = "enabled = false" + setClause = "enabled = false, updated = now()" case "reschedule": setClause = "next_time = now()" setTable = "active_checks" @@ -184,14 +185,16 @@ func checkAction(w http.ResponseWriter, r *http.Request) { func showChecks(w http.ResponseWriter, r *http.Request) { query := `select c.id, n.id, n.name, co.name, ac.mapping_id, ac.states[1] as state, - ac.enabled, ac.notice, ac.next_time, ac.msg + ac.enabled, ac.notice, ac.next_time, ac.msg, + case when cn.check_id is null then false else true end as notify_enabled from active_checks ac join checks c on ac.check_id = c.id join nodes n on c.node_id = n.id - join commands co on c.command_id = co.id` + join commands co on c.command_id = co.id + left join ( select distinct check_id from checks_notify where enabled = true) cn on c.id = cn.check_id` where := []string{} if strings.HasPrefix(r.URL.Path, "/unhandled") { - where = append(where, `ac.states[1] > 0`) + where = append(where, `ac.states[1] > 0 and ac.acknowledged = false`) } idx := 0 params := []interface{}{} @@ -236,7 +239,7 @@ func showChecks(w http.ResponseWriter, r *http.Request) { checks := []check{} for rows.Next() { c := check{} - err := rows.Scan(&c.CheckID, &c.NodeId, &c.NodeName, &c.CommandName, &c.MappingId, &c.State, &c.Enabled, &c.Notice, &c.NextTime, &c.Msg) + err := rows.Scan(&c.CheckID, &c.NodeId, &c.NodeName, &c.CommandName, &c.MappingId, &c.State, &c.Enabled, &c.Notice, &c.NextTime, &c.Msg, &c.Notify) if err != nil { w.WriteHeader(http.StatusInternalServerError) w.Write([]byte("problems with the database")) @@ -407,6 +410,8 @@ var ( table th { background: #cccccc; color: #3a5f78; } table td, table th { text-align: center; } table pre { font-size: 75%; } + table td.disabled { text-decoration: line-through; } + .icon { height: 1em; margin: 0; width: 1em; vertical-align: bottom; margin-right: 0.5em;} {{ range $mapId, $mapping := .Mappings }} {{ range $target, $val := $mapping }} td.state-{{ $mapId }}-{{ $target }} { background: {{ $val.Color }}; } @@ -414,7 +419,7 @@ var ( {{ end }}
@@ -441,6 +446,7 @@ var ( +