From 893a8e77a8148861b38dc4ae50407c7a272d74c4 Mon Sep 17 00:00:00 2001 From: Giuseppe Guerra Date: Tue, 9 Jan 2024 10:27:54 +0100 Subject: [PATCH] Enable tracing for all plugins if enablePluginsTracingByDefault is set --- pkg/plugins/envvars/envvars.go | 9 +++++++-- pkg/server/wire.go | 2 ++ pkg/services/pluginsintegration/pipeline/pipeline.go | 4 ++-- .../pluginsintegration/plugincontext/plugincontext.go | 4 ++-- pkg/services/pluginsintegration/renderer/renderer.go | 7 +++---- pkg/services/pluginsintegration/test_helper.go | 4 ++-- 6 files changed, 18 insertions(+), 12 deletions(-) diff --git a/pkg/plugins/envvars/envvars.go b/pkg/plugins/envvars/envvars.go index 91a8d7926e6..28d2f6acecf 100644 --- a/pkg/plugins/envvars/envvars.go +++ b/pkg/plugins/envvars/envvars.go @@ -14,6 +14,7 @@ import ( "github.com/grafana/grafana-plugin-sdk-go/backend" "github.com/grafana/grafana-plugin-sdk-go/backend/proxy" "github.com/grafana/grafana-plugin-sdk-go/experimental/featuretoggles" + "github.com/grafana/grafana/pkg/services/featuremgmt" "github.com/grafana/grafana/pkg/plugins" "github.com/grafana/grafana/pkg/plugins/auth" @@ -44,12 +45,16 @@ type Provider interface { type Service struct { cfg *config.Cfg license plugins.Licensing + + enablePluginTracingByDefault bool } -func NewProvider(cfg *config.Cfg, license plugins.Licensing) *Service { +func NewProvider(cfg *config.Cfg, license plugins.Licensing, features plugins.FeatureToggles) *Service { return &Service{ cfg: cfg, license: license, + + enablePluginTracingByDefault: features.IsEnabledGlobally(featuremgmt.FlagEnablePluginsTracingByDefault), } } @@ -207,7 +212,7 @@ func (s *Service) GetConfigMap(ctx context.Context, pluginID string, _ *auth.Ext } func (s *Service) tracingEnvVars(plugin *plugins.Plugin) []string { - var pluginTracingEnabled bool + pluginTracingEnabled := s.enablePluginTracingByDefault if v, exists := s.cfg.PluginSettings[plugin.ID]["tracing"]; exists { pluginTracingEnabled = v == "true" } diff --git a/pkg/server/wire.go b/pkg/server/wire.go index 64909565597..d5b59097ffe 100644 --- a/pkg/server/wire.go +++ b/pkg/server/wire.go @@ -34,6 +34,7 @@ import ( "github.com/grafana/grafana/pkg/login/social/socialimpl" "github.com/grafana/grafana/pkg/middleware/csrf" "github.com/grafana/grafana/pkg/middleware/loggermw" + "github.com/grafana/grafana/pkg/plugins" apiregistry "github.com/grafana/grafana/pkg/registry/apis" "github.com/grafana/grafana/pkg/services/accesscontrol" "github.com/grafana/grafana/pkg/services/accesscontrol/acimpl" @@ -201,6 +202,7 @@ var wireBasicSet = wire.NewSet( wire.Bind(new(usagestats.Service), new(*uss.UsageStats)), validator.ProvideService, pluginsintegration.WireSet, + wire.Bind(new(plugins.FeatureToggles), new(*featuremgmt.FeatureManager)), pluginDashboards.ProvideFileStoreManager, wire.Bind(new(pluginDashboards.FileStore), new(*pluginDashboards.FileStoreManager)), cloudwatch.ProvideService, diff --git a/pkg/services/pluginsintegration/pipeline/pipeline.go b/pkg/services/pluginsintegration/pipeline/pipeline.go index 1c2c9598e61..06e53aff9b0 100644 --- a/pkg/services/pluginsintegration/pipeline/pipeline.go +++ b/pkg/services/pluginsintegration/pipeline/pipeline.go @@ -61,11 +61,11 @@ func ProvideValidationStage(cfg *config.Cfg, sv signature.Validator, ai angulari func ProvideInitializationStage(cfg *config.Cfg, pr registry.Service, l plugins.Licensing, bp plugins.BackendFactoryProvider, pm process.Manager, externalServiceRegistry auth.ExternalServiceRegistry, - roleRegistry plugins.RoleRegistry) *initialization.Initialize { + roleRegistry plugins.RoleRegistry, features plugins.FeatureToggles) *initialization.Initialize { return initialization.New(cfg, initialization.Opts{ InitializeFuncs: []initialization.InitializeFunc{ ExternalServiceRegistrationStep(cfg, externalServiceRegistry), - initialization.BackendClientInitStep(envvars.NewProvider(cfg, l), bp), + initialization.BackendClientInitStep(envvars.NewProvider(cfg, l, features), bp), initialization.PluginRegistrationStep(pr), initialization.BackendProcessStartStep(pm), RegisterPluginRolesStep(roleRegistry), diff --git a/pkg/services/pluginsintegration/plugincontext/plugincontext.go b/pkg/services/pluginsintegration/plugincontext/plugincontext.go index f96026c6614..124fe2fe701 100644 --- a/pkg/services/pluginsintegration/plugincontext/plugincontext.go +++ b/pkg/services/pluginsintegration/plugincontext/plugincontext.go @@ -31,14 +31,14 @@ const ( func ProvideService(cfg *setting.Cfg, cacheService *localcache.CacheService, pluginStore pluginstore.Store, dataSourceService datasources.DataSourceService, pluginSettingsService pluginsettings.Service, - licensing plugins.Licensing, pCfg *config.Cfg) *Provider { + licensing plugins.Licensing, pCfg *config.Cfg, features plugins.FeatureToggles) *Provider { return &Provider{ cfg: cfg, cacheService: cacheService, pluginStore: pluginStore, dataSourceService: dataSourceService, pluginSettingsService: pluginSettingsService, - pluginEnvVars: envvars.NewProvider(pCfg, licensing), + pluginEnvVars: envvars.NewProvider(pCfg, licensing, features), logger: log.New("plugin.context"), } } diff --git a/pkg/services/pluginsintegration/renderer/renderer.go b/pkg/services/pluginsintegration/renderer/renderer.go index 102c5da7adf..a788ba3c421 100644 --- a/pkg/services/pluginsintegration/renderer/renderer.go +++ b/pkg/services/pluginsintegration/renderer/renderer.go @@ -19,12 +19,11 @@ import ( "github.com/grafana/grafana/pkg/plugins/manager/registry" "github.com/grafana/grafana/pkg/plugins/manager/signature" "github.com/grafana/grafana/pkg/plugins/manager/sources" - "github.com/grafana/grafana/pkg/services/featuremgmt" "github.com/grafana/grafana/pkg/services/rendering" ) func ProvideService(cfg *config.Cfg, registry registry.Service, licensing plugins.Licensing, - features featuremgmt.FeatureToggles) (*Manager, error) { + features plugins.FeatureToggles) (*Manager, error) { l, err := createLoader(cfg, registry, licensing, features) if err != nil { return nil, err @@ -92,7 +91,7 @@ func (m *Manager) Renderer(ctx context.Context) (rendering.Plugin, bool) { } func createLoader(cfg *config.Cfg, pr registry.Service, l plugins.Licensing, - features featuremgmt.FeatureToggles) (loader.Service, error) { + features plugins.FeatureToggles) (loader.Service, error) { d := discovery.New(cfg, discovery.Opts{ FindFilterFuncs: []discovery.FindFilterFunc{ discovery.NewPermittedPluginTypesFilterStep([]plugins.Type{plugins.TypeRenderer}), @@ -111,7 +110,7 @@ func createLoader(cfg *config.Cfg, pr registry.Service, l plugins.Licensing, }) i := initialization.New(cfg, initialization.Opts{ InitializeFuncs: []initialization.InitializeFunc{ - initialization.BackendClientInitStep(envvars.NewProvider(cfg, l), provider.New(provider.RendererProvider)), + initialization.BackendClientInitStep(envvars.NewProvider(cfg, l, features), provider.New(provider.RendererProvider)), initialization.PluginRegistrationStep(pr), }, }) diff --git a/pkg/services/pluginsintegration/test_helper.go b/pkg/services/pluginsintegration/test_helper.go index 600cdc976e9..b87d78c42ed 100644 --- a/pkg/services/pluginsintegration/test_helper.go +++ b/pkg/services/pluginsintegration/test_helper.go @@ -54,7 +54,7 @@ func CreateIntegrationTestCtx(t *testing.T, cfg *setting.Cfg, coreRegistry *core disc := pipeline.ProvideDiscoveryStage(pCfg, finder.NewLocalFinder(true, pCfg.Features), reg) boot := pipeline.ProvideBootstrapStage(pCfg, signature.ProvideService(pCfg, statickey.New()), assetpath.ProvideService(pCfg, cdn)) valid := pipeline.ProvideValidationStage(pCfg, signature.NewValidator(signature.NewUnsignedAuthorizer(pCfg)), angularInspector, errTracker) - init := pipeline.ProvideInitializationStage(pCfg, reg, fakes.NewFakeLicensingService(), provider.ProvideService(coreRegistry), proc, &fakes.FakeAuthService{}, fakes.NewFakeRoleRegistry()) + init := pipeline.ProvideInitializationStage(pCfg, reg, fakes.NewFakeLicensingService(), provider.ProvideService(coreRegistry), proc, &fakes.FakeAuthService{}, fakes.NewFakeRoleRegistry(), featuremgmt.WithFeatures()) term, err := pipeline.ProvideTerminationStage(pCfg, reg, proc) require.NoError(t, err) @@ -100,7 +100,7 @@ func CreateTestLoader(t *testing.T, cfg *pluginsCfg.Cfg, opts LoaderOpts) *loade if opts.Initializer == nil { reg := registry.ProvideService() coreRegistry := coreplugin.NewRegistry(make(map[string]backendplugin.PluginFactoryFunc)) - opts.Initializer = pipeline.ProvideInitializationStage(cfg, reg, fakes.NewFakeLicensingService(), provider.ProvideService(coreRegistry), process.ProvideService(), &fakes.FakeAuthService{}, fakes.NewFakeRoleRegistry()) + opts.Initializer = pipeline.ProvideInitializationStage(cfg, reg, fakes.NewFakeLicensingService(), provider.ProvideService(coreRegistry), process.ProvideService(), &fakes.FakeAuthService{}, fakes.NewFakeRoleRegistry(), featuremgmt.WithFeatures()) } if opts.Terminator == nil {