Alerting: API to create extra Alertmanager configurations (#106904)
What is this feature?
Implements the POST endpoint for deleting imported Mimir Alertmanager configurations:
POST /api/convert/api/v1/alerts
The API endpoint creates the extra Alertmanager configuration with the provided identifier and matchers.
This commit is contained in:
committed by
GitHub
parent
3ab54a5562
commit
426c334973
@@ -1262,6 +1262,92 @@ func (a apiClient) ConvertPrometheusDeleteNamespace(t *testing.T, namespaceTitle
|
||||
requireStatusCode(t, http.StatusAccepted, status, raw)
|
||||
}
|
||||
|
||||
func (a apiClient) ConvertPrometheusPostAlertmanagerConfig(t *testing.T, amCfg apimodels.AlertmanagerUserConfig, headers map[string]string) apimodels.ConvertPrometheusResponse {
|
||||
t.Helper()
|
||||
|
||||
resp, status, body := a.RawConvertPrometheusPostAlertmanagerConfig(t, amCfg, headers)
|
||||
requireStatusCode(t, http.StatusAccepted, status, body)
|
||||
|
||||
return resp
|
||||
}
|
||||
|
||||
func (a apiClient) RawConvertPrometheusPostAlertmanagerConfig(t *testing.T, amCfg apimodels.AlertmanagerUserConfig, headers map[string]string) (apimodels.ConvertPrometheusResponse, int, string) {
|
||||
t.Helper()
|
||||
|
||||
path := "%s/api/convert/api/v1/alerts"
|
||||
|
||||
// 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(amCfg)
|
||||
require.NoError(t, err)
|
||||
} else {
|
||||
data, err = yaml.Marshal(amCfg)
|
||||
require.NoError(t, err)
|
||||
}
|
||||
|
||||
buf := bytes.NewReader(data)
|
||||
|
||||
req, err := http.NewRequest(http.MethodPost, fmt.Sprintf(path, a.url), buf)
|
||||
require.NoError(t, err)
|
||||
|
||||
for key, value := range headers {
|
||||
req.Header.Set(key, value)
|
||||
}
|
||||
|
||||
return sendRequestJSON[apimodels.ConvertPrometheusResponse](t, req, http.StatusAccepted)
|
||||
}
|
||||
|
||||
func (a apiClient) ConvertPrometheusGetAlertmanagerConfig(t *testing.T, headers map[string]string) apimodels.AlertmanagerUserConfig {
|
||||
t.Helper()
|
||||
|
||||
config, status, raw := a.RawConvertPrometheusGetAlertmanagerConfig(t, headers)
|
||||
requireStatusCode(t, http.StatusOK, status, raw)
|
||||
|
||||
return config
|
||||
}
|
||||
|
||||
func (a apiClient) RawConvertPrometheusGetAlertmanagerConfig(t *testing.T, headers map[string]string) (apimodels.AlertmanagerUserConfig, int, string) {
|
||||
t.Helper()
|
||||
|
||||
path := "%s/api/convert/api/v1/alerts"
|
||||
|
||||
req, err := http.NewRequest(http.MethodGet, fmt.Sprintf(path, a.url), nil)
|
||||
require.NoError(t, err)
|
||||
|
||||
for key, value := range headers {
|
||||
req.Header.Set(key, value)
|
||||
}
|
||||
|
||||
config, status, raw := sendRequestYAML[apimodels.AlertmanagerUserConfig](t, req, http.StatusOK)
|
||||
|
||||
return config, status, raw
|
||||
}
|
||||
|
||||
func (a apiClient) ConvertPrometheusDeleteAlertmanagerConfig(t *testing.T, headers map[string]string) {
|
||||
t.Helper()
|
||||
|
||||
_, status, raw := a.RawConvertPrometheusDeleteAlertmanagerConfig(t, headers)
|
||||
requireStatusCode(t, http.StatusAccepted, status, raw)
|
||||
}
|
||||
|
||||
func (a apiClient) RawConvertPrometheusDeleteAlertmanagerConfig(t *testing.T, headers map[string]string) (apimodels.ConvertPrometheusResponse, int, string) {
|
||||
t.Helper()
|
||||
|
||||
path := "%s/api/convert/api/v1/alerts"
|
||||
|
||||
req, err := http.NewRequest(http.MethodDelete, fmt.Sprintf(path, a.url), nil)
|
||||
require.NoError(t, err)
|
||||
|
||||
for key, value := range headers {
|
||||
req.Header.Set(key, value)
|
||||
}
|
||||
|
||||
return sendRequestJSON[apimodels.ConvertPrometheusResponse](t, req, http.StatusAccepted)
|
||||
}
|
||||
|
||||
func (a apiClient) RawConvertPrometheusDeleteNamespace(t *testing.T, namespaceTitle string, headers map[string]string) (apimodels.ConvertPrometheusResponse, int, string) {
|
||||
t.Helper()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user