|
|
|
|
@ -9,7 +9,7 @@ import ( |
|
|
|
|
m "github.com/grafana/grafana/pkg/models" |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
type TestAlertRuleCommand struct { |
|
|
|
|
type AlertTestCommand struct { |
|
|
|
|
Dashboard *simplejson.Json |
|
|
|
|
PanelId int64 |
|
|
|
|
OrgId int64 |
|
|
|
|
@ -18,24 +18,26 @@ type TestAlertRuleCommand struct { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func init() { |
|
|
|
|
bus.AddHandler("alerting", handleTestAlertRuleCommand) |
|
|
|
|
bus.AddHandler("alerting", handleAlertTestCommand) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func handleTestAlertRuleCommand(cmd *TestAlertRuleCommand) error { |
|
|
|
|
func handleAlertTestCommand(cmd *AlertTestCommand) error { |
|
|
|
|
|
|
|
|
|
dash, err := m.NewDashboardFromJson(cmd.Dashboard) |
|
|
|
|
if err != nil { |
|
|
|
|
return err |
|
|
|
|
} |
|
|
|
|
dash := m.NewDashboardFromJson(cmd.Dashboard) |
|
|
|
|
|
|
|
|
|
extractor := NewDashAlertExtractor(cmd.Dashboard) |
|
|
|
|
rules, err := extractor.GetAlerts() |
|
|
|
|
extractor := NewDashAlertExtractor(dash, cmd.OrgId) |
|
|
|
|
alerts, err := extractor.GetAlerts() |
|
|
|
|
if err != nil { |
|
|
|
|
return err |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
for _, rule := range rules { |
|
|
|
|
if rule.PanelId == cmd.PanelId { |
|
|
|
|
for _, alert := range alerts { |
|
|
|
|
if alert.PanelId == cmd.PanelId { |
|
|
|
|
rule, err := NewAlertRuleFromDBModel(alert) |
|
|
|
|
if err != nil { |
|
|
|
|
return err |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if res, err := testAlertRule(rule); err != nil { |
|
|
|
|
return err |
|
|
|
|
} else { |
|
|
|
|
|