Skip to content

Commit 6121d15

Browse files
committed
feat(alerting): more aggressive requirements for parsing alertrules
1 parent 8b05af2 commit 6121d15

File tree

5 files changed

+19
-9
lines changed

5 files changed

+19
-9
lines changed

pkg/services/alerting/alert_rule.go

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"fmt"
55
"regexp"
66
"strconv"
7+
"strings"
78

89
"github.com/grafana/grafana/pkg/components/simplejson"
910
"github.com/grafana/grafana/pkg/services/alerting/transformers"
@@ -63,7 +64,16 @@ func NewAlertRuleFromDBModel(ruleDef *m.Alert) (*AlertRule, error) {
6364
model.State = ruleDef.State
6465
model.Frequency = ruleDef.Frequency
6566

66-
model.NotificationGroups = []int64{1, 2}
67+
ngs := ruleDef.Settings.Get("notificationGroups").MustString()
68+
var ids []int64
69+
for _, v := range strings.Split(ngs, ",") {
70+
id, err := strconv.Atoi(v)
71+
if err == nil {
72+
ids = append(ids, int64(id))
73+
}
74+
}
75+
76+
model.NotificationGroups = ids
6777

6878
critical := ruleDef.Settings.Get("crit")
6979
model.Critical = Level{
@@ -78,6 +88,10 @@ func NewAlertRuleFromDBModel(ruleDef *m.Alert) (*AlertRule, error) {
7888
}
7989

8090
model.Transform = ruleDef.Settings.Get("transform").Get("type").MustString()
91+
if model.Transform == "" {
92+
return nil, fmt.Errorf("missing transform")
93+
}
94+
8195
model.TransformParams = *ruleDef.Settings.Get("transform")
8296

8397
if model.Transform == "aggregation" {
@@ -91,7 +105,6 @@ func NewAlertRuleFromDBModel(ruleDef *m.Alert) (*AlertRule, error) {
91105
DatasourceId: query.Get("datasourceId").MustInt64(),
92106
From: query.Get("from").MustString(),
93107
To: query.Get("to").MustString(),
94-
Aggregator: query.Get("agg").MustString(),
95108
}
96109

97110
if model.Query.Query == "" {

pkg/services/alerting/alert_rule_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ func TestAlertRuleModel(t *testing.T) {
5555
"datasourceId": 1
5656
},
5757
"transform": {
58-
"method": "avg",
58+
"type": "avg",
5959
"name": "aggregation"
6060
}
6161
}

pkg/services/alerting/engine.go

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -132,12 +132,10 @@ func (e *Engine) resultHandler() {
132132

133133
result.State = alertstates.Critical
134134
result.Description = fmt.Sprintf("Failed to run check after %d retires, Error: %v", maxAlertExecutionRetries, result.Error)
135-
//e.reactToState(result)
136135
e.responseHandler.Handle(result)
137136
}
138137
} else {
139138
result.AlertJob.ResetRetry()
140-
//e.reactToState(result)
141139
e.responseHandler.Handle(result)
142140
}
143141
}

pkg/services/alerting/extractor_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,8 @@ func TestAlertRuleExtraction(t *testing.T) {
5252
"to": "now"
5353
},
5454
"transform": {
55-
"method": "avg",
56-
"type": "aggregation"
55+
"type": "avg",
56+
"name": "aggregation"
5757
},
5858
"warn": {
5959
"value": 10,
@@ -87,7 +87,7 @@ func TestAlertRuleExtraction(t *testing.T) {
8787
"to": "now"
8888
},
8989
"transform": {
90-
"method": "avg",
90+
"type": "avg",
9191
"name": "aggregation"
9292
},
9393
"warn": {

pkg/services/alerting/models.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,6 @@ type Level struct {
4747
type AlertQuery struct {
4848
Query string
4949
DatasourceId int64
50-
Aggregator string
5150
From string
5251
To string
5352
}

0 commit comments

Comments
 (0)