From bc68bfbfe44160770d4ca60418c22d0036b456e3 Mon Sep 17 00:00:00 2001 From: Stephanie Hingtgen Date: Tue, 29 Apr 2025 12:45:56 -0600 Subject: [PATCH] [release-12.0.0] Dashboards: Fix moving to general folder (#104709) Dashboards: Fix moving to general folder --- pkg/registry/apis/dashboard/register.go | 2 +- .../dashboard/integration/api_validation_test.go | 16 +++++++++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/pkg/registry/apis/dashboard/register.go b/pkg/registry/apis/dashboard/register.go index 7874457bbd2..ee5219e38f8 100644 --- a/pkg/registry/apis/dashboard/register.go +++ b/pkg/registry/apis/dashboard/register.go @@ -332,7 +332,7 @@ func (b *DashboardsAPIBuilder) validateUpdate(ctx context.Context, a admission.A } // Validate folder existence if specified and changed - if !a.IsDryRun() && newAccessor.GetFolder() != oldAccessor.GetFolder() { + if !a.IsDryRun() && newAccessor.GetFolder() != oldAccessor.GetFolder() && newAccessor.GetFolder() != "" { id, err := identity.GetRequester(ctx) if err != nil { return fmt.Errorf("error getting requester: %w", err) diff --git a/pkg/tests/apis/dashboard/integration/api_validation_test.go b/pkg/tests/apis/dashboard/integration/api_validation_test.go index 86c163b97fe..84b168f82b8 100644 --- a/pkg/tests/apis/dashboard/integration/api_validation_test.go +++ b/pkg/tests/apis/dashboard/integration/api_validation_test.go @@ -246,6 +246,20 @@ func runDashboardValidationTests(t *testing.T, ctx TestContext) { _, err := createDashboard(t, adminClient, "Dashboard in Non-existent Folder", &nonExistentFolderUID, nil) ctx.Helper.EnsureStatusError(err, http.StatusNotFound, "folders.folder.grafana.app \"non-existent-folder-uid\" not found") }) + + t.Run("allow moving folder to general folder", func(t *testing.T) { + folder1 := createFolderObject(t, "folder1", "default", "") + folder1UID := folder1.GetName() + dash, err := createDashboard(t, adminClient, "Dashboard in a Folder", &folder1UID, nil) + require.NoError(t, err) + + generalFolderUID := "" + _, err = updateDashboard(t, adminClient, dash, "Move dashboard into the General Folder", &generalFolderUID) + require.NoError(t, err) + + err = adminClient.Resource.Delete(context.Background(), dash.GetName(), v1.DeleteOptions{}) + require.NoError(t, err) + }) }) t.Run("Dashboard schema validations", func(t *testing.T) { @@ -942,7 +956,7 @@ func createDashboard(t *testing.T, client *apis.K8sResourceClient, title string, t.Helper() var folderUIDStr string - if folderUID != nil && *folderUID != "" { + if folderUID != nil { folderUIDStr = *folderUID }