From 1a53e85bc583eaabdee17783ffe2256eb4d8d871 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torkel=20=C3=96degaard?= Date: Tue, 1 Apr 2025 09:13:11 +0200 Subject: [PATCH] DashboardSchemaV2: Fix crash in response transformer (#103041) * DashboardSchemaV2: Fix crash in response transformer * update test only test for the missing current prop * restore warning --- .../dashboard/api/ResponseTransformers.test.ts | 13 ++++++++++++- .../features/dashboard/api/ResponseTransformers.ts | 4 ++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/public/app/features/dashboard/api/ResponseTransformers.test.ts b/public/app/features/dashboard/api/ResponseTransformers.test.ts index 41064867a87..02c81825be3 100644 --- a/public/app/features/dashboard/api/ResponseTransformers.test.ts +++ b/public/app/features/dashboard/api/ResponseTransformers.test.ts @@ -305,6 +305,15 @@ describe('ResponseTransformers', () => { ], current: { value: ['1'], text: ['1'] }, }, + // Query variable with minimal props and without current + { + datasource: { type: 'prometheus', uid: 'abc' }, + name: 'org_id', + label: 'Org ID', + hide: 2, + type: 'query', + query: { refId: 'A', query: 'label_values(grafanacloud_org_info{org_slug="$org_slug"}, org_id)' }, + }, ], }, panels: [ @@ -627,6 +636,7 @@ describe('ResponseTransformers', () => { validateVariablesV1ToV2(spec.variables[5], dashboardV1.templating?.list?.[5]); validateVariablesV1ToV2(spec.variables[6], dashboardV1.templating?.list?.[6]); validateVariablesV1ToV2(spec.variables[7], dashboardV1.templating?.list?.[7]); + validateVariablesV1ToV2(spec.variables[8], dashboardV1.templating?.list?.[8]); }); }); @@ -938,8 +948,9 @@ describe('ResponseTransformers', () => { label: v1.label, description: v1.description, hide: transformVariableHideToEnum(v1.hide), - skipUrlSync: v1.skipUrlSync, + skipUrlSync: Boolean(v1.skipUrlSync), }; + const v2Common = { name: v2.spec.name, label: v2.spec.label, diff --git a/public/app/features/dashboard/api/ResponseTransformers.ts b/public/app/features/dashboard/api/ResponseTransformers.ts index be014a16f52..a7dde59ac8d 100644 --- a/public/app/features/dashboard/api/ResponseTransformers.ts +++ b/public/app/features/dashboard/api/ResponseTransformers.ts @@ -530,8 +530,8 @@ function getVariables(vars: TypedVariableModel[]): DashboardV2Spec['variables'] includeAll: Boolean(v.includeAll), ...(v.allValue && { allValue: v.allValue }), current: { - value: v.current.value, - text: v.current.text, + value: v.current?.value, + text: v.current?.text, }, options: v.options || [], refresh: transformVariableRefreshToEnum(v.refresh),