From 804797245d07ed06b5d5c163918c435302d7522a Mon Sep 17 00:00:00 2001 From: bergquist Date: Tue, 11 Oct 2016 08:40:38 +0200 Subject: [PATCH] feat(alerting): make it possible to pause from alert tab --- pkg/api/alerting.go | 24 +++++++++---------- pkg/api/api.go | 4 +++- pkg/api/dtos/alerting.go | 1 + pkg/models/alert.go | 4 ++-- .../app/features/alerting/alert_list_ctrl.ts | 5 ++-- 5 files changed, 21 insertions(+), 17 deletions(-) diff --git a/pkg/api/alerting.go b/pkg/api/alerting.go index 46a0df32f01..a8d2171344e 100644 --- a/pkg/api/alerting.go +++ b/pkg/api/alerting.go @@ -252,13 +252,17 @@ func NotificationTest(c *middleware.Context, dto dtos.NotificationTestCommand) R return ApiSuccess("Test notification sent") } -//POST /api/alerts/:alertId/pause -func PauseAlert(c *middleware.Context, cmd models.PauseAlertCommand) Response { - cmd.OrgId = c.OrgId - cmd.AlertId = c.ParamsInt64(":alertId") +//POST /api/pause-alert +func PauseAlert(c *middleware.Context, dto dtos.PauseAlertCommand) Response { + alertId, err := getAlertIdForRequest(c.OrgId, dto.AlertId, dto.PanelId, dto.DashboardId) + if err != nil { + return ApiError(400, "Bad request", err) + } - if cmd.AlertId == 0 { - return ApiError(400, "Missing alert id", nil) + cmd := models.PauseAlertCommand{ + OrgId: c.OrgId, + AlertId: alertId, + Paused: dto.Paused, } if err := bus.Dispatch(&cmd); err != nil { @@ -278,11 +282,7 @@ func PauseAlert(c *middleware.Context, cmd models.PauseAlertCommand) Response { return Json(200, result) } -func getAlertIdForRequest(c *middleware.Context) (int64, error) { - alertId := c.QueryInt64("alertId") - panelId := c.QueryInt64("panelId") - dashboardId := c.QueryInt64("dashboardId") - +func getAlertIdForRequest(orgId, alertId, panelId, dashboardId int64) (int64, error) { if alertId == 0 && dashboardId == 0 && panelId == 0 { return 0, fmt.Errorf("Missing alertId or dashboardId and panelId") } @@ -290,7 +290,7 @@ func getAlertIdForRequest(c *middleware.Context) (int64, error) { if alertId == 0 { //fetch alertId query := models.GetAlertsQuery{ - OrgId: c.OrgId, + OrgId: orgId, DashboardId: dashboardId, PanelId: panelId, } diff --git a/pkg/api/api.go b/pkg/api/api.go index bf9e427214a..9b938b3c942 100644 --- a/pkg/api/api.go +++ b/pkg/api/api.go @@ -252,12 +252,14 @@ func Register(r *macaron.Macaron) { r.Group("/alerts", func() { r.Post("/test", bind(dtos.AlertTestCommand{}), wrap(AlertTest)) - r.Post("/:alertId/pause", ValidateOrgAlert, bind(m.PauseAlertCommand{}), wrap(PauseAlert)) + r.Get("/:alertId", ValidateOrgAlert, wrap(GetAlert)) r.Get("/", wrap(GetAlerts)) r.Get("/states-for-dashboard", wrap(GetAlertStatesForDashboard)) }) + r.Post("/pause-alert", bind(dtos.PauseAlertCommand{}), wrap(PauseAlert)) + r.Get("/alert-notifications", wrap(GetAlertNotifications)) r.Group("/alert-notifications", func() { diff --git a/pkg/api/dtos/alerting.go b/pkg/api/dtos/alerting.go index a0aa632abd9..29f0b834d2d 100644 --- a/pkg/api/dtos/alerting.go +++ b/pkg/api/dtos/alerting.go @@ -63,4 +63,5 @@ type PauseAlertCommand struct { AlertId int64 `json:"alertId"` DashboardId int64 `json:"dashboardId"` PanelId int64 `json:"panelId"` + Paused bool `json:"paused"` } diff --git a/pkg/models/alert.go b/pkg/models/alert.go index de103143ac3..f50bb3193dc 100644 --- a/pkg/models/alert.go +++ b/pkg/models/alert.go @@ -103,8 +103,8 @@ type SaveAlertsCommand struct { type PauseAlertCommand struct { OrgId int64 - AlertId int64 `json:"alertId"` - Paused bool `json:"paused"` + AlertId int64 + Paused bool } type SetAlertStateCommand struct { diff --git a/public/app/features/alerting/alert_list_ctrl.ts b/public/app/features/alerting/alert_list_ctrl.ts index 5d62a0790cb..623cefaec19 100644 --- a/public/app/features/alerting/alert_list_ctrl.ts +++ b/public/app/features/alerting/alert_list_ctrl.ts @@ -47,10 +47,11 @@ export class AlertListCtrl { var alert = _.find(this.alerts, {id: alertId}); var payload = { - paused: alert.state !== "paused" + paused: alert.state !== "paused", + alertId: alert.id }; - this.backendSrv.post(`/api/alerts/${alertId}/pause`, payload).then(result => { + this.backendSrv.post(`/api/pause-alert`, payload).then(result => { alert.state = result.state; alert.stateModel = alertDef.getStateDisplayModel(result.state); });