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
@@ -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)
}
}
@@ -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
}},
},
}, {
@@ -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
}
}
File diff suppressed because it is too large Load Diff
@@ -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
@@ -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": ""
}
}
@@ -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": ""
}
}
@@ -237,5 +237,10 @@
"title": "V10 Table Thresholds Test",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}
@@ -244,5 +244,10 @@
"title": "V10 Table Thresholds Test",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}
@@ -206,5 +206,10 @@
}
]
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}
@@ -213,5 +213,10 @@
}
]
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}
@@ -203,5 +203,10 @@
}
]
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}
@@ -216,5 +216,10 @@
}
]
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}
@@ -351,5 +351,10 @@
"title": "V13 Graph Thresholds Migration Test",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}
@@ -362,5 +362,10 @@
"title": "V13 Graph Thresholds Migration Test",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}
@@ -129,5 +129,10 @@
"title": "Dashboard with minimal graph panel settings",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}
@@ -132,5 +132,10 @@
"title": "Dashboard with minimal graph panel settings",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}
@@ -210,5 +210,10 @@
}
]
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}
@@ -217,5 +217,10 @@
}
]
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}
@@ -1004,5 +1004,10 @@
}
]
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}
@@ -1023,5 +1023,10 @@
}
]
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}
@@ -223,5 +223,10 @@
}
]
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}
@@ -231,5 +231,10 @@
}
]
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}
@@ -1455,5 +1455,10 @@
}
]
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}
@@ -1481,5 +1481,10 @@
}
]
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}
@@ -719,5 +719,10 @@
"title": "V16 Grid Layout Migration Test Dashboard",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}
@@ -739,5 +739,10 @@
"title": "V16 Grid Layout Migration Test Dashboard",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}
@@ -1655,5 +1655,10 @@
}
]
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}
@@ -1707,5 +1707,10 @@
}
]
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}
@@ -636,5 +636,10 @@
"title": "V17 MinSpan to MaxPerRow Migration Test Dashboard",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}
@@ -657,5 +657,10 @@
"title": "V17 MinSpan to MaxPerRow Migration Test Dashboard",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}
@@ -401,5 +401,10 @@
"title": "V18 Gauge Options Migration Test Dashboard",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}
@@ -412,5 +412,10 @@
"title": "V18 Gauge Options Migration Test Dashboard",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}
@@ -434,5 +434,10 @@
"title": "V19 Panel Links Migration Test Dashboard",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}
@@ -447,5 +447,10 @@
"title": "V19 Panel Links Migration Test Dashboard",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}
@@ -354,5 +354,10 @@
}
]
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}
@@ -365,5 +365,10 @@
}
]
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}
@@ -426,5 +426,10 @@
"title": "V20 Variable Syntax Migration Test Dashboard",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}
@@ -437,5 +437,10 @@
"title": "V20 Variable Syntax Migration Test Dashboard",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}
@@ -401,5 +401,10 @@
"title": "V21 Data Links Series to Field Migration Test Dashboard",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}
@@ -412,5 +412,10 @@
"title": "V21 Data Links Series to Field Migration Test Dashboard",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}
@@ -123,5 +123,10 @@
"title": "V22 Table Panel Styles Test",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}
@@ -126,5 +126,10 @@
"title": "V22 Table Panel Styles Test",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}
@@ -374,5 +374,10 @@
}
]
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}
@@ -391,5 +391,10 @@
}
]
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}
@@ -1065,5 +1065,10 @@
"title": "No Title",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}
@@ -1101,5 +1101,10 @@
"title": "No Title",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}
@@ -217,5 +217,10 @@
}
]
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}
@@ -226,5 +226,10 @@
}
]
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}
@@ -240,5 +240,10 @@
"title": "No Title",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}
@@ -247,5 +247,10 @@
"title": "No Title",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}
@@ -207,5 +207,10 @@
}
]
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}
@@ -211,5 +211,10 @@
}
]
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}
@@ -131,5 +131,10 @@
}
]
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}
@@ -134,5 +134,10 @@
}
]
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}
@@ -393,5 +393,10 @@
}
]
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}
@@ -406,5 +406,10 @@
}
]
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}
@@ -622,5 +622,10 @@
"title": "V28 Singlestat and Variable Properties Migration Test Dashboard",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}
@@ -642,5 +642,10 @@
"title": "V28 Singlestat and Variable Properties Migration Test Dashboard",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}
@@ -435,5 +435,10 @@
}
]
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}
@@ -458,5 +458,10 @@
}
]
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}
@@ -294,5 +294,10 @@
"title": "V3 No-Op Migration - but tests ensuring panel IDs are unique",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}
@@ -303,5 +303,10 @@
"title": "V3 No-Op Migration - but tests ensuring panel IDs are unique",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}
@@ -689,5 +689,10 @@
"title": "V30 Value Mappings and Tooltip Options Migration Test Dashboard",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}
@@ -705,5 +705,10 @@
"title": "V30 Value Mappings and Tooltip Options Migration Test Dashboard",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}
@@ -669,5 +669,10 @@
"title": "V31 LabelsToFields Merge Migration Test Dashboard",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}
@@ -684,5 +684,10 @@
"title": "V31 LabelsToFields Merge Migration Test Dashboard",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}
@@ -310,5 +310,10 @@
}
]
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}
@@ -320,5 +320,10 @@
}
]
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}
@@ -720,5 +720,10 @@
"title": "V33 Panel Datasource Name to Ref Test",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}
@@ -746,5 +746,10 @@
"title": "V33 Panel Datasource Name to Ref Test",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}
@@ -1900,5 +1900,10 @@
"title": "CloudWatch Multiple Statistics Test Dashboard",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}
@@ -1964,5 +1964,10 @@
"title": "CloudWatch Multiple Statistics Test Dashboard",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}
@@ -595,5 +595,10 @@
"title": "X-Axis Visibility Test Dashboard",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}
@@ -612,5 +612,10 @@
"title": "X-Axis Visibility Test Dashboard",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}
@@ -1029,5 +1029,10 @@
}
]
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}
@@ -1065,5 +1065,10 @@
}
]
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}
@@ -629,5 +629,10 @@
"title": "V37 Legend Normalization Test Dashboard",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}
@@ -642,5 +642,10 @@
"title": "V37 Legend Normalization Test Dashboard",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}
@@ -659,5 +659,10 @@
"title": "V38 Table Migration Comprehensive Test Dashboard",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}
@@ -671,5 +671,10 @@
"title": "V38 Table Migration Comprehensive Test Dashboard",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}
@@ -659,5 +659,10 @@
"title": "V38 Table Migration Test Dashboard",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}
@@ -671,5 +671,10 @@
"title": "V38 Table Migration Test Dashboard",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}
@@ -586,5 +586,10 @@
"title": "V39 TimeSeriesTable Transformation Migration Test Dashboard",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}
@@ -596,5 +596,10 @@
"title": "V39 TimeSeriesTable Transformation Migration Test Dashboard",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}
@@ -237,5 +237,10 @@
"title": "V4 No-Op Migration Test",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}
@@ -244,5 +244,10 @@
"title": "V4 No-Op Migration Test",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}
@@ -64,5 +64,10 @@
"title": "Empty String Refresh Test Dashboard",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}
@@ -65,5 +65,10 @@
"title": "Empty String Refresh Test Dashboard",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}
@@ -64,5 +64,10 @@
"title": "Boolean False Refresh Test Dashboard",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}
@@ -65,5 +65,10 @@
"title": "Boolean False Refresh Test Dashboard",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}
@@ -64,5 +64,10 @@
"title": "Refresh Not Set Test Dashboard",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}
@@ -65,5 +65,10 @@
"title": "Refresh Not Set Test Dashboard",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}
@@ -64,5 +64,10 @@
"title": "Numeric Refresh Test Dashboard",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}
@@ -65,5 +65,10 @@
"title": "Numeric Refresh Test Dashboard",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}
@@ -64,5 +64,10 @@
"title": "String Refresh Test Dashboard",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}
@@ -65,5 +65,10 @@
"title": "String Refresh Test Dashboard",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}
@@ -64,5 +64,10 @@
"title": "Boolean Refresh Test Dashboard",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}
@@ -65,5 +65,10 @@
"title": "Boolean Refresh Test Dashboard",
"variables": []
},
"status": {}
"status": {
"conversion": {
"failed": false,
"storedVersion": "v1beta1"
}
}
}
@@ -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