mirror of
https://github.com/grafana/grafana.git
synced 2025-02-03 12:11:09 -06:00
Plugins: Tidy config struct (#84168)
* tidy plugins config usage * fix tests
This commit is contained in:
parent
0c6b0188c8
commit
225ac8003c
@ -18,7 +18,6 @@ import (
|
||||
"github.com/grafana/grafana/pkg/infra/localcache"
|
||||
"github.com/grafana/grafana/pkg/plugins"
|
||||
"github.com/grafana/grafana/pkg/plugins/backendplugin"
|
||||
"github.com/grafana/grafana/pkg/plugins/config"
|
||||
pluginClient "github.com/grafana/grafana/pkg/plugins/manager/client"
|
||||
"github.com/grafana/grafana/pkg/plugins/manager/registry"
|
||||
"github.com/grafana/grafana/pkg/services/datasources"
|
||||
@ -297,7 +296,7 @@ func TestDataSourceQueryError(t *testing.T) {
|
||||
&fakeDatasources.FakeCacheService{},
|
||||
nil,
|
||||
&fakePluginRequestValidator{},
|
||||
pluginClient.ProvideService(r, &config.PluginManagementCfg{}),
|
||||
pluginClient.ProvideService(r),
|
||||
plugincontext.ProvideService(cfg, localcache.ProvideService(), &pluginstore.FakePluginStore{
|
||||
PluginList: []pluginstore.Plugin{pluginstore.ToGrafanaDTO(p)},
|
||||
},
|
||||
|
@ -19,12 +19,9 @@ type PluginManagementCfg struct {
|
||||
|
||||
PluginsCDNURLTemplate string
|
||||
|
||||
Tracing Tracing
|
||||
|
||||
GrafanaComURL string
|
||||
|
||||
GrafanaAppURL string
|
||||
GrafanaAppSubURL string
|
||||
GrafanaAppURL string
|
||||
|
||||
Features featuremgmt.FeatureToggles
|
||||
|
||||
@ -34,9 +31,9 @@ type PluginManagementCfg struct {
|
||||
|
||||
// NewPluginManagementCfg returns a new PluginManagementCfg.
|
||||
func NewPluginManagementCfg(devMode bool, pluginsPath string, pluginSettings setting.PluginSettings, pluginsAllowUnsigned []string,
|
||||
pluginsCDNURLTemplate string, appURL string, appSubURL string, tracing Tracing, features featuremgmt.FeatureToggles,
|
||||
angularSupportEnabled bool, grafanaComURL string, disablePlugins []string, hideAngularDeprecation []string,
|
||||
forwardHostEnvVars []string) *PluginManagementCfg {
|
||||
pluginsCDNURLTemplate string, appURL string, features featuremgmt.FeatureToggles, angularSupportEnabled bool,
|
||||
grafanaComURL string, disablePlugins []string, hideAngularDeprecation []string, forwardHostEnvVars []string,
|
||||
) *PluginManagementCfg {
|
||||
return &PluginManagementCfg{
|
||||
PluginsPath: pluginsPath,
|
||||
DevMode: devMode,
|
||||
@ -44,10 +41,8 @@ func NewPluginManagementCfg(devMode bool, pluginsPath string, pluginSettings set
|
||||
PluginsAllowUnsigned: pluginsAllowUnsigned,
|
||||
DisablePlugins: disablePlugins,
|
||||
PluginsCDNURLTemplate: pluginsCDNURLTemplate,
|
||||
Tracing: tracing,
|
||||
GrafanaComURL: grafanaComURL,
|
||||
GrafanaAppURL: appURL,
|
||||
GrafanaAppSubURL: appSubURL,
|
||||
Features: features,
|
||||
AngularSupportEnabled: angularSupportEnabled,
|
||||
HideAngularDeprecation: hideAngularDeprecation,
|
||||
|
@ -10,7 +10,6 @@ import (
|
||||
"github.com/grafana/grafana-plugin-sdk-go/backend"
|
||||
|
||||
"github.com/grafana/grafana/pkg/plugins"
|
||||
"github.com/grafana/grafana/pkg/plugins/config"
|
||||
"github.com/grafana/grafana/pkg/plugins/manager/registry"
|
||||
)
|
||||
|
||||
@ -29,13 +28,11 @@ var (
|
||||
|
||||
type Service struct {
|
||||
pluginRegistry registry.Service
|
||||
cfg *config.PluginManagementCfg
|
||||
}
|
||||
|
||||
func ProvideService(pluginRegistry registry.Service, cfg *config.PluginManagementCfg) *Service {
|
||||
func ProvideService(pluginRegistry registry.Service) *Service {
|
||||
return &Service{
|
||||
pluginRegistry: pluginRegistry,
|
||||
cfg: cfg,
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -10,7 +10,6 @@ import (
|
||||
"github.com/grafana/grafana-plugin-sdk-go/backend"
|
||||
"github.com/grafana/grafana/pkg/plugins"
|
||||
"github.com/grafana/grafana/pkg/plugins/backendplugin"
|
||||
"github.com/grafana/grafana/pkg/plugins/config"
|
||||
"github.com/grafana/grafana/pkg/plugins/manager/fakes"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
@ -18,7 +17,7 @@ import (
|
||||
func TestQueryData(t *testing.T) {
|
||||
t.Run("Empty registry should return not registered error", func(t *testing.T) {
|
||||
registry := fakes.NewFakePluginRegistry()
|
||||
client := ProvideService(registry, &config.PluginManagementCfg{})
|
||||
client := ProvideService(registry)
|
||||
_, err := client.QueryData(context.Background(), &backend.QueryDataRequest{})
|
||||
require.Error(t, err)
|
||||
require.ErrorIs(t, err, plugins.ErrPluginNotRegistered)
|
||||
@ -63,7 +62,7 @@ func TestQueryData(t *testing.T) {
|
||||
err := registry.Add(context.Background(), p)
|
||||
require.NoError(t, err)
|
||||
|
||||
client := ProvideService(registry, &config.PluginManagementCfg{})
|
||||
client := ProvideService(registry)
|
||||
_, err = client.QueryData(context.Background(), &backend.QueryDataRequest{
|
||||
PluginContext: backend.PluginContext{
|
||||
PluginID: "grafana",
|
||||
@ -79,7 +78,7 @@ func TestQueryData(t *testing.T) {
|
||||
func TestCheckHealth(t *testing.T) {
|
||||
t.Run("empty plugin registry should return plugin not registered error", func(t *testing.T) {
|
||||
registry := fakes.NewFakePluginRegistry()
|
||||
client := ProvideService(registry, &config.PluginManagementCfg{})
|
||||
client := ProvideService(registry)
|
||||
_, err := client.CheckHealth(context.Background(), &backend.CheckHealthRequest{})
|
||||
require.Error(t, err)
|
||||
require.ErrorIs(t, err, plugins.ErrPluginNotRegistered)
|
||||
@ -125,7 +124,7 @@ func TestCheckHealth(t *testing.T) {
|
||||
err := registry.Add(context.Background(), p)
|
||||
require.NoError(t, err)
|
||||
|
||||
client := ProvideService(registry, &config.PluginManagementCfg{})
|
||||
client := ProvideService(registry)
|
||||
_, err = client.CheckHealth(context.Background(), &backend.CheckHealthRequest{
|
||||
PluginContext: backend.PluginContext{
|
||||
PluginID: "grafana",
|
||||
@ -189,7 +188,7 @@ func TestCallResource(t *testing.T) {
|
||||
err := registry.Add(context.Background(), p)
|
||||
require.NoError(t, err)
|
||||
|
||||
client := ProvideService(registry, &config.PluginManagementCfg{})
|
||||
client := ProvideService(registry)
|
||||
|
||||
err = client.CallResource(context.Background(), req, sender)
|
||||
require.NoError(t, err)
|
||||
@ -252,7 +251,7 @@ func TestCallResource(t *testing.T) {
|
||||
err := registry.Add(context.Background(), p)
|
||||
require.NoError(t, err)
|
||||
|
||||
client := ProvideService(registry, &config.PluginManagementCfg{})
|
||||
client := ProvideService(registry)
|
||||
|
||||
err = client.CallResource(context.Background(), req, sender)
|
||||
require.NoError(t, err)
|
||||
@ -298,7 +297,7 @@ func TestCallResource(t *testing.T) {
|
||||
err := registry.Add(context.Background(), p)
|
||||
require.NoError(t, err)
|
||||
|
||||
client := ProvideService(registry, &config.PluginManagementCfg{})
|
||||
client := ProvideService(registry)
|
||||
|
||||
err = client.CallResource(context.Background(), req, sender)
|
||||
require.NoError(t, err)
|
||||
@ -366,7 +365,7 @@ func TestCallResource(t *testing.T) {
|
||||
err := registry.Add(context.Background(), p)
|
||||
require.NoError(t, err)
|
||||
|
||||
client := ProvideService(registry, &config.PluginManagementCfg{})
|
||||
client := ProvideService(registry)
|
||||
|
||||
err = client.CallResource(context.Background(), req, sender)
|
||||
require.NoError(t, err)
|
||||
|
@ -124,46 +124,4 @@ func TestService(t *testing.T) {
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
t.Run("App Sub URL has no effect on the path", func(t *testing.T) {
|
||||
for _, tc := range []struct {
|
||||
appSubURL string
|
||||
}{
|
||||
{
|
||||
appSubURL: "grafana",
|
||||
},
|
||||
{
|
||||
appSubURL: "/grafana",
|
||||
},
|
||||
{
|
||||
appSubURL: "grafana/",
|
||||
},
|
||||
{
|
||||
appSubURL: "/grafana/",
|
||||
},
|
||||
} {
|
||||
cfg := &config.PluginManagementCfg{GrafanaAppSubURL: tc.appSubURL}
|
||||
svc := ProvideService(cfg, pluginscdn.ProvideService(cfg))
|
||||
|
||||
dir := "/plugins/test-datasource"
|
||||
p := plugins.JSONData{ID: "test-datasource"}
|
||||
fs := fakes.NewFakePluginFiles(dir)
|
||||
|
||||
base, err := svc.Base(NewPluginInfo(p, plugins.ClassExternal, fs))
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, "public/plugins/test-datasource", base)
|
||||
|
||||
mod, err := svc.Module(NewPluginInfo(p, plugins.ClassExternal, fs))
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, "public/plugins/test-datasource/module.js", mod)
|
||||
|
||||
base, err = svc.Base(NewPluginInfo(p, plugins.ClassCore, fs))
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, "public/app/plugins/test-datasource", base)
|
||||
|
||||
mod, err = svc.Module(NewPluginInfo(p, plugins.ClassCore, fs))
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, "core:plugin/test-datasource", mod)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
@ -410,47 +410,6 @@ func TestLoader_Load(t *testing.T) {
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "Load a plugin with app sub url set",
|
||||
class: plugins.ClassExternal,
|
||||
cfg: &config.PluginManagementCfg{
|
||||
DevMode: true,
|
||||
GrafanaAppSubURL: "grafana",
|
||||
Features: featuremgmt.WithFeatures(),
|
||||
},
|
||||
pluginPaths: []string{"../testdata/unsigned-datasource"},
|
||||
want: []*plugins.Plugin{
|
||||
{
|
||||
JSONData: plugins.JSONData{
|
||||
ID: "test-datasource",
|
||||
Type: plugins.TypeDataSource,
|
||||
Name: "Test",
|
||||
Info: plugins.Info{
|
||||
Author: plugins.InfoLink{
|
||||
Name: "Grafana Labs",
|
||||
URL: "https://grafana.com",
|
||||
},
|
||||
Logos: plugins.Logos{
|
||||
Small: "public/img/icn-datasource.svg",
|
||||
Large: "public/img/icn-datasource.svg",
|
||||
},
|
||||
Description: "Test",
|
||||
},
|
||||
Dependencies: plugins.Dependencies{
|
||||
GrafanaVersion: "*",
|
||||
Plugins: []plugins.Dependency{},
|
||||
},
|
||||
Backend: true,
|
||||
State: plugins.ReleaseStateAlpha,
|
||||
},
|
||||
Class: plugins.ClassExternal,
|
||||
Module: "public/plugins/test-datasource/module.js",
|
||||
BaseURL: "public/plugins/test-datasource",
|
||||
FS: mustNewStaticFSForTests(t, filepath.Join(parentDir, "testdata/unsigned-datasource/plugin")),
|
||||
Signature: plugins.SignatureStatusUnsigned,
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
|
@ -1,7 +1,6 @@
|
||||
package angularinspector
|
||||
|
||||
import (
|
||||
"github.com/grafana/grafana/pkg/plugins/config"
|
||||
"github.com/grafana/grafana/pkg/plugins/manager/loader/angular/angulardetector"
|
||||
"github.com/grafana/grafana/pkg/plugins/manager/loader/angular/angularinspector"
|
||||
"github.com/grafana/grafana/pkg/services/featuremgmt"
|
||||
@ -12,11 +11,11 @@ type Service struct {
|
||||
angularinspector.Inspector
|
||||
}
|
||||
|
||||
func ProvideService(cfg *config.PluginManagementCfg, dynamic *angulardetectorsprovider.Dynamic) (*Service, error) {
|
||||
func ProvideService(features featuremgmt.FeatureToggles, dynamic *angulardetectorsprovider.Dynamic) (*Service, error) {
|
||||
var detectorsProvider angulardetector.DetectorsProvider
|
||||
var err error
|
||||
static := angularinspector.NewDefaultStaticDetectorsProvider()
|
||||
if cfg.Features != nil && cfg.Features.IsEnabledGlobally(featuremgmt.FlagPluginsDynamicAngularDetectionPatterns) {
|
||||
if features.IsEnabledGlobally(featuremgmt.FlagPluginsDynamicAngularDetectionPatterns) {
|
||||
detectorsProvider = angulardetector.SequenceDetectorsProvider{dynamic, static}
|
||||
} else {
|
||||
detectorsProvider = static
|
||||
|
@ -17,14 +17,14 @@ import (
|
||||
|
||||
func TestProvideService(t *testing.T) {
|
||||
t.Run("uses hardcoded inspector if feature flag is not present", func(t *testing.T) {
|
||||
pCfg := &config.PluginManagementCfg{Features: featuremgmt.WithFeatures()}
|
||||
features := featuremgmt.WithFeatures()
|
||||
dynamic, err := angulardetectorsprovider.ProvideDynamic(
|
||||
pCfg,
|
||||
&config.PluginManagementCfg{},
|
||||
angularpatternsstore.ProvideService(kvstore.NewFakeKVStore()),
|
||||
featuremgmt.WithFeatures(featuremgmt.FlagPluginsDynamicAngularDetectionPatterns),
|
||||
features,
|
||||
)
|
||||
require.NoError(t, err)
|
||||
inspector, err := ProvideService(pCfg, dynamic)
|
||||
inspector, err := ProvideService(features, dynamic)
|
||||
require.NoError(t, err)
|
||||
require.IsType(t, inspector.Inspector, &angularinspector.PatternsListInspector{})
|
||||
patternsListInspector := inspector.Inspector.(*angularinspector.PatternsListInspector)
|
||||
@ -33,16 +33,16 @@ func TestProvideService(t *testing.T) {
|
||||
})
|
||||
|
||||
t.Run("uses dynamic inspector with hardcoded fallback if feature flag is present", func(t *testing.T) {
|
||||
pCfg := &config.PluginManagementCfg{Features: featuremgmt.WithFeatures(
|
||||
features := featuremgmt.WithFeatures(
|
||||
featuremgmt.FlagPluginsDynamicAngularDetectionPatterns,
|
||||
)}
|
||||
)
|
||||
dynamic, err := angulardetectorsprovider.ProvideDynamic(
|
||||
pCfg,
|
||||
&config.PluginManagementCfg{},
|
||||
angularpatternsstore.ProvideService(kvstore.NewFakeKVStore()),
|
||||
featuremgmt.WithFeatures(),
|
||||
features,
|
||||
)
|
||||
require.NoError(t, err)
|
||||
inspector, err := ProvideService(pCfg, dynamic)
|
||||
inspector, err := ProvideService(features, dynamic)
|
||||
require.NoError(t, err)
|
||||
require.IsType(t, inspector.Inspector, &angularinspector.PatternsListInspector{})
|
||||
require.IsType(t, inspector.Inspector.(*angularinspector.PatternsListInspector).DetectorsProvider, angulardetector.SequenceDetectorsProvider{})
|
||||
|
@ -440,47 +440,6 @@ func TestLoader_Load(t *testing.T) {
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "Load a plugin with app sub url set",
|
||||
class: plugins.ClassExternal,
|
||||
cfg: &config.PluginManagementCfg{
|
||||
DevMode: true,
|
||||
GrafanaAppSubURL: "grafana",
|
||||
Features: featuremgmt.WithFeatures(),
|
||||
},
|
||||
pluginPaths: []string{filepath.Join(testDataDir(t), "unsigned-datasource")},
|
||||
want: []*plugins.Plugin{
|
||||
{
|
||||
JSONData: plugins.JSONData{
|
||||
ID: "test-datasource",
|
||||
Type: plugins.TypeDataSource,
|
||||
Name: "Test",
|
||||
Info: plugins.Info{
|
||||
Author: plugins.InfoLink{
|
||||
Name: "Grafana Labs",
|
||||
URL: "https://grafana.com",
|
||||
},
|
||||
Logos: plugins.Logos{
|
||||
Small: "public/img/icn-datasource.svg",
|
||||
Large: "public/img/icn-datasource.svg",
|
||||
},
|
||||
Description: "Test",
|
||||
},
|
||||
Dependencies: plugins.Dependencies{
|
||||
GrafanaVersion: "*",
|
||||
Plugins: []plugins.Dependency{},
|
||||
},
|
||||
Backend: true,
|
||||
State: plugins.ReleaseStateAlpha,
|
||||
},
|
||||
Class: plugins.ClassExternal,
|
||||
Module: "public/plugins/test-datasource/module.js",
|
||||
BaseURL: "public/plugins/test-datasource",
|
||||
FS: mustNewStaticFSForTests(t, filepath.Join(testDataDir(t), "unsigned-datasource/plugin")),
|
||||
Signature: plugins.SignatureStatusUnsigned,
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
for _, tt := range tests {
|
||||
reg := fakes.NewFakePluginRegistry()
|
||||
|
@ -167,7 +167,7 @@ type AsExternal struct {
|
||||
cfg *config.PluginManagementCfg
|
||||
}
|
||||
|
||||
// NewDisablePluginsStep returns a new DisablePlugins.
|
||||
// NewAsExternalStep returns a new DisablePlugins.
|
||||
func NewAsExternalStep(cfg *config.PluginManagementCfg) *AsExternal {
|
||||
return &AsExternal{
|
||||
cfg: cfg,
|
||||
|
@ -22,11 +22,6 @@ func ProvidePluginManagementConfig(cfg *setting.Cfg, settingProvider setting.Pro
|
||||
allowedUnsigned = strings.Split(plugins.KeyValue("allow_loading_unsigned_plugins").Value(), ",")
|
||||
}
|
||||
|
||||
tracingCfg, err := newTracingCfg(cfg)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("new opentelemetry cfg: %w", err)
|
||||
}
|
||||
|
||||
return config.NewPluginManagementCfg(
|
||||
settingProvider.KeyValue("", "app_mode").MustBool(cfg.Env == setting.Dev),
|
||||
cfg.PluginsPath,
|
||||
@ -34,8 +29,6 @@ func ProvidePluginManagementConfig(cfg *setting.Cfg, settingProvider setting.Pro
|
||||
allowedUnsigned,
|
||||
cfg.PluginsCDNURLTemplate,
|
||||
cfg.AppURL,
|
||||
cfg.AppSubURL,
|
||||
tracingCfg,
|
||||
features,
|
||||
cfg.AngularSupportEnabled,
|
||||
cfg.GrafanaComURL,
|
||||
|
@ -9,7 +9,6 @@ import (
|
||||
"github.com/grafana/grafana/pkg/plugins/auth"
|
||||
"github.com/grafana/grafana/pkg/plugins/backendplugin/coreplugin"
|
||||
"github.com/grafana/grafana/pkg/plugins/backendplugin/provider"
|
||||
pCfg "github.com/grafana/grafana/pkg/plugins/config"
|
||||
"github.com/grafana/grafana/pkg/plugins/envvars"
|
||||
"github.com/grafana/grafana/pkg/plugins/log"
|
||||
"github.com/grafana/grafana/pkg/plugins/manager/client"
|
||||
@ -136,7 +135,7 @@ var WireExtensionSet = wire.NewSet(
|
||||
)
|
||||
|
||||
func ProvideClientDecorator(
|
||||
cfg *setting.Cfg, pCfg *pCfg.PluginManagementCfg,
|
||||
cfg *setting.Cfg,
|
||||
pluginRegistry registry.Service,
|
||||
oAuthTokenService oauthtoken.OAuthTokenService,
|
||||
tracer tracing.Tracer,
|
||||
@ -144,16 +143,16 @@ func ProvideClientDecorator(
|
||||
features *featuremgmt.FeatureManager,
|
||||
promRegisterer prometheus.Registerer,
|
||||
) (*client.Decorator, error) {
|
||||
return NewClientDecorator(cfg, pCfg, pluginRegistry, oAuthTokenService, tracer, cachingService, features, promRegisterer, pluginRegistry)
|
||||
return NewClientDecorator(cfg, pluginRegistry, oAuthTokenService, tracer, cachingService, features, promRegisterer, pluginRegistry)
|
||||
}
|
||||
|
||||
func NewClientDecorator(
|
||||
cfg *setting.Cfg, pCfg *pCfg.PluginManagementCfg,
|
||||
cfg *setting.Cfg,
|
||||
pluginRegistry registry.Service, oAuthTokenService oauthtoken.OAuthTokenService,
|
||||
tracer tracing.Tracer, cachingService caching.CachingService, features *featuremgmt.FeatureManager,
|
||||
promRegisterer prometheus.Registerer, registry registry.Service,
|
||||
) (*client.Decorator, error) {
|
||||
c := client.ProvideService(pluginRegistry, pCfg)
|
||||
c := client.ProvideService(pluginRegistry)
|
||||
middlewares := CreateMiddlewares(cfg, oAuthTokenService, tracer, cachingService, features, promRegisterer, registry)
|
||||
return client.NewDecorator(c, middlewares...)
|
||||
}
|
||||
|
@ -8,7 +8,7 @@ import (
|
||||
"github.com/grafana/grafana/pkg/plugins"
|
||||
"github.com/grafana/grafana/pkg/plugins/backendplugin/pluginextensionv2"
|
||||
"github.com/grafana/grafana/pkg/plugins/backendplugin/provider"
|
||||
pluginscfg "github.com/grafana/grafana/pkg/plugins/config"
|
||||
"github.com/grafana/grafana/pkg/plugins/config"
|
||||
"github.com/grafana/grafana/pkg/plugins/envvars"
|
||||
"github.com/grafana/grafana/pkg/plugins/manager/loader"
|
||||
"github.com/grafana/grafana/pkg/plugins/manager/pipeline/bootstrap"
|
||||
@ -21,12 +21,11 @@ import (
|
||||
"github.com/grafana/grafana/pkg/plugins/manager/sources"
|
||||
"github.com/grafana/grafana/pkg/services/pluginsintegration/pipeline"
|
||||
"github.com/grafana/grafana/pkg/services/rendering"
|
||||
"github.com/grafana/grafana/pkg/setting"
|
||||
)
|
||||
|
||||
func ProvideService(cfg *setting.Cfg, pCfg *pluginscfg.PluginManagementCfg, pluginEnvProvider envvars.Provider, registry registry.Service,
|
||||
licensing plugins.Licensing) (*Manager, error) {
|
||||
l, err := createLoader(cfg, pCfg, pluginEnvProvider, registry, licensing)
|
||||
func ProvideService(cfg *config.PluginManagementCfg, pluginEnvProvider envvars.Provider,
|
||||
registry registry.Service) (*Manager, error) {
|
||||
l, err := createLoader(cfg, pluginEnvProvider, registry)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@ -35,14 +34,14 @@ func ProvideService(cfg *setting.Cfg, pCfg *pluginscfg.PluginManagementCfg, plug
|
||||
}
|
||||
|
||||
type Manager struct {
|
||||
cfg *setting.Cfg
|
||||
cfg *config.PluginManagementCfg
|
||||
loader loader.Service
|
||||
log log.Logger
|
||||
|
||||
renderer *Plugin
|
||||
}
|
||||
|
||||
func NewManager(cfg *setting.Cfg, loader loader.Service) *Manager {
|
||||
func NewManager(cfg *config.PluginManagementCfg, loader loader.Service) *Manager {
|
||||
return &Manager{
|
||||
cfg: cfg,
|
||||
loader: loader,
|
||||
@ -104,9 +103,9 @@ func (m *Manager) Renderer(ctx context.Context) (rendering.Plugin, bool) {
|
||||
return nil, false
|
||||
}
|
||||
|
||||
func createLoader(cfg *setting.Cfg, pCfg *pluginscfg.PluginManagementCfg, pluginEnvProvider envvars.Provider,
|
||||
pr registry.Service, l plugins.Licensing) (loader.Service, error) {
|
||||
d := discovery.New(pCfg, discovery.Opts{
|
||||
func createLoader(cfg *config.PluginManagementCfg, pluginEnvProvider envvars.Provider,
|
||||
pr registry.Service) (loader.Service, error) {
|
||||
d := discovery.New(cfg, discovery.Opts{
|
||||
FindFilterFuncs: []discovery.FindFilterFunc{
|
||||
discovery.NewPermittedPluginTypesFilterStep([]plugins.Type{plugins.TypeRenderer}),
|
||||
func(ctx context.Context, class plugins.Class, bundles []*plugins.FoundBundle) ([]*plugins.FoundBundle, error) {
|
||||
@ -114,21 +113,21 @@ func createLoader(cfg *setting.Cfg, pCfg *pluginscfg.PluginManagementCfg, plugin
|
||||
},
|
||||
},
|
||||
})
|
||||
b := bootstrap.New(pCfg, bootstrap.Opts{
|
||||
b := bootstrap.New(cfg, bootstrap.Opts{
|
||||
DecorateFuncs: []bootstrap.DecorateFunc{}, // no decoration required
|
||||
})
|
||||
v := validation.New(pCfg, validation.Opts{
|
||||
v := validation.New(cfg, validation.Opts{
|
||||
ValidateFuncs: []validation.ValidateFunc{
|
||||
validation.SignatureValidationStep(signature.NewValidator(signature.NewUnsignedAuthorizer(pCfg))),
|
||||
validation.SignatureValidationStep(signature.NewValidator(signature.NewUnsignedAuthorizer(cfg))),
|
||||
},
|
||||
})
|
||||
i := initialization.New(pCfg, initialization.Opts{
|
||||
i := initialization.New(cfg, initialization.Opts{
|
||||
InitializeFuncs: []initialization.InitializeFunc{
|
||||
initialization.BackendClientInitStep(pluginEnvProvider, provider.New(provider.RendererProvider)),
|
||||
initialization.PluginRegistrationStep(pr),
|
||||
},
|
||||
})
|
||||
t, err := termination.New(pCfg, termination.Opts{
|
||||
t, err := termination.New(cfg, termination.Opts{
|
||||
TerminateFuncs: []termination.TerminateFunc{
|
||||
termination.DeregisterStep(pr),
|
||||
},
|
||||
|
@ -9,8 +9,8 @@ import (
|
||||
"github.com/stretchr/testify/require"
|
||||
|
||||
"github.com/grafana/grafana/pkg/plugins"
|
||||
"github.com/grafana/grafana/pkg/plugins/config"
|
||||
"github.com/grafana/grafana/pkg/plugins/manager/fakes"
|
||||
"github.com/grafana/grafana/pkg/setting"
|
||||
)
|
||||
|
||||
func TestRenderer(t *testing.T) {
|
||||
@ -33,9 +33,7 @@ func TestRenderer(t *testing.T) {
|
||||
return nil, nil
|
||||
},
|
||||
}
|
||||
cfg := &setting.Cfg{
|
||||
PluginsPath: filepath.Join(testdataDir),
|
||||
}
|
||||
cfg := &config.PluginManagementCfg{PluginsPath: filepath.Join(testdataDir)}
|
||||
|
||||
m := NewManager(cfg, loader)
|
||||
|
||||
@ -67,9 +65,7 @@ func TestRenderer(t *testing.T) {
|
||||
return nil, nil
|
||||
},
|
||||
}
|
||||
cfg := &setting.Cfg{
|
||||
PluginsPath: filepath.Join(testdataDir),
|
||||
}
|
||||
cfg := &config.PluginManagementCfg{PluginsPath: filepath.Join(testdataDir)}
|
||||
|
||||
m := NewManager(cfg, loader)
|
||||
|
||||
|
@ -5,7 +5,6 @@ import (
|
||||
"errors"
|
||||
|
||||
"github.com/grafana/grafana/pkg/plugins/auth"
|
||||
"github.com/grafana/grafana/pkg/plugins/config"
|
||||
"github.com/grafana/grafana/pkg/plugins/log"
|
||||
"github.com/grafana/grafana/pkg/plugins/pfs"
|
||||
"github.com/grafana/grafana/pkg/services/accesscontrol"
|
||||
@ -21,9 +20,9 @@ type Service struct {
|
||||
settingsSvc pluginsettings.Service
|
||||
}
|
||||
|
||||
func ProvideService(cfg *config.PluginManagementCfg, reg extsvcauth.ExternalServiceRegistry, settingsSvc pluginsettings.Service) *Service {
|
||||
func ProvideService(features featuremgmt.FeatureToggles, reg extsvcauth.ExternalServiceRegistry, settingsSvc pluginsettings.Service) *Service {
|
||||
s := &Service{
|
||||
featureEnabled: cfg.Features.IsEnabledGlobally(featuremgmt.FlagExternalServiceAccounts),
|
||||
featureEnabled: features.IsEnabledGlobally(featuremgmt.FlagExternalServiceAccounts),
|
||||
log: log.New("plugins.external.registration"),
|
||||
reg: reg,
|
||||
settingsSvc: settingsSvc,
|
||||
|
@ -70,7 +70,7 @@ func CreateIntegrationTestCtx(t *testing.T, cfg *setting.Cfg, coreRegistry *core
|
||||
require.NoError(t, err)
|
||||
|
||||
return &IntegrationTestCtx{
|
||||
PluginClient: client.ProvideService(reg, pCfg),
|
||||
PluginClient: client.ProvideService(reg),
|
||||
PluginStore: ps,
|
||||
PluginRegistry: reg,
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user