From 315100e2e3a63ca82c27ae11a1735a30b2027a6d Mon Sep 17 00:00:00 2001 From: Ben Sully Date: Wed, 13 Dec 2023 09:28:24 +0000 Subject: [PATCH] Plugins: Add Grafana config to app plugin context (#79439) --- pkg/api/plugin_resource_test.go | 4 +++- .../pluginsintegration/plugincontext/plugincontext.go | 3 +++ .../pluginsintegration/plugincontext/plugincontext_test.go | 2 ++ 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/pkg/api/plugin_resource_test.go b/pkg/api/plugin_resource_test.go index 7f3fa786731..df94ea6d2b8 100644 --- a/pkg/api/plugin_resource_test.go +++ b/pkg/api/plugin_resource_test.go @@ -20,6 +20,7 @@ import ( "github.com/grafana/grafana/pkg/infra/tracing" "github.com/grafana/grafana/pkg/plugins" "github.com/grafana/grafana/pkg/plugins/backendplugin/coreplugin" + "github.com/grafana/grafana/pkg/plugins/config" pluginClient "github.com/grafana/grafana/pkg/plugins/manager/client" "github.com/grafana/grafana/pkg/plugins/manager/fakes" "github.com/grafana/grafana/pkg/services/accesscontrol" @@ -47,6 +48,7 @@ func TestCallResource(t *testing.T) { cfg := setting.NewCfg() cfg.StaticRootPath = staticRootPath cfg.Azure = &azsettings.AzureSettings{} + pCfg := config.Cfg{} coreRegistry := coreplugin.ProvideCoreRegistry(tracing.InitializeTracerForTest(), nil, &cloudwatch.CloudWatchService{}, nil, nil, nil, nil, nil, nil, nil, nil, testdatasource.ProvideService(), nil, nil, nil, nil, nil, nil) @@ -54,7 +56,7 @@ func TestCallResource(t *testing.T) { textCtx := pluginsintegration.CreateIntegrationTestCtx(t, cfg, coreRegistry) pcp := plugincontext.ProvideService(cfg, localcache.ProvideService(), textCtx.PluginStore, &datasources.FakeDataSourceService{}, - pluginSettings.ProvideService(db.InitTestDB(t), fakeSecrets.NewFakeSecretsService()), nil, nil) + pluginSettings.ProvideService(db.InitTestDB(t), fakeSecrets.NewFakeSecretsService()), nil, &pCfg) srv := SetupAPITestServer(t, func(hs *HTTPServer) { hs.Cfg = cfg diff --git a/pkg/services/pluginsintegration/plugincontext/plugincontext.go b/pkg/services/pluginsintegration/plugincontext/plugincontext.go index c6513706166..f96026c6614 100644 --- a/pkg/services/pluginsintegration/plugincontext/plugincontext.go +++ b/pkg/services/pluginsintegration/plugincontext/plugincontext.go @@ -80,6 +80,9 @@ func (p *Provider) Get(ctx context.Context, pluginID string, user identity.Reque pCtx.AppInstanceSettings = appSettings } + settings := p.pluginEnvVars.GetConfigMap(ctx, pluginID, plugin.ExternalService) + pCtx.GrafanaConfig = backend.NewGrafanaCfg(settings) + ua, err := useragent.New(p.cfg.BuildVersion, runtime.GOOS, runtime.GOARCH) if err != nil { p.logger.Warn("Could not create user agent", "error", err) diff --git a/pkg/services/pluginsintegration/plugincontext/plugincontext_test.go b/pkg/services/pluginsintegration/plugincontext/plugincontext_test.go index 5e19a17a048..9d4c750ff2c 100644 --- a/pkg/services/pluginsintegration/plugincontext/plugincontext_test.go +++ b/pkg/services/pluginsintegration/plugincontext/plugincontext_test.go @@ -59,6 +59,7 @@ func TestGet(t *testing.T) { pCtx, err := pcp.Get(context.Background(), tc.input, identity, identity.OrgID) require.NoError(t, err) require.Equal(t, pluginID, pCtx.PluginID) + require.NotNil(t, pCtx.GrafanaConfig) }) t.Run("GetWithDataSource", func(t *testing.T) { @@ -71,6 +72,7 @@ func TestGet(t *testing.T) { }) require.NoError(t, err) require.Equal(t, pluginID, pCtx.PluginID) + require.NotNil(t, pCtx.GrafanaConfig) }) }) }