Compare commits

...

25 Commits

Author SHA1 Message Date
Owen Smallwood
b2d14cc42b Gives resource server a search client so storage-api can call search 2026-01-14 19:51:49 -06:00
Peter Štibraný
584287dc61 Add support for LIST with filtering on selectable fields 2025-12-15 12:10:43 +01:00
Victor Marin
d48455cd20 Dashboards: Panel non applicable filters optimization (#115132)
optimisations
2025-12-11 11:31:19 +02:00
Alexander Akhmetov
439d2c806c Alerting: Add folder_uid label to the grafana_alerting_rule_group_rules metric (#115129) 2025-12-11 09:30:55 +01:00
Ivan Ortega Alba
8aab6302c5 Fix conversion error shallowed and normalize conversion status (#115086)
* Fix the conversion shallowed error and normalize the conversion status

* Add unit tests to ensure all permutations data loss detection

* Fix counting issue
2025-12-11 08:01:31 +00:00
Torkel Ödegaard
33c5cbf4de Dashboards: Update edit button and share button (#115093)
* Dashboards: Update edit button and share button

* update translations
2025-12-11 08:54:50 +01:00
Ryan McKinley
d686a49cf7 Preferences: Enable preferences APIserver (#115128) 2025-12-11 09:33:13 +02:00
Victor Marin
cedf08c9ce DashboardDS: Fix datasource annotations not hiding on toggle hide (#115024)
* fix dashboard datasource annotations not hiding on toggle hide

* cleanup
2025-12-11 09:03:38 +02:00
Stephanie Hingtgen
5ca221743f Dashboards: Prevent query for ID 0; improve logging (#115120) 2025-12-11 00:02:52 -07:00
Ryan McKinley
2fc1210b38 Stars: Enable the collections apiserver (#115076) 2025-12-11 06:36:09 +00:00
Ryan McKinley
8542b2f6a2 Live: Move dashboard events from the raw http server to the apiserver (#115066) 2025-12-11 09:26:35 +03:00
Ryan McKinley
a6043deb33 UnifiedStorage: Include RV when fieldSelectors are processed in the backend (#115110) 2025-12-11 09:15:01 +03:00
Stephanie Hingtgen
3697c8dafc Dashboards: Fix logging for conversions (#115126) 2025-12-10 23:52:35 -06:00
Charandas
3a4022061d K8s: discourage nil authorizer return for APIBuilder as well (#115116) 2025-12-10 23:06:09 +00:00
beejeebus
2a65e0cdcb Revert "Wire up data source config metrics correctly"
This reverts commit e433cfa02d.
2025-12-10 17:38:00 -05:00
Paul Marbach
000c00aee9 Sparkline: Improve min/max logic to avoid issues for very narrow deltas (#115030)
* Sparkline: Prevent infinite loop when rendering a sparkline with a single value

* some tests for this case

* refactor out utils, experiment with getting highlightIndex working

* add comments throughout for #112977

* remove unused import

* Update Sparkline.test.tsx

* fix points mode rendering

* Sparkline: Improve min/max logic to avoid issues for very narrow deltas

* spread all config

* defaults deep

* delete unused import

* remove go.work.sum delta

* line break at end of file
2025-12-10 16:54:29 -05:00
beejeebus
e433cfa02d Wire up data source config metrics correctly
Fix metrics for data source configuration CRUD.

Make sure to only create one histogram and only register it with prometheus once.
2025-12-10 16:16:22 -05:00
Will Assis
30045c02c0 unified-storage: add index on resource_history key_path column (#115113) 2025-12-10 16:03:58 -05:00
Paul Marbach
63bfc1596c Gauge: Updates to the design of the panel edit (#115097)
* Gauge: Updates to the design of the panel edit

* i18n

* remove unused const

* i18n

* fix gdev and migration tests

* reduce bar gauge glow factor
2025-12-10 21:03:44 +00:00
Charandas
da14be859e Authorization: panic when specific authorizer returns nil (#114982) 2025-12-10 13:01:34 -08:00
ismail simsek
30d3bb39c0 Chore: Remove deprecated language_provider methods in prometheus package (#114361)
* remove deprecated language provider and its methods

* remove more deprecated code

* yarn lint:prune
2025-12-10 21:07:18 +01:00
Yunwen Zheng
b3f98d4cc3 SaveProvisionedDashboard: Provisioned dashboard "Save as copy" flow (#114435)
* SaveProvisionedDashboard: Save as copy flow

* add copy tags toggle
2025-12-10 14:01:51 -05:00
Isabel Matwawana
f368139802 Docs: Add permissions information (#115107) 2025-12-10 18:24:36 +00:00
Adela Almasan
7ae9f94de7 Suggestions: Handle errors (#114868)
Co-authored-by: Paul Marbach <paul.marbach@grafana.com>
2025-12-10 18:17:24 +00:00
Alexander Akhmetov
a46f0a222e Alerting: Initialize rule routine with initial alert rule fingerprint (#114979)
Alerting: Initialize rule routine with initial fingerprint
2025-12-10 19:14:30 +01:00
525 changed files with 6823 additions and 2944 deletions

View File

@@ -8,9 +8,8 @@ import (
func (stars *StarsSpec) Add(group, kind, name string) {
for i, r := range stars.Resource {
if r.Group == group && r.Kind == kind {
r.Names = append(r.Names, name)
slices.Sort(r.Names)
stars.Resource[i].Names = slices.Compact(r.Names)
stars.Resource[i].Names = append(r.Names, name)
stars.Normalize()
return
}
}
@@ -46,8 +45,15 @@ func (stars *StarsSpec) Normalize() {
resources := make([]StarsResource, 0, len(stars.Resource))
for _, r := range stars.Resource {
if len(r.Names) > 0 {
slices.Sort(r.Names)
r.Names = slices.Compact(r.Names) // removes any duplicates
unique := make([]string, 0, len(r.Names))
found := make(map[string]bool, len(r.Names))
for _, name := range r.Names {
if !found[name] {
unique = append(unique, name)
found[name] = true
}
}
r.Names = unique
resources = append(resources, r)
}
}

View File

@@ -39,7 +39,7 @@ func TestStarsWrite(t *testing.T) {
Resource: []StarsResource{{
Group: "g",
Kind: "k",
Names: []string{"a", "b", "c", "x"}, // added "b" (and sorted)
Names: []string{"a", "b", "x", "c"}, // added c to the end
}},
},
}, {

View File

@@ -4,8 +4,6 @@ import (
"errors"
"fmt"
"k8s.io/apimachinery/pkg/conversion"
dashv0 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v0alpha1"
dashv1 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1beta1"
dashv2alpha1 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v2alpha1"
@@ -121,6 +119,14 @@ func countPanelsV0V1(spec map[string]interface{}) int {
return count
}
// countTargetsFromPanel counts the number of targets/queries in a panel.
func countTargetsFromPanel(panelMap map[string]interface{}) int {
if targets, ok := panelMap["targets"].([]interface{}); ok {
return len(targets)
}
return 0
}
// countQueriesV0V1 counts data queries in v0alpha1 or v1beta1 dashboard spec
// Note: Row panels are layout containers and should not have queries.
// We ignore any queries on row panels themselves, but count queries in their collapsed panels.
@@ -145,9 +151,7 @@ func countQueriesV0V1(spec map[string]interface{}) int {
// Count queries in regular panels (NOT row panels)
if panelType != "row" {
if targets, ok := panelMap["targets"].([]interface{}); ok {
count += len(targets)
}
count += countTargetsFromPanel(panelMap)
}
// Count queries in collapsed panels inside row panels
@@ -155,9 +159,7 @@ func countQueriesV0V1(spec map[string]interface{}) int {
if collapsedPanels, ok := panelMap["panels"].([]interface{}); ok {
for _, cp := range collapsedPanels {
if cpMap, ok := cp.(map[string]interface{}); ok {
if targets, ok := cpMap["targets"].([]interface{}); ok {
count += len(targets)
}
count += countTargetsFromPanel(cpMap)
}
}
}
@@ -442,77 +444,3 @@ func collectDashboardStats(dashboard interface{}) dashboardStats {
}
return dashboardStats{}
}
// withConversionDataLossDetection wraps a conversion function to detect data loss
func withConversionDataLossDetection(sourceFuncName, targetFuncName string, conversionFunc func(a, b interface{}, scope conversion.Scope) error) func(a, b interface{}, scope conversion.Scope) error {
return func(a, b interface{}, scope conversion.Scope) error {
// Collect source statistics
var sourceStats dashboardStats
switch source := a.(type) {
case *dashv0.Dashboard:
if source.Spec.Object != nil {
sourceStats = collectStatsV0V1(source.Spec.Object)
}
case *dashv1.Dashboard:
if source.Spec.Object != nil {
sourceStats = collectStatsV0V1(source.Spec.Object)
}
case *dashv2alpha1.Dashboard:
sourceStats = collectStatsV2alpha1(source.Spec)
case *dashv2beta1.Dashboard:
sourceStats = collectStatsV2beta1(source.Spec)
}
// Execute the conversion
err := conversionFunc(a, b, scope)
if err != nil {
return err
}
// Collect target statistics
var targetStats dashboardStats
switch target := b.(type) {
case *dashv0.Dashboard:
if target.Spec.Object != nil {
targetStats = collectStatsV0V1(target.Spec.Object)
}
case *dashv1.Dashboard:
if target.Spec.Object != nil {
targetStats = collectStatsV0V1(target.Spec.Object)
}
case *dashv2alpha1.Dashboard:
targetStats = collectStatsV2alpha1(target.Spec)
case *dashv2beta1.Dashboard:
targetStats = collectStatsV2beta1(target.Spec)
}
// Detect if data was lost
if dataLossErr := detectConversionDataLoss(sourceStats, targetStats, sourceFuncName, targetFuncName); dataLossErr != nil {
logger.Error("Dashboard conversion data loss detected",
"sourceFunc", sourceFuncName,
"targetFunc", targetFuncName,
"sourcePanels", sourceStats.panelCount,
"targetPanels", targetStats.panelCount,
"sourceQueries", sourceStats.queryCount,
"targetQueries", targetStats.queryCount,
"sourceAnnotations", sourceStats.annotationCount,
"targetAnnotations", targetStats.annotationCount,
"sourceLinks", sourceStats.linkCount,
"targetLinks", targetStats.linkCount,
"error", dataLossErr,
)
return dataLossErr
}
logger.Debug("Dashboard conversion completed without data loss",
"sourceFunc", sourceFuncName,
"targetFunc", targetFuncName,
"panels", targetStats.panelCount,
"queries", targetStats.queryCount,
"annotations", targetStats.annotationCount,
"links", targetStats.linkCount,
)
return nil
}
}

View File

@@ -17,7 +17,9 @@ import (
"github.com/grafana/grafana/apps/dashboard/pkg/migration/schemaversion"
)
var logger = logging.DefaultLogger.With("logger", "dashboard.conversion")
func getLogger() logging.Logger {
return logging.DefaultLogger.With("logger", "dashboard.conversion")
}
// getErroredSchemaVersionFunc determines the schema version function that errored
func getErroredSchemaVersionFunc(err error) string {
@@ -197,9 +199,9 @@ func withConversionMetrics(sourceVersionAPI, targetVersionAPI string, conversion
)
if errorType == "schema_minimum_version_error" {
logger.Warn("Dashboard conversion failed", logFields...)
getLogger().Warn("Dashboard conversion failed", logFields...)
} else {
logger.Error("Dashboard conversion failed", logFields...)
getLogger().Error("Dashboard conversion failed", logFields...)
}
} else {
// Record success metrics
@@ -235,7 +237,7 @@ func withConversionMetrics(sourceVersionAPI, targetVersionAPI string, conversion
)
}
logger.Debug("Dashboard conversion succeeded", successLogFields...)
getLogger().Debug("Dashboard conversion succeeded", successLogFields...)
}
return nil

View File

@@ -76,9 +76,9 @@
"barGlow": false,
"centerGlow": false,
"rounded": true,
"spotlight": false
"spotlight": false,
"gradient": false
},
"gradient": "none",
"orientation": "auto",
"reduceOptions": {
"calcs": [
@@ -155,9 +155,9 @@
"barGlow": false,
"centerGlow": true,
"rounded": true,
"spotlight": false
"spotlight": false,
"gradient": false
},
"gradient": "none",
"orientation": "auto",
"reduceOptions": {
"calcs": [
@@ -234,9 +234,9 @@
"barGlow": true,
"centerGlow": true,
"rounded": true,
"spotlight": false
"spotlight": false,
"gradient": false
},
"gradient": "none",
"orientation": "auto",
"reduceOptions": {
"calcs": [
@@ -313,9 +313,9 @@
"barGlow": true,
"centerGlow": true,
"rounded": true,
"spotlight": true
"spotlight": true,
"gradient": false
},
"gradient": "none",
"orientation": "auto",
"reduceOptions": {
"calcs": [
@@ -392,9 +392,9 @@
"barGlow": true,
"centerGlow": true,
"rounded": true,
"spotlight": true
"spotlight": true,
"gradient": false
},
"gradient": "none",
"orientation": "auto",
"reduceOptions": {
"calcs": [
@@ -471,9 +471,9 @@
"barGlow": true,
"centerGlow": true,
"rounded": false,
"spotlight": true
"spotlight": true,
"gradient": false
},
"gradient": "none",
"orientation": "auto",
"reduceOptions": {
"calcs": [
@@ -550,9 +550,9 @@
"barGlow": true,
"centerGlow": true,
"rounded": false,
"spotlight": true
"spotlight": true,
"gradient": false
},
"gradient": "none",
"orientation": "auto",
"reduceOptions": {
"calcs": [
@@ -642,9 +642,9 @@
"barGlow": true,
"centerGlow": true,
"rounded": true,
"spotlight": true
"spotlight": true,
"gradient": false
},
"gradient": "none",
"orientation": "auto",
"reduceOptions": {
"calcs": [
@@ -721,9 +721,9 @@
"barGlow": true,
"centerGlow": true,
"rounded": true,
"spotlight": true
"spotlight": true,
"gradient": false
},
"gradient": "none",
"orientation": "auto",
"reduceOptions": {
"calcs": [
@@ -800,9 +800,9 @@
"barGlow": true,
"centerGlow": true,
"rounded": true,
"spotlight": true
"spotlight": true,
"gradient": false
},
"gradient": "none",
"orientation": "auto",
"reduceOptions": {
"calcs": [
@@ -879,9 +879,9 @@
"barGlow": true,
"centerGlow": true,
"rounded": true,
"spotlight": true
"spotlight": true,
"gradient": false
},
"gradient": "none",
"orientation": "auto",
"reduceOptions": {
"calcs": [
@@ -975,9 +975,9 @@
"barGlow": false,
"centerGlow": false,
"rounded": false,
"spotlight": false
"spotlight": false,
"gradient": false
},
"gradient": "none",
"orientation": "auto",
"reduceOptions": {
"calcs": [
@@ -1054,9 +1054,9 @@
"barGlow": false,
"centerGlow": false,
"rounded": false,
"spotlight": false
"spotlight": false,
"gradient": false
},
"gradient": "none",
"orientation": "auto",
"reduceOptions": {
"calcs": [
@@ -1133,9 +1133,9 @@
"barGlow": false,
"centerGlow": false,
"rounded": false,
"spotlight": false
"spotlight": false,
"gradient": true
},
"gradient": "auto",
"orientation": "auto",
"reduceOptions": {
"calcs": [
@@ -1212,9 +1212,9 @@
"barGlow": false,
"centerGlow": false,
"rounded": false,
"spotlight": false
"spotlight": false,
"gradient": false
},
"gradient": "none",
"orientation": "auto",
"reduceOptions": {
"calcs": [
@@ -1291,9 +1291,9 @@
"barGlow": false,
"centerGlow": false,
"rounded": false,
"spotlight": false
"spotlight": false,
"gradient": false
},
"gradient": "none",
"orientation": "auto",
"reduceOptions": {
"calcs": [
@@ -1387,9 +1387,9 @@
"barGlow": false,
"centerGlow": false,
"rounded": false,
"spotlight": false
"spotlight": false,
"gradient": true
},
"gradient": "auto",
"orientation": "auto",
"reduceOptions": {
"calcs": [
@@ -1470,9 +1470,9 @@
"barGlow": false,
"centerGlow": false,
"rounded": false,
"spotlight": false
"spotlight": false,
"gradient": true
},
"gradient": "auto",
"orientation": "auto",
"reduceOptions": {
"calcs": [
@@ -1553,9 +1553,9 @@
"barGlow": false,
"centerGlow": false,
"rounded": false,
"spotlight": false
"spotlight": false,
"gradient": true
},
"gradient": "auto",
"orientation": "auto",
"reduceOptions": {
"calcs": [
@@ -1645,10 +1645,10 @@
"barGlow": true,
"centerGlow": true,
"rounded": true,
"spotlight": true
"spotlight": true,
"gradient": true
},
"glow": "both",
"gradient": "auto",
"orientation": "auto",
"reduceOptions": {
"calcs": [
@@ -1731,10 +1731,10 @@
"barGlow": true,
"centerGlow": true,
"rounded": true,
"spotlight": true
"spotlight": true,
"gradient": true
},
"glow": "both",
"gradient": "scheme",
"orientation": "auto",
"reduceOptions": {
"calcs": [
@@ -1831,10 +1831,10 @@
"barGlow": true,
"centerGlow": true,
"rounded": true,
"spotlight": true
"spotlight": true,
"gradient": true
},
"glow": "both",
"gradient": "scheme",
"orientation": "auto",
"reduceOptions": {
"calcs": [
@@ -1919,10 +1919,10 @@
"centerGlow": true,
"rounded": true,
"sparkline": false,
"spotlight": true
"spotlight": true,
"gradient": true
},
"glow": "both",
"gradient": "scheme",
"orientation": "auto",
"reduceOptions": {
"calcs": [
@@ -2005,10 +2005,10 @@
"barGlow": true,
"centerGlow": true,
"rounded": true,
"spotlight": true
"spotlight": true,
"gradient": true
},
"glow": "both",
"gradient": "hue",
"orientation": "auto",
"reduceOptions": {
"calcs": [
@@ -2091,10 +2091,10 @@
"barGlow": true,
"centerGlow": true,
"rounded": true,
"spotlight": true
"spotlight": true,
"gradient": true
},
"glow": "both",
"gradient": "hue",
"orientation": "auto",
"reduceOptions": {
"calcs": [
@@ -2147,4 +2147,4 @@
"title": "Panel tests - Gauge (new)",
"uid": "panel-tests-gauge-new",
"weekStart": ""
}
}

View File

@@ -956,9 +956,9 @@
"barGlow": false,
"centerGlow": false,
"rounded": false,
"spotlight": false
"spotlight": false,
"gradient": false
},
"gradient": "none",
"orientation": "auto",
"reduceOptions": {
"calcs": [
@@ -1162,4 +1162,4 @@
"title": "Panel tests - Old gauge to new",
"uid": "panel-tests-old-gauge-to-new",
"weekStart": ""
}
}

View File

@@ -237,5 +237,10 @@
"title": "V10 Table Thresholds Test",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}

View File

@@ -244,5 +244,10 @@
"title": "V10 Table Thresholds Test",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}

View File

@@ -206,5 +206,10 @@
}
]
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}

View File

@@ -213,5 +213,10 @@
}
]
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}

View File

@@ -203,5 +203,10 @@
}
]
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}

View File

@@ -216,5 +216,10 @@
}
]
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}

View File

@@ -351,5 +351,10 @@
"title": "V13 Graph Thresholds Migration Test",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}

View File

@@ -362,5 +362,10 @@
"title": "V13 Graph Thresholds Migration Test",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}

View File

@@ -129,5 +129,10 @@
"title": "Dashboard with minimal graph panel settings",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}

View File

@@ -132,5 +132,10 @@
"title": "Dashboard with minimal graph panel settings",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}

View File

@@ -210,5 +210,10 @@
}
]
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}

View File

@@ -217,5 +217,10 @@
}
]
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}

View File

@@ -1004,5 +1004,10 @@
}
]
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}

View File

@@ -1023,5 +1023,10 @@
}
]
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}

View File

@@ -223,5 +223,10 @@
}
]
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}

View File

@@ -231,5 +231,10 @@
}
]
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}

View File

@@ -1455,5 +1455,10 @@
}
]
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}

View File

@@ -1481,5 +1481,10 @@
}
]
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}

View File

@@ -719,5 +719,10 @@
"title": "V16 Grid Layout Migration Test Dashboard",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}

View File

@@ -739,5 +739,10 @@
"title": "V16 Grid Layout Migration Test Dashboard",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}

View File

@@ -1655,5 +1655,10 @@
}
]
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}

