mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
feat(alerting): delete alerts when panels are removed
This commit is contained in:
@@ -22,13 +22,14 @@ func SaveAlerts(cmd *m.SaveAlertsCommand) error {
|
||||
update := false
|
||||
|
||||
for _, k := range alerts {
|
||||
if alert.PanelId == k.PanelId && alert.DashboardId == k.DashboardId {
|
||||
if alert.PanelId == k.PanelId {
|
||||
update = true
|
||||
alert.Id = k.Id
|
||||
}
|
||||
}
|
||||
|
||||
if update {
|
||||
_, err = x.Update(&alert)
|
||||
_, err = x.Id(alert.Id).Update(&alert)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -40,6 +41,27 @@ func SaveAlerts(cmd *m.SaveAlertsCommand) error {
|
||||
}
|
||||
}
|
||||
|
||||
for _, missingAlert := range alerts {
|
||||
missing := true
|
||||
|
||||
for _, k := range *cmd.Alerts {
|
||||
if missingAlert.PanelId == k.PanelId {
|
||||
missing = false
|
||||
}
|
||||
}
|
||||
|
||||
if missing {
|
||||
_, err = x.Exec("DELETE FROM alert WHERE id = ?", missingAlert.Id)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
|
||||
@@ -81,5 +81,50 @@ func TestAlertingDataAccess(t *testing.T) {
|
||||
So(alerts[0].Query, ShouldEqual, "Updated Query")
|
||||
})
|
||||
})
|
||||
|
||||
Convey("Multiple alerts per dashboard", func() {
|
||||
//save 3 alerts
|
||||
multipleItems := []m.Alert{
|
||||
{
|
||||
DashboardId: 1,
|
||||
PanelId: 1,
|
||||
Query: "1",
|
||||
},
|
||||
{
|
||||
DashboardId: 1,
|
||||
PanelId: 2,
|
||||
Query: "2",
|
||||
},
|
||||
{
|
||||
DashboardId: 1,
|
||||
PanelId: 3,
|
||||
Query: "3",
|
||||
},
|
||||
}
|
||||
|
||||
cmd.Alerts = &multipleItems
|
||||
err = SaveAlerts(&cmd)
|
||||
|
||||
Convey("Should save 3 dashboards", func() {
|
||||
So(err, ShouldBeNil)
|
||||
|
||||
alerts, err2 := GetAlertsByDashboardId(1)
|
||||
So(err2, ShouldBeNil)
|
||||
So(len(alerts), ShouldEqual, 3)
|
||||
})
|
||||
|
||||
Convey("should updated two dashboards and delete one", func() {
|
||||
missingOneAlert := multipleItems[:2]
|
||||
|
||||
cmd.Alerts = &missingOneAlert
|
||||
err = SaveAlerts(&cmd)
|
||||
|
||||
Convey("should delete the missing alert", func() {
|
||||
alerts, err2 := GetAlertsByDashboardId(1)
|
||||
So(err2, ShouldBeNil)
|
||||
So(len(alerts), ShouldEqual, 2)
|
||||
})
|
||||
})
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user