Feature: Allow to skip plugin loading (#74840)

This commit is contained in:
Andres Martinez Gotor
2023-09-14 12:58:12 +02:00
committed by GitHub
parent 05f01dee0c
commit 96b55ea37c
12 changed files with 125 additions and 4 deletions

View File

@@ -243,6 +243,7 @@ type Cfg struct {
PluginAdminExternalManageEnabled bool
PluginForcePublicKeyDownload bool
PluginSkipPublicKeyDownload bool
DisablePlugins []string
PluginsCDNURLTemplate string
PluginLogBackendRequests bool

View File

@@ -40,6 +40,14 @@ func (cfg *Cfg) readPluginSettings(iniFile *ini.File) error {
cfg.PluginsAllowUnsigned = append(cfg.PluginsAllowUnsigned, plug)
}
disablePlugins := pluginsSection.Key("disable_plugins").MustString("")
for _, plug := range strings.Split(disablePlugins, ",") {
plug = strings.TrimSpace(plug)
if plug != "" {
cfg.DisablePlugins = append(cfg.DisablePlugins, plug)
}
}
cfg.PluginCatalogURL = pluginsSection.Key("plugin_catalog_url").MustString("https://grafana.com/grafana/plugins/")
cfg.PluginAdminEnabled = pluginsSection.Key("plugin_admin_enabled").MustBool(true)
cfg.PluginAdminExternalManageEnabled = pluginsSection.Key("plugin_admin_external_manage_enabled").MustBool(false)
@@ -49,6 +57,8 @@ func (cfg *Cfg) readPluginSettings(iniFile *ini.File) error {
plug = strings.TrimSpace(plug)
cfg.PluginCatalogHiddenPlugins = append(cfg.PluginCatalogHiddenPlugins, plug)
}
// Pull disablep plugins from the catalog
cfg.PluginCatalogHiddenPlugins = append(cfg.PluginCatalogHiddenPlugins, cfg.DisablePlugins...)
// Plugins CDN settings
cfg.PluginsCDNURLTemplate = strings.TrimRight(pluginsSection.Key("cdn_base_url").MustString(""), "/")

View File

@@ -41,3 +41,20 @@ func TestPluginSettings(t *testing.T) {
require.Equal(t, ps["plugin2"]["key3"], "value3")
require.Equal(t, ps["plugin2"]["key4"], "value4")
}
func Test_readPluginSettings(t *testing.T) {
t.Run("should parse disable_plugins", func(t *testing.T) {
cfg := NewCfg()
sec, err := cfg.Raw.NewSection("plugins")
require.NoError(t, err)
_, err = sec.NewKey("disable_plugins", "plugin1,plugin2")
require.NoError(t, err)
_, err = sec.NewKey("plugin_catalog_hidden_plugins", "plugin3")
require.NoError(t, err)
err = cfg.readPluginSettings(cfg.Raw)
require.NoError(t, err)
require.Equal(t, []string{"plugin1", "plugin2"}, cfg.DisablePlugins)
require.Equal(t, []string{"plugin3", "plugin1", "plugin2"}, cfg.PluginCatalogHiddenPlugins)
})
}