From e18ca8f6f2972681d777187c258d36bbba903f32 Mon Sep 17 00:00:00 2001 From: Owen Diehl Date: Mon, 10 May 2021 16:58:41 -0400 Subject: [PATCH] enforce receivers align with backend type when posting AM config (#33877) --- pkg/services/ngalert/api/forked_am.go | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/pkg/services/ngalert/api/forked_am.go b/pkg/services/ngalert/api/forked_am.go index 0256e642a6a..5eec484ba6f 100644 --- a/pkg/services/ngalert/api/forked_am.go +++ b/pkg/services/ngalert/api/forked_am.go @@ -117,6 +117,25 @@ func (am *ForkedAMSvc) RoutePostAlertingConfig(ctx *models.ReqContext, body apim return response.Error(400, err.Error(), nil) } + backendType, err := backendType(ctx, am.DatasourceCache) + if err != nil { + return response.Error(400, err.Error(), nil) + } + + payloadType := body.AlertmanagerConfig.Type() + + if backendType != payloadType { + return response.Error( + 400, + fmt.Sprintf( + "unexpected backend type (%v) vs payload type (%v)", + backendType, + payloadType, + ), + nil, + ) + } + return s.RoutePostAlertingConfig(ctx, body) }