| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143 |
- package models
- import (
- "time"
- "github.com/grafana/grafana/pkg/components/simplejson"
- )
- type AlertStateType string
- type AlertSeverityType string
- const (
- AlertStatePending AlertStateType = "pending"
- AlertStateFiring AlertStateType = "firing"
- AlertStateOK AlertStateType = "ok"
- )
- func (s AlertStateType) IsValid() bool {
- return s == AlertStatePending || s == AlertStateFiring || s == AlertStateOK
- }
- const (
- AlertSeverityCritical AlertSeverityType = "critical"
- AlertSeverityWarning AlertSeverityType = "warning"
- AlertSeverityInfo AlertSeverityType = "info"
- AlertSeverityOK AlertSeverityType = "ok"
- )
- func (s AlertSeverityType) IsValid() bool {
- return s == AlertSeverityCritical || s == AlertSeverityInfo || s == AlertSeverityWarning
- }
- type Alert struct {
- Id int64
- OrgId int64
- DashboardId int64
- PanelId int64
- Name string
- Message string
- Severity AlertSeverityType
- State AlertStateType
- Handler int64
- Paused bool
- Silenced bool
- ExecutionError string
- Frequency int64
- LastEvalData *simplejson.Json
- LastEvalTime time.Time
- CreatedBy int64
- UpdatedBy int64
- Created time.Time
- Updated time.Time
- Settings *simplejson.Json
- }
- func (alert *Alert) ValidToSave() bool {
- return alert.DashboardId != 0 && alert.OrgId != 0 && alert.PanelId != 0
- }
- func (alert *Alert) ShouldUpdateState(newState AlertStateType) bool {
- return alert.State != newState
- }
- func (this *Alert) ContainsUpdates(other *Alert) bool {
- result := false
- result = result || this.Name != other.Name
- result = result || this.Message != other.Message
- if this.Settings != nil && other.Settings != nil {
- json1, err1 := this.Settings.Encode()
- json2, err2 := other.Settings.Encode()
- if err1 != nil || err2 != nil {
- return false
- }
- result = result || string(json1) != string(json2)
- }
- //don't compare .State! That would be insane.
- return result
- }
- type AlertingClusterInfo struct {
- ServerId string
- ClusterSize int
- UptimePosition int
- }
- type HeartBeat struct {
- Id int64
- ServerId string
- Updated time.Time
- Created time.Time
- }
- type HeartBeatCommand struct {
- ServerId string
- Result AlertingClusterInfo
- }
- type SaveAlertsCommand struct {
- DashboardId int64
- UserId int64
- OrgId int64
- Alerts []*Alert
- }
- type SetAlertStateCommand struct {
- AlertId int64
- OrgId int64
- State AlertStateType
- Timestamp time.Time
- }
- type DeleteAlertCommand struct {
- AlertId int64
- }
- //Queries
- type GetAlertsQuery struct {
- OrgId int64
- State []string
- DashboardId int64
- PanelId int64
- Result []*Alert
- }
- type GetAllAlertsQuery struct {
- Result []*Alert
- }
- type GetAlertByIdQuery struct {
- Id int64
- Result *Alert
- }
|