diff --git a/pkg/models/alert.go b/pkg/models/alert.go index 64562534e9e..39d042c82ac 100644 --- a/pkg/models/alert.go +++ b/pkg/models/alert.go @@ -16,6 +16,7 @@ type Alert struct { State string Handler int64 Enabled bool + Frequency int64 Created time.Time Updated time.Time diff --git a/pkg/services/alerting/extractor.go b/pkg/services/alerting/extractor.go index f24e152928b..63e0b1b08bd 100644 --- a/pkg/services/alerting/extractor.go +++ b/pkg/services/alerting/extractor.go @@ -78,6 +78,7 @@ func (e *DashAlertExtractor) GetAlerts() ([]*m.Alert, error) { Handler: jsonAlert.Get("handler").MustInt64(), Enabled: jsonAlert.Get("enabled").MustBool(), Description: jsonAlert.Get("description").MustString(), + Frequency: getTimeDurationStringToSeconds(jsonAlert.Get("frequency").MustString()), } valueQuery := jsonAlert.Get("query") diff --git a/pkg/services/alerting/extractor_test.go b/pkg/services/alerting/extractor_test.go index 979d514c077..7e032d1a3ac 100644 --- a/pkg/services/alerting/extractor_test.go +++ b/pkg/services/alerting/extractor_test.go @@ -215,6 +215,11 @@ func TestAlertRuleExtraction(t *testing.T) { So(alerts[1].Handler, ShouldEqual, 0) }) + Convey("should extract frequency in seconds", func() { + So(alerts[0].Frequency, ShouldEqual, 60) + So(alerts[1].Frequency, ShouldEqual, 60) + }) + Convey("should extract panel idc", func() { So(alerts[0].PanelId, ShouldEqual, 3) So(alerts[1].PanelId, ShouldEqual, 4) diff --git a/pkg/services/sqlstore/alert_test.go b/pkg/services/sqlstore/alert_test.go index 1fa98ae7c16..376a1b79e8e 100644 --- a/pkg/services/sqlstore/alert_test.go +++ b/pkg/services/sqlstore/alert_test.go @@ -22,6 +22,7 @@ func TestAlertingDataAccess(t *testing.T) { Name: "Alerting title", Description: "Alerting description", Settings: simplejson.New(), + Frequency: 1, }, } @@ -52,6 +53,7 @@ func TestAlertingDataAccess(t *testing.T) { So(alert.Name, ShouldEqual, "Alerting title") So(alert.Description, ShouldEqual, "Alerting description") So(alert.State, ShouldEqual, "OK") + So(alert.Frequency, ShouldEqual, 1) }) Convey("Alerts with same dashboard id and panel id should update", func() { diff --git a/pkg/services/sqlstore/migrations/alert_mig.go b/pkg/services/sqlstore/migrations/alert_mig.go index 2ff7712f8bb..c49319c1c9a 100644 --- a/pkg/services/sqlstore/migrations/alert_mig.go +++ b/pkg/services/sqlstore/migrations/alert_mig.go @@ -17,6 +17,7 @@ func addAlertMigrations(mg *Migrator) { {Name: "description", Type: DB_NVarchar, Length: 255, Nullable: false}, {Name: "state", Type: DB_NVarchar, Length: 255, Nullable: false}, {Name: "settings", Type: DB_Text, Nullable: false}, + {Name: "frequency", Type: DB_BigInt, Nullable: false}, {Name: "handler", Type: DB_BigInt, Nullable: false}, {Name: "enabled", Type: DB_Bool, Nullable: false}, {Name: "created", Type: DB_DateTime, Nullable: false},