View File

@@ -1707,5 +1707,10 @@
}
]
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}

View File

@@ -636,5 +636,10 @@
"title": "V17 MinSpan to MaxPerRow Migration Test Dashboard",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}

View File

@@ -657,5 +657,10 @@
"title": "V17 MinSpan to MaxPerRow Migration Test Dashboard",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}

View File

@@ -401,5 +401,10 @@
"title": "V18 Gauge Options Migration Test Dashboard",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}

View File

@@ -412,5 +412,10 @@
"title": "V18 Gauge Options Migration Test Dashboard",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}

View File

@@ -434,5 +434,10 @@
"title": "V19 Panel Links Migration Test Dashboard",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}

View File

@@ -447,5 +447,10 @@
"title": "V19 Panel Links Migration Test Dashboard",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}

View File

@@ -354,5 +354,10 @@
}
]
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}

View File

@@ -365,5 +365,10 @@
}
]
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}

View File

@@ -426,5 +426,10 @@
"title": "V20 Variable Syntax Migration Test Dashboard",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}

View File

@@ -437,5 +437,10 @@
"title": "V20 Variable Syntax Migration Test Dashboard",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}

View File

@@ -401,5 +401,10 @@
"title": "V21 Data Links Series to Field Migration Test Dashboard",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}

View File

