From 32b1a39afdd88fb083077dbf04c96210da19553e Mon Sep 17 00:00:00 2001 From: Michael Mandrus <41969079+mmandrus@users.noreply.github.com> Date: Wed, 8 Jun 2022 14:23:48 -0400 Subject: [PATCH 1/4] Update pkg/services/secrets/kvstore/kvstore.go Co-authored-by: Marcus Efraimsson --- pkg/services/secrets/kvstore/kvstore.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/services/secrets/kvstore/kvstore.go b/pkg/services/secrets/kvstore/kvstore.go index 61ad411591d..fdd9c2be6ee 100644 --- a/pkg/services/secrets/kvstore/kvstore.go +++ b/pkg/services/secrets/kvstore/kvstore.go @@ -16,7 +16,7 @@ const ( func ProvideService(sqlStore sqlstore.Store, secretsService secrets.Service, remoteCheck UseRemoteSecretsPluginCheck) SecretsKVStore { logger := log.New("secrets.kvstore") if remoteCheck.ShouldUseRemoteSecretsPlugin() { - logger.Info("secrets kvstore is using a remote plugin for secrets management") + logger.Debug("secrets kvstore is using a remote plugin for secrets management") return &secretsKVStorePlugin{ secretsPlugin: remoteCheck.GetManager().SecretsManager().SecretsManager, secretsService: secretsService, From 3671799b55c7d6336d48e78501bb7438a3893612 Mon Sep 17 00:00:00 2001 From: Michael Mandrus <41969079+mmandrus@users.noreply.github.com> Date: Wed, 8 Jun 2022 14:24:48 -0400 Subject: [PATCH 2/4] Update pkg/services/secrets/kvstore/kvstore.go Co-authored-by: Marcus Efraimsson --- pkg/services/secrets/kvstore/kvstore.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/services/secrets/kvstore/kvstore.go b/pkg/services/secrets/kvstore/kvstore.go index fdd9c2be6ee..c8461f80822 100644 --- a/pkg/services/secrets/kvstore/kvstore.go +++ b/pkg/services/secrets/kvstore/kvstore.go @@ -23,7 +23,7 @@ func ProvideService(sqlStore sqlstore.Store, secretsService secrets.Service, rem log: logger, } } - logger.Info("secrets kvstore is using the default (SQL) implementation for secrets management") + logger.Debug("secrets kvstore is using the default (SQL) implementation for secrets management") return &secretsKVStoreSQL{ sqlStore: sqlStore, secretsService: secretsService, From b6a0683d71b9710cc88c72ca90f41f0a00ef0070 Mon Sep 17 00:00:00 2001 From: Michael Mandrus Date: Wed, 8 Jun 2022 14:56:01 -0400 Subject: [PATCH 3/4] refactor RemotePluginCheck interface to just return the Plugin client directly --- pkg/services/secrets/kvstore/kvstore.go | 13 +++++++++---- pkg/services/secrets/kvstore/remote_plugin_check.go | 8 ++++---- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/pkg/services/secrets/kvstore/kvstore.go b/pkg/services/secrets/kvstore/kvstore.go index 61ad411591d..feb73de3093 100644 --- a/pkg/services/secrets/kvstore/kvstore.go +++ b/pkg/services/secrets/kvstore/kvstore.go @@ -17,10 +17,15 @@ func ProvideService(sqlStore sqlstore.Store, secretsService secrets.Service, rem logger := log.New("secrets.kvstore") if remoteCheck.ShouldUseRemoteSecretsPlugin() { logger.Info("secrets kvstore is using a remote plugin for secrets management") - return &secretsKVStorePlugin{ - secretsPlugin: remoteCheck.GetManager().SecretsManager().SecretsManager, - secretsService: secretsService, - log: logger, + secretsPlugin, err := remoteCheck.GetPlugin() + if err != nil { + logger.Error("plugin client was nil, falling back to SQL implementation") + } else { + return &secretsKVStorePlugin{ + secretsPlugin: secretsPlugin, + secretsService: secretsService, + log: logger, + } } } logger.Info("secrets kvstore is using the default (SQL) implementation for secrets management") diff --git a/pkg/services/secrets/kvstore/remote_plugin_check.go b/pkg/services/secrets/kvstore/remote_plugin_check.go index f290dac3eea..657f705d0b0 100644 --- a/pkg/services/secrets/kvstore/remote_plugin_check.go +++ b/pkg/services/secrets/kvstore/remote_plugin_check.go @@ -1,12 +1,12 @@ package kvstore import ( - "github.com/grafana/grafana/pkg/plugins/manager" + "github.com/grafana/grafana/pkg/plugins/backendplugin/secretsmanagerplugin" ) type UseRemoteSecretsPluginCheck interface { ShouldUseRemoteSecretsPlugin() bool - GetManager() *manager.PluginManager + GetPlugin() (secretsmanagerplugin.SecretsManagerPlugin, error) } type OSSRemoteSecretsPluginCheck struct { @@ -21,6 +21,6 @@ func (c *OSSRemoteSecretsPluginCheck) ShouldUseRemoteSecretsPlugin() bool { return false } -func (c *OSSRemoteSecretsPluginCheck) GetManager() *manager.PluginManager { - return nil +func (c *OSSRemoteSecretsPluginCheck) GetPlugin() (secretsmanagerplugin.SecretsManagerPlugin, error) { + return nil, nil } From c4bd7799e2aaaef64c0d0d9057b86a5dfcb63bf0 Mon Sep 17 00:00:00 2001 From: Michael Mandrus Date: Wed, 8 Jun 2022 15:05:26 -0400 Subject: [PATCH 4/4] rename struct to something less silly --- pkg/plugins/ifaces.go | 2 +- pkg/plugins/manager/manager.go | 2 +- pkg/server/wire.go | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/pkg/plugins/ifaces.go b/pkg/plugins/ifaces.go index 92dc7565390..062cf8e9e95 100644 --- a/pkg/plugins/ifaces.go +++ b/pkg/plugins/ifaces.go @@ -47,7 +47,7 @@ type RendererManager interface { Renderer() *Plugin } -type SecretsManagerManager interface { +type SecretsPluginManager interface { // SecretsManager returns a secretsmanager plugin SecretsManager() *Plugin } diff --git a/pkg/plugins/manager/manager.go b/pkg/plugins/manager/manager.go index 099d49d0c6a..f8c631655a1 100644 --- a/pkg/plugins/manager/manager.go +++ b/pkg/plugins/manager/manager.go @@ -24,7 +24,7 @@ var _ plugins.Client = (*PluginManager)(nil) var _ plugins.Store = (*PluginManager)(nil) var _ plugins.StaticRouteResolver = (*PluginManager)(nil) var _ plugins.RendererManager = (*PluginManager)(nil) -var _ plugins.SecretsManagerManager = (*PluginManager)(nil) +var _ plugins.SecretsPluginManager = (*PluginManager)(nil) type PluginManager struct { cfg *plugins.Cfg diff --git a/pkg/server/wire.go b/pkg/server/wire.go index a08cf86c00c..39c9ed81824 100644 --- a/pkg/server/wire.go +++ b/pkg/server/wire.go @@ -149,7 +149,7 @@ var wireBasicSet = wire.NewSet( wire.Bind(new(plugins.DashboardFileStore), new(*manager.PluginManager)), wire.Bind(new(plugins.StaticRouteResolver), new(*manager.PluginManager)), wire.Bind(new(plugins.RendererManager), new(*manager.PluginManager)), - wire.Bind(new(plugins.SecretsManagerManager), new(*manager.PluginManager)), + wire.Bind(new(plugins.SecretsPluginManager), new(*manager.PluginManager)), coreplugin.ProvideCoreRegistry, loader.ProvideService, wire.Bind(new(loader.Service), new(*loader.Loader)),