PluginManager: Increase DI priority (#32111)

* PluginManager: Increase DI priority

Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>

* BackendPluginManager: Don't rely on Init

Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>

* BackendPluginManager: Fix tests

Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>

* Simplify code

Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>

* Remove stale field

Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>

* Simplify code

Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>

Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
pull/32156/head
Arve Knudsen 4 years ago committed by GitHub
parent 862cd473eb
commit d3544d6df1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 17
      pkg/plugins/backendplugin/manager/manager.go
  2. 2
      pkg/plugins/backendplugin/manager/manager_test.go
  3. 19
      pkg/plugins/backendplugin/manager/plugin_settings.go
  4. 17
      pkg/plugins/backendplugin/manager/plugin_settings_test.go
  5. 5
      pkg/plugins/manager/manager.go

@ -27,7 +27,10 @@ import (
)
func init() {
registry.RegisterServiceWithPriority(&manager{}, registry.MediumHigh)
registry.RegisterServiceWithPriority(&manager{
logger: log.New("plugins.backend"),
plugins: map[string]backendplugin.Plugin{},
}, registry.MediumHigh)
}
type manager struct {
@ -37,14 +40,9 @@ type manager struct {
pluginsMu sync.RWMutex
plugins map[string]backendplugin.Plugin
logger log.Logger
pluginSettings map[string]pluginSettings
}
func (m *manager) Init() error {
m.plugins = make(map[string]backendplugin.Plugin)
m.logger = log.New("plugins.backend")
m.pluginSettings = extractPluginSettings(m.Cfg)
return nil
}
@ -65,11 +63,6 @@ func (m *manager) Register(pluginID string, factory backendplugin.PluginFactoryF
return fmt.Errorf("backend plugin %s already registered", pluginID)
}
pluginSettings := pluginSettings{}
if ps, exists := m.pluginSettings[pluginID]; exists {
pluginSettings = ps
}
hostEnv := []string{
fmt.Sprintf("GF_VERSION=%s", m.Cfg.BuildVersion),
fmt.Sprintf("GF_EDITION=%s", m.License.Edition()),
@ -89,7 +82,7 @@ func (m *manager) Register(pluginID string, factory backendplugin.PluginFactoryF
}
hostEnv = append(hostEnv, m.getAWSEnvironmentVariables()...)
pluginSettings := getPluginSettings(pluginID, m.Cfg)
env := pluginSettings.ToEnv("GF_PLUGIN", hostEnv)
pluginLogger := m.logger.New("pluginId", pluginID)

@ -294,6 +294,8 @@ func newManagerScenario(t *testing.T, managed bool, fn func(t *testing.T, ctx *m
Cfg: cfg,
License: license,
PluginRequestValidator: validator,
logger: log.New("test"),
plugins: map[string]backendplugin.Plugin{},
},
}

@ -20,20 +20,15 @@ func (ps pluginSettings) ToEnv(prefix string, hostEnv []string) []string {
return env
}
func extractPluginSettings(cfg *setting.Cfg) map[string]pluginSettings {
psMap := map[string]pluginSettings{}
for pluginID, settings := range cfg.PluginSettings {
ps := pluginSettings{}
for k, v := range settings {
if k == "path" || strings.ToLower(k) == "id" {
continue
}
ps[k] = v
func getPluginSettings(plugID string, cfg *setting.Cfg) pluginSettings {
ps := pluginSettings{}
for k, v := range cfg.PluginSettings[plugID] {
if k == "path" || strings.ToLower(k) == "id" {
continue
}
psMap[pluginID] = ps
ps[k] = v
}
return psMap
return ps
}

@ -19,25 +19,24 @@ func TestPluginSettings(t *testing.T) {
},
}
ps := extractPluginSettings(cfg)
require.Len(t, ps, 1)
require.Len(t, ps["plugin"], 2)
ps := getPluginSettings("plugin", cfg)
require.Len(t, ps, 2)
t.Run("Should skip path setting", func(t *testing.T) {
cfg.PluginSettings["plugin"]["path"] = "value"
ps := extractPluginSettings(cfg)
require.Len(t, ps["plugin"], 2)
ps := getPluginSettings("plugin", cfg)
require.Len(t, ps, 2)
})
t.Run("Should skip id setting", func(t *testing.T) {
cfg.PluginSettings["plugin"]["id"] = "value"
ps := extractPluginSettings(cfg)
require.Len(t, ps["plugin"], 2)
ps := getPluginSettings("plugin", cfg)
require.Len(t, ps, 2)
})
t.Run("Should return expected environment variables from plugin settings ", func(t *testing.T) {
ps := extractPluginSettings(cfg)
env := ps["plugin"].ToEnv("GF_PLUGIN", []string{"GF_VERSION=6.7.0"})
ps := getPluginSettings("plugin", cfg)
env := ps.ToEnv("GF_PLUGIN", []string{"GF_VERSION=6.7.0"})
sort.Strings(env)
require.Len(t, env, 3)
require.EqualValues(t, []string{"GF_PLUGIN_KEY1=value1", "GF_PLUGIN_KEY2=value2", "GF_VERSION=6.7.0"}, env)

@ -68,8 +68,9 @@ type PluginManager struct {
func init() {
registry.Register(&registry.Descriptor{
Name: "PluginManager",
Instance: newManager(nil),
Name: "PluginManager",
Instance: newManager(nil),
InitPriority: registry.MediumHigh,
})
}

Loading…
Cancel
Save