From 24da64cd3469ba5d53aa0657acb47ef951cc48c6 Mon Sep 17 00:00:00 2001 From: Alex Khomenko Date: Fri, 14 Mar 2025 16:03:51 +0200 Subject: [PATCH] Provisioning: Load dashboard in state manager (#102194) MergeProvisioning: Load dashboard in state manager --- .../pages/DashboardScenePageStateManager.ts | 3 +++ .../dashboard-scene/scene/DashboardScene.tsx | 15 +-------------- .../app/features/provisioning/dashboardLoader.ts | 2 +- public/app/types/dashboard.ts | 6 ++++++ 4 files changed, 11 insertions(+), 15 deletions(-) diff --git a/public/app/features/dashboard-scene/pages/DashboardScenePageStateManager.ts b/public/app/features/dashboard-scene/pages/DashboardScenePageStateManager.ts index d66ac86c9fd..2bd41da5e4f 100644 --- a/public/app/features/dashboard-scene/pages/DashboardScenePageStateManager.ts +++ b/public/app/features/dashboard-scene/pages/DashboardScenePageStateManager.ts @@ -314,6 +314,9 @@ export class DashboardScenePageStateManager extends DashboardScenePageStateManag } break; + case DashboardRoutes.Provisioning: { + return await dashboardLoaderSrv.loadDashboard('provisioning', slug, uid); + } case DashboardRoutes.Public: { return await dashboardLoaderSrv.loadDashboard('public', '', uid); } diff --git a/public/app/features/dashboard-scene/scene/DashboardScene.tsx b/public/app/features/dashboard-scene/scene/DashboardScene.tsx index 0ca9bf5ae1e..51f9091cad5 100644 --- a/public/app/features/dashboard-scene/scene/DashboardScene.tsx +++ b/public/app/features/dashboard-scene/scene/DashboardScene.tsx @@ -33,7 +33,7 @@ import { VariablesChanged } from 'app/features/variables/types'; import { DashboardDTO, DashboardMeta, KioskMode, SaveDashboardResponseDTO } from 'app/types'; import { ShowConfirmModalEvent } from 'app/types/events'; -import { AnnoKeyManagerIdentity, AnnoKeyManagerKind, AnnoKeySourcePath, ManagerKind } from '../../apiserver/types'; +import { AnnoKeyManagerKind, AnnoKeySourcePath, ManagerKind } from '../../apiserver/types'; import { DashboardEditPane } from '../edit-pane/DashboardEditPane'; import { PanelEditor } from '../panel-edit/PanelEditor'; import { DashboardSceneChangeTracker } from '../saving/DashboardSceneChangeTracker'; @@ -766,19 +766,6 @@ export class DashboardScene extends SceneObjectBase impleme getPath() { return this.state.meta.k8s?.annotations?.[AnnoKeySourcePath]; } - - setManager(kind: ManagerKind, id: string) { - this.setState({ - meta: { - k8s: { - annotations: { - [AnnoKeyManagerKind]: kind, - [AnnoKeyManagerIdentity]: id, - }, - }, - }, - }); - } } export class DashboardVariableDependency implements SceneVariableDependencyConfigLike { diff --git a/public/app/features/provisioning/dashboardLoader.ts b/public/app/features/provisioning/dashboardLoader.ts index 6614a966eba..914d42da88a 100644 --- a/public/app/features/provisioning/dashboardLoader.ts +++ b/public/app/features/provisioning/dashboardLoader.ts @@ -11,7 +11,7 @@ import { BASE_URL } from './api/baseAPI'; */ export async function loadDashboardFromProvisioning(repo: string, path: string): Promise { const params = new URLSearchParams(window.location.search); - const ref = params.get('ref'); // commit hash or branch + const ref = params.get('ref') ?? undefined; // commit hash or branch const url = `${BASE_URL}/repositories/${repo}/files/${path}`; return getBackendSrv() diff --git a/public/app/types/dashboard.ts b/public/app/types/dashboard.ts index 51478ac3829..35a075794e5 100644 --- a/public/app/types/dashboard.ts +++ b/public/app/types/dashboard.ts @@ -3,6 +3,8 @@ import { Dashboard, DataSourceRef } from '@grafana/schema'; import { ObjectMeta } from 'app/features/apiserver/types'; import { DashboardModel } from 'app/features/dashboard/state/DashboardModel'; +import { ProvisioningPreview } from '../features/provisioning/types'; + export interface HomeDashboardRedirectDTO { redirectUri: string; } @@ -78,6 +80,9 @@ export interface DashboardMeta { // until we use the resource as the main container k8s?: Partial; + // If the dashboard was loaded from a remote repository + provisioning?: ProvisioningPreview; + // This is a property added specifically for edge cases where dashboards should be reloaded on scopes, time range or variables changes // This property is not persisted in the DB but its existence is controlled by the API reloadOnParamsChange?: boolean; @@ -105,6 +110,7 @@ export enum DashboardRoutes { Home = 'home-dashboard', New = 'new-dashboard', Normal = 'normal-dashboard', + Provisioning = 'provisioning-dashboard', Scripted = 'scripted-dashboard', Public = 'public-dashboard', Embedded = 'embedded-dashboard',