|
@@ -1,6 +1,7 @@
|
|
|
package api
|
|
package api
|
|
|
|
|
|
|
|
import (
|
|
import (
|
|
|
|
|
+ "github.com/grafana/grafana/pkg/api/dtos"
|
|
|
"github.com/grafana/grafana/pkg/bus"
|
|
"github.com/grafana/grafana/pkg/bus"
|
|
|
"github.com/grafana/grafana/pkg/middleware"
|
|
"github.com/grafana/grafana/pkg/middleware"
|
|
|
"github.com/grafana/grafana/pkg/models"
|
|
"github.com/grafana/grafana/pkg/models"
|
|
@@ -21,7 +22,7 @@ func ValidateOrgAlert(c *middleware.Context) {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-// GET /api/alert_rule
|
|
|
|
|
|
|
+// GET /api/alert_rule/changes
|
|
|
func GetAlertChanges(c *middleware.Context) Response {
|
|
func GetAlertChanges(c *middleware.Context) Response {
|
|
|
query := models.GetAlertChangesQuery{
|
|
query := models.GetAlertChangesQuery{
|
|
|
OrgId: c.OrgId,
|
|
OrgId: c.OrgId,
|
|
@@ -44,7 +45,44 @@ func GetAlerts(c *middleware.Context) Response {
|
|
|
return ApiError(500, "List alerts failed", err)
|
|
return ApiError(500, "List alerts failed", err)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- return Json(200, query.Result)
|
|
|
|
|
|
|
+ dashboardIds := make([]int64, 0)
|
|
|
|
|
+ alertDTOs := make([]*dtos.AlertRuleDTO, 0)
|
|
|
|
|
+ for _, alert := range query.Result {
|
|
|
|
|
+ dashboardIds = append(dashboardIds, alert.DashboardId)
|
|
|
|
|
+ alertDTOs = append(alertDTOs, &dtos.AlertRuleDTO{
|
|
|
|
|
+ Id: alert.Id,
|
|
|
|
|
+ DashboardId: alert.DashboardId,
|
|
|
|
|
+ PanelId: alert.PanelId,
|
|
|
|
|
+ Query: alert.Query,
|
|
|
|
|
+ QueryRefId: alert.QueryRefId,
|
|
|
|
|
+ WarnLevel: alert.WarnLevel,
|
|
|
|
|
+ CritLevel: alert.CritLevel,
|
|
|
|
|
+ Interval: alert.Interval,
|
|
|
|
|
+ Title: alert.Title,
|
|
|
|
|
+ Description: alert.Description,
|
|
|
|
|
+ QueryRange: alert.QueryRange,
|
|
|
|
|
+ Aggregator: alert.Aggregator,
|
|
|
|
|
+ })
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ dashboardsQuery := models.GetDashboardsQuery{
|
|
|
|
|
+ DashboardIds: dashboardIds,
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if err := bus.Dispatch(&dashboardsQuery); err != nil {
|
|
|
|
|
+ return ApiError(500, "List alerts failed", err)
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ //TODO: should be possible to speed this up with lookup table
|
|
|
|
|
+ for _, alert := range alertDTOs {
|
|
|
|
|
+ for _, dash := range *dashboardsQuery.Result {
|
|
|
|
|
+ if alert.DashboardId == dash.Id {
|
|
|
|
|
+ alert.DashbboardUri = "db/" + dash.Slug
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ return Json(200, alertDTOs)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// GET /api/alert_rule/:id
|
|
// GET /api/alert_rule/:id
|