Alerting: Use default identifier for extra configs in Alertmanager API (#107049)

This commit is contained in:
Alexander Akhmetov
2025-06-26 12:44:49 +02:00
committed by GitHub
parent abbae41f60
commit b93cde0adb
3 changed files with 93 additions and 51 deletions
@@ -56,7 +56,8 @@ const (
mergeMatchersHeader = "X-Grafana-Alerting-Merge-Matchers"
// configIdentifierHeader is the header that specifies the identifier for imported Alertmanager config.
configIdentifierHeader = "X-Grafana-Alerting-Config-Identifier"
configIdentifierHeader = "X-Grafana-Alerting-Config-Identifier"
defaultConfigIdentifier = "default"
)
var (
@@ -539,11 +540,7 @@ func (srv *ConvertPrometheusSrv) RouteConvertPrometheusPostAlertmanagerConfig(c
logger := srv.logger.FromContext(c.Req.Context())
identifier, err := parseConfigIdentifierHeader(c)
if err != nil {
logger.Error("Failed to parse config identifier header", "error", err, "identifier", identifier)
return errorToResponse(err)
}
identifier := parseConfigIdentifierHeader(c)
mergeMatchers, err := parseMergeMatchersHeader(c)
if err != nil {
@@ -581,11 +578,7 @@ func (srv *ConvertPrometheusSrv) RouteConvertPrometheusGetAlertmanagerConfig(c *
logger := srv.logger.FromContext(c.Req.Context())
ctx := c.Req.Context()
identifier, err := parseConfigIdentifierHeader(c)
if err != nil {
logger.Error("failed to parse config identifier header", "err", err)
return errorToResponse(err)
}
identifier := parseConfigIdentifierHeader(c)
cfg, err := srv.am.GetAlertmanagerConfiguration(ctx, c.GetOrgID(), false)
if err != nil {
@@ -629,13 +622,9 @@ func (srv *ConvertPrometheusSrv) RouteConvertPrometheusDeleteAlertmanagerConfig(
logger := srv.logger.FromContext(c.Req.Context())
identifier, err := parseConfigIdentifierHeader(c)
if err != nil {
logger.Error("Failed to parse config identifier header", "error", err)
return errorToResponse(err)
}
identifier := parseConfigIdentifierHeader(c)
err = srv.am.DeleteExtraConfiguration(c.Req.Context(), c.GetOrgID(), identifier)
err := srv.am.DeleteExtraConfiguration(c.Req.Context(), c.GetOrgID(), identifier)
if err != nil {
logger.Error("Failed to delete alertmanager configuration", "error", err, "identifier", identifier)
return errorToResponse(fmt.Errorf("failed to delete alertmanager configuration: %w", err))
@@ -812,10 +801,10 @@ func formatMergeMatchers(matchers amconfig.Matchers) string {
return strings.Join(pairs, ",")
}
func parseConfigIdentifierHeader(c *contextmodel.ReqContext) (string, error) {
func parseConfigIdentifierHeader(c *contextmodel.ReqContext) string {
identifier := strings.TrimSpace(c.Req.Header.Get(configIdentifierHeader))
if identifier == "" {
return "", errInvalidHeaderValue(configIdentifierHeader, errors.New("identifier cannot be empty"))
return defaultConfigIdentifier
}
return identifier, nil
return identifier
}