Preinstall: Allow to set a download URL (#96535)

This commit is contained in:
Andres Martinez Gotor
2024-11-29 16:02:33 +01:00
committed by GitHub
parent b544b8afff
commit e0935246a3
11 changed files with 222 additions and 76 deletions
+1
View File
@@ -543,6 +543,7 @@ type UnifiedStorageConfig struct {
type InstallPlugin struct {
ID string `json:"id"`
Version string `json:"version"`
URL string `json:"url,omitempty"`
}
// AddChangePasswordLink returns if login form is disabled or not since
+10 -5
View File
@@ -29,7 +29,7 @@ func extractPluginSettings(sections []*ini.Section) PluginSettings {
var (
defaultPreinstallPlugins = map[string]InstallPlugin{
// Default preinstalled plugins
"grafana-lokiexplore-app": {"grafana-lokiexplore-app", ""},
"grafana-lokiexplore-app": {"grafana-lokiexplore-app", "", ""},
}
)
@@ -58,11 +58,16 @@ func (cfg *Cfg) readPluginSettings(iniFile *ini.File) error {
for _, plugin := range rawInstallPlugins {
parts := strings.Split(plugin, "@")
id := parts[0]
v := ""
if len(parts) == 2 {
v = parts[1]
version := ""
url := ""
if len(parts) > 1 {
version = parts[1]
if len(parts) > 2 {
url = parts[2]
}
}
preinstallPlugins[id] = InstallPlugin{id, v}
preinstallPlugins[id] = InstallPlugin{id, version, url}
}
// Remove from the list the plugins that have been disabled
for _, disabledPlugin := range cfg.DisablePlugins {
+13 -3
View File
@@ -120,12 +120,12 @@ func Test_readPluginSettings(t *testing.T) {
{
name: "should add the default preinstalled plugin and the one defined",
rawInput: "plugin1",
expected: append(defaultPreinstallPluginsList, InstallPlugin{"plugin1", ""}),
expected: append(defaultPreinstallPluginsList, InstallPlugin{"plugin1", "", ""}),
},
{
name: "should add the default preinstalled plugin and the one defined with version",
rawInput: "plugin1@1.0.0",
expected: append(defaultPreinstallPluginsList, InstallPlugin{"plugin1", "1.0.0"}),
expected: append(defaultPreinstallPluginsList, InstallPlugin{"plugin1", "1.0.0", ""}),
},
{
name: "it should remove the disabled plugin",
@@ -149,7 +149,17 @@ func Test_readPluginSettings(t *testing.T) {
name: "should mark preinstall as sync",
rawInput: "plugin1",
disableAsync: true,
expected: append(defaultPreinstallPluginsList, InstallPlugin{"plugin1", ""}),
expected: append(defaultPreinstallPluginsList, InstallPlugin{"plugin1", "", ""}),
},
{
name: "should parse a plugin with version and URL",
rawInput: "plugin1@1.0.1@https://example.com/plugin1.tar.gz",
expected: append(defaultPreinstallPluginsList, InstallPlugin{"plugin1", "1.0.1", "https://example.com/plugin1.tar.gz"}),
},
{
name: "should parse a plugin with URL",
rawInput: "plugin1@@https://example.com/plugin1.tar.gz",
expected: append(defaultPreinstallPluginsList, InstallPlugin{"plugin1", "", "https://example.com/plugin1.tar.gz"}),
},
}
for _, tc := range tests {