diff --git a/packages/grafana-data/src/types/featureToggles.gen.ts b/packages/grafana-data/src/types/featureToggles.gen.ts index a5f13a7de0f..95bb511c0e9 100644 --- a/packages/grafana-data/src/types/featureToggles.gen.ts +++ b/packages/grafana-data/src/types/featureToggles.gen.ts @@ -23,6 +23,7 @@ export interface FeatureToggles { database_metrics?: boolean; dashboardPreviews?: boolean; dashboardPreviewsScheduler?: boolean; + dashboardPreviewsAdmin?: boolean; ['live-config']?: boolean; ['live-pipeline']?: boolean; ['live-service-web-worker']?: boolean; diff --git a/pkg/api/api.go b/pkg/api/api.go index 6da0aa3488c..8615e41a3ce 100644 --- a/pkg/api/api.go +++ b/pkg/api/api.go @@ -336,8 +336,11 @@ func (hs *HTTPServer) registerRoutes() { if hs.ThumbService != nil { dashboardRoute.Get("/uid/:uid/img/:kind/:theme", hs.ThumbService.GetImage) - dashboardRoute.Post("/uid/:uid/img/:kind/:theme", hs.ThumbService.SetImage) - dashboardRoute.Put("/uid/:uid/img/:kind/:theme", hs.ThumbService.UpdateThumbnailState) + + if hs.Features.IsEnabled(featuremgmt.FlagDashboardPreviewsAdmin) { + dashboardRoute.Post("/uid/:uid/img/:kind/:theme", reqGrafanaAdmin, hs.ThumbService.SetImage) + dashboardRoute.Put("/uid/:uid/img/:kind/:theme", reqGrafanaAdmin, hs.ThumbService.UpdateThumbnailState) + } } dashboardRoute.Post("/calculate-diff", routing.Wrap(hs.CalculateDashboardDiff)) @@ -470,7 +473,7 @@ func (hs *HTTPServer) registerRoutes() { adminRoute.Get("/stats", authorize(reqGrafanaAdmin, ac.EvalPermission(ac.ActionServerStatsRead)), routing.Wrap(hs.AdminGetStats)) adminRoute.Post("/pause-all-alerts", reqGrafanaAdmin, routing.Wrap(hs.PauseAllAlerts)) - if hs.ThumbService != nil { + if hs.ThumbService != nil && hs.Features.IsEnabled(featuremgmt.FlagDashboardPreviewsAdmin) { adminRoute.Post("/crawler/start", reqGrafanaAdmin, routing.Wrap(hs.ThumbService.StartCrawler)) adminRoute.Post("/crawler/stop", reqGrafanaAdmin, routing.Wrap(hs.ThumbService.StopCrawler)) adminRoute.Get("/crawler/status", reqGrafanaAdmin, routing.Wrap(hs.ThumbService.CrawlerStatus)) diff --git a/pkg/services/featuremgmt/registry.go b/pkg/services/featuremgmt/registry.go index bd715f9457a..d95d6b385c1 100644 --- a/pkg/services/featuremgmt/registry.go +++ b/pkg/services/featuremgmt/registry.go @@ -38,6 +38,11 @@ var ( Description: "Schedule automatic updates to dashboard previews", State: FeatureStateAlpha, }, + { + Name: "dashboardPreviewsAdmin", + Description: "Manage the dashboard previews crawler process from the UI", + State: FeatureStateAlpha, + }, { Name: "live-config", Description: "Save grafana live configuration in SQL tables", diff --git a/pkg/services/featuremgmt/toggles_gen.go b/pkg/services/featuremgmt/toggles_gen.go index 960a7b0f511..7c54af1412e 100644 --- a/pkg/services/featuremgmt/toggles_gen.go +++ b/pkg/services/featuremgmt/toggles_gen.go @@ -31,6 +31,10 @@ const ( // Schedule automatic updates to dashboard previews FlagDashboardPreviewsScheduler = "dashboardPreviewsScheduler" + // FlagDashboardPreviewsAdmin + // Manage the dashboard previews crawler process from the UI + FlagDashboardPreviewsAdmin = "dashboardPreviewsAdmin" + // FlagLiveConfig // Save grafana live configuration in SQL tables FlagLiveConfig = "live-config" diff --git a/public/app/features/admin/ServerStats.tsx b/public/app/features/admin/ServerStats.tsx index 675b0ea38f9..c883750e161 100644 --- a/public/app/features/admin/ServerStats.tsx +++ b/public/app/features/admin/ServerStats.tsx @@ -94,7 +94,7 @@ export const ServerStats = () => {

No stats found.

)} - {config.featureToggles.dashboardPreviews && } + {config.featureToggles.dashboardPreviews && config.featureToggles.dashboardPreviewsAdmin && } ); }; diff --git a/public/app/features/dashboard/components/DashboardSettings/GeneralSettings.tsx b/public/app/features/dashboard/components/DashboardSettings/GeneralSettings.tsx index 5ad19559403..5a509359a14 100644 --- a/public/app/features/dashboard/components/DashboardSettings/GeneralSettings.tsx +++ b/public/app/features/dashboard/components/DashboardSettings/GeneralSettings.tsx @@ -122,7 +122,9 @@ export function GeneralSettingsUnconnected({ dashboard, updateTimeZone, updateWe - {config.featureToggles.dashboardPreviews && } + {config.featureToggles.dashboardPreviews && config.featureToggles.dashboardPreviewsAdmin && ( + + )}