From 467ab124dd50809a46aa670b015ffdd5083991ec Mon Sep 17 00:00:00 2001 From: Ganesh Vernekar <15064823+codesome@users.noreply.github.com> Date: Tue, 27 Apr 2021 20:48:19 +0530 Subject: [PATCH] NGAlert: Fix GET for Alertmanager config (#33379) Signed-off-by: Ganesh Vernekar --- pkg/services/ngalert/api/api_alertmanager.go | 37 ++++++++------------ 1 file changed, 15 insertions(+), 22 deletions(-) diff --git a/pkg/services/ngalert/api/api_alertmanager.go b/pkg/services/ngalert/api/api_alertmanager.go index c51fdea4c01..c00324cdf38 100644 --- a/pkg/services/ngalert/api/api_alertmanager.go +++ b/pkg/services/ngalert/api/api_alertmanager.go @@ -66,13 +66,15 @@ func (srv AlertmanagerSrv) RouteGetAlertingConfig(c *models.ReqContext) response return response.Error(http.StatusInternalServerError, "failed to unmarshal alertmanager configuration", err) } - var apiReceiverName string - var receivers []*apimodels.GettableGrafanaReceiver - alertmanagerCfg := cfg.AlertmanagerConfig - if len(alertmanagerCfg.Receivers) > 0 { - apiReceiverName = alertmanagerCfg.Receivers[0].Name - receivers = make([]*apimodels.GettableGrafanaReceiver, 0, len(alertmanagerCfg.Receivers[0].PostableGrafanaReceivers.GrafanaManagedReceivers)) - for _, pr := range alertmanagerCfg.Receivers[0].PostableGrafanaReceivers.GrafanaManagedReceivers { + result := apimodels.GettableUserConfig{ + TemplateFiles: cfg.TemplateFiles, + AlertmanagerConfig: apimodels.GettableApiAlertingConfig{ + Config: cfg.AlertmanagerConfig.Config, + }, + } + for _, recv := range cfg.AlertmanagerConfig.Receivers { + receivers := make([]*apimodels.GettableGrafanaReceiver, 0, len(recv.PostableGrafanaReceivers.GrafanaManagedReceivers)) + for _, pr := range recv.PostableGrafanaReceivers.GrafanaManagedReceivers { secureFields := make(map[string]bool, len(pr.SecureSettings)) for k := range pr.SecureSettings { secureFields[k] = true @@ -90,22 +92,13 @@ func (srv AlertmanagerSrv) RouteGetAlertingConfig(c *models.ReqContext) response } receivers = append(receivers, &gr) } - } - - gettableApiReceiver := apimodels.GettableApiReceiver{ - GettableGrafanaReceivers: apimodels.GettableGrafanaReceivers{ - GrafanaManagedReceivers: receivers, - }, - } - gettableApiReceiver.Name = apiReceiverName - result := apimodels.GettableUserConfig{ - TemplateFiles: cfg.TemplateFiles, - AlertmanagerConfig: apimodels.GettableApiAlertingConfig{ - Config: alertmanagerCfg.Config, - Receivers: []*apimodels.GettableApiReceiver{ - &gettableApiReceiver, + gettableApiReceiver := apimodels.GettableApiReceiver{ + GettableGrafanaReceivers: apimodels.GettableGrafanaReceivers{ + GrafanaManagedReceivers: receivers, }, - }, + } + gettableApiReceiver.Name = recv.Name + result.AlertmanagerConfig.Receivers = append(result.AlertmanagerConfig.Receivers, &gettableApiReceiver) } return response.JSON(http.StatusOK, result)