Dashboard Migrations: V28 singlestat panel and deprecated variable properties (#108416)

Co-authored-by: Ivan Ortega <ivanortegaalba@gmail.com>
This commit is contained in:
Haris Rozajac
2025-08-06 17:51:55 +02:00
committed by GitHub
co-authored by Ivan Ortega
parent 3dcda77462
commit 5ad751ea28
22 changed files with 3067 additions and 134 deletions
+52 -3
View File
@@ -1,9 +1,15 @@
package testutil
import "github.com/grafana/grafana/apps/dashboard/pkg/migration/schemaversion"
import (
"github.com/grafana/grafana/apps/dashboard/pkg/migration/schemaversion"
)
type TestDataSourceProvider struct{}
type TestPanelProvider struct {
customPanels []schemaversion.PanelPluginInfo
}
func (m *TestDataSourceProvider) GetDataSourceInfo() []schemaversion.DataSourceInfo {
return []schemaversion.DataSourceInfo{
{
@@ -57,7 +63,50 @@ func (m *TestDataSourceProvider) GetDataSourceInfo() []schemaversion.DataSourceI
}
}
// GetTestProvider returns a singleton instance of the test provider
func GetTestProvider() *TestDataSourceProvider {
func (m *TestPanelProvider) GetPanels() []schemaversion.PanelPluginInfo {
if len(m.customPanels) > 0 {
return m.customPanels
}
// Default panels
return []schemaversion.PanelPluginInfo{
{
ID: "gauge",
Version: "1.0.0",
},
{
ID: "stat",
Version: "1.0.0",
},
// Note: grafana-singlestat-panel is not included to match frontend test environment
// This ensures both frontend and backend migrations produce the same result
}
}
func (m *TestPanelProvider) GetPanelPlugin(id string) schemaversion.PanelPluginInfo {
// check if it exists in the list of mocked panels
for _, panel := range m.GetPanels() {
if panel.ID == id {
return panel
}
}
return schemaversion.PanelPluginInfo{}
}
// GetTestDataSourceProvider returns a singleton instance of the test provider
func GetTestDataSourceProvider() *TestDataSourceProvider {
return &TestDataSourceProvider{}
}
// GetTestPanelProvider returns a singleton instance of the test panel provider
func GetTestPanelProvider() *TestPanelProvider {
return &TestPanelProvider{}
}
// GetTestPanelProviderWithCustomPanels returns a test panel provider with custom panels
func GetTestPanelProviderWithCustomPanels(customPanels []schemaversion.PanelPluginInfo) *TestPanelProvider {
return &TestPanelProvider{
customPanels: customPanels,
}
}