diff --git a/pkg/services/ngalert/api/tooling/definitions/cortex-ruler.go b/pkg/services/ngalert/api/tooling/definitions/cortex-ruler.go index f4c58bf25ce..ff930e142c0 100644 --- a/pkg/services/ngalert/api/tooling/definitions/cortex-ruler.go +++ b/pkg/services/ngalert/api/tooling/definitions/cortex-ruler.go @@ -279,18 +279,16 @@ func (n *GettableExtendedRuleNode) validate() error { type NoDataState string const ( - Alerting NoDataState = "Alerting" - NoData NoDataState = "NoData" - KeepLastState NoDataState = "KeepLastState" - OK NoDataState = "OK" + Alerting NoDataState = "Alerting" + NoData NoDataState = "NoData" + OK NoDataState = "OK" ) // swagger:enum ExecutionErrorState type ExecutionErrorState string const ( - AlertingErrState ExecutionErrorState = "Alerting" - KeepLastStateErrState ExecutionErrorState = "KeepLastState" + AlertingErrState ExecutionErrorState = "Alerting" ) // swagger:model diff --git a/pkg/services/ngalert/models/alert_rule.go b/pkg/services/ngalert/models/alert_rule.go index 40af4885460..b7dd3c61e50 100644 --- a/pkg/services/ngalert/models/alert_rule.go +++ b/pkg/services/ngalert/models/alert_rule.go @@ -26,10 +26,9 @@ func (noDataState NoDataState) String() string { } const ( - Alerting NoDataState = "Alerting" - NoData NoDataState = "NoData" - KeepLastState NoDataState = "KeepLastState" - OK NoDataState = "OK" + Alerting NoDataState = "Alerting" + NoData NoDataState = "NoData" + OK NoDataState = "OK" ) type ExecutionErrorState string @@ -39,8 +38,7 @@ func (executionErrorState ExecutionErrorState) String() string { } const ( - AlertingErrState ExecutionErrorState = "Alerting" - KeepLastStateErrState ExecutionErrorState = "KeepLastState" + AlertingErrState ExecutionErrorState = "Alerting" ) const ( diff --git a/pkg/services/ngalert/state/manager_test.go b/pkg/services/ngalert/state/manager_test.go index 5917ce83664..54e1fe98040 100644 --- a/pkg/services/ngalert/state/manager_test.go +++ b/pkg/services/ngalert/state/manager_test.go @@ -652,7 +652,7 @@ func TestProcessEvalResults(t *testing.T) { }, }, { - desc: "normal -> normal when result is NoData and NoDataState is KeepLastState", + desc: "normal -> alerting when result is Error and ExecErrState is Alerting", alertRule: &models.AlertRule{ OrgID: 1, Title: "test_title", @@ -662,7 +662,7 @@ func TestProcessEvalResults(t *testing.T) { Labels: map[string]string{"label": "test"}, IntervalSeconds: 10, For: 1 * time.Minute, - NoDataState: models.KeepLastState, + ExecErrState: models.AlertingErrState, }, evalResults: []eval.Results{ { @@ -676,7 +676,7 @@ func TestProcessEvalResults(t *testing.T) { { eval.Result{ Instance: data.Labels{"instance_label": "test"}, - State: eval.NoData, + State: eval.Error, EvaluatedAt: evaluationTime.Add(10 * time.Second), EvaluationDuration: evaluationDuration, }, @@ -694,7 +694,7 @@ func TestProcessEvalResults(t *testing.T) { "label": "test", "instance_label": "test", }, - State: eval.Normal, + State: eval.Alerting, Results: []state.Evaluation{ { EvaluationTime: evaluationTime, @@ -702,69 +702,7 @@ func TestProcessEvalResults(t *testing.T) { }, { EvaluationTime: evaluationTime.Add(10 * time.Second), - EvaluationState: eval.NoData, - }, - }, - StartsAt: evaluationTime.Add(10 * time.Second), - EndsAt: evaluationTime.Add(10 * time.Second).Add(1 * time.Minute), - LastEvaluationTime: evaluationTime.Add(10 * time.Second), - EvaluationDuration: evaluationDuration, - Annotations: map[string]string{"annotation": "test"}, - }, - }, - }, - { - desc: "normal -> normal when result is NoData and NoDataState is KeepLastState", - alertRule: &models.AlertRule{ - OrgID: 1, - Title: "test_title", - UID: "test_alert_rule_uid_2", - NamespaceUID: "test_namespace_uid", - Annotations: map[string]string{"annotation": "test"}, - Labels: map[string]string{"label": "test"}, - IntervalSeconds: 10, - For: 1 * time.Minute, - NoDataState: models.KeepLastState, - }, - evalResults: []eval.Results{ - { - eval.Result{ - Instance: data.Labels{"instance_label": "test"}, - State: eval.Normal, - EvaluatedAt: evaluationTime, - EvaluationDuration: evaluationDuration, - }, - }, - { - eval.Result{ - Instance: data.Labels{"instance_label": "test"}, - State: eval.NoData, - EvaluatedAt: evaluationTime.Add(10 * time.Second), - EvaluationDuration: evaluationDuration, - }, - }, - }, - expectedStates: map[string]*state.State{ - `[["__alert_rule_namespace_uid__","test_namespace_uid"],["__alert_rule_uid__","test_alert_rule_uid_2"],["alertname","test_title"],["instance_label","test"],["label","test"]]`: { - AlertRuleUID: "test_alert_rule_uid_2", - OrgID: 1, - CacheId: `[["__alert_rule_namespace_uid__","test_namespace_uid"],["__alert_rule_uid__","test_alert_rule_uid_2"],["alertname","test_title"],["instance_label","test"],["label","test"]]`, - Labels: data.Labels{ - "__alert_rule_namespace_uid__": "test_namespace_uid", - "__alert_rule_uid__": "test_alert_rule_uid_2", - "alertname": "test_title", - "label": "test", - "instance_label": "test", - }, - State: eval.Normal, - Results: []state.Evaluation{ - { - EvaluationTime: evaluationTime, - EvaluationState: eval.Normal, - }, - { - EvaluationTime: evaluationTime.Add(10 * time.Second), - EvaluationState: eval.NoData, + EvaluationState: eval.Error, }, }, StartsAt: evaluationTime.Add(10 * time.Second), diff --git a/pkg/services/ngalert/state/state.go b/pkg/services/ngalert/state/state.go index 6f030eb454b..3b535ccdc70 100644 --- a/pkg/services/ngalert/state/state.go +++ b/pkg/services/ngalert/state/state.go @@ -87,7 +87,6 @@ func (a *State) resultError(alertRule *ngModels.AlertRule, result eval.Result) * switch alertRule.ExecErrState { case ngModels.AlertingErrState: a.State = eval.Alerting - case ngModels.KeepLastStateErrState: } return a } @@ -107,7 +106,6 @@ func (a *State) resultNoData(alertRule *ngModels.AlertRule, result eval.Result) a.State = eval.Alerting case ngModels.NoData: a.State = eval.NoData - case ngModels.KeepLastState: case ngModels.OK: a.State = eval.Normal } diff --git a/pkg/services/sqlstore/migrations/ualert/alert_rule.go b/pkg/services/sqlstore/migrations/ualert/alert_rule.go index faad6438add..abd1ccabe3d 100644 --- a/pkg/services/sqlstore/migrations/ualert/alert_rule.go +++ b/pkg/services/sqlstore/migrations/ualert/alert_rule.go @@ -189,7 +189,7 @@ func transNoData(s string) (string, error) { case "alerting": return "Alerting", nil case "keep_state": - return "KeepLastState", nil + return "Alerting", nil } return "", fmt.Errorf("unrecognized No Data setting %v", s) } @@ -198,8 +198,8 @@ func transExecErr(s string) (string, error) { switch s { case "", "alerting": return "Alerting", nil - case "KeepLastState": - return "KeepLastState", nil + case "keep_state": + return "Alerting", nil } return "", fmt.Errorf("unrecognized Execution Error setting %v", s) } diff --git a/pkg/tests/api/alerting/api_alertmanager_test.go b/pkg/tests/api/alerting/api_alertmanager_test.go index be53c21e631..a8e57ed91b3 100644 --- a/pkg/tests/api/alerting/api_alertmanager_test.go +++ b/pkg/tests/api/alerting/api_alertmanager_test.go @@ -781,7 +781,7 @@ func TestAlertRuleCRUD(t *testing.T) { }, }, NoDataState: apimodels.NoDataState(ngmodels.Alerting), - ExecErrState: apimodels.ExecutionErrorState(ngmodels.KeepLastStateErrState), + ExecErrState: apimodels.ExecutionErrorState(ngmodels.AlertingErrState), }, }, }, @@ -911,7 +911,7 @@ func TestAlertRuleCRUD(t *testing.T) { "namespace_id":1, "rule_group":"arulegroup", "no_data_state":"Alerting", - "exec_err_state":"KeepLastState" + "exec_err_state":"Alerting" } } ] @@ -960,7 +960,7 @@ func TestAlertRuleCRUD(t *testing.T) { }, }, NoDataState: apimodels.NoDataState(ngmodels.Alerting), - ExecErrState: apimodels.ExecutionErrorState(ngmodels.KeepLastStateErrState), + ExecErrState: apimodels.ExecutionErrorState(ngmodels.AlertingErrState), }, }, }, @@ -1044,7 +1044,7 @@ func TestAlertRuleCRUD(t *testing.T) { }, }, NoDataState: apimodels.NoDataState(ngmodels.Alerting), - ExecErrState: apimodels.ExecutionErrorState(ngmodels.KeepLastStateErrState), + ExecErrState: apimodels.ExecutionErrorState(ngmodels.AlertingErrState), }, }, }, @@ -1135,7 +1135,7 @@ func TestAlertRuleCRUD(t *testing.T) { "namespace_id":1, "rule_group":"arulegroup", "no_data_state":"Alerting", - "exec_err_state":"KeepLastState" + "exec_err_state":"Alerting" } } ] diff --git a/pkg/tests/api/alerting/api_prometheus_test.go b/pkg/tests/api/alerting/api_prometheus_test.go index 59bf4c5ef12..d9c4db93bf3 100644 --- a/pkg/tests/api/alerting/api_prometheus_test.go +++ b/pkg/tests/api/alerting/api_prometheus_test.go @@ -119,7 +119,7 @@ func TestPrometheusRules(t *testing.T) { }, }, NoDataState: apimodels.NoDataState(ngmodels.Alerting), - ExecErrState: apimodels.ExecutionErrorState(ngmodels.KeepLastStateErrState), + ExecErrState: apimodels.ExecutionErrorState(ngmodels.AlertingErrState), }, }, },