alerts.go 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. package models
  2. import (
  3. "github.com/grafana/grafana/pkg/components/simplejson"
  4. )
  5. type Alert struct {
  6. Id int64
  7. DashboardId int64
  8. PanelId int64
  9. Query string
  10. QueryRefId string
  11. WarnLevel int64
  12. ErrorLevel int64
  13. Interval int64
  14. Title string
  15. Description string
  16. QueryRange string
  17. Aggregator string
  18. }
  19. func (cmd *SaveDashboardCommand) GetAlertModels() *[]Alert {
  20. dash := NewDashboardFromJson(cmd.Dashboard)
  21. alerts := make([]Alert, 0)
  22. for _, rowObj := range cmd.Dashboard.Get("rows").MustArray() {
  23. row := simplejson.NewFromAny(rowObj)
  24. for _, panelObj := range row.Get("panels").MustArray() {
  25. panel := simplejson.NewFromAny(panelObj)
  26. for _, alertObj := range panel.Get("alerts").MustArray() {
  27. alertDef := simplejson.NewFromAny(alertObj)
  28. alert := Alert{
  29. DashboardId: dash.Id,
  30. PanelId: panel.Get("id").MustInt64(),
  31. Id: alertDef.Get("id").MustInt64(),
  32. Query: alertDef.Get("query").MustString(),
  33. QueryRefId: alertDef.Get("query_ref").MustString(),
  34. WarnLevel: alertDef.Get("warn_level").MustInt64(),
  35. ErrorLevel: alertDef.Get("error_level").MustInt64(),
  36. Interval: alertDef.Get("interval").MustInt64(),
  37. Title: alertDef.Get("title").MustString(),
  38. Description: alertDef.Get("description").MustString(),
  39. QueryRange: alertDef.Get("query_range").MustString(),
  40. Aggregator: alertDef.Get("aggregator").MustString(),
  41. }
  42. alerts = append(alerts, alert)
  43. }
  44. }
  45. }
  46. return &alerts
  47. }
  48. // Commands
  49. type SaveAlertsCommand struct {
  50. DashboardId int64
  51. UserId int64
  52. OrgId int64
  53. Alerts *[]Alert
  54. }