feat(alerting): add api endpoint for alert state

This commit is contained in:
bergquist
2016-04-28 08:23:50 +02:00
parent 6a5ecb3fca
commit e7be7d2835
11 changed files with 230 additions and 56 deletions
+29 -5
View File
@@ -9,7 +9,7 @@ import (
func ValidateOrgAlert(c *middleware.Context) {
id := c.ParamsInt64(":id")
query := models.GetAlertById{Id: id}
query := models.GetAlertByIdQuery{Id: id}
if err := bus.Dispatch(&query); err != nil {
c.JsonApiErr(404, "Alert not found", nil)
@@ -22,7 +22,7 @@ func ValidateOrgAlert(c *middleware.Context) {
}
}
// GET /api/alert_rule/changes
// GET /api/alerts/changes
func GetAlertChanges(c *middleware.Context) Response {
query := models.GetAlertChangesQuery{
OrgId: c.OrgId,
@@ -35,7 +35,7 @@ func GetAlertChanges(c *middleware.Context) Response {
return Json(200, query.Result)
}
// GET /api/alert_rule
// GET /api/alerts
func GetAlerts(c *middleware.Context) Response {
query := models.GetAlertsQuery{
OrgId: c.OrgId,
@@ -85,10 +85,10 @@ func GetAlerts(c *middleware.Context) Response {
return Json(200, alertDTOs)
}
// GET /api/alert_rule/:id
// GET /api/alerts/:id
func GetAlert(c *middleware.Context) Response {
id := c.ParamsInt64(":id")
query := models.GetAlertById{Id: id}
query := models.GetAlertByIdQuery{Id: id}
if err := bus.Dispatch(&query); err != nil {
return ApiError(500, "List alerts failed", err)
@@ -96,3 +96,27 @@ func GetAlert(c *middleware.Context) Response {
return Json(200, &query.Result)
}
// PUT /api/alerts/state/:id
func PutAlertState(c *middleware.Context, cmd models.UpdateAlertStateCommand) Response {
alertId := c.ParamsInt64(":alertId")
if alertId != cmd.AlertId {
return ApiError(401, "Bad Request", nil)
}
query := models.GetAlertByIdQuery{Id: alertId}
if err := bus.Dispatch(&query); err != nil {
return ApiError(500, "Failed to get alertstate", err)
}
if query.Result.OrgId != 0 && query.Result.OrgId != c.OrgId {
return ApiError(500, "Alert not found", nil)
}
if err := bus.Dispatch(&cmd); err != nil {
return ApiError(500, "Failed to set new state", err)
}
return Json(200, cmd.Result)
}
+2 -1
View File
@@ -238,7 +238,8 @@ func Register(r *macaron.Macaron) {
// metrics
r.Get("/metrics/test", GetTestMetrics)
r.Group("/alert_rule", func() {
r.Group("/alerts", func() {
r.Put("/state/:alertId", bind(m.UpdateAlertStateCommand{}), wrap(PutAlertState))
r.Get("/changes", wrap(GetAlertChanges))
r.Get("/", wrap(GetAlerts))
r.Get("/:id", ValidateOrgAlert, wrap(GetAlert))