Enable tracing for all plugins if enablePluginsTracingByDefault is set

This commit is contained in:
Giuseppe Guerra 2024-01-09 10:27:54 +01:00
parent 076ebe2760
commit 893a8e77a8
No known key found for this signature in database
6 changed files with 18 additions and 12 deletions

View File

@ -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"
}

View File

@ -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,

View File

@ -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),

View File

@ -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"),
}
}

View File

@ -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),
},
})

View File

@ -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 {