Alerting: Return cached alerts for prometheus/api/v1/alerts (#32654)

* Return cached alerts for prometheus/api/v1/alerts

* Return not implemented for /prometheus/grafana/api/v1/rules

* Set StartsAt for already alerting states

* Fix tests
This commit is contained in:
David Parrott
2021-04-05 15:05:39 -07:00
committed by GitHub
parent ec624aa1ef
commit c0d83fc01e
6 changed files with 54 additions and 136 deletions

View File

@@ -70,6 +70,9 @@ func (st *StateTracker) getOrCreate(uid string, orgId int64, result eval.Result)
State: result.State,
Results: []StateEvaluation{},
}
if result.State == eval.Alerting {
newState.StartsAt = result.EvaluatedAt
}
st.stateCache.cacheMap[idString] = newState
return newState
}

View File

@@ -133,7 +133,7 @@ func TestProcessEvalResults(t *testing.T) {
{EvaluationTime: evaluationTime, EvaluationState: eval.Alerting},
{EvaluationTime: evaluationTime.Add(1 * time.Minute), EvaluationState: eval.Normal},
},
StartsAt: time.Time{},
StartsAt: evaluationTime,
EndsAt: evaluationTime.Add(1 * time.Minute),
LastEvaluationTime: evaluationTime.Add(1 * time.Minute),
},
@@ -172,7 +172,7 @@ func TestProcessEvalResults(t *testing.T) {
{EvaluationTime: evaluationTime, EvaluationState: eval.Alerting},
{EvaluationTime: evaluationTime.Add(1 * time.Minute), EvaluationState: eval.Alerting},
},
StartsAt: time.Time{},
StartsAt: evaluationTime,
EndsAt: evaluationTime.Add(100 * time.Second),
LastEvaluationTime: evaluationTime.Add(1 * time.Minute),
},