From ec4152c7e58533ec55d06bb60981642966d9e3bd Mon Sep 17 00:00:00 2001 From: Yuri Tseretyan Date: Mon, 27 Mar 2023 16:35:54 -0400 Subject: [PATCH] Alerting: Remove dependency on secrets in definitions package (#65391) --- pkg/services/ngalert/api/api_alertmanager.go | 5 ++++- pkg/services/ngalert/api/tooling/definitions/alertmanager.go | 5 ++--- pkg/services/ngalert/notifier/alertmanager_config.go | 5 ++++- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/pkg/services/ngalert/api/api_alertmanager.go b/pkg/services/ngalert/api/api_alertmanager.go index f1361df27c8..2ae326d1436 100644 --- a/pkg/services/ngalert/api/api_alertmanager.go +++ b/pkg/services/ngalert/api/api_alertmanager.go @@ -19,6 +19,7 @@ import ( apimodels "github.com/grafana/grafana/pkg/services/ngalert/api/tooling/definitions" "github.com/grafana/grafana/pkg/services/ngalert/notifier" "github.com/grafana/grafana/pkg/services/ngalert/store" + "github.com/grafana/grafana/pkg/services/secrets" "github.com/grafana/grafana/pkg/util" ) @@ -267,7 +268,9 @@ func (srv AlertmanagerSrv) RoutePostTestReceivers(c *contextmodel.ReqContext, bo return ErrResp(http.StatusInternalServerError, err, "") } - if err := body.ProcessConfig(srv.crypto.Encrypt); err != nil { + if err := body.ProcessConfig(func(ctx context.Context, payload []byte) ([]byte, error) { + return srv.crypto.Encrypt(ctx, payload, secrets.WithoutScope()) + }); err != nil { return ErrResp(http.StatusInternalServerError, err, "failed to post process Alertmanager configuration") } diff --git a/pkg/services/ngalert/api/tooling/definitions/alertmanager.go b/pkg/services/ngalert/api/tooling/definitions/alertmanager.go index d883f169990..29b685d3ea0 100644 --- a/pkg/services/ngalert/api/tooling/definitions/alertmanager.go +++ b/pkg/services/ngalert/api/tooling/definitions/alertmanager.go @@ -17,7 +17,6 @@ import ( "github.com/prometheus/common/model" "gopkg.in/yaml.v3" - "github.com/grafana/grafana/pkg/services/secrets" "github.com/grafana/grafana/pkg/util" ) @@ -1177,7 +1176,7 @@ type PostableGrafanaReceivers struct { GrafanaManagedReceivers []*PostableGrafanaReceiver `yaml:"grafana_managed_receiver_configs,omitempty" json:"grafana_managed_receiver_configs,omitempty"` } -type EncryptFn func(ctx context.Context, payload []byte, scope secrets.EncryptionOptions) ([]byte, error) +type EncryptFn func(ctx context.Context, payload []byte) ([]byte, error) func processReceiverConfigs(c []*PostableApiReceiver, encrypt EncryptFn) error { seenUIDs := make(map[string]struct{}) @@ -1187,7 +1186,7 @@ func processReceiverConfigs(c []*PostableApiReceiver, encrypt EncryptFn) error { case GrafanaReceiverType: for _, gr := range r.PostableGrafanaReceivers.GrafanaManagedReceivers { for k, v := range gr.SecureSettings { - encryptedData, err := encrypt(context.Background(), []byte(v), secrets.WithoutScope()) + encryptedData, err := encrypt(context.Background(), []byte(v)) if err != nil { return fmt.Errorf("failed to encrypt secure settings: %w", err) } diff --git a/pkg/services/ngalert/notifier/alertmanager_config.go b/pkg/services/ngalert/notifier/alertmanager_config.go index 5ca9ea840d6..9d3aad947a4 100644 --- a/pkg/services/ngalert/notifier/alertmanager_config.go +++ b/pkg/services/ngalert/notifier/alertmanager_config.go @@ -8,6 +8,7 @@ import ( "github.com/grafana/grafana/pkg/services/ngalert/api/tooling/definitions" "github.com/grafana/grafana/pkg/services/ngalert/models" "github.com/grafana/grafana/pkg/services/ngalert/store" + "github.com/grafana/grafana/pkg/services/secrets" ) type UnknownReceiverError struct { @@ -103,7 +104,9 @@ func (moa *MultiOrgAlertmanager) ApplyAlertmanagerConfiguration(ctx context.Cont return err } - if err := config.ProcessConfig(moa.Crypto.Encrypt); err != nil { + if err := config.ProcessConfig(func(ctx context.Context, payload []byte) ([]byte, error) { + return moa.Crypto.Encrypt(ctx, payload, secrets.WithoutScope()) + }); err != nil { return fmt.Errorf("failed to post process Alertmanager configuration: %w", err) }