diff --git a/pkg/models/alerts.go b/pkg/models/alerts.go index 4fffe1997a2..4a64d12ed8c 100644 --- a/pkg/models/alerts.go +++ b/pkg/models/alerts.go @@ -27,6 +27,25 @@ type AlertRule struct { Updated time.Time `json:"updated"` } +func (this *AlertRule) Equals(other AlertRule) bool { + result := false + + result = result || this.Aggregator != other.Aggregator + result = result || this.CritLevel != other.CritLevel + result = result || this.WarnLevel != other.WarnLevel + result = result || this.WarnOperator != other.WarnOperator + result = result || this.CritOperator != other.CritOperator + result = result || this.Query != other.Query + result = result || this.QueryRefId != other.QueryRefId + result = result || this.Frequency != other.Frequency + result = result || this.Title != other.Title + result = result || this.Description != other.Description + result = result || this.QueryRange != other.QueryRange + //don't compare .State! That would be insane. + + return result +} + type AlertingClusterInfo struct { ServerId string ClusterSize int diff --git a/pkg/services/sqlstore/alert_rule.go b/pkg/services/sqlstore/alert_rule.go index 5015775bb0c..6674d2ec410 100644 --- a/pkg/services/sqlstore/alert_rule.go +++ b/pkg/services/sqlstore/alert_rule.go @@ -102,25 +102,6 @@ func DeleteAlertDefinition(dashboardId int64, sess *xorm.Session) error { return nil } -func alertIsDifferent(rule1, rule2 m.AlertRule) bool { - result := false - - result = result || rule1.Aggregator != rule2.Aggregator - result = result || rule1.CritLevel != rule2.CritLevel - result = result || rule1.WarnLevel != rule2.WarnLevel - result = result || rule1.WarnOperator != rule2.WarnOperator - result = result || rule1.CritOperator != rule2.CritOperator - result = result || rule1.Query != rule2.Query - result = result || rule1.QueryRefId != rule2.QueryRefId - result = result || rule1.Frequency != rule2.Frequency - result = result || rule1.Title != rule2.Title - result = result || rule1.Description != rule2.Description - result = result || rule1.QueryRange != rule2.QueryRange - //don't compare .State! That would be insane. - - return result -} - func SaveAlerts(cmd *m.SaveAlertsCommand) error { return inTransaction(func(sess *xorm.Session) error { alerts, err := GetAlertsByDashboardId2(cmd.DashboardId, sess) @@ -149,7 +130,7 @@ func upsertAlerts(alerts []m.AlertRule, posted []m.AlertRule, sess *xorm.Session } if update { - if alertIsDifferent(alertToUpdate, alert) { + if alertToUpdate.Equals(alert) { alert.Updated = time.Now() alert.State = alertToUpdate.State _, err := sess.Id(alert.Id).Update(&alert) diff --git a/public/app/plugins/panel/graph/partials/tab_alerting.html b/public/app/plugins/panel/graph/partials/tab_alerting.html index 12e27d9e63f..2a8c50b185a 100644 --- a/public/app/plugins/panel/graph/partials/tab_alerting.html +++ b/public/app/plugins/panel/graph/partials/tab_alerting.html @@ -36,7 +36,7 @@
Aggregation settings
- Aggregation method + Aggregation method
- Frequency (seconds) + Frequency (seconds)