From 70a4fd8a2105fdf8dfbe448a0bf3d4e896dfb55b Mon Sep 17 00:00:00 2001 From: "Grot (@grafanabot)" <43478413+grafanabot@users.noreply.github.com> Date: Thu, 30 Sep 2021 03:05:55 -0400 Subject: [PATCH] Plugins Catalog: Make the catalog the default way to interact with plugins (#39779) (#39822) * chore(Plugins/Admin): make the Plugins Catalog the default way to interact with plugins * chore(defaults.ini): change the default value for `plugin_admin_enabled` * test(Plugins): make the tests pass (cherry picked from commit c2754eb9cc948111e6134e99e599202d2092600a) Co-authored-by: Levente Balogh --- conf/defaults.ini | 2 +- packages/grafana-runtime/src/config.ts | 2 +- pkg/setting/setting.go | 2 +- .../features/plugins/PluginListPage.test.tsx | 23 ++++++++++++------- .../plugins/admin/pages/Browse.test.tsx | 2 -- .../admin/pages/PluginDetails.test.tsx | 2 -- .../features/plugins/state/reducers.test.ts | 10 ++++++++ 7 files changed, 28 insertions(+), 15 deletions(-) diff --git a/conf/defaults.ini b/conf/defaults.ini index 4af5bb96333..6d25d0eb4a8 100644 --- a/conf/defaults.ini +++ b/conf/defaults.ini @@ -965,7 +965,7 @@ app_tls_skip_verify_insecure = false # Enter a comma-separated list of plugin identifiers to identify plugins to load even if they are unsigned. Plugins with modified signatures are never loaded. allow_loading_unsigned_plugins = # Enable or disable installing plugins directly from within Grafana. -plugin_admin_enabled = false +plugin_admin_enabled = true plugin_admin_external_manage_enabled = false plugin_catalog_url = https://grafana.com/grafana/plugins/ diff --git a/packages/grafana-runtime/src/config.ts b/packages/grafana-runtime/src/config.ts index 94f1e575099..cfd737fa864 100644 --- a/packages/grafana-runtime/src/config.ts +++ b/packages/grafana-runtime/src/config.ts @@ -79,7 +79,7 @@ export class GrafanaBootConfig implements GrafanaConfig { sampleRate: 1, }; pluginCatalogURL = 'https://grafana.com/grafana/plugins/'; - pluginAdminEnabled = false; + pluginAdminEnabled = true; pluginAdminExternalManageEnabled = false; expressionsEnabled = false; customTheme?: any; diff --git a/pkg/setting/setting.go b/pkg/setting/setting.go index 86cdd67015b..3b3d6afe5db 100644 --- a/pkg/setting/setting.go +++ b/pkg/setting/setting.go @@ -930,7 +930,7 @@ func (cfg *Cfg) Load(args CommandLineArgs) error { cfg.PluginsAllowUnsigned = append(cfg.PluginsAllowUnsigned, plug) } cfg.PluginCatalogURL = pluginsSection.Key("plugin_catalog_url").MustString("https://grafana.com/grafana/plugins/") - cfg.PluginAdminEnabled = pluginsSection.Key("plugin_admin_enabled").MustBool(false) + cfg.PluginAdminEnabled = pluginsSection.Key("plugin_admin_enabled").MustBool(true) cfg.PluginAdminExternalManageEnabled = pluginsSection.Key("plugin_admin_external_manage_enabled").MustBool(false) if err := cfg.readFeatureToggles(iniFile); err != nil { diff --git a/public/app/features/plugins/PluginListPage.test.tsx b/public/app/features/plugins/PluginListPage.test.tsx index 550a473127b..03037cfa55c 100644 --- a/public/app/features/plugins/PluginListPage.test.tsx +++ b/public/app/features/plugins/PluginListPage.test.tsx @@ -11,14 +11,21 @@ import { afterEach } from '../../../test/lib/common'; let errorsReturnMock: any = []; -jest.mock('@grafana/runtime', () => ({ - ...(jest.requireActual('@grafana/runtime') as object), - getBackendSrv: () => ({ - get: () => { - return errorsReturnMock as any; - }, - }), -})); +jest.mock('@grafana/runtime', () => { + const original = jest.requireActual('@grafana/runtime'); + const mockedRuntime = { + ...original, + getBackendSrv: () => ({ + get: () => { + return errorsReturnMock as any; + }, + }), + }; + + mockedRuntime.config.pluginAdminEnabled = false; + + return mockedRuntime; +}); const setup = (propOverrides?: object) => { const store = configureStore(); diff --git a/public/app/features/plugins/admin/pages/Browse.test.tsx b/public/app/features/plugins/admin/pages/Browse.test.tsx index f583fab3058..0e9cbc4d86a 100644 --- a/public/app/features/plugins/admin/pages/Browse.test.tsx +++ b/public/app/features/plugins/admin/pages/Browse.test.tsx @@ -12,14 +12,12 @@ import { PluginAdminRoutes, CatalogPlugin, ReducerState, RequestStatus } from '. import { getCatalogPluginMock, getPluginsStateMock } from '../__mocks__'; import BrowsePage from './Browse'; -// Mock the config to enable the plugin catalog jest.mock('@grafana/runtime', () => { const original = jest.requireActual('@grafana/runtime'); const mockedRuntime = { ...original }; mockedRuntime.config.bootData.user.isGrafanaAdmin = true; mockedRuntime.config.buildInfo.version = 'v8.1.0'; - mockedRuntime.config.pluginAdminEnabled = true; return mockedRuntime; }); diff --git a/public/app/features/plugins/admin/pages/PluginDetails.test.tsx b/public/app/features/plugins/admin/pages/PluginDetails.test.tsx index f141dfba618..fe2f6fc1914 100644 --- a/public/app/features/plugins/admin/pages/PluginDetails.test.tsx +++ b/public/app/features/plugins/admin/pages/PluginDetails.test.tsx @@ -14,14 +14,12 @@ import { mockPluginApis, getCatalogPluginMock, getPluginsStateMock } from '../__ import { PluginErrorCode, PluginSignatureStatus } from '@grafana/data'; import { selectors } from '@grafana/e2e-selectors'; -// Mock the config to enable the plugin catalog jest.mock('@grafana/runtime', () => { const original = jest.requireActual('@grafana/runtime'); const mockedRuntime = { ...original }; mockedRuntime.config.bootData.user.isGrafanaAdmin = true; mockedRuntime.config.buildInfo.version = 'v8.1.0'; - mockedRuntime.config.pluginAdminEnabled = true; return mockedRuntime; }); diff --git a/public/app/features/plugins/state/reducers.test.ts b/public/app/features/plugins/state/reducers.test.ts index cfac6d82b22..1ef517f7433 100644 --- a/public/app/features/plugins/state/reducers.test.ts +++ b/public/app/features/plugins/state/reducers.test.ts @@ -11,6 +11,16 @@ import { } from './reducers'; import { PluginMetaInfo, PluginType } from '@grafana/data'; +// Mock the config to enable the old version of the plugins page +jest.mock('@grafana/runtime', () => { + const original = jest.requireActual('@grafana/runtime'); + const mockedRuntime = { ...original }; + + mockedRuntime.config.pluginAdminEnabled = false; + + return mockedRuntime; +}); + describe('pluginsReducer', () => { describe('when pluginsLoaded is dispatched', () => { it('then state should be correct', () => {