From 09d59e9fbc677d32106bba8bd7bb79f4ac42bdcc Mon Sep 17 00:00:00 2001 From: Haris Rozajac Date: Wed, 13 Aug 2025 19:05:36 -0600 Subject: [PATCH] fix ds test --- .../pkg/migration/conversion/datasource.go | 27 +++++++++++---- ...v1beta1.dashboard-properties.v2alpha1.json | 4 +++ .../v1beta1.dashboard-properties.v2beta1.json | 3 ++ .../conversion/v1beta1_to_v2alpha1.go | 34 ++++++++++++------- 4 files changed, 49 insertions(+), 19 deletions(-) diff --git a/apps/dashboard/pkg/migration/conversion/datasource.go b/apps/dashboard/pkg/migration/conversion/datasource.go index 8fd0a3f9b56..2160f418ced 100644 --- a/apps/dashboard/pkg/migration/conversion/datasource.go +++ b/apps/dashboard/pkg/migration/conversion/datasource.go @@ -1,11 +1,20 @@ package conversion +import ( + dashv2alpha1 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v2alpha1" +) + // getDefaultDatasourceType gets the default datasource type using the conversion module's datasource provider -func getDefaultDatasourceType() string { +func getDefaultDatasourceRef() dashv2alpha1.DashboardDataSourceRef { + defaultGrafanaUID := "-- Grafana --" + defaultGrafanaType := "grafana" // Get the datasource info from the conversion module's provider dsProvider := GetDataSourceProvider() if dsProvider == nil { - return "grafana" + return dashv2alpha1.DashboardDataSourceRef{ + Uid: &defaultGrafanaUID, + Type: &defaultGrafanaType, + } } dsInfo := dsProvider.GetDataSourceInfo() @@ -13,18 +22,24 @@ func getDefaultDatasourceType() string { // Find the default datasource for _, ds := range dsInfo { if ds.Default { - return ds.Type + return dashv2alpha1.DashboardDataSourceRef{ + Uid: &ds.UID, + Type: &ds.Type, + } } } // If no default datasource is found, return "grafana" as fallback - return "grafana" + return dashv2alpha1.DashboardDataSourceRef{ + Uid: &defaultGrafanaUID, + Type: &defaultGrafanaType, + } } // getDatasourceTypeByUID gets the datasource type by UID using the conversion module's datasource provider func getDatasourceTypeByUID(uid string) string { if uid == "" { - return getDefaultDatasourceType() + return *getDefaultDatasourceRef().Uid } // Get the datasource info from the conversion module's provider @@ -43,5 +58,5 @@ func getDatasourceTypeByUID(uid string) string { } // If not found, return the default - return getDefaultDatasourceType() + return *getDefaultDatasourceRef().Uid } diff --git a/apps/dashboard/pkg/migration/conversion/testdata/output/v1beta1.dashboard-properties.v2alpha1.json b/apps/dashboard/pkg/migration/conversion/testdata/output/v1beta1.dashboard-properties.v2alpha1.json index 393d9a92b1b..435e690af64 100644 --- a/apps/dashboard/pkg/migration/conversion/testdata/output/v1beta1.dashboard-properties.v2alpha1.json +++ b/apps/dashboard/pkg/migration/conversion/testdata/output/v1beta1.dashboard-properties.v2alpha1.json @@ -49,6 +49,10 @@ "kind": "prometheus", "spec": {} }, + "datasource": { + "type": "prometheus", + "uid": "default-ds-uid" + }, "refId": "A", "hidden": false } diff --git a/apps/dashboard/pkg/migration/conversion/testdata/output/v1beta1.dashboard-properties.v2beta1.json b/apps/dashboard/pkg/migration/conversion/testdata/output/v1beta1.dashboard-properties.v2beta1.json index c0d02804745..4be50cde47a 100644 --- a/apps/dashboard/pkg/migration/conversion/testdata/output/v1beta1.dashboard-properties.v2beta1.json +++ b/apps/dashboard/pkg/migration/conversion/testdata/output/v1beta1.dashboard-properties.v2beta1.json @@ -51,6 +51,9 @@ "kind": "DataQuery", "group": "prometheus", "version": "v0", + "datasource": { + "name": "default-ds-uid" + }, "spec": {} }, "refId": "A", diff --git a/apps/dashboard/pkg/migration/conversion/v1beta1_to_v2alpha1.go b/apps/dashboard/pkg/migration/conversion/v1beta1_to_v2alpha1.go index ffbf1507c77..95d31710d86 100644 --- a/apps/dashboard/pkg/migration/conversion/v1beta1_to_v2alpha1.go +++ b/apps/dashboard/pkg/migration/conversion/v1beta1_to_v2alpha1.go @@ -1025,10 +1025,10 @@ func buildQueryVariable(varMap map[string]interface{}, commonProps CommonVariabl datasourceType = getDatasourceTypeByUID(datasourceUID) } else if datasourceType == "" { // If no UID and no type, use default - datasourceType = getDefaultDatasourceType() + datasourceType = *getDefaultDatasourceRef().Type } } else { - datasourceType = getDefaultDatasourceType() + datasourceType = *getDefaultDatasourceRef().Type } queryVar := &dashv2alpha1.DashboardQueryVariableKind{ @@ -1073,7 +1073,7 @@ func buildQueryVariable(varMap map[string]interface{}, commonProps CommonVariabl // Datasource Variable func buildDatasourceVariable(varMap map[string]interface{}, commonProps CommonVariableProperties) (dashv2alpha1.DashboardVariableKind, error) { - pluginId := getDefaultDatasourceType() + pluginId := *getDefaultDatasourceRef().Uid if query := varMap["query"]; query != nil { if queryStr, ok := query.(string); ok { pluginId = queryStr @@ -1221,10 +1221,10 @@ func buildAdhocVariable(varMap map[string]interface{}, commonProps CommonVariabl datasourceType = getDatasourceTypeByUID(datasourceUID) } else if datasourceType == "" { // If no UID and no type, use default - datasourceType = getDefaultDatasourceType() + datasourceType = *getDefaultDatasourceRef().Type } } else { - datasourceType = getDefaultDatasourceType() + datasourceType = *getDefaultDatasourceRef().Type } adhocVar := &dashv2alpha1.DashboardAdhocVariableKind{ @@ -1383,10 +1383,10 @@ func buildGroupByVariable(varMap map[string]interface{}, commonProps CommonVaria datasourceType = getDatasourceTypeByUID(datasourceUID) } else if datasourceType == "" { // If no UID and no type, use default - datasourceType = getDefaultDatasourceType() + datasourceType = *getDefaultDatasourceRef().Type } } else { - datasourceType = getDefaultDatasourceType() + datasourceType = *getDefaultDatasourceRef().Type } groupByVar := &dashv2alpha1.DashboardGroupByVariableKind{ @@ -1460,7 +1460,7 @@ func buildAnnotationQuery(annotationMap map[string]interface{}) (dashv2alpha1.Da datasourceType = getDatasourceTypeByUID(datasourceUID) } else if datasourceType == "" { // If no UID and no type, use default - datasourceType = getDefaultDatasourceType() + datasourceType = *getDefaultDatasourceRef().Type } if datasourceUID != "" { @@ -1470,7 +1470,7 @@ func buildAnnotationQuery(annotationMap map[string]interface{}) (dashv2alpha1.Da } } } else { - datasourceType = getDefaultDatasourceType() + datasourceType = *getDefaultDatasourceRef().Type } // Build the query from target @@ -1589,7 +1589,7 @@ func transformPanelQueries(panelMap map[string]interface{}) []dashv2alpha1.Dashb dsType = getDatasourceTypeByUID(dsUID) } else if dsType == "" { // If no UID and no type, use default - dsType = getDefaultDatasourceType() + dsType = *getDefaultDatasourceRef().Type } panelDatasource = &dashv2alpha1.DashboardDataSourceRef{ @@ -1622,10 +1622,10 @@ func transformSingleQuery(targetMap map[string]interface{}, panelDatasource *das // If we have a UID, use it to get the correct type from the datasource service if queryDatasourceUID != "" { - queryDatasourceType = getDatasourceTypeByUID(queryDatasourceUID) + queryDatasourceType = *getDefaultDatasourceRef().Type } else if queryDatasourceType == "" { // If no UID and no type, use default - queryDatasourceType = getDefaultDatasourceType() + queryDatasourceType = *getDefaultDatasourceRef().Type } } else if panelDatasource != nil { if panelDatasource.Type != nil { @@ -1635,7 +1635,8 @@ func transformSingleQuery(targetMap map[string]interface{}, panelDatasource *das queryDatasourceUID = *panelDatasource.Uid } } else { - queryDatasourceType = getDefaultDatasourceType() + queryDatasourceType = *getDefaultDatasourceRef().Type + queryDatasourceUID = *getDefaultDatasourceRef().Uid } // Build query spec by excluding known fields @@ -1656,6 +1657,13 @@ func transformSingleQuery(targetMap map[string]interface{}, panelDatasource *das Query: buildDataQueryKind(querySpec, queryDatasourceType, queryDatasourceUID), } + // // if panelQuerySpec.Query.Datasource is not set, set it to default datasource + // if panelQuerySpec.Query.Spec["datasource"] == nil { + // panelQuerySpec.Query.Spec["datasource"] = map[string]interface{}{ + // "name": queryDatasourceUID, + // } + // } + // Only include datasource reference if UID is provided if queryDatasourceUID != "" { panelQuerySpec.Datasource = &dashv2alpha1.DashboardDataSourceRef{