From 7c2890384ab820fd7153a4d916b0abb19285efa0 Mon Sep 17 00:00:00 2001 From: Stephanie Hingtgen Date: Tue, 25 Mar 2025 10:32:49 -0600 Subject: [PATCH] K8s: Dashboards: Set v1alpha1 as priority (#102729) --- pkg/api/dashboard.go | 6 +-- pkg/api/dtos/dashboard.go | 4 +- .../datamigrations/to_unified_storage.go | 2 +- pkg/registry/apis/dashboard/large_test.go | 8 ++-- .../apis/dashboard/legacy/sql_dashboards.go | 2 +- .../dashboard/legacy/sql_dashboards_test.go | 8 ++-- pkg/registry/apis/dashboard/legacy/storage.go | 2 +- .../apis/dashboard/legacy/storage_test.go | 2 +- pkg/registry/apis/dashboard/legacy/types.go | 2 +- .../dashboard/legacysearcher/search_client.go | 2 +- .../legacysearcher/search_client_test.go | 2 +- pkg/registry/apis/dashboard/register.go | 3 +- pkg/registry/apis/dashboard/register_test.go | 24 +++++----- .../apiserver/standalone/runtime_test.go | 4 +- pkg/services/authz/zanzana/common/tuple.go | 2 +- pkg/services/authz/zanzana/translations.go | 2 +- .../dashboards/service/dashboard_service.go | 11 ++--- .../service/dashboard_service_test.go | 24 +++++----- .../dashboardversion/dashverimpl/dashver.go | 4 +- pkg/services/folder/folderimpl/folder.go | 2 +- .../provisioning/dashboards/dashboard.go | 2 +- pkg/storage/legacysql/dualwrite/utils.go | 2 +- pkg/storage/unified/apistore/prepare_test.go | 44 +++++++++---------- pkg/storage/unified/resource/search.go | 6 +-- pkg/storage/unified/search/dashboard.go | 4 +- 25 files changed, 87 insertions(+), 87 deletions(-) diff --git a/pkg/api/dashboard.go b/pkg/api/dashboard.go index 4406b5d8891..90ae9d41ddf 100644 --- a/pkg/api/dashboard.go +++ b/pkg/api/dashboard.go @@ -13,7 +13,7 @@ import ( "strings" claims "github.com/grafana/authlib/types" - dashboardsV0 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v0alpha1" + dashboardsV1 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1" "github.com/grafana/grafana/pkg/api/apierrors" "github.com/grafana/grafana/pkg/api/dtos" "github.com/grafana/grafana/pkg/api/response" @@ -168,7 +168,7 @@ func (hs *HTTPServer) GetDashboard(c *contextmodel.ReqContext) response.Response creator = hs.getIdentityName(ctx, dash.OrgID, dash.CreatedBy) } - annotationPermissions := &dashboardsV0.AnnotationPermission{} + annotationPermissions := &dashboardsV1.AnnotationPermission{} if hs.Features.IsEnabled(ctx, featuremgmt.FlagAnnotationPermissionUpdate) { hs.getAnnotationPermissionsByScope(c, &annotationPermissions.Dashboard, dashboards.ScopeDashboardsProvider.GetResourceScopeUID(dash.UID)) } else { @@ -276,7 +276,7 @@ func (hs *HTTPServer) GetDashboard(c *contextmodel.ReqContext) response.Response return response.JSON(http.StatusOK, dto) } -func (hs *HTTPServer) getAnnotationPermissionsByScope(c *contextmodel.ReqContext, actions *dashboardsV0.AnnotationActions, scope string) { +func (hs *HTTPServer) getAnnotationPermissionsByScope(c *contextmodel.ReqContext, actions *dashboardsV1.AnnotationActions, scope string) { ctx, span := tracer.Start(c.Req.Context(), "api.getAnnotationPermissionsByScope") defer span.End() c.Req = c.Req.WithContext(ctx) diff --git a/pkg/api/dtos/dashboard.go b/pkg/api/dtos/dashboard.go index 8bda1591b8b..ee0f67b798f 100644 --- a/pkg/api/dtos/dashboard.go +++ b/pkg/api/dtos/dashboard.go @@ -3,7 +3,7 @@ package dtos import ( "time" - dashboardsV0 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v0alpha1" + dashboardsV1 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1" "github.com/grafana/grafana/pkg/components/simplejson" ) @@ -34,7 +34,7 @@ type DashboardMeta struct { FolderUrl string `json:"folderUrl"` Provisioned bool `json:"provisioned"` ProvisionedExternalId string `json:"provisionedExternalId"` - AnnotationsPermissions *dashboardsV0.AnnotationPermission `json:"annotationsPermissions"` + AnnotationsPermissions *dashboardsV1.AnnotationPermission `json:"annotationsPermissions"` PublicDashboardEnabled bool `json:"publicDashboardEnabled,omitempty"` } diff --git a/pkg/cmd/grafana-cli/commands/datamigrations/to_unified_storage.go b/pkg/cmd/grafana-cli/commands/datamigrations/to_unified_storage.go index faae73c2ba8..a0bdd85d0af 100644 --- a/pkg/cmd/grafana-cli/commands/datamigrations/to_unified_storage.go +++ b/pkg/cmd/grafana-cli/commands/datamigrations/to_unified_storage.go @@ -11,7 +11,7 @@ import ( "github.com/prometheus/client_golang/prometheus" "k8s.io/apimachinery/pkg/runtime/schema" - dashboard "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v0alpha1" + dashboard "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1" folders "github.com/grafana/grafana/pkg/apis/folder/v0alpha1" authlib "github.com/grafana/authlib/types" diff --git a/pkg/registry/apis/dashboard/large_test.go b/pkg/registry/apis/dashboard/large_test.go index cd05b704c0c..cfeb2b2da58 100644 --- a/pkg/registry/apis/dashboard/large_test.go +++ b/pkg/registry/apis/dashboard/large_test.go @@ -10,7 +10,7 @@ import ( "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" "k8s.io/apimachinery/pkg/runtime" - dashboardv0alpha1 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v0alpha1" + dashboardv1alpha1 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1" ) func TestLargeDashboardSupport(t *testing.T) { @@ -21,7 +21,7 @@ func TestLargeDashboardSupport(t *testing.T) { f, err := os.ReadFile(devdash) require.NoError(t, err) - dash := &dashboardv0alpha1.Dashboard{ + dash := &dashboardv1alpha1.Dashboard{ ObjectMeta: v1.ObjectMeta{ Name: "test", Namespace: "test", @@ -38,7 +38,7 @@ func TestLargeDashboardSupport(t *testing.T) { scheme := runtime.NewScheme() - err = dashboardv0alpha1.AddToScheme(scheme) + err = dashboardv1alpha1.AddToScheme(scheme) require.NoError(t, err) largeObject := NewDashboardLargeObjectSupport(scheme) @@ -56,7 +56,7 @@ func TestLargeDashboardSupport(t *testing.T) { }`, string(small)) // Now make it big again - rehydratedDash := &dashboardv0alpha1.Dashboard{ + rehydratedDash := &dashboardv1alpha1.Dashboard{ ObjectMeta: v1.ObjectMeta{ Name: "test", Namespace: "test", diff --git a/pkg/registry/apis/dashboard/legacy/sql_dashboards.go b/pkg/registry/apis/dashboard/legacy/sql_dashboards.go index bc9b5a2c4e0..872ba948ab3 100644 --- a/pkg/registry/apis/dashboard/legacy/sql_dashboards.go +++ b/pkg/registry/apis/dashboard/legacy/sql_dashboards.go @@ -15,7 +15,7 @@ import ( claims "github.com/grafana/authlib/types" dashboardOG "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard" - dashboard "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v0alpha1" + dashboard "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1" "github.com/grafana/grafana/pkg/apimachinery/apis/common/v0alpha1" "github.com/grafana/grafana/pkg/apimachinery/identity" "github.com/grafana/grafana/pkg/apimachinery/utils" diff --git a/pkg/registry/apis/dashboard/legacy/sql_dashboards_test.go b/pkg/registry/apis/dashboard/legacy/sql_dashboards_test.go index efa4ffde96f..fbb6d8f6b09 100644 --- a/pkg/registry/apis/dashboard/legacy/sql_dashboards_test.go +++ b/pkg/registry/apis/dashboard/legacy/sql_dashboards_test.go @@ -10,7 +10,7 @@ import ( "github.com/stretchr/testify/require" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - dashboard "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v0alpha1" + dashboard "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1" common "github.com/grafana/grafana/pkg/apimachinery/apis/common/v0alpha1" "github.com/grafana/grafana/pkg/apimachinery/identity" "github.com/grafana/grafana/pkg/apimachinery/utils" @@ -132,7 +132,7 @@ func TestBuildSaveDashboardCommand(t *testing.T) { } dash := &dashboard.Dashboard{ TypeMeta: metav1.TypeMeta{ - APIVersion: "dashboard.grafana.app/v0alpha1", + APIVersion: "dashboard.grafana.app/v1alpha1", }, ObjectMeta: metav1.ObjectMeta{ Name: "test-dash", @@ -170,7 +170,7 @@ func TestBuildSaveDashboardCommand(t *testing.T) { &dashboards.Dashboard{ ID: 1234, Version: 2, - APIVersion: "dashboard.grafana.app/v0alpha1", + APIVersion: "dashboard.grafana.app/v1alpha1", }, nil).Once() cmd, created, err = access.buildSaveDashboardCommand(ctx, 1, dash) require.NoError(t, err) @@ -179,7 +179,7 @@ func TestBuildSaveDashboardCommand(t *testing.T) { require.Equal(t, "test-dash", cmd.Dashboard.Get("uid").MustString()) require.Equal(t, cmd.Dashboard.Get("id").MustInt64(), int64(1234)) // should set to existing ID require.Equal(t, cmd.Dashboard.Get("version").MustFloat64(), float64(2)) // version must be set - otherwise seen as a new dashboard in NewDashboardFromJson - require.Equal(t, cmd.APIVersion, "v0alpha1") // should trim prefix + require.Equal(t, cmd.APIVersion, "v1alpha1") // should trim prefix require.Equal(t, cmd.OrgID, int64(1)) require.True(t, cmd.Overwrite) } diff --git a/pkg/registry/apis/dashboard/legacy/storage.go b/pkg/registry/apis/dashboard/legacy/storage.go index 4e00cd6d803..021ee6796a3 100644 --- a/pkg/registry/apis/dashboard/legacy/storage.go +++ b/pkg/registry/apis/dashboard/legacy/storage.go @@ -9,7 +9,7 @@ import ( claims "github.com/grafana/authlib/types" - dashboard "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v0alpha1" + dashboard "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1" "github.com/grafana/grafana/pkg/apimachinery/utils" "github.com/grafana/grafana/pkg/services/dashboards" "github.com/grafana/grafana/pkg/storage/unified/resource" diff --git a/pkg/registry/apis/dashboard/legacy/storage_test.go b/pkg/registry/apis/dashboard/legacy/storage_test.go index cbe204c4015..37de58c5c75 100644 --- a/pkg/registry/apis/dashboard/legacy/storage_test.go +++ b/pkg/registry/apis/dashboard/legacy/storage_test.go @@ -9,7 +9,7 @@ import ( "github.com/stretchr/testify/require" "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" - dashboard "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v0alpha1" + dashboard "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1" "github.com/grafana/grafana/pkg/apimachinery/identity" "github.com/grafana/grafana/pkg/apimachinery/utils" "github.com/grafana/grafana/pkg/services/dashboards" diff --git a/pkg/registry/apis/dashboard/legacy/types.go b/pkg/registry/apis/dashboard/legacy/types.go index 3bd8786afd9..3b84c86d90c 100644 --- a/pkg/registry/apis/dashboard/legacy/types.go +++ b/pkg/registry/apis/dashboard/legacy/types.go @@ -3,7 +3,7 @@ package legacy import ( "context" - dashboard "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v0alpha1" + dashboard "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1" "github.com/grafana/grafana/pkg/storage/unified/resource" ) diff --git a/pkg/registry/apis/dashboard/legacysearcher/search_client.go b/pkg/registry/apis/dashboard/legacysearcher/search_client.go index be67dcddb9c..c26f1c5c6ca 100644 --- a/pkg/registry/apis/dashboard/legacysearcher/search_client.go +++ b/pkg/registry/apis/dashboard/legacysearcher/search_client.go @@ -11,7 +11,7 @@ import ( "k8s.io/apimachinery/pkg/selection" claims "github.com/grafana/authlib/types" - dashboard "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v0alpha1" + dashboard "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1" "github.com/grafana/grafana/pkg/apimachinery/identity" "github.com/grafana/grafana/pkg/apimachinery/utils" folderv0alpha1 "github.com/grafana/grafana/pkg/apis/folder/v0alpha1" diff --git a/pkg/registry/apis/dashboard/legacysearcher/search_client_test.go b/pkg/registry/apis/dashboard/legacysearcher/search_client_test.go index 700fad7a2ce..b7164f94591 100644 --- a/pkg/registry/apis/dashboard/legacysearcher/search_client_test.go +++ b/pkg/registry/apis/dashboard/legacysearcher/search_client_test.go @@ -10,7 +10,7 @@ import ( "github.com/stretchr/testify/require" "k8s.io/apimachinery/pkg/selection" - dashboard "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v0alpha1" + dashboard "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1" "github.com/grafana/grafana/pkg/apimachinery/identity" "github.com/grafana/grafana/pkg/apimachinery/utils" "github.com/grafana/grafana/pkg/services/dashboards" diff --git a/pkg/registry/apis/dashboard/register.go b/pkg/registry/apis/dashboard/register.go index c8a7b6f9f55..e420f9b8e63 100644 --- a/pkg/registry/apis/dashboard/register.go +++ b/pkg/registry/apis/dashboard/register.go @@ -118,10 +118,9 @@ func (b *DashboardsAPIBuilder) GetGroupVersions() []schema.GroupVersion { } } - // TODO (@radiohead): should we switch to v1alpha1 by default? return []schema.GroupVersion{ - v0alpha1.DashboardResourceInfo.GroupVersion(), v1alpha1.DashboardResourceInfo.GroupVersion(), + v0alpha1.DashboardResourceInfo.GroupVersion(), v2alpha1.DashboardResourceInfo.GroupVersion(), } } diff --git a/pkg/registry/apis/dashboard/register_test.go b/pkg/registry/apis/dashboard/register_test.go index e4a0320a902..2bea09b35f9 100644 --- a/pkg/registry/apis/dashboard/register_test.go +++ b/pkg/registry/apis/dashboard/register_test.go @@ -24,7 +24,7 @@ func TestDashboardAPIBuilder_Validate(t *testing.T) { zeroInt64 := int64(0) tests := []struct { name string - inputObj *v0alpha1.Dashboard + inputObj *v1alpha1.Dashboard deletionOptions metav1.DeleteOptions dashboardResponse *dashboards.DashboardProvisioning dashboardErrorResponse error @@ -33,7 +33,7 @@ func TestDashboardAPIBuilder_Validate(t *testing.T) { }{ { name: "should return an error if data is found", - inputObj: &v0alpha1.Dashboard{ + inputObj: &v1alpha1.Dashboard{ Spec: common.Unstructured{}, TypeMeta: metav1.TypeMeta{ Kind: "Dashboard", @@ -52,7 +52,7 @@ func TestDashboardAPIBuilder_Validate(t *testing.T) { }, { name: "should return an error if unable to check", - inputObj: &v0alpha1.Dashboard{ + inputObj: &v1alpha1.Dashboard{ Spec: common.Unstructured{}, TypeMeta: metav1.TypeMeta{ Kind: "Dashboard", @@ -71,7 +71,7 @@ func TestDashboardAPIBuilder_Validate(t *testing.T) { }, { name: "should be okay if error is provisioned dashboard not found", - inputObj: &v0alpha1.Dashboard{ + inputObj: &v1alpha1.Dashboard{ Spec: common.Unstructured{}, TypeMeta: metav1.TypeMeta{ Kind: "Dashboard", @@ -90,7 +90,7 @@ func TestDashboardAPIBuilder_Validate(t *testing.T) { }, { name: "Should still run the check for delete if grace period is not 0", - inputObj: &v0alpha1.Dashboard{ + inputObj: &v1alpha1.Dashboard{ Spec: common.Unstructured{}, TypeMeta: metav1.TypeMeta{ Kind: "Dashboard", @@ -109,7 +109,7 @@ func TestDashboardAPIBuilder_Validate(t *testing.T) { }, { name: "should not run the check for delete if grace period is set to 0", - inputObj: &v0alpha1.Dashboard{ + inputObj: &v1alpha1.Dashboard{ Spec: common.Unstructured{}, TypeMeta: metav1.TypeMeta{ Kind: "Dashboard", @@ -137,10 +137,10 @@ func TestDashboardAPIBuilder_Validate(t *testing.T) { err := b.Validate(context.Background(), admission.NewAttributesRecord( tt.inputObj, nil, - v0alpha1.DashboardResourceInfo.GroupVersionKind(), + v1alpha1.DashboardResourceInfo.GroupVersionKind(), "stacks-123", tt.inputObj.Name, - v0alpha1.DashboardResourceInfo.GroupVersionResource(), + v1alpha1.DashboardResourceInfo.GroupVersionResource(), "", admission.Operation("DELETE"), &tt.deletionOptions, @@ -170,22 +170,22 @@ func TestDashboardAPIBuilder_GetGroupVersions(t *testing.T) { expected []schema.GroupVersion }{ { - name: "should return v0alpha1 by default", + name: "should return v1alpha1 by default", enabledFeatures: []string{}, expected: []schema.GroupVersion{ - v0alpha1.DashboardResourceInfo.GroupVersion(), v1alpha1.DashboardResourceInfo.GroupVersion(), + v0alpha1.DashboardResourceInfo.GroupVersion(), v2alpha1.DashboardResourceInfo.GroupVersion(), }, }, { - name: "should return v0alpha1 as the default if some other feature is enabled", + name: "should return v1alpha1 as the default if some other feature is enabled", enabledFeatures: []string{ featuremgmt.FlagKubernetesDashboards, }, expected: []schema.GroupVersion{ - v0alpha1.DashboardResourceInfo.GroupVersion(), v1alpha1.DashboardResourceInfo.GroupVersion(), + v0alpha1.DashboardResourceInfo.GroupVersion(), v2alpha1.DashboardResourceInfo.GroupVersion(), }, }, diff --git a/pkg/services/apiserver/standalone/runtime_test.go b/pkg/services/apiserver/standalone/runtime_test.go index e07db7b62a6..d5c756031d3 100644 --- a/pkg/services/apiserver/standalone/runtime_test.go +++ b/pkg/services/apiserver/standalone/runtime_test.go @@ -8,11 +8,11 @@ import ( ) func TestReadRuntimeCOnfig(t *testing.T) { - out, err := ReadRuntimeConfig("all/all=true,dashboard.grafana.app/v0alpha1=false") + out, err := ReadRuntimeConfig("all/all=true,dashboard.grafana.app/v1alpha1=false") require.NoError(t, err) require.Equal(t, []RuntimeConfig{ {Group: "all", Version: "all", Enabled: true}, - {Group: "dashboard.grafana.app", Version: "v0alpha1", Enabled: false}, + {Group: "dashboard.grafana.app", Version: "v1alpha1", Enabled: false}, }, out) require.Equal(t, "all/all=true", fmt.Sprintf("%v", out[0])) diff --git a/pkg/services/authz/zanzana/common/tuple.go b/pkg/services/authz/zanzana/common/tuple.go index c1fa549286d..1369487e77a 100644 --- a/pkg/services/authz/zanzana/common/tuple.go +++ b/pkg/services/authz/zanzana/common/tuple.go @@ -6,7 +6,7 @@ import ( openfgav1 "github.com/openfga/api/proto/openfga/v1" "google.golang.org/protobuf/types/known/structpb" - dashboardalpha1 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v0alpha1" + dashboardalpha1 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1" "github.com/grafana/grafana/pkg/apimachinery/utils" authzextv1 "github.com/grafana/grafana/pkg/services/authz/proto/v1" ) diff --git a/pkg/services/authz/zanzana/translations.go b/pkg/services/authz/zanzana/translations.go index 993f48e3c6c..457c75bdd82 100644 --- a/pkg/services/authz/zanzana/translations.go +++ b/pkg/services/authz/zanzana/translations.go @@ -1,7 +1,7 @@ package zanzana import ( - dashboardalpha1 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v0alpha1" + dashboardalpha1 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1" folderalpha1 "github.com/grafana/grafana/pkg/apis/folder/v0alpha1" ) diff --git a/pkg/services/dashboards/service/dashboard_service.go b/pkg/services/dashboards/service/dashboard_service.go index d85dd62405b..77d508b9aac 100644 --- a/pkg/services/dashboards/service/dashboard_service.go +++ b/pkg/services/dashboards/service/dashboard_service.go @@ -25,6 +25,7 @@ import ( "github.com/grafana/grafana-plugin-sdk-go/backend/gtime" "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard" dashboardv0alpha1 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v0alpha1" + dashboardv1alpha1 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1" "github.com/grafana/grafana/pkg/apimachinery/identity" "github.com/grafana/grafana/pkg/apimachinery/utils" folderv0alpha1 "github.com/grafana/grafana/pkg/apis/folder/v0alpha1" @@ -368,7 +369,7 @@ func ProvideDashboardServiceImpl( serverLockService *serverlock.ServerLockService, kvstore kvstore.KVStore, ) (*DashboardServiceImpl, error) { - k8sHandler := client.NewK8sHandler(dual, request.GetNamespaceMapper(cfg), dashboardv0alpha1.DashboardResourceInfo.GroupVersionResource(), restConfigProvider.GetRestConfig, dashboardStore, userService, resourceClient, sorter) + k8sHandler := client.NewK8sHandler(dual, request.GetNamespaceMapper(cfg), dashboardv1alpha1.DashboardResourceInfo.GroupVersionResource(), restConfigProvider.GetRestConfig, dashboardStore, userService, resourceClient, sorter) dashSvc := &DashboardServiceImpl{ cfg: cfg, @@ -2050,13 +2051,13 @@ func (dr *DashboardServiceImpl) searchDashboardsThroughK8sRaw(ctx context.Contex switch query.Type { case "": // When no type specified, search for dashboards - request.Options.Key, err = resource.AsResourceKey(namespace, dashboardv0alpha1.DASHBOARD_RESOURCE) + request.Options.Key, err = resource.AsResourceKey(namespace, dashboardv1alpha1.DASHBOARD_RESOURCE) // Currently a search query is across folders and dashboards if err == nil { federate, err = resource.AsResourceKey(namespace, folderv0alpha1.RESOURCE) } case searchstore.TypeDashboard, searchstore.TypeAnnotation: - request.Options.Key, err = resource.AsResourceKey(namespace, dashboardv0alpha1.DASHBOARD_RESOURCE) + request.Options.Key, err = resource.AsResourceKey(namespace, dashboardv1alpha1.DASHBOARD_RESOURCE) case searchstore.TypeFolder, searchstore.TypeAlertFolder: request.Options.Key, err = resource.AsResourceKey(namespace, folderv0alpha1.RESOURCE) default: @@ -2212,7 +2213,7 @@ func (dr *DashboardServiceImpl) UnstructuredToLegacyDashboard(ctx context.Contex FolderUID: obj.GetFolder(), Version: int(dashVersion), Data: simplejson.NewFromAny(spec), - APIVersion: strings.TrimPrefix(item.GetAPIVersion(), dashboardv0alpha1.GROUP+"/"), + APIVersion: strings.TrimPrefix(item.GetAPIVersion(), dashboardv1alpha1.GROUP+"/"), } out.Created = obj.GetCreationTimestamp().Time @@ -2306,7 +2307,7 @@ func LegacySaveCommandToUnstructured(cmd *dashboards.SaveDashboardCommand, names finalObj.Object["spec"] = obj finalObj.SetName(uid) finalObj.SetNamespace(namespace) - finalObj.SetGroupVersionKind(dashboardv0alpha1.DashboardResourceInfo.GroupVersionKind()) + finalObj.SetGroupVersionKind(dashboardv1alpha1.DashboardResourceInfo.GroupVersionKind()) meta, err := utils.MetaAccessor(finalObj) if err != nil { diff --git a/pkg/services/dashboards/service/dashboard_service_test.go b/pkg/services/dashboards/service/dashboard_service_test.go index 82600d9f2cd..198c1e0b296 100644 --- a/pkg/services/dashboards/service/dashboard_service_test.go +++ b/pkg/services/dashboards/service/dashboard_service_test.go @@ -14,7 +14,7 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" - dashboardv0alpha1 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v0alpha1" + dashboardv1alpha1 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1" "github.com/grafana/grafana/pkg/apimachinery/identity" "github.com/grafana/grafana/pkg/apimachinery/utils" "github.com/grafana/grafana/pkg/components/simplejson" @@ -545,8 +545,8 @@ func TestGetProvisionedDashboardData(t *testing.T) { k8sCliMock.On("GetNamespace", mock.Anything, mock.Anything).Return("default") k8sCliMock.On("Get", mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&unstructured.Unstructured{ Object: map[string]interface{}{ - "apiVersion": dashboardv0alpha1.DashboardResourceInfo.GroupVersion().String(), - "kind": dashboardv0alpha1.DashboardResourceInfo.GroupVersionKind().Kind, + "apiVersion": dashboardv1alpha1.DashboardResourceInfo.GroupVersion().String(), + "kind": dashboardv1alpha1.DashboardResourceInfo.GroupVersionKind().Kind, "metadata": map[string]interface{}{ "name": "uid", "labels": map[string]interface{}{ @@ -651,8 +651,8 @@ func TestGetProvisionedDashboardDataByDashboardID(t *testing.T) { provisioningTimestamp := int64(1234567) k8sCliMock.On("GetNamespace", mock.Anything, mock.Anything).Return("default") k8sCliMock.On("Get", mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&unstructured.Unstructured{Object: map[string]interface{}{ - "apiVersion": dashboardv0alpha1.DashboardResourceInfo.GroupVersion().String(), - "kind": dashboardv0alpha1.DashboardResourceInfo.GroupVersionKind().Kind, + "apiVersion": dashboardv1alpha1.DashboardResourceInfo.GroupVersion().String(), + "kind": dashboardv1alpha1.DashboardResourceInfo.GroupVersionKind().Kind, "metadata": map[string]interface{}{ "name": "uid", "labels": map[string]interface{}{ @@ -745,8 +745,8 @@ func TestGetProvisionedDashboardDataByDashboardUID(t *testing.T) { provisioningTimestamp := int64(1234567) k8sCliMock.On("GetNamespace", mock.Anything, mock.Anything).Return("default") k8sCliMock.On("Get", mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&unstructured.Unstructured{Object: map[string]interface{}{ - "apiVersion": dashboardv0alpha1.DashboardResourceInfo.GroupVersion().String(), - "kind": dashboardv0alpha1.DashboardResourceInfo.GroupVersionKind().Kind, + "apiVersion": dashboardv1alpha1.DashboardResourceInfo.GroupVersion().String(), + "kind": dashboardv1alpha1.DashboardResourceInfo.GroupVersionKind().Kind, "metadata": map[string]interface{}{ "name": "uid", "labels": map[string]interface{}{ @@ -978,8 +978,8 @@ func TestDeleteOrphanedProvisionedDashboards(t *testing.T) { k8sCliMock.On("GetNamespace", mock.Anything, mock.Anything).Return("default") k8sCliMock.On("Get", mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&unstructured.Unstructured{ Object: map[string]interface{}{ - "apiVersion": dashboardv0alpha1.DashboardResourceInfo.GroupVersion().String(), - "kind": dashboardv0alpha1.DashboardResourceInfo.GroupVersionKind().Kind, + "apiVersion": dashboardv1alpha1.DashboardResourceInfo.GroupVersion().String(), + "kind": dashboardv1alpha1.DashboardResourceInfo.GroupVersionKind().Kind, "metadata": map[string]interface{}{ "name": "uid", "labels": map[string]interface{}{ @@ -1123,7 +1123,7 @@ func TestUnprovisionDashboard(t *testing.T) { }} k8sCliMock.On("Get", mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(dash, nil) dashWithoutAnnotations := &unstructured.Unstructured{Object: map[string]any{ - "apiVersion": "dashboard.grafana.app/v0alpha1", + "apiVersion": "dashboard.grafana.app/v1alpha1", "kind": "Dashboard", "metadata": map[string]any{ "name": "uid", @@ -2628,8 +2628,8 @@ func TestK8sDashboardCleanupJob(t *testing.T) { func createTestUnstructuredDashboard(uid, title string, resourceVersion string) unstructured.Unstructured { return unstructured.Unstructured{ Object: map[string]interface{}{ - "apiVersion": dashboardv0alpha1.DashboardResourceInfo.GroupVersion().String(), - "kind": dashboardv0alpha1.DashboardResourceInfo.GroupVersionKind().Kind, + "apiVersion": dashboardv1alpha1.DashboardResourceInfo.GroupVersion().String(), + "kind": dashboardv1alpha1.DashboardResourceInfo.GroupVersionKind().Kind, "metadata": map[string]interface{}{ "name": uid, "deletionTimestamp": "2023-01-01T00:00:00Z", diff --git a/pkg/services/dashboardversion/dashverimpl/dashver.go b/pkg/services/dashboardversion/dashverimpl/dashver.go index c054154a72d..58c2d4f71df 100644 --- a/pkg/services/dashboardversion/dashverimpl/dashver.go +++ b/pkg/services/dashboardversion/dashverimpl/dashver.go @@ -11,7 +11,7 @@ import ( v1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" - "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v0alpha1" + "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1" "github.com/grafana/grafana/pkg/apimachinery/utils" "github.com/grafana/grafana/pkg/components/simplejson" "github.com/grafana/grafana/pkg/infra/db" @@ -55,7 +55,7 @@ func ProvideService(cfg *setting.Cfg, db db.DB, dashboardService dashboards.Dash k8sclient: client.NewK8sHandler( dual, request.GetNamespaceMapper(cfg), - v0alpha1.DashboardResourceInfo.GroupVersionResource(), + v1alpha1.DashboardResourceInfo.GroupVersionResource(), restConfigProvider.GetRestConfig, dashboardStore, userService, diff --git a/pkg/services/folder/folderimpl/folder.go b/pkg/services/folder/folderimpl/folder.go index f0e931397ed..3e80157a0cc 100644 --- a/pkg/services/folder/folderimpl/folder.go +++ b/pkg/services/folder/folderimpl/folder.go @@ -18,7 +18,7 @@ import ( "github.com/grafana/dskit/concurrency" - dashboardalpha1 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v0alpha1" + dashboardalpha1 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1" "github.com/grafana/grafana/pkg/apimachinery/identity" "github.com/grafana/grafana/pkg/apis/folder/v0alpha1" "github.com/grafana/grafana/pkg/bus" diff --git a/pkg/services/provisioning/dashboards/dashboard.go b/pkg/services/provisioning/dashboards/dashboard.go index 11bb29d169b..0c7d92d6915 100644 --- a/pkg/services/provisioning/dashboards/dashboard.go +++ b/pkg/services/provisioning/dashboards/dashboard.go @@ -6,7 +6,7 @@ import ( "os" "time" - dashboard "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v0alpha1" + dashboard "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1" "github.com/grafana/grafana/pkg/infra/log" "github.com/grafana/grafana/pkg/services/dashboards" "github.com/grafana/grafana/pkg/services/folder" diff --git a/pkg/storage/legacysql/dualwrite/utils.go b/pkg/storage/legacysql/dualwrite/utils.go index 971f0677561..c45670ee09e 100644 --- a/pkg/storage/legacysql/dualwrite/utils.go +++ b/pkg/storage/legacysql/dualwrite/utils.go @@ -4,7 +4,7 @@ import ( "golang.org/x/net/context" "k8s.io/apimachinery/pkg/runtime/schema" - dashboard "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v0alpha1" + dashboard "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1" folders "github.com/grafana/grafana/pkg/apis/folder/v0alpha1" ) diff --git a/pkg/storage/unified/apistore/prepare_test.go b/pkg/storage/unified/apistore/prepare_test.go index 1c17a9806c2..ef5d1b6c3e3 100644 --- a/pkg/storage/unified/apistore/prepare_test.go +++ b/pkg/storage/unified/apistore/prepare_test.go @@ -16,7 +16,7 @@ import ( "k8s.io/apiserver/pkg/storage" authtypes "github.com/grafana/authlib/types" - "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v0alpha1" + "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1" "github.com/grafana/grafana/pkg/apimachinery/identity" "github.com/grafana/grafana/pkg/apimachinery/utils" ) @@ -25,11 +25,11 @@ var scheme = runtime.NewScheme() var codecs = serializer.NewCodecFactory(scheme) func TestPrepareObjectForStorage(t *testing.T) { - _ = v0alpha1.AddToScheme(scheme) + _ = v1alpha1.AddToScheme(scheme) node, err := snowflake.NewNode(rand.Int63n(1024)) require.NoError(t, err) s := &Storage{ - codec: apitesting.TestCodec(codecs, v0alpha1.DashboardResourceInfo.GroupVersion()), + codec: apitesting.TestCodec(codecs, v1alpha1.DashboardResourceInfo.GroupVersion()), snowflake: node, opts: StorageOptions{ EnableFolderSupport: true, @@ -48,14 +48,14 @@ func TestPrepareObjectForStorage(t *testing.T) { }) t.Run("Error on missing name", func(t *testing.T) { - dashboard := v0alpha1.Dashboard{} + dashboard := v1alpha1.Dashboard{} _, err := s.prepareObjectForStorage(ctx, dashboard.DeepCopyObject()) require.Error(t, err) require.Contains(t, err.Error(), "missing name") }) t.Run("Error on non-empty resource version", func(t *testing.T) { - dashboard := v0alpha1.Dashboard{} + dashboard := v1alpha1.Dashboard{} dashboard.Name = "test-name" dashboard.ResourceVersion = "123" _, err := s.prepareObjectForStorage(ctx, dashboard.DeepCopyObject()) @@ -64,13 +64,13 @@ func TestPrepareObjectForStorage(t *testing.T) { }) t.Run("Generate UID and leave deprecated ID empty, if not required", func(t *testing.T) { - dashboard := v0alpha1.Dashboard{} + dashboard := v1alpha1.Dashboard{} dashboard.Name = "test-name" encodedData, err := s.prepareObjectForStorage(ctx, dashboard.DeepCopyObject()) require.NoError(t, err) - newObject, _, err := s.codec.Decode(encodedData, nil, &v0alpha1.Dashboard{}) + newObject, _, err := s.codec.Decode(encodedData, nil, &v1alpha1.Dashboard{}) require.NoError(t, err) obj, err := utils.MetaAccessor(newObject) require.NoError(t, err) @@ -87,7 +87,7 @@ func TestPrepareObjectForStorage(t *testing.T) { }) t.Run("Should keep manager info", func(t *testing.T) { - dashboard := v0alpha1.Dashboard{} + dashboard := v1alpha1.Dashboard{} dashboard.Name = "test-name" obj := dashboard.DeepCopyObject() meta, err := utils.MetaAccessor(obj) @@ -106,7 +106,7 @@ func TestPrepareObjectForStorage(t *testing.T) { encodedData, err := s.prepareObjectForStorage(ctx, obj) require.NoError(t, err) - newObject, _, err := s.codec.Decode(encodedData, nil, &v0alpha1.Dashboard{}) + newObject, _, err := s.codec.Decode(encodedData, nil, &v1alpha1.Dashboard{}) require.NoError(t, err) meta, err = utils.MetaAccessor(newObject) require.NoError(t, err) @@ -123,7 +123,7 @@ func TestPrepareObjectForStorage(t *testing.T) { }) t.Run("Update should manage incrementing generation and metadata", func(t *testing.T) { - dashboard := v0alpha1.Dashboard{} + dashboard := v1alpha1.Dashboard{} dashboard.Name = "test-name" obj := dashboard.DeepCopyObject() meta, err := utils.MetaAccessor(obj) @@ -133,7 +133,7 @@ func TestPrepareObjectForStorage(t *testing.T) { encodedData, err := s.prepareObjectForStorage(ctx, obj) require.NoError(t, err) - insertedObject, _, err := s.codec.Decode(encodedData, nil, &v0alpha1.Dashboard{}) + insertedObject, _, err := s.codec.Decode(encodedData, nil, &v1alpha1.Dashboard{}) require.NoError(t, err) meta, err = utils.MetaAccessor(insertedObject) require.NoError(t, err) @@ -153,8 +153,8 @@ func TestPrepareObjectForStorage(t *testing.T) { updatedObject := insertedObject.DeepCopyObject() meta, err = utils.MetaAccessor(updatedObject) require.NoError(t, err) - err = meta.SetStatus(v0alpha1.DashboardStatus{ - Conversion: &v0alpha1.DashboardConversionStatus{ + err = meta.SetStatus(v1alpha1.DashboardStatus{ + Conversion: &v1alpha1.DashboardConversionStatus{ Failed: true, Error: "test", }, @@ -169,7 +169,7 @@ func TestPrepareObjectForStorage(t *testing.T) { require.Equal(t, int64(1), meta.GetGeneration()) // Change the folder -- the generation should increase and the updatedBy metadata - dashboard2 := &v0alpha1.Dashboard{ObjectMeta: v1.ObjectMeta{ + dashboard2 := &v1alpha1.Dashboard{ObjectMeta: v1.ObjectMeta{ Name: dashboard.Name, }} // TODO... deep copy, See: https://github.com/grafana/grafana/pull/102258 meta2, err := utils.MetaAccessor(dashboard2) @@ -183,12 +183,12 @@ func TestPrepareObjectForStorage(t *testing.T) { s.opts.RequireDeprecatedInternalID = true t.Run("Should generate internal id", func(t *testing.T) { - dashboard := v0alpha1.Dashboard{} + dashboard := v1alpha1.Dashboard{} dashboard.Name = "test-name" encodedData, err := s.prepareObjectForStorage(ctx, dashboard.DeepCopyObject()) require.NoError(t, err) - newObject, _, err := s.codec.Decode(encodedData, nil, &v0alpha1.Dashboard{}) + newObject, _, err := s.codec.Decode(encodedData, nil, &v1alpha1.Dashboard{}) require.NoError(t, err) obj, err := utils.MetaAccessor(newObject) require.NoError(t, err) @@ -198,7 +198,7 @@ func TestPrepareObjectForStorage(t *testing.T) { }) t.Run("Should use deprecated ID if given it", func(t *testing.T) { - dashboard := v0alpha1.Dashboard{} + dashboard := v1alpha1.Dashboard{} dashboard.Name = "test-name" obj := dashboard.DeepCopyObject() meta, err := utils.MetaAccessor(obj) @@ -207,7 +207,7 @@ func TestPrepareObjectForStorage(t *testing.T) { encodedData, err := s.prepareObjectForStorage(ctx, obj) require.NoError(t, err) - newObject, _, err := s.codec.Decode(encodedData, nil, &v0alpha1.Dashboard{}) + newObject, _, err := s.codec.Decode(encodedData, nil, &v1alpha1.Dashboard{}) require.NoError(t, err) meta, err = utils.MetaAccessor(newObject) require.NoError(t, err) @@ -215,11 +215,11 @@ func TestPrepareObjectForStorage(t *testing.T) { }) t.Run("calculate generation", func(t *testing.T) { - dash := &v0alpha1.Dashboard{ + dash := &v1alpha1.Dashboard{ ObjectMeta: v1.ObjectMeta{ Name: "test", }, - Spec: v0alpha1.DashboardSpec{ + Spec: v1alpha1.DashboardSpec{ Object: map[string]interface{}{ "hello": "world", }, @@ -265,8 +265,8 @@ func TestPrepareObjectForStorage(t *testing.T) { b.Labels = map[string]string{ "a": "b", } - b.Status = v0alpha1.DashboardStatus{ - Conversion: &v0alpha1.DashboardConversionStatus{ + b.Status = v1alpha1.DashboardStatus{ + Conversion: &v1alpha1.DashboardConversionStatus{ Failed: true, }, } diff --git a/pkg/storage/unified/resource/search.go b/pkg/storage/unified/resource/search.go index 196b33e2492..921b09047c4 100644 --- a/pkg/storage/unified/resource/search.go +++ b/pkg/storage/unified/resource/search.go @@ -16,7 +16,7 @@ import ( "golang.org/x/sync/errgroup" "k8s.io/apimachinery/pkg/runtime/schema" - dashboardv0alpha1 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v0alpha1" + dashboardv1alpha1 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1" folderv0alpha1 "github.com/grafana/grafana/pkg/apis/folder/v0alpha1" "github.com/grafana/authlib/types" @@ -689,8 +689,8 @@ func AsResourceKey(ns string, t string) (*ResourceKey, error) { case "dashboards", "dashboard": return &ResourceKey{ Namespace: ns, - Group: dashboardv0alpha1.GROUP, - Resource: dashboardv0alpha1.DASHBOARD_RESOURCE, + Group: dashboardv1alpha1.GROUP, + Resource: dashboardv1alpha1.DASHBOARD_RESOURCE, }, nil // NOT really supported in the dashboard search UI, but useful for manual testing diff --git a/pkg/storage/unified/search/dashboard.go b/pkg/storage/unified/search/dashboard.go index 65655661fce..62b8125726c 100644 --- a/pkg/storage/unified/search/dashboard.go +++ b/pkg/storage/unified/search/dashboard.go @@ -8,7 +8,7 @@ import ( "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" - "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v0alpha1" + "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1" "github.com/grafana/grafana/pkg/apimachinery/utils" "github.com/grafana/grafana/pkg/services/store/kind/dashboard" "github.com/grafana/grafana/pkg/storage/unified/resource" @@ -208,7 +208,7 @@ func DashboardBuilder(namespaced resource.NamespacedDocumentSupplier) (resource. } } return resource.DocumentBuilderInfo{ - GroupResource: v0alpha1.DashboardResourceInfo.GroupResource(), + GroupResource: v1alpha1.DashboardResourceInfo.GroupResource(), Fields: fields, Namespaced: namespaced, }, err