Skip to content

Commit f76b9f2

Browse files
authored
Plugins: Add hide_angular_deprecation setting (#79296)
* Add plugins.hide_angular_deprecation config ini * Add more tests * Remove the ability to use [plugins.*] hide_angular_deprecation
1 parent f040a83 commit f76b9f2

File tree

8 files changed

+40
-23
lines changed

8 files changed

+40
-23
lines changed

conf/defaults.ini

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1533,6 +1533,8 @@ public_key_retrieval_on_startup = false
15331533
disable_plugins =
15341534
# Auth token for plugin installations and removal in managed instances
15351535
install_token =
1536+
# Comma separated list of plugin ids for which angular deprecation UI should be disabled
1537+
hide_angular_deprecation =
15361538

15371539
#################################### Grafana Live ##########################################
15381540
[live]

pkg/plugins/config/config.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,13 +45,14 @@ type Cfg struct {
4545

4646
Features plugins.FeatureToggles
4747

48-
AngularSupportEnabled bool
48+
AngularSupportEnabled bool
49+
HideAngularDeprecation []string
4950
}
5051

5152
func NewCfg(devMode bool, pluginsPath string, pluginSettings setting.PluginSettings, pluginsAllowUnsigned []string,
5253
awsAllowedAuthProviders []string, awsAssumeRoleEnabled bool, awsExternalId string, azure *azsettings.AzureSettings, secureSocksDSProxy setting.SecureSocksDSProxySettings,
5354
grafanaVersion string, logDatasourceRequests bool, pluginsCDNURLTemplate string, appURL string, appSubURL string, tracing Tracing, features plugins.FeatureToggles, angularSupportEnabled bool,
54-
grafanaComURL string, disablePlugins []string) *Cfg {
55+
grafanaComURL string, disablePlugins []string, hideAngularDeprecation []string) *Cfg {
5556
return &Cfg{
5657
log: log.New("plugin.cfg"),
5758
PluginsPath: pluginsPath,
@@ -73,5 +74,6 @@ func NewCfg(devMode bool, pluginsPath string, pluginSettings setting.PluginSetti
7374
GrafanaAppSubURL: appSubURL,
7475
Features: features,
7576
AngularSupportEnabled: angularSupportEnabled,
77+
HideAngularDeprecation: hideAngularDeprecation,
7678
}
7779
}

pkg/plugins/manager/pipeline/validation/steps.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package validation
33
import (
44
"context"
55
"errors"
6+
"slices"
67
"time"
78

89
"github.com/grafana/grafana/pkg/plugins"
@@ -108,6 +109,6 @@ func (a *AngularDetector) Validate(ctx context.Context, p *plugins.Plugin) error
108109
return errors.New("angular plugins are not supported")
109110
}
110111
}
111-
p.Angular.HideDeprecation = a.cfg.PluginSettings[p.ID]["hide_angular_deprecation"] == "true"
112+
p.Angular.HideDeprecation = slices.Contains(a.cfg.HideAngularDeprecation, p.ID)
112113
return nil
113114
}

pkg/services/pluginsintegration/config/config.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ func ProvideConfig(settingProvider setting.Provider, grafanaCfg *setting.Cfg, fe
4747
grafanaCfg.AngularSupportEnabled,
4848
grafanaCfg.GrafanaComURL,
4949
grafanaCfg.DisablePlugins,
50+
grafanaCfg.HideAngularDeprecation,
5051
), nil
5152
}
5253

pkg/services/pluginsintegration/loader/loader_test.go

