Revert "v1 to v2 conversion: Fix issue when Grafana datasource wouldn't be resolved correctly (#114555) (#114725)

Revert "v1 to v2 conversion: Fix issue when Grafana datasource wouldn't be resolved correctly (#114555)"

This reverts commit ac62070ac7.
This commit is contained in:
Dominik Prokop
2025-12-02 19:07:11 +00:00
committed by GitHub
parent f4b8f2d038
commit 2ef211fe96
7 changed files with 20 additions and 1695 deletions
@@ -1,234 +0,0 @@
{
"kind": "DashboardWithAccessInfo",
"apiVersion": "dashboard.grafana.app/v1beta1",
"metadata": {
"name": "ad6phhg",
"namespace": "default",
"uid": "spsmxIXYXdgxtY972XX7j3dj3ijM3IZXDmsCfjygSP8X",
"resourceVersion": "2",
"generation": 2,
"creationTimestamp": "2025-11-27T12:31:46Z",
"labels": {
"grafana.app/deprecatedInternalID": "283"
},
"annotations": {
"grafana.app/createdBy": "user:eex2ofwuj0agwd",
"grafana.app/updatedBy": "user:eex2ofwuj0agwd",
"grafana.app/updatedTimestamp": "2025-11-27T12:32:09Z"
}
},
"spec": {
"annotations": {
"list": [
{
"builtIn": 1,
"datasource": {
"uid": "-- Grafana --"
},
"enable": true,
"hide": true,
"iconColor": "rgba(0, 211, 255, 1)",
"name": "Annotations \u0026 Alerts",
"type": "dashboard"
}
]
},
"editable": true,
"fiscalYearStartMonth": 0,
"graphTooltip": 0,
"links": [],
"panels": [
{
"datasource": {
"type": "datasource"
},
"fieldConfig": {
"defaults": {
"color": {
"mode": "thresholds"
},
"mappings": [],
"max": 100,
"min": 0,
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "red",
"value": 0
},
{
"color": "yellow",
"value": 50
}
]
},
"unit": "percent"
},
"overrides": []
},
"gridPos": {
"h": 15,
"w": 24,
"x": 0,
"y": 0
},
"id": 4,
"options": {
"displayMode": "gradient",
"legend": {
"calcs": [],
"displayMode": "list",
"placement": "bottom",
"showLegend": false
},
"maxVizHeight": 300,
"minVizHeight": 16,
"minVizWidth": 8,
"namePlacement": "auto",
"orientation": "horizontal",
"reduceOptions": {
"calcs": [
"mean"
],
"fields": "",
"values": false
},
"showUnfilled": true,
"sizing": "auto",
"valueMode": "color"
},
"pluginVersion": "12.4.0-pre",
"targets": [
{
"datasource": {},
"refId": "A",
"scenarioId": "random_walk"
},
{
"datasource": {},
"refId": "B",
"scenarioId": "random_walk"
},
{
"datasource": {},
"refId": "C",
"scenarioId": "random_walk"
},
{
"datasource": {},
"refId": "D",
"scenarioId": "random_walk"
},
{
"datasource": {},
"refId": "E",
"scenarioId": "random_walk"
},
{
"datasource": {},
"refId": "F",
"scenarioId": "random_walk"
},
{
"datasource": {},
"refId": "G",
"scenarioId": "random_walk"
},
{
"datasource": {},
"labels": "",
"refId": "H",
"scenarioId": "random_walk"
},
{
"datasource": {},
"refId": "I",
"scenarioId": "random_walk"
},
{
"datasource": {},
"refId": "J",
"scenarioId": "random_walk"
},
{
"datasource": {},
"refId": "K",
"scenarioId": "random_walk"
},
{
"datasource": {},
"refId": "L",
"scenarioId": "random_walk"
},
{
"datasource": {},
"refId": "M",
"scenarioId": "random_walk"
},
{
"datasource": {},
"refId": "N",
"scenarioId": "random_walk"
},
{
"datasource": {},
"labels": "",
"refId": "O",
"scenarioId": "random_walk"
},
{
"datasource": {},
"refId": "P",
"scenarioId": "random_walk"
},
{
"datasource": {},
"refId": "Q",
"scenarioId": "random_walk"
}
],
"title": "Panel Title",
"type": "bargauge"
}
],
"preload": false,
"refresh": "",
"schemaVersion": 42,
"tags": [],
"templating": {
"list": []
},
"time": {
"from": "now-6h",
"to": "now"
},
"timepicker": {},
"timezone": "",
"title": "Bar Gauge Demo Unfilled Copy v1",
"weekStart": ""
},
"status": {},
"access": {
"slug": "bar-gauge-demo-unfilled-copy-v1",
"url": "/d/ad6phhg/bar-gauge-demo-unfilled-copy-v1",
"isPublic": false,
"canSave": true,
"canEdit": true,
"canAdmin": true,
"canStar": true,
"canDelete": true,
"annotationsPermissions": {
"dashboard": {
"canAdd": true,
"canEdit": true,
"canDelete": true
},
"organization": {
"canAdd": true,
"canEdit": true,
"canDelete": true
}
}
}
}
@@ -1,217 +0,0 @@
{
"kind": "DashboardWithAccessInfo",
"apiVersion": "dashboard.grafana.app/v0alpha1",
"metadata": {
"name": "ad6phhg",
"namespace": "default",
"uid": "spsmxIXYXdgxtY972XX7j3dj3ijM3IZXDmsCfjygSP8X",
"resourceVersion": "2",
"generation": 2,
"creationTimestamp": "2025-11-27T12:31:46Z",
"labels": {
"grafana.app/deprecatedInternalID": "283"
},
"annotations": {
"grafana.app/createdBy": "user:eex2ofwuj0agwd",
"grafana.app/updatedBy": "user:eex2ofwuj0agwd",
"grafana.app/updatedTimestamp": "2025-11-27T12:32:09Z"
}
},
"spec": {
"annotations": {
"list": [
{
"builtIn": 1,
"datasource": {
"uid": "-- Grafana --"
},
"enable": true,
"hide": true,
"iconColor": "rgba(0, 211, 255, 1)",
"name": "Annotations \u0026 Alerts",
"type": "dashboard"
}
]
},
"editable": true,
"fiscalYearStartMonth": 0,
"graphTooltip": 0,
"links": [],
"panels": [
{
"datasource": {
"type": "datasource"
},
"fieldConfig": {
"defaults": {
"color": {
"mode": "thresholds"
},
"mappings": [],
"max": 100,
"min": 0,
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "red",
"value": 0
},
{
"color": "yellow",
"value": 50
}
]
},
"unit": "percent"
},
"overrides": []
},
"gridPos": {
"h": 15,
"w": 24,
"x": 0,
"y": 0
},
"id": 4,
"options": {
"displayMode": "gradient",
"legend": {
"calcs": [],
"displayMode": "list",
"placement": "bottom",
"showLegend": false
},
"maxVizHeight": 300,
"minVizHeight": 16,
"minVizWidth": 8,
"namePlacement": "auto",
"orientation": "horizontal",
"reduceOptions": {
"calcs": [
"mean"
],
"fields": "",
"values": false
},
"showUnfilled": true,
"sizing": "auto",
"valueMode": "color"
},
"pluginVersion": "12.4.0-pre",
"targets": [
{
"datasource": {},
"refId": "A",
"scenarioId": "random_walk"
},
{
"datasource": {},
"refId": "B",
"scenarioId": "random_walk"
},
{
"datasource": {},
"refId": "C",
"scenarioId": "random_walk"
},
{
"datasource": {},
"refId": "D",
"scenarioId": "random_walk"
},
{
"datasource": {},
"refId": "E",
"scenarioId": "random_walk"
},
{
"datasource": {},
"refId": "F",
"scenarioId": "random_walk"
},
{
"datasource": {},
"refId": "G",
"scenarioId": "random_walk"
},
{
"datasource": {},
"labels": "",
"refId": "H",
"scenarioId": "random_walk"
},
{
"datasource": {},
"refId": "I",
"scenarioId": "random_walk"
},
{
"datasource": {},
"refId": "J",
"scenarioId": "random_walk"
},
{
"datasource": {},
"refId": "K",
"scenarioId": "random_walk"
},
{
"datasource": {},
"refId": "L",
"scenarioId": "random_walk"
},
{
"datasource": {},
"refId": "M",
"scenarioId": "random_walk"
},
{
"datasource": {},
"refId": "N",
"scenarioId": "random_walk"
},
{
"datasource": {},
"labels": "",
"refId": "O",
"scenarioId": "random_walk"
},
{
"datasource": {},
"refId": "P",
"scenarioId": "random_walk"
},
{
"datasource": {},
"refId": "Q",
"scenarioId": "random_walk"
}
],
"title": "Panel Title",
"type": "bargauge"
}
],
"preload": false,
"refresh": "",
"schemaVersion": 42,
"tags": [],
"templating": {
"list": []
},
"time": {
"from": "now-6h",
"to": "now"
},
"timepicker": {},
"timezone": "",
"title": "Bar Gauge Demo Unfilled Copy v1",
"weekStart": ""
},
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}
@@ -1,455 +0,0 @@
{
"kind": "DashboardWithAccessInfo",
"apiVersion": "dashboard.grafana.app/v2alpha1",
"metadata": {
"name": "ad6phhg",
"namespace": "default",
"uid": "spsmxIXYXdgxtY972XX7j3dj3ijM3IZXDmsCfjygSP8X",
"resourceVersion": "2",
"generation": 2,
"creationTimestamp": "2025-11-27T12:31:46Z",
"labels": {
"grafana.app/deprecatedInternalID": "283"
},
"annotations": {
"grafana.app/createdBy": "user:eex2ofwuj0agwd",
"grafana.app/updatedBy": "user:eex2ofwuj0agwd",
"grafana.app/updatedTimestamp": "2025-11-27T12:32:09Z"
}
},
"spec": {
"annotations": [
{
"kind": "AnnotationQuery",
"spec": {
"query": {
"kind": "",
"spec": {}
},
"enable": true,
"hide": true,
"iconColor": "rgba(0, 211, 255, 1)",
"name": "Annotations \u0026 Alerts",
"builtIn": true,
"legacyOptions": {
"type": "dashboard"
}
}
}
],
"cursorSync": "Off",
"editable": true,
"elements": {
"panel-4": {
"kind": "Panel",
"spec": {
"id": 4,
"title": "Panel Title",
"description": "",
"links": [],
"data": {
"kind": "QueryGroup",
"spec": {
"queries": [
{
"kind": "PanelQuery",
"spec": {
"query": {
"kind": "datasource",
"spec": {
"scenarioId": "random_walk"
}
},
"datasource": {
"type": "datasource",
"uid": "grafana"
},
"refId": "A",
"hidden": false
}
},
{
"kind": "PanelQuery",
"spec": {
"query": {
"kind": "datasource",
"spec": {
"scenarioId": "random_walk"
}
},
"datasource": {
"type": "datasource",
"uid": "grafana"
},
"refId": "B",
"hidden": false
}
},
{
"kind": "PanelQuery",
"spec": {
"query": {
"kind": "datasource",
"spec": {
"scenarioId": "random_walk"
}
},
"datasource": {
"type": "datasource",
"uid": "grafana"
},
"refId": "C",
"hidden": false
}
},
{
"kind": "PanelQuery",
"spec": {
"query": {
"kind": "datasource",
"spec": {
"scenarioId": "random_walk"
}
},
"datasource": {
"type": "datasource",
"uid": "grafana"
},
"refId": "D",
"hidden": false
}
},
{
"kind": "PanelQuery",
"spec": {
"query": {
"kind": "datasource",
"spec": {
"scenarioId": "random_walk"
}
},
"datasource": {
"type": "datasource",
"uid": "grafana"
},
"refId": "E",
"hidden": false
}
},
{
"kind": "PanelQuery",
"spec": {
"query": {
"kind": "datasource",
"spec": {
"scenarioId": "random_walk"
}
},
"datasource": {
"type": "datasource",
"uid": "grafana"
},
"refId": "F",
"hidden": false
}
},
{
"kind": "PanelQuery",
"spec": {
"query": {
"kind": "datasource",
"spec": {
"scenarioId": "random_walk"
}
},
"datasource": {
"type": "datasource",
"uid": "grafana"
},
"refId": "G",
"hidden": false
}
},
{
"kind": "PanelQuery",
"spec": {
"query": {
"kind": "datasource",
"spec": {
"labels": "",
"scenarioId": "random_walk"
}
},
"datasource": {
"type": "datasource",
"uid": "grafana"
},
"refId": "H",
"hidden": false
}
},
{
"kind": "PanelQuery",
"spec": {
"query": {
"kind": "datasource",
"spec": {
"scenarioId": "random_walk"
}
},
"datasource": {
"type": "datasource",
"uid": "grafana"
},
"refId": "I",
"hidden": false
}
},
{
"kind": "PanelQuery",
"spec": {
"query": {
"kind": "datasource",
"spec": {
"scenarioId": "random_walk"
}
},
"datasource": {
"type": "datasource",
"uid": "grafana"
},
"refId": "J",
"hidden": false
}
},
{
"kind": "PanelQuery",
"spec": {
"query": {
"kind": "datasource",
"spec": {
"scenarioId": "random_walk"
}
},
"datasource": {
"type": "datasource",
"uid": "grafana"
},
"refId": "K",
"hidden": false
}
},
{
"kind": "PanelQuery",
"spec": {
"query": {
"kind": "datasource",
"spec": {
"scenarioId": "random_walk"
}
},
"datasource": {
"type": "datasource",
"uid": "grafana"
},
"refId": "L",
"hidden": false
}
},
{
"kind": "PanelQuery",
"spec": {
"query": {
"kind": "datasource",
"spec": {
"scenarioId": "random_walk"
}
},
"datasource": {
"type": "datasource",
"uid": "grafana"
},
"refId": "M",
"hidden": false
}
},
{
"kind": "PanelQuery",
"spec": {
"query": {
"kind": "datasource",
"spec": {
"scenarioId": "random_walk"
}
},
"datasource": {
"type": "datasource",
"uid": "grafana"
},
"refId": "N",
"hidden": false
}
},
{
"kind": "PanelQuery",
"spec": {
"query": {
"kind": "datasource",
"spec": {
"labels": "",
"scenarioId": "random_walk"
}
},
"datasource": {
"type": "datasource",
"uid": "grafana"
},
"refId": "O",
"hidden": false
}
},
{
"kind": "PanelQuery",
"spec": {
"query": {
"kind": "datasource",
"spec": {
"scenarioId": "random_walk"
}
},
"datasource": {
"type": "datasource",
"uid": "grafana"
},
"refId": "P",
"hidden": false
}
},
{
"kind": "PanelQuery",
"spec": {
"query": {
"kind": "datasource",
"spec": {
"scenarioId": "random_walk"
}
},
"datasource": {
"type": "datasource",
"uid": "grafana"
},
"refId": "Q",
"hidden": false
}
}
],
"transformations": [],
"queryOptions": {}
}
},
"vizConfig": {
"kind": "bargauge",
"spec": {
"pluginVersion": "12.4.0-pre",
"options": {
"displayMode": "gradient",
"legend": {
"calcs": [],
"displayMode": "list",
"placement": "bottom",
"showLegend": false
},
"maxVizHeight": 300,
"minVizHeight": 16,
"minVizWidth": 8,
"namePlacement": "auto",
"orientation": "horizontal",
"reduceOptions": {
"calcs": [
"mean"
],
"fields": "",
"values": false
},
"showUnfilled": true,
"sizing": "auto",
"valueMode": "color"
},
"fieldConfig": {
"defaults": {
"unit": "percent",
"min": 0,
"max": 100,
"thresholds": {
"mode": "absolute",
"steps": [
{
"value": 0,
"color": "red"
},
{
"value": 50,
"color": "yellow"
}
]
},
"color": {
"mode": "thresholds"
}
},
"overrides": []
}
}
}
}
}
},
"layout": {
"kind": "GridLayout",
"spec": {
"items": [
{
"kind": "GridLayoutItem",
"spec": {
"x": 0,
"y": 0,
"width": 24,
"height": 15,
"element": {
"kind": "ElementReference",
"name": "panel-4"
}
}
}
]
}
},
"links": [],
"liveNow": false,
"preload": false,
"tags": [],
"timeSettings": {
"timezone": "",
"from": "now-6h",
"to": "now",
"autoRefresh": "",
"autoRefreshIntervals": [
"5s",
"10s",
"30s",
"1m",
"5m",
"15m",
"30m",
"1h",
"2h",
"1d"
],
"hideTimepicker": false,
"fiscalYearStartMonth": 0
},
"title": "Bar Gauge Demo Unfilled Copy v1",
"variables": []
},
"status": {}
}
@@ -1,475 +0,0 @@
{
"kind": "DashboardWithAccessInfo",
"apiVersion": "dashboard.grafana.app/v2beta1",
"metadata": {
"name": "ad6phhg",
"namespace": "default",
"uid": "spsmxIXYXdgxtY972XX7j3dj3ijM3IZXDmsCfjygSP8X",
"resourceVersion": "2",
"generation": 2,
"creationTimestamp": "2025-11-27T12:31:46Z",
"labels": {
"grafana.app/deprecatedInternalID": "283"
},
"annotations": {
"grafana.app/createdBy": "user:eex2ofwuj0agwd",
"grafana.app/updatedBy": "user:eex2ofwuj0agwd",
"grafana.app/updatedTimestamp": "2025-11-27T12:32:09Z"
}
},
"spec": {
"annotations": [
{
"kind": "AnnotationQuery",
"spec": {
"query": {
"kind": "DataQuery",
"group": "",
"version": "v0",
"spec": {}
},
"enable": true,
"hide": true,
"iconColor": "rgba(0, 211, 255, 1)",
"name": "Annotations \u0026 Alerts",
"builtIn": true,
"legacyOptions": {
"type": "dashboard"
}
}
}
],
"cursorSync": "Off",
"editable": true,
"elements": {
"panel-4": {
"kind": "Panel",
"spec": {
"id": 4,
"title": "Panel Title",
"description": "",
"links": [],
"data": {
"kind": "QueryGroup",
"spec": {
"queries": [
{
"kind": "PanelQuery",
"spec": {
"query": {
"kind": "DataQuery",
"group": "datasource",
"version": "v0",
"datasource": {
"name": "grafana"
},
"spec": {
"scenarioId": "random_walk"
}
},
"refId": "A",
"hidden": false
}
},
{
"kind": "PanelQuery",
"spec": {
"query": {
"kind": "DataQuery",
"group": "datasource",
"version": "v0",
"datasource": {
"name": "grafana"
},
"spec": {
"scenarioId": "random_walk"
}
},
"refId": "B",
"hidden": false
}
},
{
"kind": "PanelQuery",
"spec": {
"query": {
"kind": "DataQuery",
"group": "datasource",
"version": "v0",
"datasource": {
"name": "grafana"
},
"spec": {
"scenarioId": "random_walk"
}
},
"refId": "C",
"hidden": false
}
},
{
"kind": "PanelQuery",
"spec": {
"query": {
"kind": "DataQuery",
"group": "datasource",
"version": "v0",
"datasource": {
"name": "grafana"
},
"spec": {
"scenarioId": "random_walk"
}
},
"refId": "D",
"hidden": false
}
},
{
"kind": "PanelQuery",
"spec": {
"query": {
"kind": "DataQuery",
"group": "datasource",
"version": "v0",
"datasource": {
"name": "grafana"
},
"spec": {
"scenarioId": "random_walk"
}
},
"refId": "E",
"hidden": false
}
},
{
"kind": "PanelQuery",
"spec": {
"query": {
"kind": "DataQuery",
"group": "datasource",
"version": "v0",
"datasource": {
"name": "grafana"
},
"spec": {
"scenarioId": "random_walk"
}
},
"refId": "F",
"hidden": false
}
},
{
"kind": "PanelQuery",
"spec": {
"query": {
"kind": "DataQuery",
"group": "datasource",
"version": "v0",
"datasource": {
"name": "grafana"
},
"spec": {
"scenarioId": "random_walk"
}
},
"refId": "G",
"hidden": false
}
},
{
"kind": "PanelQuery",
"spec": {
"query": {
"kind": "DataQuery",
"group": "datasource",
"version": "v0",
"datasource": {
"name": "grafana"
},
"spec": {
"labels": "",
"scenarioId": "random_walk"
}
},
"refId": "H",
"hidden": false
}
},
{
"kind": "PanelQuery",
"spec": {
"query": {
"kind": "DataQuery",
"group": "datasource",
"version": "v0",
"datasource": {
"name": "grafana"
},
"spec": {
"scenarioId": "random_walk"
}
},
"refId": "I",
"hidden": false
}
},
{
"kind": "PanelQuery",
"spec": {
"query": {
"kind": "DataQuery",
"group": "datasource",
"version": "v0",
"datasource": {
"name": "grafana"
},
"spec": {
"scenarioId": "random_walk"
}
},
"refId": "J",
"hidden": false
}
},
{
"kind": "PanelQuery",
"spec": {
"query": {
"kind": "DataQuery",
"group": "datasource",
"version": "v0",
"datasource": {
"name": "grafana"
},
"spec": {
"scenarioId": "random_walk"
}
},
"refId": "K",
"hidden": false
}
},
{
"kind": "PanelQuery",
"spec": {
"query": {
"kind": "DataQuery",
"group": "datasource",
"version": "v0",
"datasource": {
"name": "grafana"
},
"spec": {
"scenarioId": "random_walk"
}
},
"refId": "L",
"hidden": false
}
},
{
"kind": "PanelQuery",
"spec": {
"query": {
"kind": "DataQuery",
"group": "datasource",
"version": "v0",
"datasource": {
"name": "grafana"
},
"spec": {
"scenarioId": "random_walk"
}
},
"refId": "M",
"hidden": false
}
},
{
"kind": "PanelQuery",
"spec": {
"query": {
"kind": "DataQuery",
"group": "datasource",
"version": "v0",
"datasource": {
"name": "grafana"
},
"spec": {
"scenarioId": "random_walk"
}
},
"refId": "N",
"hidden": false
}
},
{
"kind": "PanelQuery",
"spec": {
"query": {
"kind": "DataQuery",
"group": "datasource",
"version": "v0",
"datasource": {
"name": "grafana"
},
"spec": {
"labels": "",
"scenarioId": "random_walk"
}
},
"refId": "O",
"hidden": false
}
},
{
"kind": "PanelQuery",
"spec": {
"query": {
"kind": "DataQuery",
"group": "datasource",
"version": "v0",
"datasource": {
"name": "grafana"
},
"spec": {
"scenarioId": "random_walk"
}
},
"refId": "P",
"hidden": false
}
},
{
"kind": "PanelQuery",
"spec": {
"query": {
"kind": "DataQuery",
"group": "datasource",
"version": "v0",
"datasource": {
"name": "grafana"
},
"spec": {
"scenarioId": "random_walk"
}
},
"refId": "Q",
"hidden": false
}
}
],
"transformations": [],
"queryOptions": {}
}
},
"vizConfig": {
"kind": "VizConfig",
"group": "bargauge",
"version": "12.4.0-pre",
"spec": {
"options": {
"displayMode": "gradient",
"legend": {
"calcs": [],
"displayMode": "list",
"placement": "bottom",
"showLegend": false
},
"maxVizHeight": 300,
"minVizHeight": 16,
"minVizWidth": 8,
"namePlacement": "auto",
"orientation": "horizontal",
"reduceOptions": {
"calcs": [
"mean"
],
"fields": "",
"values": false
},
"showUnfilled": true,
"sizing": "auto",
"valueMode": "color"
},
"fieldConfig": {
"defaults": {
"unit": "percent",
"min": 0,
"max": 100,
"thresholds": {
"mode": "absolute",
"steps": [
{
"value": 0,
"color": "red"
},
{
"value": 50,
"color": "yellow"
}
]
},
"color": {
"mode": "thresholds"
}
},
"overrides": []
}
}
}
}
}
},
"layout": {
"kind": "GridLayout",
"spec": {
"items": [
{
"kind": "GridLayoutItem",
"spec": {
"x": 0,
"y": 0,
"width": 24,
"height": 15,
"element": {
"kind": "ElementReference",
"name": "panel-4"
}
}
}
]
}
},
"links": [],
"liveNow": false,
"preload": false,
"tags": [],
"timeSettings": {
"timezone": "",
"from": "now-6h",
"to": "now",
"autoRefresh": "",
"autoRefreshIntervals": [
"5s",
"10s",
"30s",
"1m",
"5m",
"15m",
"30m",
"1h",
"2h",
"1d"
],
"hideTimepicker": false,
"fiscalYearStartMonth": 0
},
"title": "Bar Gauge Demo Unfilled Copy v1",
"variables": []
},
"status": {}
}
@@ -16,7 +16,6 @@ import (
dashv2alpha1 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v2alpha1"
schemaversion "github.com/grafana/grafana/apps/dashboard/pkg/migration/schemaversion"
"github.com/grafana/grafana/pkg/apimachinery/identity"
"github.com/grafana/grafana/pkg/tsdb/grafanads"
)
// getDefaultDatasourceType gets the default datasource type using the datasource provider
@@ -53,16 +52,6 @@ func getDatasourceTypeByUID(ctx context.Context, uid string, provider schemavers
return getDefaultDatasourceType(ctx, provider)
}
// resolveGrafanaDatasourceUID resolves the Grafana datasource UID when type is "datasource" and UID is empty.
// The Grafana datasource has type "datasource" and UID "grafana". When a v1beta1 dashboard has
// datasource: { type: "datasource" } with no UID, it should resolve to uid: "grafana".
func resolveGrafanaDatasourceUID(dsType, dsUID string) string {
if dsType == "datasource" && dsUID == "" {
return grafanads.DatasourceUID
}
return dsUID
}
// prepareV1beta1ConversionContext sets up the context with namespace and service identity
// for v1beta1 dashboard conversions. This context is needed to retrieve datasources for
// converting dashboard datasource references.
@@ -1685,9 +1674,6 @@ func buildGroupByVariable(ctx context.Context, varMap map[string]interface{}, co
// If no UID and no type, use default
datasourceType = getDefaultDatasourceType(ctx, dsIndexProvider)
}
// Resolve Grafana datasource UID when type is "datasource" and UID is empty
datasourceUID = resolveGrafanaDatasourceUID(datasourceType, datasourceUID)
} else {
datasourceType = getDefaultDatasourceType(ctx, dsIndexProvider)
}
@@ -1890,45 +1876,22 @@ func transformPanelQueries(ctx context.Context, panelMap map[string]interface{},
// Get panel datasource
var panelDatasource *dashv2alpha1.DashboardDataSourceRef
ds, dsExists := panelMap["datasource"]
if ds, ok := panelMap["datasource"].(map[string]interface{}); ok {
dsUID := schemaversion.GetStringValue(ds, "uid")
dsType := schemaversion.GetStringValue(ds, "type")
if dsExists && ds != nil {
if dsMap, ok := ds.(map[string]interface{}); ok {
// Handle panel datasource as object
dsUID := schemaversion.GetStringValue(dsMap, "uid")
dsType := schemaversion.GetStringValue(dsMap, "type")
// If we have a UID, use it to get the correct type from the datasource service
// BUT: Don't try to resolve types for template variables
if dsUID != "" && dsType == "" && !isTemplateVariable(dsUID) {
dsType = getDatasourceTypeByUID(ctx, dsUID, dsIndexProvider)
} else if dsUID == "" && dsType == "" {
// If no UID and no type, use default
dsType = getDefaultDatasourceType(ctx, dsIndexProvider)
}
// Check if datasource object is effectively empty (no uid and no type)
// Empty objects {} should be preserved as empty, not converted to defaults
isEmpty := dsUID == "" && dsType == ""
// If we have a UID, use it to get the correct type from the datasource service
// BUT: Don't try to resolve types for template variables
if dsUID != "" && dsType == "" && !isTemplateVariable(dsUID) {
dsType = getDatasourceTypeByUID(ctx, dsUID, dsIndexProvider)
} else if !isEmpty && dsUID == "" && dsType == "" {
// Only set default if datasource is missing (not empty object)
// Empty objects {} should remain empty
dsType = getDefaultDatasourceType(ctx, dsIndexProvider)
}
// Resolve Grafana datasource UID when type is "datasource" and UID is empty
// Only resolve if we have a type (not for empty objects)
if !isEmpty {
dsUID = resolveGrafanaDatasourceUID(dsType, dsUID)
}
// Only create panelDatasource if it's not empty after resolution
// Empty objects {} should result in nil panelDatasource
// After resolution, check if we have a type or UID (not just the original isEmpty)
// This ensures that type: "datasource" with empty UID gets resolved to uid: "grafana"
// and panelDatasource is created
if dsType != "" || dsUID != "" {
panelDatasource = &dashv2alpha1.DashboardDataSourceRef{
Type: &dsType,
Uid: &dsUID,
}
}
panelDatasource = &dashv2alpha1.DashboardDataSourceRef{
Type: &dsType,
Uid: &dsUID,
}
}
@@ -1955,24 +1918,12 @@ func transformSingleQuery(ctx context.Context, targetMap map[string]interface{},
queryDatasourceUID = schemaversion.GetStringValue(ds, "uid")
queryDatasourceType = schemaversion.GetStringValue(ds, "type")
// If target datasource is empty object {} (no uid and no type), treat it as missing
// and fall through to use panel datasource (matches frontend behavior in v36 migration)
if queryDatasourceUID == "" && queryDatasourceType == "" {
// Empty datasource object - will use panel datasource below
} else {
// If we have a UID, use it to get the correct type from the datasource service
// BUT: Don't try to resolve types for template variables
if queryDatasourceUID != "" && queryDatasourceType == "" && !isTemplateVariable(queryDatasourceUID) {
queryDatasourceType = getDatasourceTypeByUID(ctx, queryDatasourceUID, dsIndexProvider)
}
// Resolve Grafana datasource UID when type is "datasource" and UID is empty
queryDatasourceUID = resolveGrafanaDatasourceUID(queryDatasourceType, queryDatasourceUID)
// If we have a UID, use it to get the correct type from the datasource service
// BUT: Don't try to resolve types for template variables
if queryDatasourceUID != "" && queryDatasourceType == "" && !isTemplateVariable(queryDatasourceUID) {
queryDatasourceType = getDatasourceTypeByUID(ctx, queryDatasourceUID, dsIndexProvider)
}
}
// Use panel datasource if target datasource is missing or empty
if queryDatasourceUID == "" && queryDatasourceType == "" && panelDatasource != nil {
} else if panelDatasource != nil {
// Only use panel datasource if it's not a mixed datasource
// Mixed datasources should not be propagated to individual queries
if panelDatasource.Uid != nil && *panelDatasource.Uid != "-- Mixed --" {
@@ -1980,10 +1931,6 @@ func transformSingleQuery(ctx context.Context, targetMap map[string]interface{},
queryDatasourceType = *panelDatasource.Type
}
queryDatasourceUID = *panelDatasource.Uid
} else if panelDatasource.Type != nil && *panelDatasource.Type == "datasource" {
// Handle case where panel datasource has type "datasource" but no UID
queryDatasourceType = *panelDatasource.Type
queryDatasourceUID = resolveGrafanaDatasourceUID(*panelDatasource.Type, "")
}
}
@@ -1,228 +0,0 @@
package conversion
import (
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"k8s.io/apimachinery/pkg/runtime"
dashv1 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1beta1"
dashv2alpha1 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v2alpha1"
"github.com/grafana/grafana/apps/dashboard/pkg/migration"
migrationtestutil "github.com/grafana/grafana/apps/dashboard/pkg/migration/testutil"
"github.com/grafana/grafana/pkg/tsdb/grafanads"
)
// TestV1beta1ToV2alpha1 tests conversion from v1beta1 to v2alpha1 with various datasource scenarios
func TestV1beta1ToV2alpha1(t *testing.T) {
// Initialize the migrator with test providers
dsProvider := migrationtestutil.NewDataSourceProvider(migrationtestutil.StandardTestConfig)
leProvider := migrationtestutil.NewLibraryElementProvider()
migration.Initialize(dsProvider, leProvider)
// Set up conversion scheme
scheme := runtime.NewScheme()
err := RegisterConversions(scheme, dsProvider, leProvider)
require.NoError(t, err)
testCases := []struct {
name string
createV1beta1 func() *dashv1.Dashboard
validateV2alpha1 func(t *testing.T, v2alpha1 *dashv2alpha1.Dashboard)
}{
{
name: "panel datasource type datasource with no UID - resolves to grafana UID",
createV1beta1: func() *dashv1.Dashboard {
return &dashv1.Dashboard{
Spec: dashv1.DashboardSpec{
Object: map[string]interface{}{
"title": "Test Dashboard",
"panels": []interface{}{
map[string]interface{}{
"id": 1,
"type": "bargauge",
// Panel datasource has type: "datasource" but no UID
"datasource": map[string]interface{}{
"type": "datasource",
// No "uid" field
},
"targets": []interface{}{
map[string]interface{}{
"refId": "A",
"scenarioId": "random_walk",
// Target datasource is empty object {}
"datasource": map[string]interface{}{},
},
},
},
},
},
},
}
},
validateV2alpha1: func(t *testing.T, v2alpha1 *dashv2alpha1.Dashboard) {
require.NotNil(t, v2alpha1.Spec.Elements["panel-1"])
panel := v2alpha1.Spec.Elements["panel-1"].PanelKind
require.NotNil(t, panel)
// Verify queries have datasource with UID resolved to "grafana"
require.Len(t, panel.Spec.Data.Spec.Queries, 1)
query := panel.Spec.Data.Spec.Queries[0]
require.NotNil(t, query.Spec.Datasource, "Query should have datasource")
// Verify datasource type is "datasource"
assert.NotNil(t, query.Spec.Datasource.Type)
assert.Equal(t, "datasource", *query.Spec.Datasource.Type)
// Verify datasource UID is resolved to "grafana"
assert.NotNil(t, query.Spec.Datasource.Uid)
assert.Equal(t, grafanads.DatasourceUID, *query.Spec.Datasource.Uid, "type: 'datasource' with no UID should resolve to uid: 'grafana'")
// Verify query kind matches datasource type
assert.Equal(t, "datasource", query.Spec.Query.Kind)
},
},
{
name: "empty target datasource objects inherit from panel datasource",
createV1beta1: func() *dashv1.Dashboard {
return &dashv1.Dashboard{
Spec: dashv1.DashboardSpec{
Object: map[string]interface{}{
"title": "Test Dashboard",
"panels": []interface{}{
map[string]interface{}{
"id": 1,
"type": "bargauge",
// Panel datasource is set
"datasource": map[string]interface{}{
"type": "prometheus",
"uid": "prometheus-uid",
},
"targets": []interface{}{
map[string]interface{}{
"refId": "A",
"scenarioId": "random_walk",
// Target datasource is empty object {} - should inherit from panel
"datasource": map[string]interface{}{},
},
map[string]interface{}{
"refId": "B",
"scenarioId": "random_walk",
"datasource": map[string]interface{}{},
},
},
},
},
},
},
}
},
validateV2alpha1: func(t *testing.T, v2alpha1 *dashv2alpha1.Dashboard) {
require.NotNil(t, v2alpha1.Spec.Elements["panel-1"])
panel := v2alpha1.Spec.Elements["panel-1"].PanelKind
require.NotNil(t, panel)
// Verify queries inherit panel datasource
require.Len(t, panel.Spec.Data.Spec.Queries, 2)
for _, query := range panel.Spec.Data.Spec.Queries {
require.NotNil(t, query.Spec.Datasource, "Query should inherit datasource from panel when target datasource is empty")
assert.Equal(t, "prometheus", *query.Spec.Datasource.Type)
assert.Equal(t, "prometheus-uid", *query.Spec.Datasource.Uid)
assert.Equal(t, "prometheus", query.Spec.Query.Kind)
}
},
},
{
name: "panel datasource null without empty target datasource objects - no default set",
createV1beta1: func() *dashv1.Dashboard {
return &dashv1.Dashboard{
Spec: dashv1.DashboardSpec{
Object: map[string]interface{}{
"title": "Test Dashboard",
"panels": []interface{}{
map[string]interface{}{
"id": 1,
"type": "bargauge",
// Panel datasource is null
"datasource": nil,
"targets": []interface{}{
map[string]interface{}{
"refId": "A",
"scenarioId": "random_walk",
// Target has no datasource field at all (not even empty object)
},
},
},
},
},
},
}
},
validateV2alpha1: func(t *testing.T, v2alpha1 *dashv2alpha1.Dashboard) {
require.NotNil(t, v2alpha1.Spec.Elements["panel-1"])
panel := v2alpha1.Spec.Elements["panel-1"].PanelKind
require.NotNil(t, panel)
// Verify queries don't have datasource when panel is null and targets don't have empty datasource objects
require.Len(t, panel.Spec.Data.Spec.Queries, 1)
query := panel.Spec.Data.Spec.Queries[0]
// Query should not have datasource when panel datasource is null and target doesn't have empty datasource object
assert.Nil(t, query.Spec.Datasource, "Query should not have datasource when panel datasource is null and target has no empty datasource object")
},
},
{
name: "empty panel datasource object preserved as empty",
createV1beta1: func() *dashv1.Dashboard {
return &dashv1.Dashboard{
Spec: dashv1.DashboardSpec{
Object: map[string]interface{}{
"title": "Test Dashboard",
"panels": []interface{}{
map[string]interface{}{
"id": 1,
"type": "bargauge",
// Panel datasource is empty object {} - should be preserved as empty
"datasource": map[string]interface{}{},
"targets": []interface{}{
map[string]interface{}{
"refId": "A",
"scenarioId": "random_walk",
"datasource": map[string]interface{}{},
},
},
},
},
},
},
}
},
validateV2alpha1: func(t *testing.T, v2alpha1 *dashv2alpha1.Dashboard) {
require.NotNil(t, v2alpha1.Spec.Elements["panel-1"])
panel := v2alpha1.Spec.Elements["panel-1"].PanelKind
require.NotNil(t, panel)
// Verify queries don't have datasource when panel datasource is empty object {}
require.Len(t, panel.Spec.Data.Spec.Queries, 1)
query := panel.Spec.Data.Spec.Queries[0]
// Empty objects {} should be preserved as empty, not converted to defaults
assert.Nil(t, query.Spec.Datasource, "Query should not have datasource when panel datasource is empty object {}")
assert.Equal(t, "", query.Spec.Query.Kind, "Query kind should be empty when datasource is empty object {}")
},
},
}
for _, tt := range testCases {
t.Run(tt.name, func(t *testing.T) {
v1beta1Dash := tt.createV1beta1()
// Convert to v2alpha1
var v2alpha1Dash dashv2alpha1.Dashboard
err := scheme.Convert(v1beta1Dash, &v2alpha1Dash, nil)
require.NoError(t, err)
// Validate the conversion result
tt.validateV2alpha1(t, &v2alpha1Dash)
})
}
}
+1 -14
View File
@@ -72,7 +72,6 @@ cloud.google.com/go/cloudtasks v1.13.6/go.mod h1:/IDaQqGKMixD+ayM43CfsvWF2k36Geo
cloud.google.com/go/compute v1.40.0 h1:dlEzKo/BtyEGNc+SflXwwoBh52dNl/A5BaSYurT0k0k=
cloud.google.com/go/compute v1.40.0/go.mod h1:P1doTJnlwurJDzIQFMp4mgU+vyCe9HU2NWTlqTfq3MY=
cloud.google.com/go/compute/metadata v0.5.0/go.mod h1:aHnloV2TPI38yx4s9+wAZhHykWvVCfu7hQbF+9CWoiY=
cloud.google.com/go/compute/metadata v0.7.0/go.mod h1:j5MvL9PprKL39t166CoB1uVHfQMs4tFQZZcKwksXUjo=
cloud.google.com/go/compute/metadata v0.8.0/go.mod h1:sYOGTp851OV9bOFJ9CH7elVvyzopvWQFNNghtDQ/Biw=
cloud.google.com/go/contactcenterinsights v1.17.3 h1:lenyU3uzHwKDveCwmpfNxHYvLS3uEBWdn+O7+rSxy+Q=
cloud.google.com/go/contactcenterinsights v1.17.3/go.mod h1:7Uu2CpxS3f6XxhRdlEzYAkrChpR5P5QfcdGAFEdHOG8=
@@ -309,7 +308,6 @@ github.com/GoogleCloudPlatform/cloudsql-proxy v1.37.8/go.mod h1:exon/I6I+5u/ab7A
github.com/GoogleCloudPlatform/grpc-gcp-go/grpcgcp v1.5.3 h1:2afWGsMzkIcN8Qm4mgPJKZWyroE5QBszMiDMYEBrnfw=
github.com/GoogleCloudPlatform/grpc-gcp-go/grpcgcp v1.5.3/go.mod h1:dppbR7CwXD4pgtV9t3wD1812RaLDcBjtblcDF5f1vI0=
github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.27.0/go.mod h1:yAZHSGnqScoU556rBOVkwLze6WP5N+U11RHuWaGVxwY=
github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.29.0/go.mod h1:Cz6ft6Dkn3Et6l2v2a9/RpN7epQ1GtDlO6lj8bEcOvw=
github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.51.0/go.mod h1:BnBReJLvVYx2CS/UHOgVz2BXKXD9wsQPxZug20nZhd0=
github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/trace v1.29.0 h1:YVtMlmfRUTaWs3+1acwMBp7rBUo6zrxl6Kn13/R9YW4=
github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/trace v1.29.0/go.mod h1:rKOFVIPbNs2wZeh7ZeQ0D9p/XLgbNiTr5m7x6KuAshk=
@@ -549,7 +547,6 @@ github.com/cncf/udpa/go v0.0.0-20220112060539-c52dc94e7fbe h1:QQ3GSy+MqSHxm/d8nC
github.com/cncf/xds/go v0.0.0-20240723142845-024c85f92f20/go.mod h1:W+zGtBO5Y1IgJhy4+A9GOqVhqLpfZi+vwmdNXUehLA8=
github.com/cncf/xds/go v0.0.0-20240905190251-b4127c9b8d78/go.mod h1:W+zGtBO5Y1IgJhy4+A9GOqVhqLpfZi+vwmdNXUehLA8=
github.com/cncf/xds/go v0.0.0-20250326154945-ae57f3c0d45f/go.mod h1:W+zGtBO5Y1IgJhy4+A9GOqVhqLpfZi+vwmdNXUehLA8=
github.com/cncf/xds/go v0.0.0-20250501225837-2ac532fd4443/go.mod h1:W+zGtBO5Y1IgJhy4+A9GOqVhqLpfZi+vwmdNXUehLA8=
github.com/cockroachdb/cockroach-go v0.0.0-20181001143604-e0a95dfd547c h1:2zRrJWIt/f9c9HhNHAgrRgq0San5gRRUJTBXLkchal0=
github.com/cockroachdb/datadriven v1.0.2/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU=
github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd h1:qMd81Ts1T2OTKmB4acZcyKaMtRnY5Y44NuXGX2GFJ1w=
@@ -705,9 +702,7 @@ github.com/emicklei/go-restful/v3 v3.11.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRr
github.com/emicklei/go-restful/v3 v3.12.1/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc=
github.com/emicklei/go-restful/v3 v3.12.2/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc=
github.com/emicklei/proto v1.10.0/go.mod h1:rn1FgRS/FANiZdD2djyH7TMA9jdRDcYQ9IEN9yvjX0A=
github.com/envoyproxy/go-control-plane v0.13.4/go.mod h1:kDfuBlDVsSj2MjrLEtRWtHlsWIFcGyB2RMO44Dc5GZA=
github.com/envoyproxy/go-control-plane/envoy v1.32.3/go.mod h1:F6hWupPfh75TBXGKA++MCT/CZHFq5r9/uwt/kQYkZfE=
github.com/envoyproxy/go-control-plane/envoy v1.32.4/go.mod h1:Gzjc5k8JcJswLjAx1Zm+wSYE20UrLtt7JZMWiWQXQEw=
github.com/envoyproxy/protoc-gen-validate v1.0.4/go.mod h1:qys6tmnRsYrQqIhm2bvKZH4Blx/1gTIZ2UKVY1M+Yew=
github.com/envoyproxy/protoc-gen-validate v1.1.0/go.mod h1:sXRDRVmzEbkM7CVcM06s9shE/m23dg3wzjl0UWqJ2q4=
github.com/evanphx/json-patch v5.6.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
@@ -754,7 +749,6 @@ github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4 h1:WtGNWLvXpe
github.com/go-jose/go-jose/v3 v3.0.3/go.mod h1:5b+7YgP7ZICgJDBdfjZaIt+H/9L9T/YQrVfLAMboGkQ=
github.com/go-jose/go-jose/v4 v4.0.5/go.mod h1:s3P1lRrkT8igV8D9OjyL4WRyHvjB6a4JSllnOrmmBOA=
github.com/go-jose/go-jose/v4 v4.1.1/go.mod h1:BdsZGqgdO3b6tTc6LSE56wcDbMMLuPsw5d4ZD5f94kA=
github.com/go-jose/go-jose/v4 v4.1.2/go.mod h1:22cg9HWM1pOlnRiY+9cQYJ9XHmya1bYW8OeDM6Ku6Oo=
github.com/go-json-experiment/json v0.0.0-20250211171154-1ae217ad3535 h1:yE7argOs92u+sSCRgqqe6eF+cDaVhSPlioy1UkA0p/w=
github.com/go-json-experiment/json v0.0.0-20250211171154-1ae217ad3535/go.mod h1:BWmvoE1Xia34f3l/ibJweyhrT+aROb/FQ6d+37F0e2s=
github.com/go-kit/kit v0.12.0 h1:e4o3o3IsBfAKQh5Qbbiqyfu97Ku7jrO/JbohvztANh4=
@@ -872,7 +866,6 @@ github.com/grafana/grafana-app-sdk v0.41.0 h1:SYHN3U7B1myRKY3UZZDkFsue9TDmAOap0U
github.com/grafana/grafana-app-sdk v0.41.0/go.mod h1:Wg/3vEZfok1hhIWiHaaJm+FwkosfO98o8KbeLFEnZpY=
github.com/grafana/grafana-app-sdk v0.46.0/go.mod h1:LCTrqR1SwBS13XGVYveBmM7giJDDjzuXK+M9VzPuPWc=
github.com/grafana/grafana-app-sdk v0.47.0/go.mod h1:kywXmkppq0oReUMzkjTW8Fq2EBzyN7v914jttTWnWxA=
github.com/grafana/grafana-app-sdk v0.48.2/go.mod h1:LDOvQ7OOyHLcXdSa0InATCa5OMoYAd6E1+rGLrMgHuk=
github.com/grafana/grafana-app-sdk/logging v0.38.0/go.mod h1:Y/bvbDhBiV/tkIle9RW49pgfSPIPSON8Q4qjx3pyqDk=
github.com/grafana/grafana-app-sdk/logging v0.39.0 h1:3GgN5+dUZYqq74Q+GT9/ET+yo+V54zWQk/Q2/JsJQB4=
github.com/grafana/grafana-app-sdk/logging v0.39.0/go.mod h1:WhDENSnaGHtyVVwZGVnAR7YLvh2xlLDYR3D7E6h7XVk=
@@ -886,7 +879,6 @@ github.com/grafana/grafana-app-sdk/logging v0.45.0/go.mod h1:Gh/nBWnspK3oDNWtiM5
github.com/grafana/grafana-app-sdk/logging v0.46.0/go.mod h1:Gh/nBWnspK3oDNWtiM5qUF/fardHzOIEez+SPI3JeHA=
github.com/grafana/grafana-app-sdk/logging v0.48.0 h1:xolkQxBlA2LQF4hprKIAeu+zUem1DigYZ6XC1TOhFJE=
github.com/grafana/grafana-app-sdk/logging v0.48.0/go.mod h1:Gh/nBWnspK3oDNWtiM5qUF/fardHzOIEez+SPI3JeHA=
github.com/grafana/grafana-app-sdk/logging v0.48.1/go.mod h1:Gh/nBWnspK3oDNWtiM5qUF/fardHzOIEez+SPI3JeHA=
github.com/grafana/grafana-app-sdk/logging v0.48.2 h1:tI+a9slUvxKUgweXDzUqkca2LWV3g1UdaSvwt8nQNHg=
github.com/grafana/grafana-app-sdk/logging v0.48.2/go.mod h1:Gh/nBWnspK3oDNWtiM5qUF/fardHzOIEez+SPI3JeHA=
github.com/grafana/grafana-app-sdk/plugin v0.41.0 h1:ShUvGpAVzM3UxcsfwS6l/lwW4ytDeTbCQXf8w2P8Yp8=
@@ -1436,7 +1428,6 @@ github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmq
github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
github.com/spf13/pflag v1.0.7/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
github.com/spf13/viper v1.20.1/go.mod h1:P9Mdzt1zoHIG8m2eZQinpiBjo6kCmZSKBClNNqjJvu4=
github.com/spiffe/go-spiffe/v2 v2.5.0/go.mod h1:P+NxobPc6wXhVtINNtFjNWGBTreew1GBUCwT2wPmb7g=
github.com/spkg/bom v0.0.0-20160624110644-59b7046e48ad h1:fiWzISvDn0Csy5H0iwgAuJGQTUpVfEMJJd4nRFXogbc=
github.com/stefanberger/go-pkcs11uri v0.0.0-20230803200340-78284954bff6/go.mod h1:39R/xuhNgVhi+K0/zst4TLrJrVmbm6LVgl4A0+ZFS5M=
github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8=
@@ -1792,7 +1783,6 @@ go.opentelemetry.io/contrib/config v0.14.0/go.mod h1:77rDmFPqBae5jtQ2C78RuDTHz4P
go.opentelemetry.io/contrib/detectors/aws/ec2 v1.37.0 h1:BJnWw8+FULhuuF/6R6B/JYqAlCTCy9E4J8qmLpo/7KU=
go.opentelemetry.io/contrib/detectors/aws/ec2 v1.37.0/go.mod h1:gs3y8jvJscW5D+FzrZvJZEsGj+xlMCF0S1x4R6ktiNo=
go.opentelemetry.io/contrib/detectors/gcp v1.36.0/go.mod h1:IbBN8uAIIx734PTonTPxAxnjc2pQTxWNkwfstZ+6H2k=
go.opentelemetry.io/contrib/detectors/gcp v1.37.0/go.mod h1:K5zQ3TT7p2ru9Qkzk0bKtCql0RGkPj9pRjpXgZJZ+rU=
go.opentelemetry.io/contrib/instrumentation/github.com/labstack/echo/otelecho v0.59.0 h1:I8k9HW4yl8SRYNmECKKtjhcOvq9lAP9riqYPixBU3qw=
go.opentelemetry.io/contrib/instrumentation/github.com/labstack/echo/otelecho v0.59.0/go.mod h1:/vTiuiSKBQAerQeMB3CsVJbXd+cvTbhcdOk5AV5Z5R0=
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.45.0/go.mod h1:vsh3ySueQCiKPxFLvjWC4Z135gIa34TQ/NSqkDTZYUM=
@@ -2080,7 +2070,6 @@ google.golang.org/genproto/googleapis/api v0.0.0-20250728155136-f173205681a0/go.
google.golang.org/genproto/googleapis/api v0.0.0-20250804133106-a7a43d27e69b/go.mod h1:oDOGiMSXHL4sDTJvFvIB9nRQCGdLP1o/iVaqQK8zB+M=
google.golang.org/genproto/googleapis/api v0.0.0-20250818200422-3122310a409c/go.mod h1:ea2MjsO70ssTfCjiwHgI0ZFqcw45Ksuk2ckf9G468GA=
google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5/go.mod h1:j3QtIyytwqGr1JUDtYXwtMXWPKsEa5LtzIFN1Wn5WvE=
google.golang.org/genproto/googleapis/api v0.0.0-20250908214217-97024824d090/go.mod h1:U8EXRNSd8sUYyDfs/It7KVWodQr+Hf9xtxyxWudSwEw=
google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4/go.mod h1:NnuHhy+bxcg30o7FnVAZbXsPHUDQ9qKWAQKCD7VxFtk=
google.golang.org/genproto/googleapis/bytestream v0.0.0-20250603155806-513f23925822 h1:zWFRixYR5QlotL+Uv3YfsPRENIrQFXiGs+iwqel6fOQ=
google.golang.org/genproto/googleapis/bytestream v0.0.0-20250603155806-513f23925822/go.mod h1:h6yxum/C2qRb4txaZRLDHK8RyS0H/o2oEDeKY4onY/Y=
@@ -2110,7 +2099,6 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5/go.
google.golang.org/genproto/googleapis/rpc v0.0.0-20250826171959-ef028d996bc1/go.mod h1:GmFNa4BdJZ2a8G+wCe9Bg3wwThLrJun751XstdJt5Og=
google.golang.org/genproto/googleapis/rpc v0.0.0-20250908214217-97024824d090/go.mod h1:GmFNa4BdJZ2a8G+wCe9Bg3wwThLrJun751XstdJt5Og=
google.golang.org/genproto/googleapis/rpc v0.0.0-20250929231259-57b25ae835d4/go.mod h1:HSkG/KdJWusxU1F6CNrwNDjBMgisKxGnc5dAZfT0mjQ=
google.golang.org/genproto/googleapis/rpc v0.0.0-20251002232023-7c0ddcbb5797/go.mod h1:HSkG/KdJWusxU1F6CNrwNDjBMgisKxGnc5dAZfT0mjQ=
google.golang.org/genproto/googleapis/rpc v0.0.0-20251014184007-4626949a642f/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk=
google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
google.golang.org/grpc v1.24.0/go.mod h1:XDChyiUovWa60DnaeDeZmSW86xtLtjtZbwvSiRnRtcA=
@@ -2131,7 +2119,6 @@ google.golang.org/grpc v1.73.0/go.mod h1:50sbHOUqWoCQGI8V2HQLJM0B+LMlIUjNSZmow7E
google.golang.org/grpc v1.74.2/go.mod h1:CtQ+BGjaAIXHs/5YS3i473GqwBBa1zGQNevxdeBEXrM=
google.golang.org/grpc v1.75.0/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ=
google.golang.org/grpc v1.75.1/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ=
google.golang.org/grpc v1.76.0/go.mod h1:Ju12QI8M6iQJtbcsV+awF5a4hfJMLi4X0JLo94ULZ6c=
google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0 h1:M1YKkFIboKNieVO5DLUEVzQfGwJD30Nv2jfUgzb5UcE=
google.golang.org/grpc/examples v0.0.0-20230224211313-3775f633ce20 h1:MLBCGN1O7GzIx+cBiwfYPwtmZ41U3Mn/cotLJciaArI=
google.golang.org/grpc/examples v0.0.0-20230224211313-3775f633ce20/go.mod h1:Nr5H8+MlGWr5+xX/STzdoEqJrO+YteqFbMyCsrb6mH0=
@@ -2252,4 +2239,4 @@ sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY=
sigs.k8s.io/yaml v1.5.0/go.mod h1:wZs27Rbxoai4C0f8/9urLZtZtF3avA3gKvGyPdDqTO4=
tags.cncf.io/container-device-interface v0.7.2/go.mod h1:Xb1PvXv2BhfNb3tla4r9JL129ck1Lxv9KuU6eVOfKto=
tags.cncf.io/container-device-interface/specs-go v0.7.0/go.mod h1:hMAwAbMZyBLdmYqWgYcKH0F/yctNpV3P35f+/088A80=
xorm.io/builder v0.3.6/go.mod h1:LEFAPISnRzG+zxaxj2vPicRwz67BdhFreKg8yv8/TgU=
xorm.io/builder v0.3.6/go.mod h1:LEFAPISnRzG+zxaxj2vPicRwz67BdhFreKg8yv8/TgU=