Alerting: Fix path for cortex-style Prometheus namespaces conversion endpoint (#103655)

This commit is contained in:
Alexander Akhmetov
2025-04-09 10:40:22 +02:00
committed by GitHub
parent 39dcff23f9
commit babe188e31
12 changed files with 676 additions and 77 deletions
+47 -5
View File
@@ -1110,6 +1110,48 @@ func (a apiClient) GetRuleByUID(t *testing.T, ruleUID string) apimodels.Gettable
return rule
}
func (a apiClient) ConvertPrometheusPostRuleGroups(t *testing.T, datasourceUID string, promNamespaces map[string][]apimodels.PrometheusRuleGroup, headers map[string]string) apimodels.ConvertPrometheusResponse {
t.Helper()
resp, status, body := a.RawConvertPrometheusPostRuleGroups(t, datasourceUID, promNamespaces, headers)
requireStatusCode(t, http.StatusAccepted, status, body)
return resp
}
func (a apiClient) RawConvertPrometheusPostRuleGroups(t *testing.T, datasourceUID string, promNamespaces map[string][]apimodels.PrometheusRuleGroup, headers map[string]string) (apimodels.ConvertPrometheusResponse, int, string) {
t.Helper()
path := "%s/api/convert/prometheus/config/v1/rules"
if a.prometheusConversionUseLokiPaths {
path = "%s/api/convert/api/prom/rules"
}
// Based on the content-type header, marshal the data to JSON or YAML
contentType := headers["Content-Type"]
var data []byte
var err error
if contentType == "application/json" {
data, err = json.Marshal(promNamespaces)
require.NoError(t, err)
} else {
data, err = yaml.Marshal(promNamespaces)
require.NoError(t, err)
}
buf := bytes.NewReader(data)
req, err := http.NewRequest(http.MethodPost, fmt.Sprintf(path, a.url), buf)
require.NoError(t, err)
req.Header.Set("X-Grafana-Alerting-Datasource-UID", datasourceUID)
for key, value := range headers {
req.Header.Set(key, value)
}
return sendRequestJSON[apimodels.ConvertPrometheusResponse](t, req, http.StatusAccepted)
}
func (a apiClient) ConvertPrometheusPostRuleGroup(t *testing.T, namespaceTitle, datasourceUID string, promGroup apimodels.PrometheusRuleGroup, headers map[string]string) apimodels.ConvertPrometheusResponse {
t.Helper()
@@ -1173,7 +1215,7 @@ func (a apiClient) RawConvertPrometheusGetRuleGroupRules(t *testing.T, namespace
require.NoError(t, err)
for key, value := range headers {
req.Header.Add(key, value)
req.Header.Set(key, value)
}
rule, status, raw := sendRequestYAML[apimodels.PrometheusRuleGroup](t, req, http.StatusOK)
@@ -1193,7 +1235,7 @@ func (a apiClient) ConvertPrometheusGetNamespaceRules(t *testing.T, namespaceTit
require.NoError(t, err)
for key, value := range headers {
req.Header.Add(key, value)
req.Header.Set(key, value)
}
ns, status, raw := sendRequestYAML[map[string][]apimodels.PrometheusRuleGroup](t, req, http.StatusOK)
@@ -1214,7 +1256,7 @@ func (a apiClient) ConvertPrometheusGetAllRules(t *testing.T, headers map[string
require.NoError(t, err)
for key, value := range headers {
req.Header.Add(key, value)
req.Header.Set(key, value)
}
result, status, raw := sendRequestYAML[map[string][]apimodels.PrometheusRuleGroup](t, req, http.StatusOK)
@@ -1242,7 +1284,7 @@ func (a apiClient) RawConvertPrometheusDeleteRuleGroup(t *testing.T, namespaceTi
require.NoError(t, err)
for key, value := range headers {
req.Header.Add(key, value)
req.Header.Set(key, value)
}
return sendRequestJSON[apimodels.ConvertPrometheusResponse](t, req, http.StatusAccepted)
@@ -1267,7 +1309,7 @@ func (a apiClient) RawConvertPrometheusDeleteNamespace(t *testing.T, namespaceTi
require.NoError(t, err)
for key, value := range headers {
req.Header.Add(key, value)
req.Header.Set(key, value)
}
return sendRequestJSON[apimodels.ConvertPrometheusResponse](t, req, http.StatusAccepted)