@@ -412,5 +412,10 @@
"title": "V21 Data Links Series to Field Migration Test Dashboard",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}

View File

@@ -123,5 +123,10 @@
"title": "V22 Table Panel Styles Test",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}

View File

@@ -126,5 +126,10 @@
"title": "V22 Table Panel Styles Test",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}

View File

@@ -374,5 +374,10 @@
}
]
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}

View File

@@ -391,5 +391,10 @@
}
]
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}

View File

@@ -1065,5 +1065,10 @@
"title": "No Title",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}

View File

@@ -1101,5 +1101,10 @@
"title": "No Title",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}

View File

@@ -217,5 +217,10 @@
}
]
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}

View File

@@ -226,5 +226,10 @@
}
]
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}

View File

@@ -240,5 +240,10 @@
"title": "No Title",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}

View File

@@ -247,5 +247,10 @@
"title": "No Title",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}

View File

@@ -207,5 +207,10 @@
}
]
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}

View File

@@ -211,5 +211,10 @@
}
]
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}

View File

@@ -131,5 +131,10 @@
}
]
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}

View File

@@ -134,5 +134,10 @@
}
]
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}

View File

@@ -393,5 +393,10 @@
}
]
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}

View File

@@ -406,5 +406,10 @@
}
]
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}

View File

