From ba038e28484c720271b966a20ef4494f446e39b4 Mon Sep 17 00:00:00 2001 From: Ryan McKinley Date: Tue, 2 Dec 2025 15:47:47 +0300 Subject: [PATCH] remove from legacy folder api --- pkg/services/folder/folderimpl/conversions.go | 7 ++++++- pkg/services/folder/folderimpl/folder.go | 2 +- pkg/tests/apis/folder/folders_test.go | 13 +++++++++---- 3 files changed, 16 insertions(+), 6 deletions(-) diff --git a/pkg/services/folder/folderimpl/conversions.go b/pkg/services/folder/folderimpl/conversions.go index eb718350b0a..ebb313dfade 100644 --- a/pkg/services/folder/folderimpl/conversions.go +++ b/pkg/services/folder/folderimpl/conversions.go @@ -62,13 +62,18 @@ func convertUnstructuredToFolder(item *unstructured.Unstructured, identifiers ma } } + parent := meta.GetFolder() + if folder.IsRootFolder(parent) { + parent = "" + } + manager, _ := meta.GetManagerProperties() return &folder.Folder{ UID: uid, Title: title, Description: description, ID: meta.GetDeprecatedInternalID(), // nolint:staticcheck - ParentUID: meta.GetFolder(), + ParentUID: parent, Version: int(meta.GetGeneration()), ManagedBy: manager.Kind, diff --git a/pkg/services/folder/folderimpl/folder.go b/pkg/services/folder/folderimpl/folder.go index 08d2682f52d..cb2e9b057b3 100644 --- a/pkg/services/folder/folderimpl/folder.go +++ b/pkg/services/folder/folderimpl/folder.go @@ -1384,7 +1384,7 @@ func SplitFullpath(s string) []string { func (s *Service) nestedFolderCreate(ctx context.Context, cmd *folder.CreateFolderCommand) (*folder.Folder, error) { ctx, span := s.tracer.Start(ctx, "folder.nestedFolderCreate") defer span.End() - if cmd.ParentUID != "" { + if !folder.IsRootFolder(cmd.ParentUID) { if err := s.validateParent(ctx, cmd.OrgID, cmd.ParentUID, cmd.UID); err != nil { return nil, err } diff --git a/pkg/tests/apis/folder/folders_test.go b/pkg/tests/apis/folder/folders_test.go index ee958bcc7ec..21a0acc2a9d 100644 --- a/pkg/tests/apis/folder/folders_test.go +++ b/pkg/tests/apis/folder/folders_test.go @@ -14,7 +14,6 @@ import ( "time" "github.com/google/uuid" - "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v0alpha1" "github.com/prometheus/common/model" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" @@ -23,6 +22,7 @@ import ( "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" "k8s.io/apimachinery/pkg/runtime/schema" + "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v0alpha1" folders "github.com/grafana/grafana/apps/folder/pkg/apis/folder/v1beta1" "github.com/grafana/grafana/pkg/api/dtos" grafanarest "github.com/grafana/grafana/pkg/apiserver/rest" @@ -132,9 +132,14 @@ func TestIntegrationFoldersApp(t *testing.T) { }`, string(v1Disco)) }) - // test on all dualwriter modes - for mode := 0; mode <= 4; mode++ { - modeDw := grafanarest.DualWriterMode(mode) + // test on all dual writer modes + modes := []grafanarest.DualWriterMode{ + grafanarest.Mode1, + grafanarest.Mode2, + grafanarest.Mode3, + grafanarest.Mode4, + } + for _, modeDw := range modes { t.Run(fmt.Sprintf("with dual write (unified storage, mode %v)", modeDw), func(t *testing.T) { doFolderTests(t, apis.NewK8sTestHelper(t, testinfra.GrafanaOpts{