From 3d1497b56a8648e9c7ccf158a37e2b9e524f83ed Mon Sep 17 00:00:00 2001 From: Dominik Prokop Date: Wed, 26 Mar 2025 19:47:24 +0100 Subject: [PATCH] Schema V2: Replace resourceVersion usage with generation (#100080) * Schema V2: Replace resourceVersion usage with generation * revert auto generated files --------- Co-authored-by: Ivan Ortega Co-authored-by: Haris Rozajac --- .../pkg/apis/dashboard/v0alpha1/dashboard_object_gen.go | 2 -- .../pkg/apis/dashboard/v1alpha1/dashboard_object_gen.go | 2 -- apps/dashboard/pkg/apis/dashboard_manifest.go | 2 -- .../pages/DashboardScenePageStateManager.test.ts | 2 ++ .../pages/DashboardScenePageStateManager.ts | 7 +------ .../transformSaveModelSchemaV2ToScene.test.ts | 1 + .../serialization/transformSaveModelSchemaV2ToScene.ts | 4 ++-- public/app/features/dashboard/api/ResponseTransformers.ts | 4 ++-- public/app/features/dashboard/api/v1.ts | 2 +- public/app/features/dashboard/api/v2.test.ts | 2 ++ public/app/features/dashboard/api/v2.ts | 2 +- 11 files changed, 12 insertions(+), 18 deletions(-) diff --git a/apps/dashboard/pkg/apis/dashboard/v0alpha1/dashboard_object_gen.go b/apps/dashboard/pkg/apis/dashboard/v0alpha1/dashboard_object_gen.go index 50847df87c3..a267e0c8df8 100644 --- a/apps/dashboard/pkg/apis/dashboard/v0alpha1/dashboard_object_gen.go +++ b/apps/dashboard/pkg/apis/dashboard/v0alpha1/dashboard_object_gen.go @@ -294,8 +294,6 @@ var _ resource.ListObject = &DashboardList{} // Copy methods for all subresource types - - // DeepCopy creates a full deep copy of DashboardStatus func (s *DashboardStatus) DeepCopy() *DashboardStatus { cpy := &DashboardStatus{} diff --git a/apps/dashboard/pkg/apis/dashboard/v1alpha1/dashboard_object_gen.go b/apps/dashboard/pkg/apis/dashboard/v1alpha1/dashboard_object_gen.go index 88df2238f99..80af0b99526 100644 --- a/apps/dashboard/pkg/apis/dashboard/v1alpha1/dashboard_object_gen.go +++ b/apps/dashboard/pkg/apis/dashboard/v1alpha1/dashboard_object_gen.go @@ -294,8 +294,6 @@ var _ resource.ListObject = &DashboardList{} // Copy methods for all subresource types - - // DeepCopy creates a full deep copy of DashboardStatus func (s *DashboardStatus) DeepCopy() *DashboardStatus { cpy := &DashboardStatus{} diff --git a/apps/dashboard/pkg/apis/dashboard_manifest.go b/apps/dashboard/pkg/apis/dashboard_manifest.go index bc68fa86ca6..9980594ef44 100644 --- a/apps/dashboard/pkg/apis/dashboard_manifest.go +++ b/apps/dashboard/pkg/apis/dashboard_manifest.go @@ -11,8 +11,6 @@ import ( "github.com/grafana/grafana-app-sdk/app" ) -var () - var appManifestData = app.ManifestData{ AppName: "dashboard", Group: "dashboard.grafana.app", diff --git a/public/app/features/dashboard-scene/pages/DashboardScenePageStateManager.test.ts b/public/app/features/dashboard-scene/pages/DashboardScenePageStateManager.test.ts index e8292b4446c..c1dcfaa4e68 100644 --- a/public/app/features/dashboard-scene/pages/DashboardScenePageStateManager.test.ts +++ b/public/app/features/dashboard-scene/pages/DashboardScenePageStateManager.test.ts @@ -548,6 +548,7 @@ describe('DashboardScenePageStateManager v2', () => { metadata: { name: 'fake-dash', creationTimestamp: '', + generation: 1, resourceVersion: '1', }, spec: { ...defaultDashboardV2Spec() }, @@ -581,6 +582,7 @@ describe('DashboardScenePageStateManager v2', () => { metadata: { name: 'fake-dash', creationTimestamp: '', + generation: 2, resourceVersion: '2', }, spec: { ...defaultDashboardV2Spec() }, diff --git a/public/app/features/dashboard-scene/pages/DashboardScenePageStateManager.ts b/public/app/features/dashboard-scene/pages/DashboardScenePageStateManager.ts index ddb7496795e..cec79e0b98b 100644 --- a/public/app/features/dashboard-scene/pages/DashboardScenePageStateManager.ts +++ b/public/app/features/dashboard-scene/pages/DashboardScenePageStateManager.ts @@ -457,12 +457,7 @@ export class DashboardScenePageStateManagerV2 extends DashboardScenePageStateMan ): DashboardScene | null { const fromCache = this.getSceneFromCache(options.uid); - // TODO[schema v2]: Dashboard scene state is incorrectly save, it must use the resourceVersion - if ( - fromCache && - rsp?.metadata.resourceVersion && - fromCache.state.version === parseInt(rsp?.metadata.resourceVersion, 10) - ) { + if (fromCache && fromCache.state.version === rsp?.metadata.generation) { return fromCache; } diff --git a/public/app/features/dashboard-scene/serialization/transformSaveModelSchemaV2ToScene.test.ts b/public/app/features/dashboard-scene/serialization/transformSaveModelSchemaV2ToScene.test.ts index c4bf583c66a..e9324490174 100644 --- a/public/app/features/dashboard-scene/serialization/transformSaveModelSchemaV2ToScene.test.ts +++ b/public/app/features/dashboard-scene/serialization/transformSaveModelSchemaV2ToScene.test.ts @@ -58,6 +58,7 @@ export const defaultDashboard: DashboardWithAccessInfo = { name: 'dashboard-uid', namespace: 'default', labels: {}, + generation: 123, resourceVersion: '123', creationTimestamp: 'creationTs', annotations: { diff --git a/public/app/features/dashboard-scene/serialization/transformSaveModelSchemaV2ToScene.ts b/public/app/features/dashboard-scene/serialization/transformSaveModelSchemaV2ToScene.ts index babc4b08f73..78e21872b0b 100644 --- a/public/app/features/dashboard-scene/serialization/transformSaveModelSchemaV2ToScene.ts +++ b/public/app/features/dashboard-scene/serialization/transformSaveModelSchemaV2ToScene.ts @@ -131,7 +131,7 @@ export function transformSaveModelSchemaV2ToScene(dto: DashboardWithAccessInfo { isFolder: false, uid: dash.metadata.name, k8s: dash.metadata, - version: parseInt(dash.metadata.resourceVersion, 10), + version: dash.metadata.generation, }, dashboard: dash.spec, }; diff --git a/public/app/features/dashboard/api/v2.test.ts b/public/app/features/dashboard/api/v2.test.ts index a6eed33bcd2..91bbad1b498 100644 --- a/public/app/features/dashboard/api/v2.test.ts +++ b/public/app/features/dashboard/api/v2.test.ts @@ -17,6 +17,7 @@ const mockDashboardDto: DashboardWithAccessInfo = { metadata: { name: 'dash-uid', + generation: 1, resourceVersion: '1', creationTimestamp: '1', annotations: {}, @@ -36,6 +37,7 @@ const mockPut = jest.fn().mockImplementation((url, data) => { kind: 'Dashboard', metadata: { name: data.metadata?.name, + generation: 2, resourceVersion: '2', creationTimestamp: new Date().toISOString(), labels: data.metadata?.labels, diff --git a/public/app/features/dashboard/api/v2.ts b/public/app/features/dashboard/api/v2.ts index 72fb4501f08..d00082914f3 100644 --- a/public/app/features/dashboard/api/v2.ts +++ b/public/app/features/dashboard/api/v2.ts @@ -149,7 +149,7 @@ export class K8sDashboardV2API return { uid: v.metadata.name, - version: parseInt(v.metadata.resourceVersion, 10) ?? 0, + version: v.metadata.generation ?? 0, id: dashId, status: 'success', url,