@@ -622,5 +622,10 @@
"title": "V28 Singlestat and Variable Properties Migration Test Dashboard",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}

View File

@@ -642,5 +642,10 @@
"title": "V28 Singlestat and Variable Properties Migration Test Dashboard",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}

View File

@@ -435,5 +435,10 @@
}
]
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}

View File

@@ -458,5 +458,10 @@
}
]
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}

View File

@@ -294,5 +294,10 @@
"title": "V3 No-Op Migration - but tests ensuring panel IDs are unique",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}

View File

@@ -303,5 +303,10 @@
"title": "V3 No-Op Migration - but tests ensuring panel IDs are unique",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}

View File

@@ -689,5 +689,10 @@
"title": "V30 Value Mappings and Tooltip Options Migration Test Dashboard",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}

View File

@@ -705,5 +705,10 @@
"title": "V30 Value Mappings and Tooltip Options Migration Test Dashboard",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}

View File

@@ -669,5 +669,10 @@
"title": "V31 LabelsToFields Merge Migration Test Dashboard",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}

View File

@@ -684,5 +684,10 @@
"title": "V31 LabelsToFields Merge Migration Test Dashboard",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}

View File

@@ -310,5 +310,10 @@
}
]
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}

View File

@@ -320,5 +320,10 @@
}
]
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}

