diff --git a/pkg/services/alerting/engine.go b/pkg/services/alerting/engine.go index f155e9621d3..16a59e134ae 100644 --- a/pkg/services/alerting/engine.go +++ b/pkg/services/alerting/engine.go @@ -12,8 +12,8 @@ import ( "github.com/grafana/grafana/pkg/infra/usagestats" "github.com/grafana/grafana/pkg/models" "github.com/grafana/grafana/pkg/plugins" + "github.com/grafana/grafana/pkg/services/encryption" "github.com/grafana/grafana/pkg/services/rendering" - "github.com/grafana/grafana/pkg/services/secrets" "github.com/grafana/grafana/pkg/setting" "github.com/opentracing/opentracing-go" "github.com/opentracing/opentracing-go/ext" @@ -48,7 +48,7 @@ func (e *AlertEngine) IsDisabled() bool { // ProvideAlertEngine returns a new AlertEngine. func ProvideAlertEngine(renderer rendering.Service, bus bus.Bus, requestValidator models.PluginRequestValidator, - dataService plugins.DataRequestHandler, usageStatsService usagestats.Service, secretsService secrets.Service, + dataService plugins.DataRequestHandler, usageStatsService usagestats.Service, encryptionService encryption.Service, cfg *setting.Cfg) *AlertEngine { e := &AlertEngine{ Cfg: cfg, @@ -64,7 +64,7 @@ func ProvideAlertEngine(renderer rendering.Service, bus bus.Bus, requestValidato e.evalHandler = NewEvalHandler(e.DataService) e.ruleReader = newRuleReader() e.log = log.New("alerting.engine") - e.resultHandler = newResultHandler(e.RenderService, secretsService.GetDecryptedValue) + e.resultHandler = newResultHandler(e.RenderService, encryptionService.GetDecryptedValue) e.registerUsageMetrics() diff --git a/pkg/services/alerting/engine_integration_test.go b/pkg/services/alerting/engine_integration_test.go index f8944708657..d604bc1e7d2 100644 --- a/pkg/services/alerting/engine_integration_test.go +++ b/pkg/services/alerting/engine_integration_test.go @@ -13,7 +13,7 @@ import ( "time" "github.com/grafana/grafana/pkg/infra/usagestats" - secretsManager "github.com/grafana/grafana/pkg/services/secrets/manager" + "github.com/grafana/grafana/pkg/services/encryption/ossencryption" "github.com/grafana/grafana/pkg/setting" . "github.com/smartystreets/goconvey/convey" ) @@ -21,8 +21,7 @@ import ( func TestEngineTimeouts(t *testing.T) { Convey("Alerting engine timeout tests", t, func() { usMock := &usagestats.UsageStatsMock{T: t} - secretsService := secretsManager.SetupTestService(t, nil) - engine := ProvideAlertEngine(nil, nil, nil, nil, usMock, secretsService, setting.NewCfg()) + engine := ProvideAlertEngine(nil, nil, nil, nil, usMock, ossencryption.ProvideService(), setting.NewCfg()) setting.AlertingNotificationTimeout = 30 * time.Second setting.AlertingMaxAttempts = 3 engine.resultHandler = &FakeResultHandler{} diff --git a/pkg/services/alerting/engine_test.go b/pkg/services/alerting/engine_test.go index 05707ecd264..703f892338c 100644 --- a/pkg/services/alerting/engine_test.go +++ b/pkg/services/alerting/engine_test.go @@ -11,7 +11,7 @@ import ( "github.com/grafana/grafana/pkg/components/simplejson" "github.com/grafana/grafana/pkg/infra/usagestats" "github.com/grafana/grafana/pkg/models" - secretsManager "github.com/grafana/grafana/pkg/services/secrets/manager" + "github.com/grafana/grafana/pkg/services/encryption/ossencryption" "github.com/grafana/grafana/pkg/setting" . "github.com/smartystreets/goconvey/convey" ) @@ -45,8 +45,7 @@ func TestEngineProcessJob(t *testing.T) { Convey("Alerting engine job processing", t, func() { bus := bus.New() usMock := &usagestats.UsageStatsMock{T: t} - secretsService := secretsManager.SetupTestService(t, nil) - engine := ProvideAlertEngine(nil, bus, nil, nil, usMock, secretsService, setting.NewCfg()) + engine := ProvideAlertEngine(nil, bus, nil, nil, usMock, ossencryption.ProvideService(), setting.NewCfg()) setting.AlertingEvaluationTimeout = 30 * time.Second setting.AlertingNotificationTimeout = 30 * time.Second setting.AlertingMaxAttempts = 3 diff --git a/pkg/services/alerting/notifier.go b/pkg/services/alerting/notifier.go index 29250fd4e59..2dbbf86eb28 100644 --- a/pkg/services/alerting/notifier.go +++ b/pkg/services/alerting/notifier.go @@ -293,7 +293,7 @@ func InitNotifier(model *models.AlertNotification, fn GetDecryptedValueFn) (Noti // GetDecryptedValueFn is a function that returns the decrypted value of // the given key. If the key is not present, then it returns the fallback value. -type GetDecryptedValueFn func(ctx context.Context, sjd map[string][]byte, key string, fallback string) string +type GetDecryptedValueFn func(ctx context.Context, sjd map[string][]byte, key string, fallback string, secret string) string // NotifierFactory is a signature for creating notifiers. type NotifierFactory func(*models.AlertNotification, GetDecryptedValueFn) (Notifier, error) diff --git a/pkg/services/alerting/notifiers/alertmanager.go b/pkg/services/alerting/notifiers/alertmanager.go index 0169a1ee988..8b999e9a14f 100644 --- a/pkg/services/alerting/notifiers/alertmanager.go +++ b/pkg/services/alerting/notifiers/alertmanager.go @@ -12,6 +12,7 @@ import ( "github.com/grafana/grafana/pkg/infra/log" "github.com/grafana/grafana/pkg/models" "github.com/grafana/grafana/pkg/services/alerting" + "github.com/grafana/grafana/pkg/setting" ) func init() { @@ -63,7 +64,7 @@ func NewAlertmanagerNotifier(model *models.AlertNotification, fn alerting.GetDec } } basicAuthUser := model.Settings.Get("basicAuthUser").MustString() - basicAuthPassword := fn(context.Background(), model.SecureSettings, "basicAuthPassword", model.Settings.Get("basicAuthPassword").MustString()) + basicAuthPassword := fn(context.Background(), model.SecureSettings, "basicAuthPassword", model.Settings.Get("basicAuthPassword").MustString(), setting.SecretKey) return &AlertmanagerNotifier{ NotifierBase: NewNotifierBase(model), diff --git a/pkg/services/alerting/notifiers/alertmanager_test.go b/pkg/services/alerting/notifiers/alertmanager_test.go index 18c19e0d9df..e764d3e6fde 100644 --- a/pkg/services/alerting/notifiers/alertmanager_test.go +++ b/pkg/services/alerting/notifiers/alertmanager_test.go @@ -8,7 +8,7 @@ import ( "github.com/grafana/grafana/pkg/infra/log" "github.com/grafana/grafana/pkg/models" "github.com/grafana/grafana/pkg/services/alerting" - secretsManager "github.com/grafana/grafana/pkg/services/secrets/manager" + "github.com/grafana/grafana/pkg/services/encryption/ossencryption" "github.com/grafana/grafana/pkg/services/validations" . "github.com/smartystreets/goconvey/convey" "github.com/stretchr/testify/assert" @@ -81,7 +81,6 @@ func TestWhenAlertManagerShouldNotify(t *testing.T) { //nolint:goconst func TestAlertmanagerNotifier(t *testing.T) { Convey("Alertmanager notifier tests", t, func() { - secretsService := secretsManager.SetupTestService(t, nil) Convey("Parsing alert notification from settings", func() { Convey("empty settings should return error", func() { json := `{ }` @@ -93,7 +92,7 @@ func TestAlertmanagerNotifier(t *testing.T) { Settings: settingsJSON, } - _, err := NewAlertmanagerNotifier(model, secretsService.GetDecryptedValue) + _, err := NewAlertmanagerNotifier(model, ossencryption.ProvideService().GetDecryptedValue) So(err, ShouldNotBeNil) }) @@ -107,7 +106,7 @@ func TestAlertmanagerNotifier(t *testing.T) { Settings: settingsJSON, } - not, err := NewAlertmanagerNotifier(model, secretsService.GetDecryptedValue) + not, err := NewAlertmanagerNotifier(model, ossencryption.ProvideService().GetDecryptedValue) alertmanagerNotifier := not.(*AlertmanagerNotifier) So(err, ShouldBeNil) @@ -126,7 +125,7 @@ func TestAlertmanagerNotifier(t *testing.T) { Settings: settingsJSON, } - not, err := NewAlertmanagerNotifier(model, secretsService.GetDecryptedValue) + not, err := NewAlertmanagerNotifier(model, ossencryption.ProvideService().GetDecryptedValue) alertmanagerNotifier := not.(*AlertmanagerNotifier) So(err, ShouldBeNil) diff --git a/pkg/services/alerting/notifiers/dingding_test.go b/pkg/services/alerting/notifiers/dingding_test.go index 3fbfe2cf21c..6f193cfeda5 100644 --- a/pkg/services/alerting/notifiers/dingding_test.go +++ b/pkg/services/alerting/notifiers/dingding_test.go @@ -7,14 +7,13 @@ import ( "github.com/grafana/grafana/pkg/components/simplejson" "github.com/grafana/grafana/pkg/models" "github.com/grafana/grafana/pkg/services/alerting" - secretsManager "github.com/grafana/grafana/pkg/services/secrets/manager" + "github.com/grafana/grafana/pkg/services/encryption/ossencryption" "github.com/grafana/grafana/pkg/services/validations" . "github.com/smartystreets/goconvey/convey" ) func TestDingDingNotifier(t *testing.T) { Convey("Dingding notifier tests", t, func() { - secretsService := secretsManager.SetupTestService(t, nil) Convey("empty settings should return error", func() { json := `{ }` @@ -25,7 +24,7 @@ func TestDingDingNotifier(t *testing.T) { Settings: settingsJSON, } - _, err := newDingDingNotifier(model, secretsService.GetDecryptedValue) + _, err := newDingDingNotifier(model, ossencryption.ProvideService().GetDecryptedValue) So(err, ShouldNotBeNil) }) Convey("settings should trigger incident", func() { @@ -38,7 +37,7 @@ func TestDingDingNotifier(t *testing.T) { Settings: settingsJSON, } - not, err := newDingDingNotifier(model, secretsService.GetDecryptedValue) + not, err := newDingDingNotifier(model, ossencryption.ProvideService().GetDecryptedValue) notifier := not.(*DingDingNotifier) So(err, ShouldBeNil) diff --git a/pkg/services/alerting/notifiers/discord_test.go b/pkg/services/alerting/notifiers/discord_test.go index 95f8b968059..a50209ea6ab 100644 --- a/pkg/services/alerting/notifiers/discord_test.go +++ b/pkg/services/alerting/notifiers/discord_test.go @@ -5,13 +5,12 @@ import ( "github.com/grafana/grafana/pkg/components/simplejson" "github.com/grafana/grafana/pkg/models" - secretsManager "github.com/grafana/grafana/pkg/services/secrets/manager" + "github.com/grafana/grafana/pkg/services/encryption/ossencryption" . "github.com/smartystreets/goconvey/convey" ) func TestDiscordNotifier(t *testing.T) { Convey("Discord notifier tests", t, func() { - secretsService := secretsManager.SetupTestService(t, nil) Convey("Parsing alert notification from settings", func() { Convey("empty settings should return error", func() { json := `{ }` @@ -23,7 +22,7 @@ func TestDiscordNotifier(t *testing.T) { Settings: settingsJSON, } - _, err := newDiscordNotifier(model, secretsService.GetDecryptedValue) + _, err := newDiscordNotifier(model, ossencryption.ProvideService().GetDecryptedValue) So(err, ShouldNotBeNil) }) @@ -42,7 +41,7 @@ func TestDiscordNotifier(t *testing.T) { Settings: settingsJSON, } - not, err := newDiscordNotifier(model, secretsService.GetDecryptedValue) + not, err := newDiscordNotifier(model, ossencryption.ProvideService().GetDecryptedValue) discordNotifier := not.(*DiscordNotifier) So(err, ShouldBeNil) diff --git a/pkg/services/alerting/notifiers/email_test.go b/pkg/services/alerting/notifiers/email_test.go index 6c34733ab95..6f01b020e65 100644 --- a/pkg/services/alerting/notifiers/email_test.go +++ b/pkg/services/alerting/notifiers/email_test.go @@ -5,13 +5,12 @@ import ( "github.com/grafana/grafana/pkg/components/simplejson" "github.com/grafana/grafana/pkg/models" - secretsManager "github.com/grafana/grafana/pkg/services/secrets/manager" + "github.com/grafana/grafana/pkg/services/encryption/ossencryption" . "github.com/smartystreets/goconvey/convey" ) func TestEmailNotifier(t *testing.T) { Convey("Email notifier tests", t, func() { - secretsService := secretsManager.SetupTestService(t, nil) Convey("Parsing alert notification from settings", func() { Convey("empty settings should return error", func() { json := `{ }` @@ -23,7 +22,7 @@ func TestEmailNotifier(t *testing.T) { Settings: settingsJSON, } - _, err := NewEmailNotifier(model, secretsService.GetDecryptedValue) + _, err := NewEmailNotifier(model, ossencryption.ProvideService().GetDecryptedValue) So(err, ShouldNotBeNil) }) @@ -40,7 +39,7 @@ func TestEmailNotifier(t *testing.T) { Settings: settingsJSON, } - not, err := NewEmailNotifier(model, secretsService.GetDecryptedValue) + not, err := NewEmailNotifier(model, ossencryption.ProvideService().GetDecryptedValue) emailNotifier := not.(*EmailNotifier) So(err, ShouldBeNil) @@ -64,7 +63,7 @@ func TestEmailNotifier(t *testing.T) { Settings: settingsJSON, } - not, err := NewEmailNotifier(model, secretsService.GetDecryptedValue) + not, err := NewEmailNotifier(model, ossencryption.ProvideService().GetDecryptedValue) emailNotifier := not.(*EmailNotifier) So(err, ShouldBeNil) diff --git a/pkg/services/alerting/notifiers/googlechat_test.go b/pkg/services/alerting/notifiers/googlechat_test.go index b360a14300b..52b33a2c018 100644 --- a/pkg/services/alerting/notifiers/googlechat_test.go +++ b/pkg/services/alerting/notifiers/googlechat_test.go @@ -5,13 +5,12 @@ import ( "github.com/grafana/grafana/pkg/components/simplejson" "github.com/grafana/grafana/pkg/models" - secretsManager "github.com/grafana/grafana/pkg/services/secrets/manager" + "github.com/grafana/grafana/pkg/services/encryption/ossencryption" . "github.com/smartystreets/goconvey/convey" ) func TestGoogleChatNotifier(t *testing.T) { Convey("Google Hangouts Chat notifier tests", t, func() { - secretsService := secretsManager.SetupTestService(t, nil) Convey("Parsing alert notification from settings", func() { Convey("empty settings should return error", func() { json := `{ }` @@ -23,7 +22,7 @@ func TestGoogleChatNotifier(t *testing.T) { Settings: settingsJSON, } - _, err := newGoogleChatNotifier(model, secretsService.GetDecryptedValue) + _, err := newGoogleChatNotifier(model, ossencryption.ProvideService().GetDecryptedValue) So(err, ShouldNotBeNil) }) @@ -40,7 +39,7 @@ func TestGoogleChatNotifier(t *testing.T) { Settings: settingsJSON, } - not, err := newGoogleChatNotifier(model, secretsService.GetDecryptedValue) + not, err := newGoogleChatNotifier(model, ossencryption.ProvideService().GetDecryptedValue) webhookNotifier := not.(*GoogleChatNotifier) So(err, ShouldBeNil) diff --git a/pkg/services/alerting/notifiers/hipchat_test.go b/pkg/services/alerting/notifiers/hipchat_test.go index d8e07f9b8e8..cd3edc04cdc 100644 --- a/pkg/services/alerting/notifiers/hipchat_test.go +++ b/pkg/services/alerting/notifiers/hipchat_test.go @@ -5,14 +5,13 @@ import ( "github.com/grafana/grafana/pkg/components/simplejson" "github.com/grafana/grafana/pkg/models" - secretsManager "github.com/grafana/grafana/pkg/services/secrets/manager" + "github.com/grafana/grafana/pkg/services/encryption/ossencryption" . "github.com/smartystreets/goconvey/convey" ) //nolint:goconst func TestHipChatNotifier(t *testing.T) { Convey("HipChat notifier tests", t, func() { - secretsService := secretsManager.SetupTestService(t, nil) Convey("Parsing alert notification from settings", func() { Convey("empty settings should return error", func() { json := `{ }` @@ -24,7 +23,7 @@ func TestHipChatNotifier(t *testing.T) { Settings: settingsJSON, } - _, err := NewHipChatNotifier(model, secretsService.GetDecryptedValue) + _, err := NewHipChatNotifier(model, ossencryption.ProvideService().GetDecryptedValue) So(err, ShouldNotBeNil) }) @@ -40,7 +39,7 @@ func TestHipChatNotifier(t *testing.T) { Settings: settingsJSON, } - not, err := NewHipChatNotifier(model, secretsService.GetDecryptedValue) + not, err := NewHipChatNotifier(model, ossencryption.ProvideService().GetDecryptedValue) hipchatNotifier := not.(*HipChatNotifier) So(err, ShouldBeNil) @@ -66,7 +65,7 @@ func TestHipChatNotifier(t *testing.T) { Settings: settingsJSON, } - not, err := NewHipChatNotifier(model, secretsService.GetDecryptedValue) + not, err := NewHipChatNotifier(model, ossencryption.ProvideService().GetDecryptedValue) hipchatNotifier := not.(*HipChatNotifier) So(err, ShouldBeNil) diff --git a/pkg/services/alerting/notifiers/kafka_test.go b/pkg/services/alerting/notifiers/kafka_test.go index 28258e6f5b6..1b83e863748 100644 --- a/pkg/services/alerting/notifiers/kafka_test.go +++ b/pkg/services/alerting/notifiers/kafka_test.go @@ -5,13 +5,12 @@ import ( "github.com/grafana/grafana/pkg/components/simplejson" "github.com/grafana/grafana/pkg/models" - secretsManager "github.com/grafana/grafana/pkg/services/secrets/manager" + "github.com/grafana/grafana/pkg/services/encryption/ossencryption" . "github.com/smartystreets/goconvey/convey" ) func TestKafkaNotifier(t *testing.T) { Convey("Kafka notifier tests", t, func() { - secretsService := secretsManager.SetupTestService(t, nil) Convey("Parsing alert notification from settings", func() { Convey("empty settings should return error", func() { json := `{ }` @@ -23,7 +22,7 @@ func TestKafkaNotifier(t *testing.T) { Settings: settingsJSON, } - _, err := NewKafkaNotifier(model, secretsService.GetDecryptedValue) + _, err := NewKafkaNotifier(model, ossencryption.ProvideService().GetDecryptedValue) So(err, ShouldNotBeNil) }) @@ -41,7 +40,7 @@ func TestKafkaNotifier(t *testing.T) { Settings: settingsJSON, } - not, err := NewKafkaNotifier(model, secretsService.GetDecryptedValue) + not, err := NewKafkaNotifier(model, ossencryption.ProvideService().GetDecryptedValue) kafkaNotifier := not.(*KafkaNotifier) So(err, ShouldBeNil) diff --git a/pkg/services/alerting/notifiers/line.go b/pkg/services/alerting/notifiers/line.go index ed37060eede..4b760ff4570 100644 --- a/pkg/services/alerting/notifiers/line.go +++ b/pkg/services/alerting/notifiers/line.go @@ -9,6 +9,7 @@ import ( "github.com/grafana/grafana/pkg/infra/log" "github.com/grafana/grafana/pkg/models" "github.com/grafana/grafana/pkg/services/alerting" + "github.com/grafana/grafana/pkg/setting" ) func init() { @@ -37,7 +38,7 @@ const ( // NewLINENotifier is the constructor for the LINE notifier func NewLINENotifier(model *models.AlertNotification, fn alerting.GetDecryptedValueFn) (alerting.Notifier, error) { - token := fn(context.Background(), model.SecureSettings, "token", model.Settings.Get("token").MustString()) + token := fn(context.Background(), model.SecureSettings, "token", model.Settings.Get("token").MustString(), setting.SecretKey) if token == "" { return nil, alerting.ValidationError{Reason: "Could not find token in settings"} } diff --git a/pkg/services/alerting/notifiers/line_test.go b/pkg/services/alerting/notifiers/line_test.go index 74a763c4567..1fc3b0a59fc 100644 --- a/pkg/services/alerting/notifiers/line_test.go +++ b/pkg/services/alerting/notifiers/line_test.go @@ -5,13 +5,12 @@ import ( "github.com/grafana/grafana/pkg/components/simplejson" "github.com/grafana/grafana/pkg/models" - secretsManager "github.com/grafana/grafana/pkg/services/secrets/manager" + "github.com/grafana/grafana/pkg/services/encryption/ossencryption" . "github.com/smartystreets/goconvey/convey" ) func TestLineNotifier(t *testing.T) { Convey("Line notifier tests", t, func() { - secretsService := secretsManager.SetupTestService(t, nil) Convey("empty settings should return error", func() { json := `{ }` @@ -22,7 +21,7 @@ func TestLineNotifier(t *testing.T) { Settings: settingsJSON, } - _, err := NewLINENotifier(model, secretsService.GetDecryptedValue) + _, err := NewLINENotifier(model, ossencryption.ProvideService().GetDecryptedValue) So(err, ShouldNotBeNil) }) Convey("settings should trigger incident", func() { @@ -37,7 +36,7 @@ func TestLineNotifier(t *testing.T) { Settings: settingsJSON, } - not, err := NewLINENotifier(model, secretsService.GetDecryptedValue) + not, err := NewLINENotifier(model, ossencryption.ProvideService().GetDecryptedValue) lineNotifier := not.(*LineNotifier) So(err, ShouldBeNil) diff --git a/pkg/services/alerting/notifiers/opsgenie.go b/pkg/services/alerting/notifiers/opsgenie.go index b676ebee557..5f52f045e48 100644 --- a/pkg/services/alerting/notifiers/opsgenie.go +++ b/pkg/services/alerting/notifiers/opsgenie.go @@ -10,6 +10,7 @@ import ( "github.com/grafana/grafana/pkg/infra/log" "github.com/grafana/grafana/pkg/models" "github.com/grafana/grafana/pkg/services/alerting" + "github.com/grafana/grafana/pkg/setting" ) const ( @@ -86,7 +87,7 @@ const ( func NewOpsGenieNotifier(model *models.AlertNotification, fn alerting.GetDecryptedValueFn) (alerting.Notifier, error) { autoClose := model.Settings.Get("autoClose").MustBool(true) overridePriority := model.Settings.Get("overridePriority").MustBool(true) - apiKey := fn(context.Background(), model.SecureSettings, "apiKey", model.Settings.Get("apiKey").MustString()) + apiKey := fn(context.Background(), model.SecureSettings, "apiKey", model.Settings.Get("apiKey").MustString(), setting.SecretKey) apiURL := model.Settings.Get("apiUrl").MustString() if apiKey == "" { return nil, alerting.ValidationError{Reason: "Could not find api key property in settings"} diff --git a/pkg/services/alerting/notifiers/opsgenie_test.go b/pkg/services/alerting/notifiers/opsgenie_test.go index e7fed93c391..d220eed8984 100644 --- a/pkg/services/alerting/notifiers/opsgenie_test.go +++ b/pkg/services/alerting/notifiers/opsgenie_test.go @@ -8,14 +8,13 @@ import ( "github.com/grafana/grafana/pkg/components/simplejson" "github.com/grafana/grafana/pkg/models" "github.com/grafana/grafana/pkg/services/alerting" - secretsManager "github.com/grafana/grafana/pkg/services/secrets/manager" + "github.com/grafana/grafana/pkg/services/encryption/ossencryption" "github.com/grafana/grafana/pkg/services/validations" . "github.com/smartystreets/goconvey/convey" ) func TestOpsGenieNotifier(t *testing.T) { Convey("OpsGenie notifier tests", t, func() { - secretsService := secretsManager.SetupTestService(t, nil) Convey("Parsing alert notification from settings", func() { Convey("empty settings should return error", func() { json := `{ }` @@ -27,7 +26,7 @@ func TestOpsGenieNotifier(t *testing.T) { Settings: settingsJSON, } - _, err := NewOpsGenieNotifier(model, secretsService.GetDecryptedValue) + _, err := NewOpsGenieNotifier(model, ossencryption.ProvideService().GetDecryptedValue) So(err, ShouldNotBeNil) }) @@ -44,7 +43,7 @@ func TestOpsGenieNotifier(t *testing.T) { Settings: settingsJSON, } - not, err := NewOpsGenieNotifier(model, secretsService.GetDecryptedValue) + not, err := NewOpsGenieNotifier(model, ossencryption.ProvideService().GetDecryptedValue) opsgenieNotifier := not.(*OpsGenieNotifier) So(err, ShouldBeNil) @@ -68,7 +67,7 @@ func TestOpsGenieNotifier(t *testing.T) { Settings: settingsJSON, } - _, err := NewOpsGenieNotifier(model, secretsService.GetDecryptedValue) + _, err := NewOpsGenieNotifier(model, ossencryption.ProvideService().GetDecryptedValue) So(err, ShouldNotBeNil) So(err, ShouldHaveSameTypeAs, alerting.ValidationError{}) So(err.Error(), ShouldEndWith, "Invalid value for sendTagsAs: \"not_a_valid_value\"") @@ -91,7 +90,7 @@ func TestOpsGenieNotifier(t *testing.T) { Settings: settingsJSON, } - notifier, notifierErr := NewOpsGenieNotifier(model, secretsService.GetDecryptedValue) // unhandled error + notifier, notifierErr := NewOpsGenieNotifier(model, ossencryption.ProvideService().GetDecryptedValue) // unhandled error opsgenieNotifier := notifier.(*OpsGenieNotifier) @@ -141,7 +140,7 @@ func TestOpsGenieNotifier(t *testing.T) { Settings: settingsJSON, } - notifier, notifierErr := NewOpsGenieNotifier(model, secretsService.GetDecryptedValue) // unhandled error + notifier, notifierErr := NewOpsGenieNotifier(model, ossencryption.ProvideService().GetDecryptedValue) // unhandled error opsgenieNotifier := notifier.(*OpsGenieNotifier) @@ -191,7 +190,7 @@ func TestOpsGenieNotifier(t *testing.T) { Settings: settingsJSON, } - notifier, notifierErr := NewOpsGenieNotifier(model, secretsService.GetDecryptedValue) // unhandled error + notifier, notifierErr := NewOpsGenieNotifier(model, ossencryption.ProvideService().GetDecryptedValue) // unhandled error opsgenieNotifier := notifier.(*OpsGenieNotifier) diff --git a/pkg/services/alerting/notifiers/pagerduty.go b/pkg/services/alerting/notifiers/pagerduty.go index 23aa50a7dec..e82b95b6542 100644 --- a/pkg/services/alerting/notifiers/pagerduty.go +++ b/pkg/services/alerting/notifiers/pagerduty.go @@ -12,6 +12,7 @@ import ( "github.com/grafana/grafana/pkg/infra/log" "github.com/grafana/grafana/pkg/models" "github.com/grafana/grafana/pkg/services/alerting" + "github.com/grafana/grafana/pkg/setting" ) func init() { @@ -78,7 +79,7 @@ var ( func NewPagerdutyNotifier(model *models.AlertNotification, fn alerting.GetDecryptedValueFn) (alerting.Notifier, error) { severity := model.Settings.Get("severity").MustString("critical") autoResolve := model.Settings.Get("autoResolve").MustBool(false) - key := fn(context.Background(), model.SecureSettings, "integrationKey", model.Settings.Get("integrationKey").MustString()) + key := fn(context.Background(), model.SecureSettings, "integrationKey", model.Settings.Get("integrationKey").MustString(), setting.SecretKey) messageInDetails := model.Settings.Get("messageInDetails").MustBool(false) if key == "" { return nil, alerting.ValidationError{Reason: "Could not find integration key property in settings"} diff --git a/pkg/services/alerting/notifiers/pagerduty_test.go b/pkg/services/alerting/notifiers/pagerduty_test.go index 673ff518b2b..fac067a6717 100644 --- a/pkg/services/alerting/notifiers/pagerduty_test.go +++ b/pkg/services/alerting/notifiers/pagerduty_test.go @@ -10,7 +10,7 @@ import ( "github.com/grafana/grafana/pkg/components/simplejson" "github.com/grafana/grafana/pkg/models" "github.com/grafana/grafana/pkg/services/alerting" - secretsManager "github.com/grafana/grafana/pkg/services/secrets/manager" + "github.com/grafana/grafana/pkg/services/encryption/ossencryption" "github.com/grafana/grafana/pkg/services/validations" . "github.com/smartystreets/goconvey/convey" ) @@ -27,7 +27,6 @@ func presenceComparer(a, b string) bool { func TestPagerdutyNotifier(t *testing.T) { Convey("Pagerduty notifier tests", t, func() { - secretsService := secretsManager.SetupTestService(t, nil) Convey("Parsing alert notification from settings", func() { Convey("empty settings should return error", func() { json := `{ }` @@ -41,7 +40,7 @@ func TestPagerdutyNotifier(t *testing.T) { Settings: settingsJSON, } - _, err = NewPagerdutyNotifier(model, secretsService.GetDecryptedValue) + _, err = NewPagerdutyNotifier(model, ossencryption.ProvideService().GetDecryptedValue) So(err, ShouldNotBeNil) }) @@ -57,7 +56,7 @@ func TestPagerdutyNotifier(t *testing.T) { Settings: settingsJSON, } - not, err := NewPagerdutyNotifier(model, secretsService.GetDecryptedValue) + not, err := NewPagerdutyNotifier(model, ossencryption.ProvideService().GetDecryptedValue) pagerdutyNotifier := not.(*PagerdutyNotifier) So(err, ShouldBeNil) @@ -80,7 +79,7 @@ func TestPagerdutyNotifier(t *testing.T) { Settings: settingsJSON, } - not, err := NewPagerdutyNotifier(model, secretsService.GetDecryptedValue) + not, err := NewPagerdutyNotifier(model, ossencryption.ProvideService().GetDecryptedValue) pagerdutyNotifier := not.(*PagerdutyNotifier) So(err, ShouldBeNil) @@ -107,7 +106,7 @@ func TestPagerdutyNotifier(t *testing.T) { Settings: settingsJSON, } - not, err := NewPagerdutyNotifier(model, secretsService.GetDecryptedValue) + not, err := NewPagerdutyNotifier(model, ossencryption.ProvideService().GetDecryptedValue) pagerdutyNotifier := not.(*PagerdutyNotifier) So(err, ShouldBeNil) @@ -132,7 +131,7 @@ func TestPagerdutyNotifier(t *testing.T) { Settings: settingsJSON, } - not, err := NewPagerdutyNotifier(model, secretsService.GetDecryptedValue) + not, err := NewPagerdutyNotifier(model, ossencryption.ProvideService().GetDecryptedValue) So(err, ShouldBeNil) pagerdutyNotifier := not.(*PagerdutyNotifier) @@ -189,7 +188,7 @@ func TestPagerdutyNotifier(t *testing.T) { Settings: settingsJSON, } - not, err := NewPagerdutyNotifier(model, secretsService.GetDecryptedValue) + not, err := NewPagerdutyNotifier(model, ossencryption.ProvideService().GetDecryptedValue) So(err, ShouldBeNil) pagerdutyNotifier := not.(*PagerdutyNotifier) @@ -246,7 +245,7 @@ func TestPagerdutyNotifier(t *testing.T) { Settings: settingsJSON, } - not, err := NewPagerdutyNotifier(model, secretsService.GetDecryptedValue) + not, err := NewPagerdutyNotifier(model, ossencryption.ProvideService().GetDecryptedValue) So(err, ShouldBeNil) pagerdutyNotifier := not.(*PagerdutyNotifier) @@ -316,7 +315,7 @@ func TestPagerdutyNotifier(t *testing.T) { Settings: settingsJSON, } - not, err := NewPagerdutyNotifier(model, secretsService.GetDecryptedValue) + not, err := NewPagerdutyNotifier(model, ossencryption.ProvideService().GetDecryptedValue) So(err, ShouldBeNil) pagerdutyNotifier := not.(*PagerdutyNotifier) @@ -396,7 +395,7 @@ func TestPagerdutyNotifier(t *testing.T) { Settings: settingsJSON, } - not, err := NewPagerdutyNotifier(model, secretsService.GetDecryptedValue) + not, err := NewPagerdutyNotifier(model, ossencryption.ProvideService().GetDecryptedValue) So(err, ShouldBeNil) pagerdutyNotifier := not.(*PagerdutyNotifier) @@ -475,7 +474,7 @@ func TestPagerdutyNotifier(t *testing.T) { Settings: settingsJSON, } - not, err := NewPagerdutyNotifier(model, secretsService.GetDecryptedValue) + not, err := NewPagerdutyNotifier(model, ossencryption.ProvideService().GetDecryptedValue) So(err, ShouldBeNil) pagerdutyNotifier := not.(*PagerdutyNotifier) diff --git a/pkg/services/alerting/notifiers/pushover.go b/pkg/services/alerting/notifiers/pushover.go index 2f22076827d..23a502739d5 100644 --- a/pkg/services/alerting/notifiers/pushover.go +++ b/pkg/services/alerting/notifiers/pushover.go @@ -9,6 +9,8 @@ import ( "os" "strconv" + "github.com/grafana/grafana/pkg/setting" + "github.com/grafana/grafana/pkg/bus" "github.com/grafana/grafana/pkg/infra/log" "github.com/grafana/grafana/pkg/models" @@ -193,8 +195,8 @@ func init() { // NewPushoverNotifier is the constructor for the Pushover Notifier func NewPushoverNotifier(model *models.AlertNotification, fn alerting.GetDecryptedValueFn) (alerting.Notifier, error) { - userKey := fn(context.Background(), model.SecureSettings, "userKey", model.Settings.Get("userKey").MustString()) - APIToken := fn(context.Background(), model.SecureSettings, "apiToken", model.Settings.Get("apiToken").MustString()) + userKey := fn(context.Background(), model.SecureSettings, "userKey", model.Settings.Get("userKey").MustString(), setting.SecretKey) + APIToken := fn(context.Background(), model.SecureSettings, "apiToken", model.Settings.Get("apiToken").MustString(), setting.SecretKey) device := model.Settings.Get("device").MustString() alertingPriority, err := strconv.Atoi(model.Settings.Get("priority").MustString("0")) // default Normal if err != nil { diff --git a/pkg/services/alerting/notifiers/pushover_test.go b/pkg/services/alerting/notifiers/pushover_test.go index dd50ecc295d..cef325a87c3 100644 --- a/pkg/services/alerting/notifiers/pushover_test.go +++ b/pkg/services/alerting/notifiers/pushover_test.go @@ -8,14 +8,13 @@ import ( "github.com/grafana/grafana/pkg/components/simplejson" "github.com/grafana/grafana/pkg/models" "github.com/grafana/grafana/pkg/services/alerting" - secretsManager "github.com/grafana/grafana/pkg/services/secrets/manager" + "github.com/grafana/grafana/pkg/services/encryption/ossencryption" "github.com/grafana/grafana/pkg/services/validations" . "github.com/smartystreets/goconvey/convey" ) func TestPushoverNotifier(t *testing.T) { Convey("Pushover notifier tests", t, func() { - secretsService := secretsManager.SetupTestService(t, nil) Convey("Parsing alert notification from settings", func() { Convey("empty settings should return error", func() { json := `{ }` @@ -27,7 +26,7 @@ func TestPushoverNotifier(t *testing.T) { Settings: settingsJSON, } - _, err := NewPushoverNotifier(model, secretsService.GetDecryptedValue) + _, err := NewPushoverNotifier(model, ossencryption.ProvideService().GetDecryptedValue) So(err, ShouldNotBeNil) }) @@ -49,7 +48,7 @@ func TestPushoverNotifier(t *testing.T) { Settings: settingsJSON, } - not, err := NewPushoverNotifier(model, secretsService.GetDecryptedValue) + not, err := NewPushoverNotifier(model, ossencryption.ProvideService().GetDecryptedValue) pushoverNotifier := not.(*PushoverNotifier) So(err, ShouldBeNil) diff --git a/pkg/services/alerting/notifiers/sensu.go b/pkg/services/alerting/notifiers/sensu.go index a7797211523..7305105b608 100644 --- a/pkg/services/alerting/notifiers/sensu.go +++ b/pkg/services/alerting/notifiers/sensu.go @@ -10,6 +10,7 @@ import ( "github.com/grafana/grafana/pkg/infra/log" "github.com/grafana/grafana/pkg/models" "github.com/grafana/grafana/pkg/services/alerting" + "github.com/grafana/grafana/pkg/setting" ) func init() { @@ -71,7 +72,7 @@ func NewSensuNotifier(model *models.AlertNotification, fn alerting.GetDecryptedV URL: url, User: model.Settings.Get("username").MustString(), Source: model.Settings.Get("source").MustString(), - Password: fn(context.Background(), model.SecureSettings, "password", model.Settings.Get("password").MustString()), + Password: fn(context.Background(), model.SecureSettings, "password", model.Settings.Get("password").MustString(), setting.SecretKey), Handler: model.Settings.Get("handler").MustString(), log: log.New("alerting.notifier.sensu"), }, nil diff --git a/pkg/services/alerting/notifiers/sensu_test.go b/pkg/services/alerting/notifiers/sensu_test.go index 6f8462b3b08..11684e57e16 100644 --- a/pkg/services/alerting/notifiers/sensu_test.go +++ b/pkg/services/alerting/notifiers/sensu_test.go @@ -5,13 +5,12 @@ import ( "github.com/grafana/grafana/pkg/components/simplejson" "github.com/grafana/grafana/pkg/models" - secretsManager "github.com/grafana/grafana/pkg/services/secrets/manager" + "github.com/grafana/grafana/pkg/services/encryption/ossencryption" . "github.com/smartystreets/goconvey/convey" ) func TestSensuNotifier(t *testing.T) { Convey("Sensu notifier tests", t, func() { - secretsService := secretsManager.SetupTestService(t, nil) Convey("Parsing alert notification from settings", func() { Convey("empty settings should return error", func() { json := `{ }` @@ -23,7 +22,7 @@ func TestSensuNotifier(t *testing.T) { Settings: settingsJSON, } - _, err := NewSensuNotifier(model, secretsService.GetDecryptedValue) + _, err := NewSensuNotifier(model, ossencryption.ProvideService().GetDecryptedValue) So(err, ShouldNotBeNil) }) @@ -42,7 +41,7 @@ func TestSensuNotifier(t *testing.T) { Settings: settingsJSON, } - not, err := NewSensuNotifier(model, secretsService.GetDecryptedValue) + not, err := NewSensuNotifier(model, ossencryption.ProvideService().GetDecryptedValue) sensuNotifier := not.(*SensuNotifier) So(err, ShouldBeNil) diff --git a/pkg/services/alerting/notifiers/sensugo.go b/pkg/services/alerting/notifiers/sensugo.go index 16fd0c87654..333ea22156f 100644 --- a/pkg/services/alerting/notifiers/sensugo.go +++ b/pkg/services/alerting/notifiers/sensugo.go @@ -12,6 +12,7 @@ import ( "github.com/grafana/grafana/pkg/infra/log" "github.com/grafana/grafana/pkg/models" "github.com/grafana/grafana/pkg/services/alerting" + "github.com/grafana/grafana/pkg/setting" ) func init() { @@ -73,7 +74,7 @@ func init() { // NewSensuGoNotifier is the constructor for the Sensu Go Notifier. func NewSensuGoNotifier(model *models.AlertNotification, fn alerting.GetDecryptedValueFn) (alerting.Notifier, error) { url := model.Settings.Get("url").MustString() - apikey := fn(context.Background(), model.SecureSettings, "apikey", model.Settings.Get("apikey").MustString()) + apikey := fn(context.Background(), model.SecureSettings, "apikey", model.Settings.Get("apikey").MustString(), setting.SecretKey) if url == "" { return nil, alerting.ValidationError{Reason: "Could not find URL property in settings"} diff --git a/pkg/services/alerting/notifiers/sensugo_test.go b/pkg/services/alerting/notifiers/sensugo_test.go index 7c7ca2c8166..c1a4eea0a84 100644 --- a/pkg/services/alerting/notifiers/sensugo_test.go +++ b/pkg/services/alerting/notifiers/sensugo_test.go @@ -5,7 +5,7 @@ import ( "github.com/grafana/grafana/pkg/components/simplejson" "github.com/grafana/grafana/pkg/models" - secretsManager "github.com/grafana/grafana/pkg/services/secrets/manager" + "github.com/grafana/grafana/pkg/services/encryption/ossencryption" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) @@ -13,7 +13,6 @@ import ( func TestSensuGoNotifier(t *testing.T) { json := `{ }` - secretsService := secretsManager.SetupTestService(t, nil) settingsJSON, err := simplejson.NewJson([]byte(json)) require.NoError(t, err) model := &models.AlertNotification{ @@ -22,7 +21,7 @@ func TestSensuGoNotifier(t *testing.T) { Settings: settingsJSON, } - _, err = NewSensuGoNotifier(model, secretsService.GetDecryptedValue) + _, err = NewSensuGoNotifier(model, ossencryption.ProvideService().GetDecryptedValue) require.Error(t, err) json = ` @@ -43,7 +42,7 @@ func TestSensuGoNotifier(t *testing.T) { Settings: settingsJSON, } - not, err := NewSensuGoNotifier(model, secretsService.GetDecryptedValue) + not, err := NewSensuGoNotifier(model, ossencryption.ProvideService().GetDecryptedValue) require.NoError(t, err) sensuGoNotifier := not.(*SensuGoNotifier) diff --git a/pkg/services/alerting/notifiers/slack.go b/pkg/services/alerting/notifiers/slack.go index 4bf6dec8abd..057227e79f7 100644 --- a/pkg/services/alerting/notifiers/slack.go +++ b/pkg/services/alerting/notifiers/slack.go @@ -125,7 +125,7 @@ const slackAPIEndpoint = "https://slack.com/api/chat.postMessage" // NewSlackNotifier is the constructor for the Slack notifier. func NewSlackNotifier(model *models.AlertNotification, fn alerting.GetDecryptedValueFn) (alerting.Notifier, error) { - urlStr := fn(context.Background(), model.SecureSettings, "url", model.Settings.Get("url").MustString()) + urlStr := fn(context.Background(), model.SecureSettings, "url", model.Settings.Get("url").MustString(), setting.SecretKey) if urlStr == "" { urlStr = slackAPIEndpoint } @@ -150,7 +150,7 @@ func NewSlackNotifier(model *models.AlertNotification, fn alerting.GetDecryptedV mentionUsersStr := model.Settings.Get("mentionUsers").MustString() mentionGroupsStr := model.Settings.Get("mentionGroups").MustString() mentionChannel := model.Settings.Get("mentionChannel").MustString() - token := fn(context.Background(), model.SecureSettings, "token", model.Settings.Get("token").MustString()) + token := fn(context.Background(), model.SecureSettings, "token", model.Settings.Get("token").MustString(), setting.SecretKey) if token == "" && apiURL.String() == slackAPIEndpoint { return nil, alerting.ValidationError{ Reason: "token must be specified when using the Slack chat API", diff --git a/pkg/services/alerting/notifiers/slack_test.go b/pkg/services/alerting/notifiers/slack_test.go index 9852951677a..64be9af4e32 100644 --- a/pkg/services/alerting/notifiers/slack_test.go +++ b/pkg/services/alerting/notifiers/slack_test.go @@ -9,15 +9,13 @@ import ( "github.com/grafana/grafana/pkg/components/simplejson" "github.com/grafana/grafana/pkg/models" - "github.com/grafana/grafana/pkg/services/secrets" - secretsManager "github.com/grafana/grafana/pkg/services/secrets/manager" + "github.com/grafana/grafana/pkg/services/encryption/ossencryption" + "github.com/grafana/grafana/pkg/setting" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) func TestSlackNotifier(t *testing.T) { - secretsService := secretsManager.SetupTestService(t, nil) - t.Run("empty settings should return error", func(t *testing.T) { json := `{ }` @@ -29,7 +27,7 @@ func TestSlackNotifier(t *testing.T) { Settings: settingsJSON, } - _, err = NewSlackNotifier(model, secretsService.GetDecryptedValue) + _, err = NewSlackNotifier(model, ossencryption.ProvideService().GetDecryptedValue) assert.EqualError(t, err, "alert validation error: recipient must be specified when using the Slack chat API") }) @@ -47,7 +45,7 @@ func TestSlackNotifier(t *testing.T) { Settings: settingsJSON, } - not, err := NewSlackNotifier(model, secretsService.GetDecryptedValue) + not, err := NewSlackNotifier(model, ossencryption.ProvideService().GetDecryptedValue) require.NoError(t, err) slackNotifier := not.(*SlackNotifier) assert.Equal(t, "ops", slackNotifier.Name) @@ -85,7 +83,7 @@ func TestSlackNotifier(t *testing.T) { Settings: settingsJSON, } - not, err := NewSlackNotifier(model, secretsService.GetDecryptedValue) + not, err := NewSlackNotifier(model, ossencryption.ProvideService().GetDecryptedValue) require.NoError(t, err) slackNotifier := not.(*SlackNotifier) assert.Equal(t, "ops", slackNotifier.Name) @@ -118,11 +116,12 @@ func TestSlackNotifier(t *testing.T) { settingsJSON, err := simplejson.NewJson([]byte(json)) require.NoError(t, err) - securedSettingsJSON, err := secretsService.EncryptJsonData( + encryptionService := ossencryption.ProvideService() + securedSettingsJSON, err := encryptionService.EncryptJsonData( context.Background(), map[string]string{ "token": "xenc-XXXXXXXX-XXXXXXXX-XXXXXXXXXX", - }, secrets.WithoutScope()) + }, setting.SecretKey) require.NoError(t, err) model := &models.AlertNotification{ @@ -132,7 +131,7 @@ func TestSlackNotifier(t *testing.T) { SecureSettings: securedSettingsJSON, } - not, err := NewSlackNotifier(model, secretsService.GetDecryptedValue) + not, err := NewSlackNotifier(model, ossencryption.ProvideService().GetDecryptedValue) require.NoError(t, err) slackNotifier := not.(*SlackNotifier) assert.Equal(t, "ops", slackNotifier.Name) @@ -163,7 +162,7 @@ func TestSlackNotifier(t *testing.T) { Settings: settingsJSON, } - _, err = NewSlackNotifier(model, secretsService.GetDecryptedValue) + _, err = NewSlackNotifier(model, ossencryption.ProvideService().GetDecryptedValue) assert.EqualError(t, err, "alert validation error: recipient on invalid format: \"#open tsdb\"") }) @@ -182,7 +181,7 @@ func TestSlackNotifier(t *testing.T) { Settings: settingsJSON, } - _, err = NewSlackNotifier(model, secretsService.GetDecryptedValue) + _, err = NewSlackNotifier(model, ossencryption.ProvideService().GetDecryptedValue) assert.EqualError(t, err, "alert validation error: recipient on invalid format: \"@user name\"") }) @@ -201,7 +200,7 @@ func TestSlackNotifier(t *testing.T) { Settings: settingsJSON, } - _, err = NewSlackNotifier(model, secretsService.GetDecryptedValue) + _, err = NewSlackNotifier(model, ossencryption.ProvideService().GetDecryptedValue) assert.EqualError(t, err, "alert validation error: recipient on invalid format: \"@User\"") }) @@ -220,7 +219,7 @@ func TestSlackNotifier(t *testing.T) { Settings: settingsJSON, } - not, err := NewSlackNotifier(model, secretsService.GetDecryptedValue) + not, err := NewSlackNotifier(model, ossencryption.ProvideService().GetDecryptedValue) require.NoError(t, err) slackNotifier := not.(*SlackNotifier) assert.Equal(t, "1ABCDE", slackNotifier.recipient) diff --git a/pkg/services/alerting/notifiers/teams_test.go b/pkg/services/alerting/notifiers/teams_test.go index 6ee3a2f0f05..f1a267a66c2 100644 --- a/pkg/services/alerting/notifiers/teams_test.go +++ b/pkg/services/alerting/notifiers/teams_test.go @@ -5,13 +5,12 @@ import ( "github.com/grafana/grafana/pkg/components/simplejson" "github.com/grafana/grafana/pkg/models" - secretsManager "github.com/grafana/grafana/pkg/services/secrets/manager" + "github.com/grafana/grafana/pkg/services/encryption/ossencryption" . "github.com/smartystreets/goconvey/convey" ) func TestTeamsNotifier(t *testing.T) { Convey("Teams notifier tests", t, func() { - secretsService := secretsManager.SetupTestService(t, nil) Convey("Parsing alert notification from settings", func() { Convey("empty settings should return error", func() { json := `{ }` @@ -23,7 +22,7 @@ func TestTeamsNotifier(t *testing.T) { Settings: settingsJSON, } - _, err := NewTeamsNotifier(model, secretsService.GetDecryptedValue) + _, err := NewTeamsNotifier(model, ossencryption.ProvideService().GetDecryptedValue) So(err, ShouldNotBeNil) }) @@ -40,7 +39,7 @@ func TestTeamsNotifier(t *testing.T) { Settings: settingsJSON, } - not, err := NewTeamsNotifier(model, secretsService.GetDecryptedValue) + not, err := NewTeamsNotifier(model, ossencryption.ProvideService().GetDecryptedValue) teamsNotifier := not.(*TeamsNotifier) So(err, ShouldBeNil) @@ -62,7 +61,7 @@ func TestTeamsNotifier(t *testing.T) { Settings: settingsJSON, } - not, err := NewTeamsNotifier(model, secretsService.GetDecryptedValue) + not, err := NewTeamsNotifier(model, ossencryption.ProvideService().GetDecryptedValue) teamsNotifier := not.(*TeamsNotifier) So(err, ShouldBeNil) diff --git a/pkg/services/alerting/notifiers/telegram.go b/pkg/services/alerting/notifiers/telegram.go index 29c31e59a26..20c4bcfb656 100644 --- a/pkg/services/alerting/notifiers/telegram.go +++ b/pkg/services/alerting/notifiers/telegram.go @@ -12,6 +12,7 @@ import ( "github.com/grafana/grafana/pkg/infra/log" "github.com/grafana/grafana/pkg/models" "github.com/grafana/grafana/pkg/services/alerting" + "github.com/grafana/grafana/pkg/setting" ) const ( @@ -67,7 +68,7 @@ func NewTelegramNotifier(model *models.AlertNotification, fn alerting.GetDecrypt return nil, alerting.ValidationError{Reason: "No Settings Supplied"} } - botToken := fn(context.Background(), model.SecureSettings, "bottoken", model.Settings.Get("bottoken").MustString()) + botToken := fn(context.Background(), model.SecureSettings, "bottoken", model.Settings.Get("bottoken").MustString(), setting.SecretKey) chatID := model.Settings.Get("chatid").MustString() uploadImage := model.Settings.Get("uploadImage").MustBool() diff --git a/pkg/services/alerting/notifiers/telegram_test.go b/pkg/services/alerting/notifiers/telegram_test.go index cb1e7d5cb04..7d2424b1324 100644 --- a/pkg/services/alerting/notifiers/telegram_test.go +++ b/pkg/services/alerting/notifiers/telegram_test.go @@ -7,14 +7,13 @@ import ( "github.com/grafana/grafana/pkg/components/simplejson" "github.com/grafana/grafana/pkg/models" "github.com/grafana/grafana/pkg/services/alerting" - secretsManager "github.com/grafana/grafana/pkg/services/secrets/manager" + "github.com/grafana/grafana/pkg/services/encryption/ossencryption" "github.com/grafana/grafana/pkg/services/validations" . "github.com/smartystreets/goconvey/convey" ) func TestTelegramNotifier(t *testing.T) { Convey("Telegram notifier tests", t, func() { - secretsService := secretsManager.SetupTestService(t, nil) Convey("Parsing alert notification from settings", func() { Convey("empty settings should return error", func() { json := `{ }` @@ -26,7 +25,7 @@ func TestTelegramNotifier(t *testing.T) { Settings: settingsJSON, } - _, err := NewTelegramNotifier(model, secretsService.GetDecryptedValue) + _, err := NewTelegramNotifier(model, ossencryption.ProvideService().GetDecryptedValue) So(err, ShouldNotBeNil) }) @@ -44,7 +43,7 @@ func TestTelegramNotifier(t *testing.T) { Settings: settingsJSON, } - not, err := NewTelegramNotifier(model, secretsService.GetDecryptedValue) + not, err := NewTelegramNotifier(model, ossencryption.ProvideService().GetDecryptedValue) telegramNotifier := not.(*TelegramNotifier) So(err, ShouldBeNil) diff --git a/pkg/services/alerting/notifiers/threema.go b/pkg/services/alerting/notifiers/threema.go index f37e2a8ec14..712da9ffd68 100644 --- a/pkg/services/alerting/notifiers/threema.go +++ b/pkg/services/alerting/notifiers/threema.go @@ -10,6 +10,7 @@ import ( "github.com/grafana/grafana/pkg/infra/log" "github.com/grafana/grafana/pkg/models" "github.com/grafana/grafana/pkg/services/alerting" + "github.com/grafana/grafana/pkg/setting" ) var ( @@ -77,7 +78,7 @@ func NewThreemaNotifier(model *models.AlertNotification, fn alerting.GetDecrypte gatewayID := model.Settings.Get("gateway_id").MustString() recipientID := model.Settings.Get("recipient_id").MustString() - apiSecret := fn(context.Background(), model.SecureSettings, "api_secret", model.Settings.Get("api_secret").MustString()) + apiSecret := fn(context.Background(), model.SecureSettings, "api_secret", model.Settings.Get("api_secret").MustString(), setting.SecretKey) // Validation if gatewayID == "" { diff --git a/pkg/services/alerting/notifiers/threema_test.go b/pkg/services/alerting/notifiers/threema_test.go index 07d070bd97c..6ccfcee7f75 100644 --- a/pkg/services/alerting/notifiers/threema_test.go +++ b/pkg/services/alerting/notifiers/threema_test.go @@ -7,13 +7,12 @@ import ( "github.com/grafana/grafana/pkg/components/simplejson" "github.com/grafana/grafana/pkg/models" "github.com/grafana/grafana/pkg/services/alerting" - secretsManager "github.com/grafana/grafana/pkg/services/secrets/manager" + "github.com/grafana/grafana/pkg/services/encryption/ossencryption" . "github.com/smartystreets/goconvey/convey" ) func TestThreemaNotifier(t *testing.T) { Convey("Threema notifier tests", t, func() { - secretsService := secretsManager.SetupTestService(t, nil) Convey("Parsing alert notification from settings", func() { Convey("empty settings should return error", func() { json := `{ }` @@ -25,7 +24,7 @@ func TestThreemaNotifier(t *testing.T) { Settings: settingsJSON, } - _, err := NewThreemaNotifier(model, secretsService.GetDecryptedValue) + _, err := NewThreemaNotifier(model, ossencryption.ProvideService().GetDecryptedValue) So(err, ShouldNotBeNil) }) @@ -44,7 +43,7 @@ func TestThreemaNotifier(t *testing.T) { Settings: settingsJSON, } - not, err := NewThreemaNotifier(model, secretsService.GetDecryptedValue) + not, err := NewThreemaNotifier(model, ossencryption.ProvideService().GetDecryptedValue) So(err, ShouldBeNil) threemaNotifier := not.(*ThreemaNotifier) @@ -71,7 +70,7 @@ func TestThreemaNotifier(t *testing.T) { Settings: settingsJSON, } - not, err := NewThreemaNotifier(model, secretsService.GetDecryptedValue) + not, err := NewThreemaNotifier(model, ossencryption.ProvideService().GetDecryptedValue) So(not, ShouldBeNil) var valErr alerting.ValidationError So(errors.As(err, &valErr), ShouldBeTrue) @@ -93,7 +92,7 @@ func TestThreemaNotifier(t *testing.T) { Settings: settingsJSON, } - not, err := NewThreemaNotifier(model, secretsService.GetDecryptedValue) + not, err := NewThreemaNotifier(model, ossencryption.ProvideService().GetDecryptedValue) So(not, ShouldBeNil) var valErr alerting.ValidationError So(errors.As(err, &valErr), ShouldBeTrue) @@ -115,7 +114,7 @@ func TestThreemaNotifier(t *testing.T) { Settings: settingsJSON, } - not, err := NewThreemaNotifier(model, secretsService.GetDecryptedValue) + not, err := NewThreemaNotifier(model, ossencryption.ProvideService().GetDecryptedValue) So(not, ShouldBeNil) var valErr alerting.ValidationError So(errors.As(err, &valErr), ShouldBeTrue) diff --git a/pkg/services/alerting/notifiers/victorops_test.go b/pkg/services/alerting/notifiers/victorops_test.go index b31fb8b3e71..264a85b0907 100644 --- a/pkg/services/alerting/notifiers/victorops_test.go +++ b/pkg/services/alerting/notifiers/victorops_test.go @@ -8,7 +8,7 @@ import ( "github.com/grafana/grafana/pkg/components/simplejson" "github.com/grafana/grafana/pkg/models" "github.com/grafana/grafana/pkg/services/alerting" - secretsManager "github.com/grafana/grafana/pkg/services/secrets/manager" + "github.com/grafana/grafana/pkg/services/encryption/ossencryption" "github.com/grafana/grafana/pkg/services/validations" . "github.com/smartystreets/goconvey/convey" ) @@ -24,7 +24,6 @@ func presenceComparerInt(a, b int64) bool { } func TestVictoropsNotifier(t *testing.T) { Convey("Victorops notifier tests", t, func() { - secretsService := secretsManager.SetupTestService(t, nil) Convey("Parsing alert notification from settings", func() { Convey("empty settings should return error", func() { json := `{ }` @@ -36,7 +35,7 @@ func TestVictoropsNotifier(t *testing.T) { Settings: settingsJSON, } - _, err := NewVictoropsNotifier(model, secretsService.GetDecryptedValue) + _, err := NewVictoropsNotifier(model, ossencryption.ProvideService().GetDecryptedValue) So(err, ShouldNotBeNil) }) @@ -53,7 +52,7 @@ func TestVictoropsNotifier(t *testing.T) { Settings: settingsJSON, } - not, err := NewVictoropsNotifier(model, secretsService.GetDecryptedValue) + not, err := NewVictoropsNotifier(model, ossencryption.ProvideService().GetDecryptedValue) victoropsNotifier := not.(*VictoropsNotifier) So(err, ShouldBeNil) @@ -77,7 +76,7 @@ func TestVictoropsNotifier(t *testing.T) { Settings: settingsJSON, } - not, err := NewVictoropsNotifier(model, secretsService.GetDecryptedValue) + not, err := NewVictoropsNotifier(model, ossencryption.ProvideService().GetDecryptedValue) So(err, ShouldBeNil) victoropsNotifier := not.(*VictoropsNotifier) @@ -125,7 +124,7 @@ func TestVictoropsNotifier(t *testing.T) { Settings: settingsJSON, } - not, err := NewVictoropsNotifier(model, secretsService.GetDecryptedValue) + not, err := NewVictoropsNotifier(model, ossencryption.ProvideService().GetDecryptedValue) So(err, ShouldBeNil) victoropsNotifier := not.(*VictoropsNotifier) diff --git a/pkg/services/alerting/notifiers/webhook.go b/pkg/services/alerting/notifiers/webhook.go index 81d0e272217..c39d677bd11 100644 --- a/pkg/services/alerting/notifiers/webhook.go +++ b/pkg/services/alerting/notifiers/webhook.go @@ -8,6 +8,7 @@ import ( "github.com/grafana/grafana/pkg/infra/log" "github.com/grafana/grafana/pkg/models" "github.com/grafana/grafana/pkg/services/alerting" + "github.com/grafana/grafana/pkg/setting" ) func init() { @@ -65,7 +66,7 @@ func NewWebHookNotifier(model *models.AlertNotification, fn alerting.GetDecrypte return nil, alerting.ValidationError{Reason: "Could not find url property in settings"} } - password := fn(context.Background(), model.SecureSettings, "password", model.Settings.Get("password").MustString()) + password := fn(context.Background(), model.SecureSettings, "password", model.Settings.Get("password").MustString(), setting.SecretKey) return &WebhookNotifier{ NotifierBase: NewNotifierBase(model), diff --git a/pkg/services/alerting/notifiers/webhook_test.go b/pkg/services/alerting/notifiers/webhook_test.go index 82c4327987c..0054d3f3a4c 100644 --- a/pkg/services/alerting/notifiers/webhook_test.go +++ b/pkg/services/alerting/notifiers/webhook_test.go @@ -5,7 +5,7 @@ import ( "github.com/grafana/grafana/pkg/components/simplejson" "github.com/grafana/grafana/pkg/models" - secretsManager "github.com/grafana/grafana/pkg/services/secrets/manager" + "github.com/grafana/grafana/pkg/services/encryption/ossencryption" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) @@ -14,7 +14,6 @@ func TestWebhookNotifier_parsingFromSettings(t *testing.T) { t.Run("Empty settings should cause error", func(t *testing.T) { const json = `{}` - secretsService := secretsManager.SetupTestService(t, nil) settingsJSON, err := simplejson.NewJson([]byte(json)) require.NoError(t, err) model := &models.AlertNotification{ @@ -23,14 +22,13 @@ func TestWebhookNotifier_parsingFromSettings(t *testing.T) { Settings: settingsJSON, } - _, err = NewWebHookNotifier(model, secretsService.GetDecryptedValue) + _, err = NewWebHookNotifier(model, ossencryption.ProvideService().GetDecryptedValue) require.Error(t, err) }) t.Run("Valid settings should result in a valid notifier", func(t *testing.T) { const json = `{"url": "http://google.com"}` - secretsService := secretsManager.SetupTestService(t, nil) settingsJSON, err := simplejson.NewJson([]byte(json)) require.NoError(t, err) model := &models.AlertNotification{ @@ -39,7 +37,7 @@ func TestWebhookNotifier_parsingFromSettings(t *testing.T) { Settings: settingsJSON, } - not, err := NewWebHookNotifier(model, secretsService.GetDecryptedValue) + not, err := NewWebHookNotifier(model, ossencryption.ProvideService().GetDecryptedValue) require.NoError(t, err) webhookNotifier := not.(*WebhookNotifier) diff --git a/pkg/services/alerting/service.go b/pkg/services/alerting/service.go index dc77cb65290..0a6b6e6192d 100644 --- a/pkg/services/alerting/service.go +++ b/pkg/services/alerting/service.go @@ -5,22 +5,23 @@ import ( "github.com/grafana/grafana/pkg/bus" "github.com/grafana/grafana/pkg/models" - "github.com/grafana/grafana/pkg/services/secrets" + "github.com/grafana/grafana/pkg/services/encryption" "github.com/grafana/grafana/pkg/services/sqlstore" + "github.com/grafana/grafana/pkg/setting" ) type AlertNotificationService struct { - Bus bus.Bus - SQLStore *sqlstore.SQLStore - SecretsService secrets.Service + Bus bus.Bus + SQLStore *sqlstore.SQLStore + EncryptionService encryption.Service } -func ProvideService(bus bus.Bus, store *sqlstore.SQLStore, secretsService secrets.Service, +func ProvideService(bus bus.Bus, store *sqlstore.SQLStore, encryptionService encryption.Service, ) *AlertNotificationService { s := &AlertNotificationService{ - Bus: bus, - SQLStore: store, - SecretsService: secretsService, + Bus: bus, + SQLStore: store, + EncryptionService: encryptionService, } s.Bus.AddHandler(s.GetAlertNotifications) @@ -46,7 +47,7 @@ func (s *AlertNotificationService) GetAlertNotifications(query *models.GetAlertN func (s *AlertNotificationService) CreateAlertNotificationCommand(ctx context.Context, cmd *models.CreateAlertNotificationCommand) error { var err error - cmd.EncryptedSecureSettings, err = s.SecretsService.EncryptJsonData(ctx, cmd.SecureSettings, secrets.WithoutScope()) + cmd.EncryptedSecureSettings, err = s.EncryptionService.EncryptJsonData(ctx, cmd.SecureSettings, setting.SecretKey) if err != nil { return err } @@ -56,7 +57,7 @@ func (s *AlertNotificationService) CreateAlertNotificationCommand(ctx context.Co func (s *AlertNotificationService) UpdateAlertNotification(ctx context.Context, cmd *models.UpdateAlertNotificationCommand) error { var err error - cmd.EncryptedSecureSettings, err = s.SecretsService.EncryptJsonData(ctx, cmd.SecureSettings, secrets.WithoutScope()) + cmd.EncryptedSecureSettings, err = s.EncryptionService.EncryptJsonData(ctx, cmd.SecureSettings, setting.SecretKey) if err != nil { return err } diff --git a/pkg/services/alerting/service_test.go b/pkg/services/alerting/service_test.go index 7261b620d92..7adf84ee453 100644 --- a/pkg/services/alerting/service_test.go +++ b/pkg/services/alerting/service_test.go @@ -7,7 +7,7 @@ import ( "github.com/grafana/grafana/pkg/bus" "github.com/grafana/grafana/pkg/components/simplejson" "github.com/grafana/grafana/pkg/models" - secretsManager "github.com/grafana/grafana/pkg/services/secrets/manager" + "github.com/grafana/grafana/pkg/services/encryption/ossencryption" "github.com/grafana/grafana/pkg/services/sqlstore" "github.com/grafana/grafana/pkg/setting" "github.com/stretchr/testify/require" @@ -16,8 +16,7 @@ import ( func TestService(t *testing.T) { sqlStore := sqlstore.InitTestDB(t) - secretsService := secretsManager.SetupTestService(t, sqlStore) - s := ProvideService(bus.New(), sqlStore, secretsService) + s := ProvideService(bus.New(), sqlStore, ossencryption.ProvideService()) origSecret := setting.SecretKey setting.SecretKey = "alert_notification_service_test" @@ -37,7 +36,7 @@ func TestService(t *testing.T) { require.NoError(t, err) an = cmd.Result - decrypted, err := s.SecretsService.DecryptJsonData(ctx, an.SecureSettings) + decrypted, err := s.EncryptionService.DecryptJsonData(ctx, an.SecureSettings, setting.SecretKey) require.NoError(t, err) require.Equal(t, ss, decrypted) }) @@ -50,7 +49,7 @@ func TestService(t *testing.T) { err := s.UpdateAlertNotification(ctx, &cmd) require.NoError(t, err) - decrypted, err := s.SecretsService.DecryptJsonData(ctx, cmd.Result.SecureSettings) + decrypted, err := s.EncryptionService.DecryptJsonData(ctx, cmd.Result.SecureSettings, setting.SecretKey) require.NoError(t, err) require.Equal(t, ss, decrypted) }) diff --git a/pkg/services/alerting/test_notification.go b/pkg/services/alerting/test_notification.go index 9a843f4c817..c6a3aa2f90f 100644 --- a/pkg/services/alerting/test_notification.go +++ b/pkg/services/alerting/test_notification.go @@ -11,7 +11,7 @@ import ( "github.com/grafana/grafana/pkg/components/simplejson" "github.com/grafana/grafana/pkg/infra/log" "github.com/grafana/grafana/pkg/models" - "github.com/grafana/grafana/pkg/services/secrets" + "github.com/grafana/grafana/pkg/setting" ) // NotificationTestCommand initiates an test @@ -52,7 +52,7 @@ func (s *AlertNotificationService) HandleNotificationTestCommand(ctx context.Con if query.Result.SecureSettings != nil { var err error - secureSettingsMap, err = s.SecretsService.DecryptJsonData(ctx, query.Result.SecureSettings) + secureSettingsMap, err = s.EncryptionService.DecryptJsonData(ctx, query.Result.SecureSettings, setting.SecretKey) if err != nil { return err } @@ -64,12 +64,12 @@ func (s *AlertNotificationService) HandleNotificationTestCommand(ctx context.Con } var err error - model.SecureSettings, err = s.SecretsService.EncryptJsonData(ctx, secureSettingsMap, secrets.WithoutScope()) + model.SecureSettings, err = s.EncryptionService.EncryptJsonData(ctx, secureSettingsMap, setting.SecretKey) if err != nil { return err } - notifiers, err := InitNotifier(model, s.SecretsService.GetDecryptedValue) + notifiers, err := InitNotifier(model, s.EncryptionService.GetDecryptedValue) if err != nil { logger.Error("Failed to create notifier", "error", err.Error()) return err diff --git a/pkg/services/provisioning/notifiers/alert_notifications.go b/pkg/services/provisioning/notifiers/alert_notifications.go index edcacb16e33..153f10ce5a9 100644 --- a/pkg/services/provisioning/notifiers/alert_notifications.go +++ b/pkg/services/provisioning/notifiers/alert_notifications.go @@ -4,12 +4,12 @@ import ( "github.com/grafana/grafana/pkg/bus" "github.com/grafana/grafana/pkg/infra/log" "github.com/grafana/grafana/pkg/models" - "github.com/grafana/grafana/pkg/services/secrets" + "github.com/grafana/grafana/pkg/services/encryption" ) // Provision alert notifiers -func Provision(configDirectory string, secretsService secrets.Service) error { - dc := newNotificationProvisioner(secretsService, log.New("provisioning.notifiers")) +func Provision(configDirectory string, encryptionService encryption.Service) error { + dc := newNotificationProvisioner(encryptionService, log.New("provisioning.notifiers")) return dc.applyChanges(configDirectory) } @@ -19,12 +19,12 @@ type NotificationProvisioner struct { cfgProvider *configReader } -func newNotificationProvisioner(secretsService secrets.Service, log log.Logger) NotificationProvisioner { +func newNotificationProvisioner(encryptionService encryption.Service, log log.Logger) NotificationProvisioner { return NotificationProvisioner{ log: log, cfgProvider: &configReader{ - secretsService: secretsService, - log: log, + encryptionService: encryptionService, + log: log, }, } } diff --git a/pkg/services/provisioning/notifiers/config_reader.go b/pkg/services/provisioning/notifiers/config_reader.go index b6e7ed74819..5095401269d 100644 --- a/pkg/services/provisioning/notifiers/config_reader.go +++ b/pkg/services/provisioning/notifiers/config_reader.go @@ -11,14 +11,15 @@ import ( "github.com/grafana/grafana/pkg/infra/log" "github.com/grafana/grafana/pkg/models" "github.com/grafana/grafana/pkg/services/alerting" + "github.com/grafana/grafana/pkg/services/encryption" "github.com/grafana/grafana/pkg/services/provisioning/utils" - "github.com/grafana/grafana/pkg/services/secrets" + "github.com/grafana/grafana/pkg/setting" "gopkg.in/yaml.v2" ) type configReader struct { - secretsService secrets.Service - log log.Logger + encryptionService encryption.Service + log log.Logger } func (cr *configReader) readConfig(path string) ([]*notificationsAsConfig, error) { @@ -159,10 +160,10 @@ func (cr *configReader) validateNotifications(notifications []*notificationsAsCo } for _, notification := range notifications[i].Notifications { - encryptedSecureSettings, err := cr.secretsService.EncryptJsonData( + encryptedSecureSettings, err := cr.encryptionService.EncryptJsonData( context.Background(), notification.SecureSettings, - secrets.WithoutScope(), + setting.SecretKey, ) if err != nil { @@ -174,7 +175,7 @@ func (cr *configReader) validateNotifications(notifications []*notificationsAsCo Settings: notification.SettingsToJSON(), SecureSettings: encryptedSecureSettings, Type: notification.Type, - }, cr.secretsService.GetDecryptedValue) + }, cr.encryptionService.GetDecryptedValue) if err != nil { return err diff --git a/pkg/services/provisioning/notifiers/config_reader_test.go b/pkg/services/provisioning/notifiers/config_reader_test.go index e5f5cccdbf3..018babb6db8 100644 --- a/pkg/services/provisioning/notifiers/config_reader_test.go +++ b/pkg/services/provisioning/notifiers/config_reader_test.go @@ -10,7 +10,7 @@ import ( "github.com/grafana/grafana/pkg/models" "github.com/grafana/grafana/pkg/services/alerting" "github.com/grafana/grafana/pkg/services/alerting/notifiers" - secretsManager "github.com/grafana/grafana/pkg/services/secrets/manager" + "github.com/grafana/grafana/pkg/services/encryption/ossencryption" "github.com/grafana/grafana/pkg/services/sqlstore" . "github.com/smartystreets/goconvey/convey" ) @@ -33,7 +33,6 @@ func TestNotificationAsConfig(t *testing.T) { Convey("Testing notification as configuration", t, func() { sqlStore := sqlstore.InitTestDB(t) - secretsService := secretsManager.SetupTestService(t, sqlStore) setupBusHandlers(sqlStore) for i := 1; i < 5; i++ { @@ -57,8 +56,8 @@ func TestNotificationAsConfig(t *testing.T) { Convey("Can read correct properties", func() { _ = os.Setenv("TEST_VAR", "default") cfgProvider := &configReader{ - secretsService: secretsService, - log: log.New("test logger"), + encryptionService: ossencryption.ProvideService(), + log: log.New("test logger"), } cfg, err := cfgProvider.readConfig(correctProperties) @@ -133,7 +132,7 @@ func TestNotificationAsConfig(t *testing.T) { Convey("One configured notification", func() { Convey("no notification in database", func() { - dc := newNotificationProvisioner(secretsService, logger) + dc := newNotificationProvisioner(ossencryption.ProvideService(), logger) err := dc.applyChanges(twoNotificationsConfig) if err != nil { @@ -163,7 +162,7 @@ func TestNotificationAsConfig(t *testing.T) { So(len(notificationsQuery.Result), ShouldEqual, 1) Convey("should update one notification", func() { - dc := newNotificationProvisioner(secretsService, logger) + dc := newNotificationProvisioner(ossencryption.ProvideService(), logger) err = dc.applyChanges(twoNotificationsConfig) if err != nil { t.Fatalf("applyChanges return an error %v", err) @@ -186,7 +185,7 @@ func TestNotificationAsConfig(t *testing.T) { }) }) Convey("Two notifications with is_default", func() { - dc := newNotificationProvisioner(secretsService, logger) + dc := newNotificationProvisioner(ossencryption.ProvideService(), logger) err := dc.applyChanges(doubleNotificationsConfig) Convey("should both be inserted", func() { So(err, ShouldBeNil) @@ -228,7 +227,7 @@ func TestNotificationAsConfig(t *testing.T) { So(len(notificationsQuery.Result), ShouldEqual, 2) Convey("should have two new notifications", func() { - dc := newNotificationProvisioner(secretsService, logger) + dc := newNotificationProvisioner(ossencryption.ProvideService(), logger) err := dc.applyChanges(twoNotificationsConfig) if err != nil { t.Fatalf("applyChanges return an error %v", err) @@ -261,7 +260,7 @@ func TestNotificationAsConfig(t *testing.T) { err = sqlStore.CreateAlertNotificationCommand(&existingNotificationCmd) So(err, ShouldBeNil) - dc := newNotificationProvisioner(secretsService, logger) + dc := newNotificationProvisioner(ossencryption.ProvideService(), logger) err = dc.applyChanges(correctPropertiesWithOrgName) if err != nil { t.Fatalf("applyChanges return an error %v", err) @@ -279,7 +278,7 @@ func TestNotificationAsConfig(t *testing.T) { }) Convey("Config doesn't contain required field", func() { - dc := newNotificationProvisioner(secretsService, logger) + dc := newNotificationProvisioner(ossencryption.ProvideService(), logger) err := dc.applyChanges(noRequiredFields) So(err, ShouldNotBeNil) @@ -292,7 +291,7 @@ func TestNotificationAsConfig(t *testing.T) { Convey("Empty yaml file", func() { Convey("should have not changed repo", func() { - dc := newNotificationProvisioner(secretsService, logger) + dc := newNotificationProvisioner(ossencryption.ProvideService(), logger) err := dc.applyChanges(emptyFile) if err != nil { t.Fatalf("applyChanges return an error %v", err) @@ -306,8 +305,8 @@ func TestNotificationAsConfig(t *testing.T) { Convey("Broken yaml should return error", func() { reader := &configReader{ - secretsService: secretsService, - log: log.New("test logger"), + encryptionService: ossencryption.ProvideService(), + log: log.New("test logger"), } _, err := reader.readConfig(brokenYaml) @@ -316,8 +315,8 @@ func TestNotificationAsConfig(t *testing.T) { Convey("Skip invalid directory", func() { cfgProvider := &configReader{ - secretsService: secretsService, - log: log.New("test logger"), + encryptionService: ossencryption.ProvideService(), + log: log.New("test logger"), } cfg, err := cfgProvider.readConfig(emptyFolder) @@ -329,8 +328,8 @@ func TestNotificationAsConfig(t *testing.T) { Convey("Unknown notifier should return error", func() { cfgProvider := &configReader{ - secretsService: secretsService, - log: log.New("test logger"), + encryptionService: ossencryption.ProvideService(), + log: log.New("test logger"), } _, err := cfgProvider.readConfig(unknownNotifier) So(err, ShouldNotBeNil) @@ -339,8 +338,8 @@ func TestNotificationAsConfig(t *testing.T) { Convey("Read incorrect properties", func() { cfgProvider := &configReader{ - secretsService: secretsService, - log: log.New("test logger"), + encryptionService: ossencryption.ProvideService(), + log: log.New("test logger"), } _, err := cfgProvider.readConfig(incorrectSettings) So(err, ShouldNotBeNil) diff --git a/pkg/services/provisioning/provisioning.go b/pkg/services/provisioning/provisioning.go index b2ea1958729..52aa9215624 100644 --- a/pkg/services/provisioning/provisioning.go +++ b/pkg/services/provisioning/provisioning.go @@ -8,23 +8,23 @@ import ( "github.com/grafana/grafana/pkg/infra/log" plugifaces "github.com/grafana/grafana/pkg/plugins" "github.com/grafana/grafana/pkg/registry" + "github.com/grafana/grafana/pkg/services/encryption" "github.com/grafana/grafana/pkg/services/provisioning/dashboards" "github.com/grafana/grafana/pkg/services/provisioning/datasources" "github.com/grafana/grafana/pkg/services/provisioning/notifiers" "github.com/grafana/grafana/pkg/services/provisioning/plugins" - "github.com/grafana/grafana/pkg/services/secrets" "github.com/grafana/grafana/pkg/services/sqlstore" "github.com/grafana/grafana/pkg/setting" "github.com/grafana/grafana/pkg/util/errutil" ) func ProvideService(cfg *setting.Cfg, sqlStore *sqlstore.SQLStore, pluginManager plugifaces.Manager, - secretsService secrets.Service) (*ProvisioningServiceImpl, error) { + encryptionService encryption.Service) (*ProvisioningServiceImpl, error) { s := &ProvisioningServiceImpl{ Cfg: cfg, SQLStore: sqlStore, PluginManager: pluginManager, - SecretsService: secretsService, + EncryptionService: encryptionService, log: log.New("provisioning"), newDashboardProvisioner: dashboards.New, provisionNotifiers: notifiers.Provision, @@ -59,7 +59,7 @@ func NewProvisioningServiceImpl() *ProvisioningServiceImpl { // Used for testing purposes func newProvisioningServiceImpl( newDashboardProvisioner dashboards.DashboardProvisionerFactory, - provisionNotifiers func(string, secrets.Service) error, + provisionNotifiers func(string, encryption.Service) error, provisionDatasources func(context.Context, string) error, provisionPlugins func(string, plugifaces.Manager) error, ) *ProvisioningServiceImpl { @@ -76,12 +76,12 @@ type ProvisioningServiceImpl struct { Cfg *setting.Cfg SQLStore *sqlstore.SQLStore PluginManager plugifaces.Manager - SecretsService secrets.Service + EncryptionService encryption.Service log log.Logger pollingCtxCancel context.CancelFunc newDashboardProvisioner dashboards.DashboardProvisionerFactory dashboardProvisioner dashboards.DashboardProvisioner - provisionNotifiers func(string, secrets.Service) error + provisionNotifiers func(string, encryption.Service) error provisionDatasources func(context.Context, string) error provisionPlugins func(string, plugifaces.Manager) error mutex sync.Mutex @@ -149,7 +149,7 @@ func (ps *ProvisioningServiceImpl) ProvisionPlugins() error { func (ps *ProvisioningServiceImpl) ProvisionNotifications() error { alertNotificationsPath := filepath.Join(ps.Cfg.ProvisioningPath, "notifiers") - err := ps.provisionNotifiers(alertNotificationsPath, ps.SecretsService) + err := ps.provisionNotifiers(alertNotificationsPath, ps.EncryptionService) return errutil.Wrap("Alert notification provisioning error", err) }