Lines changed: 15 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1303,25 +1303,21 @@ func TestLoader_HideAngularDeprecation(t *testing.T) {
13031303
cfg *config.Cfg
13041304
expHideAngularDeprecation bool
13051305
}{
1306-
{name: `without "hide_angular_deprecation" setting`, cfg: &config.Cfg{
1307-
AngularSupportEnabled: true,
1308-
PluginSettings: setting.PluginSettings{},
1309-
Features: featuremgmt.WithFeatures(),
1310-
}},
1311-
{name: `with "hide_angular_deprecation" = true`, cfg: &config.Cfg{
1312-
AngularSupportEnabled: true,
1313-
PluginSettings: setting.PluginSettings{
1314-
"plugin-id": map[string]string{"hide_angular_deprecation": "true"},
1315-
},
1316-
Features: featuremgmt.WithFeatures(),
1317-
}},
1318-
{name: `with "hide_angular_deprecation" = false`, cfg: &config.Cfg{
1319-
AngularSupportEnabled: true,
1320-
PluginSettings: setting.PluginSettings{
1321-
"plugin-id": map[string]string{"hide_angular_deprecation": "false"},
1322-
},
1323-
Features: featuremgmt.WithFeatures(),
1324-
}},
1306+
{name: "with plugin id in HideAngularDeprecation list", cfg: &config.Cfg{
1307+
AngularSupportEnabled: true,
1308+
HideAngularDeprecation: []string{"one-app", "two-panel", "test-datasource", "three-datasource"},
1309+
Features: featuremgmt.WithFeatures(),
1310+
}, expHideAngularDeprecation: true},
1311+
{name: "without plugin id in HideAngularDeprecation list", cfg: &config.Cfg{
1312+
AngularSupportEnabled: true,
1313+
HideAngularDeprecation: []string{"one-app", "two-panel", "three-datasource"},
1314+
Features: featuremgmt.WithFeatures(),
1315+
}, expHideAngularDeprecation: false},
1316+
{name: "with empty HideAngularDeprecation", cfg: &config.Cfg{
1317+
AngularSupportEnabled: true,
1318+
HideAngularDeprecation: nil,
1319+
Features: featuremgmt.WithFeatures(),
1320+
}, expHideAngularDeprecation: false},
13251321
} {
13261322
t.Run(tc.name, func(t *testing.T) {
13271323
l := newLoaderWithOpts(t, tc.cfg, loaderDepOpts{

pkg/setting/setting.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -246,6 +246,7 @@ type Cfg struct {
246246
PluginForcePublicKeyDownload bool
247247
PluginSkipPublicKeyDownload bool
248248
DisablePlugins []string
249+
HideAngularDeprecation []string
249250
PluginInstallToken string
250251

251252
PluginsCDNURLTemplate string

pkg/setting/setting_plugins.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,15 @@ func (cfg *Cfg) readPluginSettings(iniFile *ini.File) error {
4848
}
4949
}
5050

51+
hideAngularDeprecation := pluginsSection.Key("hide_angular_deprecation").MustString("")
52+
for _, id := range strings.Split(hideAngularDeprecation, ",") {
53+
id = strings.TrimSpace(id)
54+
if id == "" {
55+
continue
56+
}
57+
cfg.HideAngularDeprecation = append(cfg.HideAngularDeprecation, id)
58+
}
59+
5160
cfg.PluginCatalogURL = pluginsSection.Key("plugin_catalog_url").MustString("https://grafana.com/grafana/plugins/")
5261
cfg.PluginAdminEnabled = pluginsSection.Key("plugin_admin_enabled").MustBool(true)
5362
cfg.PluginAdminExternalManageEnabled = pluginsSection.Key("plugin_admin_external_manage_enabled").MustBool(false)

pkg/setting/setting_plugins_test.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,18 +43,23 @@ func TestPluginSettings(t *testing.T) {
4343
}
4444

4545
func Test_readPluginSettings(t *testing.T) {
46-
t.Run("should parse disable_plugins", func(t *testing.T) {
46+
t.Run("should parse plugin ids", func(t *testing.T) {
4747
cfg := NewCfg()
4848
sec, err := cfg.Raw.NewSection("plugins")
4949
require.NoError(t, err)
5050
_, err = sec.NewKey("disable_plugins", "plugin1,plugin2")
5151
require.NoError(t, err)
52+
5253
_, err = sec.NewKey("plugin_catalog_hidden_plugins", "plugin3")
5354
require.NoError(t, err)
5455

56+
_, err = sec.NewKey("hide_angular_deprecation", "a,b,c")
57+
require.NoError(t, err)
58+
5559
err = cfg.readPluginSettings(cfg.Raw)
5660
require.NoError(t, err)
5761
require.Equal(t, []string{"plugin1", "plugin2"}, cfg.DisablePlugins)
5862
require.Equal(t, []string{"plugin3", "plugin1", "plugin2"}, cfg.PluginCatalogHiddenPlugins)
63+
require.Equal(t, []string{"a", "b", "c"}, cfg.HideAngularDeprecation)
5964
})
6065
}

0 commit comments

Comments
 (0)