mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
PluginExtensions: Made it possible to enable extensions admin page in non-development environments (#95820)
* Added feature flag for toggling extensions admin page. * fixed typo. * require restart --------- Co-authored-by: Erik Sundell <erik.sundell87@gmail.com>
This commit is contained in:
parent
6fd3620d50
commit
c7a7f7dce5
@ -217,6 +217,7 @@ Experimental features might be changed or removed without prior notice.
|
|||||||
| `prometheusUsesCombobox` | Use new combobox component for Prometheus query editor |
|
| `prometheusUsesCombobox` | Use new combobox component for Prometheus query editor |
|
||||||
| `dashboardSchemaV2` | Enables the new dashboard schema version 2, implementing changes necessary for dynamic dashboards and dashboards as code. |
|
| `dashboardSchemaV2` | Enables the new dashboard schema version 2, implementing changes necessary for dynamic dashboards and dashboards as code. |
|
||||||
| `playlistsWatcher` | Enables experimental watcher for playlists |
|
| `playlistsWatcher` | Enables experimental watcher for playlists |
|
||||||
|
| `enableExtensionsAdminPage` | Enables the extension admin page regardless of development mode |
|
||||||
|
|
||||||
## Development feature toggles
|
## Development feature toggles
|
||||||
|
|
||||||
|
@ -228,4 +228,5 @@ export interface FeatureToggles {
|
|||||||
azureMonitorDisableLogLimit?: boolean;
|
azureMonitorDisableLogLimit?: boolean;
|
||||||
dashboardSchemaV2?: boolean;
|
dashboardSchemaV2?: boolean;
|
||||||
playlistsWatcher?: boolean;
|
playlistsWatcher?: boolean;
|
||||||
|
enableExtensionsAdminPage?: boolean;
|
||||||
}
|
}
|
||||||
|
@ -1570,6 +1570,13 @@ var (
|
|||||||
Owner: grafanaAppPlatformSquad,
|
Owner: grafanaAppPlatformSquad,
|
||||||
RequiresRestart: true,
|
RequiresRestart: true,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
Name: "enableExtensionsAdminPage",
|
||||||
|
Description: "Enables the extension admin page regardless of development mode",
|
||||||
|
Stage: FeatureStageExperimental,
|
||||||
|
Owner: grafanaPluginsPlatformSquad,
|
||||||
|
RequiresRestart: true,
|
||||||
|
},
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -209,3 +209,4 @@ prometheusUsesCombobox,experimental,@grafana/observability-metrics,false,false,f
|
|||||||
azureMonitorDisableLogLimit,GA,@grafana/partner-datasources,false,false,false
|
azureMonitorDisableLogLimit,GA,@grafana/partner-datasources,false,false,false
|
||||||
dashboardSchemaV2,experimental,@grafana/dashboards-squad,false,false,true
|
dashboardSchemaV2,experimental,@grafana/dashboards-squad,false,false,true
|
||||||
playlistsWatcher,experimental,@grafana/grafana-app-platform-squad,false,true,false
|
playlistsWatcher,experimental,@grafana/grafana-app-platform-squad,false,true,false
|
||||||
|
enableExtensionsAdminPage,experimental,@grafana/plugins-platform-backend,false,true,false
|
||||||
|
|
@ -846,4 +846,8 @@ const (
|
|||||||
// FlagPlaylistsWatcher
|
// FlagPlaylistsWatcher
|
||||||
// Enables experimental watcher for playlists
|
// Enables experimental watcher for playlists
|
||||||
FlagPlaylistsWatcher = "playlistsWatcher"
|
FlagPlaylistsWatcher = "playlistsWatcher"
|
||||||
|
|
||||||
|
// FlagEnableExtensionsAdminPage
|
||||||
|
// Enables the extension admin page regardless of development mode
|
||||||
|
FlagEnableExtensionsAdminPage = "enableExtensionsAdminPage"
|
||||||
)
|
)
|
||||||
|
@ -1201,6 +1201,22 @@
|
|||||||
"frontend": true
|
"frontend": true
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"metadata": {
|
||||||
|
"name": "enableExtensionsAdminPage",
|
||||||
|
"resourceVersion": "1730819353237",
|
||||||
|
"creationTimestamp": "2024-11-05T09:18:42Z",
|
||||||
|
"annotations": {
|
||||||
|
"grafana.app/updatedTimestamp": "2024-11-05 15:09:13.237578 +0000 UTC"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"spec": {
|
||||||
|
"description": "Enables the extension admin page regardless of development mode",
|
||||||
|
"stage": "experimental",
|
||||||
|
"codeowner": "@grafana/plugins-platform-backend",
|
||||||
|
"requiresRestart": true
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"name": "enableNativeHTTPHistogram",
|
"name": "enableNativeHTTPHistogram",
|
||||||
|
@ -105,7 +105,7 @@ func (s *ServiceImpl) getAdminNode(c *contextmodel.ReqContext) (*navtree.NavLink
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
if s.cfg.Env == setting.Dev {
|
if (s.cfg.Env == setting.Dev) || s.features.IsEnabled(ctx, featuremgmt.FlagEnableExtensionsAdminPage) && hasAccess(pluginaccesscontrol.AdminAccessEvaluator) {
|
||||||
pluginsNodeLinks = append(pluginsNodeLinks, &navtree.NavLink{
|
pluginsNodeLinks = append(pluginsNodeLinks, &navtree.NavLink{
|
||||||
Text: "Extensions",
|
Text: "Extensions",
|
||||||
Icon: "plug",
|
Icon: "plug",
|
||||||
|
@ -203,9 +203,13 @@ export function getAppRoutes(): RouteDescriptor[] {
|
|||||||
{
|
{
|
||||||
path: '/admin/extensions',
|
path: '/admin/extensions',
|
||||||
navId: 'extensions',
|
navId: 'extensions',
|
||||||
component: isDevEnv
|
roles: () =>
|
||||||
|
contextSrv.evaluatePermission([AccessControlAction.PluginsInstall, AccessControlAction.PluginsWrite]),
|
||||||
|
component:
|
||||||
|
isDevEnv || config.featureToggles.enableExtensionsAdminPage
|
||||||
? SafeDynamicImport(
|
? SafeDynamicImport(
|
||||||
() => import(/* webpackChunkName: "PluginExtensionsLog" */ 'app/features/plugins/extensions/logs/LogViewer')
|
() =>
|
||||||
|
import(/* webpackChunkName: "PluginExtensionsLog" */ 'app/features/plugins/extensions/logs/LogViewer')
|
||||||
)
|
)
|
||||||
: () => <Navigate replace to="/admin" />,
|
: () => <Navigate replace to="/admin" />,
|
||||||
},
|
},
|
||||||
|
Loading…
Reference in New Issue
Block a user