View File

@@ -720,5 +720,10 @@
"title": "V33 Panel Datasource Name to Ref Test",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}

View File

@@ -746,5 +746,10 @@
"title": "V33 Panel Datasource Name to Ref Test",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}

View File

@@ -1900,5 +1900,10 @@
"title": "CloudWatch Multiple Statistics Test Dashboard",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}

View File

@@ -1964,5 +1964,10 @@
"title": "CloudWatch Multiple Statistics Test Dashboard",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}

View File

@@ -595,5 +595,10 @@
"title": "X-Axis Visibility Test Dashboard",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}

View File

@@ -612,5 +612,10 @@
"title": "X-Axis Visibility Test Dashboard",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}

View File

@@ -1029,5 +1029,10 @@
}
]
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}

View File

@@ -1065,5 +1065,10 @@
}
]
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}

View File

@@ -629,5 +629,10 @@
"title": "V37 Legend Normalization Test Dashboard",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}

View File

@@ -642,5 +642,10 @@
"title": "V37 Legend Normalization Test Dashboard",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}

View File

@@ -659,5 +659,10 @@
"title": "V38 Table Migration Comprehensive Test Dashboard",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}

View File

@@ -671,5 +671,10 @@
"title": "V38 Table Migration Comprehensive Test Dashboard",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}

