feat(alerting): delete alerts when panels are removed

This commit is contained in:
bergquist
2016-04-22 17:49:50 +02:00
parent 8bb62a79d0
commit 84115c8038
2 changed files with 69 additions and 2 deletions

View File

@@ -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
}

View File

@@ -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)
})
})
})
})
}