mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
feat(alerting): adds sql layer for saving execution errors
This commit is contained in:
@@ -18,6 +18,24 @@ func init() {
|
||||
bus.AddHandler("sql", DeleteAlertById)
|
||||
bus.AddHandler("sql", GetAllAlertQueryHandler)
|
||||
bus.AddHandler("sql", SetAlertState)
|
||||
bus.AddHandler("sql", SaveExecutionErrorForAlert)
|
||||
}
|
||||
|
||||
func SaveExecutionErrorForAlert(cmd *m.SaveExecutionErrorCommand) error {
|
||||
return inTransaction(func(sess *xorm.Session) error {
|
||||
alert := m.Alert{}
|
||||
|
||||
if has, err := sess.Id(cmd.AlertId).Get(&alert); err != nil {
|
||||
return err
|
||||
} else if !has {
|
||||
return fmt.Errorf("Could not find alert")
|
||||
}
|
||||
|
||||
alert.ExecutionError = cmd.ExecutionError
|
||||
|
||||
sess.Id(alert.Id).Update(&alert)
|
||||
return nil
|
||||
})
|
||||
}
|
||||
|
||||
func GetAlertById(query *m.GetAlertByIdQuery) error {
|
||||
|
||||
@@ -175,5 +175,39 @@ func TestAlertingDataAccess(t *testing.T) {
|
||||
So(len(query.Result), ShouldEqual, 0)
|
||||
})
|
||||
})
|
||||
|
||||
Convey("Can set new execution error", func() {
|
||||
items := []*m.Alert{
|
||||
{
|
||||
PanelId: 1,
|
||||
DashboardId: testDash.Id,
|
||||
Name: "Alerting title",
|
||||
Message: "Alerting message",
|
||||
},
|
||||
}
|
||||
|
||||
cmd := m.SaveAlertsCommand{
|
||||
Alerts: items,
|
||||
DashboardId: testDash.Id,
|
||||
OrgId: 1,
|
||||
UserId: 1,
|
||||
}
|
||||
|
||||
SaveAlerts(&cmd)
|
||||
|
||||
So(SaveExecutionErrorForAlert(&m.SaveExecutionErrorCommand{
|
||||
AlertId: 1,
|
||||
ExecutionError: "the slacker is broken",
|
||||
}), ShouldBeNil)
|
||||
|
||||
Convey("Alerts should be removed", func() {
|
||||
query := &m.GetAlertByIdQuery{Id: 1}
|
||||
err2 := GetAlertById(query)
|
||||
|
||||
So(testDash.Id, ShouldEqual, 1)
|
||||
So(err2, ShouldBeNil)
|
||||
So(query.Result.ExecutionError, ShouldEqual, "the slacker is broken")
|
||||
})
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user