View File

@@ -659,5 +659,10 @@
"title": "V38 Table Migration Test Dashboard",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}

View File

@@ -671,5 +671,10 @@
"title": "V38 Table Migration Test Dashboard",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}

View File

@@ -586,5 +586,10 @@
"title": "V39 TimeSeriesTable Transformation Migration Test Dashboard",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}

View File

@@ -596,5 +596,10 @@
"title": "V39 TimeSeriesTable Transformation Migration Test Dashboard",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}

View File

@@ -237,5 +237,10 @@
"title": "V4 No-Op Migration Test",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}

View File

@@ -244,5 +244,10 @@
"title": "V4 No-Op Migration Test",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}

View File

@@ -64,5 +64,10 @@
"title": "Empty String Refresh Test Dashboard",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}

View File

@@ -65,5 +65,10 @@
"title": "Empty String Refresh Test Dashboard",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}

View File

@@ -64,5 +64,10 @@
"title": "Boolean False Refresh Test Dashboard",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}

View File

@@ -65,5 +65,10 @@
"title": "Boolean False Refresh Test Dashboard",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}

View File

@@ -64,5 +64,10 @@
"title": "Refresh Not Set Test Dashboard",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}

View File

@@ -65,5 +65,10 @@
"title": "Refresh Not Set Test Dashboard",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}

View File

@@ -64,5 +64,10 @@
"title": "Numeric Refresh Test Dashboard",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}

View File

@@ -65,5 +65,10 @@
"title": "Numeric Refresh Test Dashboard",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}

View File

@@ -64,5 +64,10 @@
"title": "String Refresh Test Dashboard",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}

View File

@@ -65,5 +65,10 @@
"title": "String Refresh Test Dashboard",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}

View File

@@ -64,5 +64,10 @@
"title": "Boolean Refresh Test Dashboard",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}

View File

@@ -65,5 +65,10 @@
"title": "Boolean Refresh Test Dashboard",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}

View File

@@ -64,5 +64,10 @@
"title": "No Time Picker Test Dashboard",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}

Some files were not shown because too many files have changed in this diff Show More