mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
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>
This commit is contained in:
parent
862cd473eb
commit
d3544d6df1
@ -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(®istry.Descriptor{
|
||||
Name: "PluginManager",
|
||||
Instance: newManager(nil),
|
||||
Name: "PluginManager",
|
||||
Instance: newManager(nil),
|
||||
InitPriority: registry.MediumHigh,
|
||||
})
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user