Feature: Allow to load a core plugin as external (#75157)

This commit is contained in:
Andres Martinez Gotor
2023-09-22 10:50:13 +02:00
committed by GitHub
parent e0659c05da
commit 61cdfba87a
9 changed files with 139 additions and 0 deletions
@@ -5,6 +5,9 @@ import (
"github.com/grafana/grafana/pkg/plugins"
"github.com/grafana/grafana/pkg/plugins/config"
"github.com/grafana/grafana/pkg/plugins/log"
"github.com/grafana/grafana/pkg/services/featuremgmt"
"github.com/grafana/grafana/pkg/setting"
"github.com/stretchr/testify/require"
)
@@ -43,3 +46,59 @@ func TestSkipPlugins(t *testing.T) {
require.Len(t, filtered, 1)
require.Equal(t, filtered[0].Primary.JSONData.ID, "plugin3")
}
func TestAsExternal(t *testing.T) {
bundles := []*plugins.FoundBundle{
{
Primary: plugins.FoundPlugin{
JSONData: plugins.JSONData{
ID: "plugin1",
},
},
},
{
Primary: plugins.FoundPlugin{
JSONData: plugins.JSONData{
ID: "plugin2",
},
},
},
}
t.Run("should skip a core plugin", func(t *testing.T) {
cfg := &config.Cfg{
Features: featuremgmt.WithFeatures(featuremgmt.FlagExternalCorePlugins),
PluginSettings: setting.PluginSettings{
"plugin1": map[string]string{
"as_external": "true",
},
},
}
s := NewAsExternalStep(cfg)
filtered, err := s.Filter(plugins.ClassCore, bundles)
require.NoError(t, err)
require.Len(t, filtered, 1)
require.Equal(t, filtered[0].Primary.JSONData.ID, "plugin2")
})
t.Run("should log an error if an external plugin is not available", func(t *testing.T) {
cfg := &config.Cfg{
Features: featuremgmt.WithFeatures(featuremgmt.FlagExternalCorePlugins),
PluginSettings: setting.PluginSettings{
"plugin3": map[string]string{
"as_external": "true",
},
},
}
fakeLogger := log.NewTestLogger()
s := NewAsExternalStep(cfg)
s.log = fakeLogger
filtered, err := s.Filter(plugins.ClassExternal, bundles)
require.NoError(t, err)
require.Len(t, filtered, 2)
require.Equal(t, fakeLogger.ErrorLogs.Calls, 1)
})
}