[release-12.1.2] Alerting: Add keepFiringFor and missing_series_evals_to_resolve to file provisioning (#109710)
* Alerting: Add keepFiringFor and missing_series_evals_to_resolve to file provisioning (#109699) * Fix MissingSeriesEvalsToResolve type
This commit is contained in:
committed by
GitHub
parent
467392cde3
commit
2ab8fdb0df
@@ -1019,6 +1019,15 @@ func TestIntegrationExportFileProvision(t *testing.T) {
|
||||
require.Equal(t, http.StatusOK, status)
|
||||
require.Greater(t, len(data), 0)
|
||||
|
||||
t.Run("provisioned alert rules should have proper data", func(t *testing.T) {
|
||||
provisionedRule, status, _ := apiClient.GetProvisioningAlertRule(t, "my_id_1")
|
||||
require.Equal(t, http.StatusOK, status)
|
||||
|
||||
require.Equal(t, model.Duration(time.Second*120), provisionedRule.KeepFiringFor)
|
||||
require.NotNil(t, provisionedRule.MissingSeriesEvalsToResolve)
|
||||
require.Equal(t, 3, *provisionedRule.MissingSeriesEvalsToResolve)
|
||||
})
|
||||
|
||||
t.Run("exported alert rules should escape $ characters", func(t *testing.T) {
|
||||
// call export endpoint
|
||||
status, exportRaw := apiClient.ExportRulesWithStatus(t, &definitions.AlertRulesExportParameters{
|
||||
|
||||
@@ -62,6 +62,10 @@ groups:
|
||||
execErrState: Alerting
|
||||
# <duration, required> for how long should the alert fire before alerting
|
||||
for: 60s
|
||||
# <duration> for how long the alert should keep firing after condition stops being true
|
||||
keepFiringFor: 120s
|
||||
# <int> number of evaluation intervals required to resolve alert when data is missing
|
||||
missing_series_evals_to_resolve: 3
|
||||
# <map<string, string>> a map of strings to pass around any data
|
||||
annotations:
|
||||
some_key: some_value
|
||||
|
||||
@@ -1398,6 +1398,45 @@ func (a apiClient) UpdateNamespaceRules(t *testing.T, folder string, body *apimo
|
||||
return m, resp.StatusCode, string(b)
|
||||
}
|
||||
|
||||
func (a apiClient) GetProvisioningAlertRule(t *testing.T, ruleUID string) (apimodels.ProvisionedAlertRule, int, string) {
|
||||
t.Helper()
|
||||
req, err := http.NewRequest(http.MethodGet, fmt.Sprintf("%s/api/v1/provisioning/alert-rules/%s", a.url, ruleUID), nil)
|
||||
require.NoError(t, err)
|
||||
|
||||
return sendRequestJSON[apimodels.ProvisionedAlertRule](t, req, http.StatusOK)
|
||||
}
|
||||
|
||||
func (a apiClient) GetProvisioningAlertRuleExport(t *testing.T, ruleUID string, params *apimodels.ExportQueryParams) (int, string) {
|
||||
t.Helper()
|
||||
u, err := url.Parse(fmt.Sprintf("%s/api/v1/provisioning/alert-rules/%s/export", a.url, ruleUID))
|
||||
require.NoError(t, err)
|
||||
if params != nil {
|
||||
q := url.Values{}
|
||||
if params.Format != "" {
|
||||
q.Set("format", params.Format)
|
||||
}
|
||||
if params.Download {
|
||||
q.Set("download", "true")
|
||||
}
|
||||
u.RawQuery = q.Encode()
|
||||
}
|
||||
|
||||
req, err := http.NewRequest(http.MethodGet, u.String(), nil)
|
||||
require.NoError(t, err)
|
||||
|
||||
client := &http.Client{}
|
||||
resp, err := client.Do(req)
|
||||
|
||||
require.NoError(t, err)
|
||||
defer func() {
|
||||
_ = resp.Body.Close()
|
||||
}()
|
||||
b, err := io.ReadAll(resp.Body)
|
||||
require.NoError(t, err)
|
||||
|
||||
return resp.StatusCode, string(b)
|
||||
}
|
||||
|
||||
func sendRequestRaw(t *testing.T, req *http.Request) ([]byte, int, error) {
|
||||
t.Helper()
|
||||
client := &http.Client{}
|
||||
|
||||
Reference in New Issue
Block a user