From 671ac38d6961fe36ef071380a665c86b1f059b2e Mon Sep 17 00:00:00 2001 From: Roo Thorp Date: Mon, 21 Aug 2023 17:09:55 +0100 Subject: [PATCH 1/5] Correctly fix custom role translation for Atlas API --- pkg/api/v1/custom_roles.go | 4 ++-- pkg/controller/atlasproject/custom_roles.go | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/pkg/api/v1/custom_roles.go b/pkg/api/v1/custom_roles.go index 725d43c549..50aa793b7a 100644 --- a/pkg/api/v1/custom_roles.go +++ b/pkg/api/v1/custom_roles.go @@ -47,8 +47,8 @@ func (in *CustomRole) ToAtlas() *mongodbatlas.CustomDBRole { resources := make([]mongodbatlas.Resource, 0, len(action.Resources)) for _, resource := range action.Resources { - if resource.Cluster == nil { - resource.Cluster = toptr.MakePtr(false) + if resource.Cluster == toptr.MakePtr(false) { + resource.Cluster = nil } resources = append(resources, mongodbatlas.Resource{ Collection: resource.Collection, diff --git a/pkg/controller/atlasproject/custom_roles.go b/pkg/controller/atlasproject/custom_roles.go index 2e51387ef2..ce4d76aed0 100644 --- a/pkg/controller/atlasproject/custom_roles.go +++ b/pkg/controller/atlasproject/custom_roles.go @@ -74,8 +74,8 @@ func fetchCustomRoles(ctx *workflow.Context, projectID string) ([]v1.CustomRole, resources := make([]v1.Resource, 0, len(atlasAction.Resources)) for _, atlasResource := range atlasAction.Resources { - if atlasResource.Cluster == nil { - atlasResource.Cluster = toptr.MakePtr(false) + if atlasResource.Cluster == toptr.MakePtr(false) { + atlasResource.Cluster = nil } resources = append(resources, v1.Resource{ Cluster: atlasResource.Cluster, From 86ebae18e296e1c03936468dfb48e356e2e856be Mon Sep 17 00:00:00 2001 From: Roo Thorp Date: Mon, 21 Aug 2023 17:16:51 +0100 Subject: [PATCH 2/5] appropriately update test --- pkg/api/v1/custom_roles_test.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkg/api/v1/custom_roles_test.go b/pkg/api/v1/custom_roles_test.go index 505b60091c..99bce0ef6f 100644 --- a/pkg/api/v1/custom_roles_test.go +++ b/pkg/api/v1/custom_roles_test.go @@ -76,12 +76,12 @@ func TestAtlasCustomRoles_ToAtlas(t *testing.T) { Action: "testName", Resources: []mongodbatlas.Resource{ { - Cluster: toptr.MakePtr(false), + Cluster: nil, DB: toptr.MakePtr("testDB"), Collection: toptr.MakePtr("testCollection"), }, { - Cluster: toptr.MakePtr(false), + Cluster: nil, DB: toptr.MakePtr("testDB2"), Collection: toptr.MakePtr("testCollection2"), }, @@ -99,7 +99,7 @@ func TestAtlasCustomRoles_ToAtlas(t *testing.T) { Action: "testName3", Resources: []mongodbatlas.Resource{ { - Cluster: toptr.MakePtr(false), + Cluster: nil, DB: toptr.MakePtr(""), Collection: toptr.MakePtr(""), }, From c381c74204d2051aa989a23beeba1654c7c9dcc0 Mon Sep 17 00:00:00 2001 From: Roo Thorp Date: Mon, 21 Aug 2023 17:33:40 +0100 Subject: [PATCH 3/5] actually fix conversion --- pkg/api/v1/custom_roles.go | 8 ++++---- pkg/controller/atlasproject/custom_roles.go | 7 ++++--- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/pkg/api/v1/custom_roles.go b/pkg/api/v1/custom_roles.go index 50aa793b7a..cff92a88eb 100644 --- a/pkg/api/v1/custom_roles.go +++ b/pkg/api/v1/custom_roles.go @@ -2,8 +2,6 @@ package v1 import ( "go.mongodb.org/atlas/mongodbatlas" - - "github.com/mongodb/mongodb-atlas-kubernetes/pkg/util/toptr" ) type CustomRole struct { @@ -47,8 +45,10 @@ func (in *CustomRole) ToAtlas() *mongodbatlas.CustomDBRole { resources := make([]mongodbatlas.Resource, 0, len(action.Resources)) for _, resource := range action.Resources { - if resource.Cluster == toptr.MakePtr(false) { - resource.Cluster = nil + if resource.Cluster != nil { + if !*resource.Cluster { + resource.Cluster = nil + } } resources = append(resources, mongodbatlas.Resource{ Collection: resource.Collection, diff --git a/pkg/controller/atlasproject/custom_roles.go b/pkg/controller/atlasproject/custom_roles.go index ce4d76aed0..94115aa090 100644 --- a/pkg/controller/atlasproject/custom_roles.go +++ b/pkg/controller/atlasproject/custom_roles.go @@ -6,7 +6,6 @@ import ( "fmt" "github.com/mongodb/mongodb-atlas-kubernetes/pkg/api/v1/status" - "github.com/mongodb/mongodb-atlas-kubernetes/pkg/util/toptr" "github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp/cmpopts" @@ -74,8 +73,10 @@ func fetchCustomRoles(ctx *workflow.Context, projectID string) ([]v1.CustomRole, resources := make([]v1.Resource, 0, len(atlasAction.Resources)) for _, atlasResource := range atlasAction.Resources { - if atlasResource.Cluster == toptr.MakePtr(false) { - atlasResource.Cluster = nil + if atlasResource.Cluster != nil { + if !*atlasResource.Cluster { + atlasResource.Cluster = nil + } } resources = append(resources, v1.Resource{ Cluster: atlasResource.Cluster, From ed7184868dedd4e96c87e706d261245547d3f8db Mon Sep 17 00:00:00 2001 From: Roo Thorp Date: Mon, 21 Aug 2023 17:38:14 +0100 Subject: [PATCH 4/5] nicer if format --- pkg/api/v1/custom_roles.go | 6 ++---- pkg/controller/atlasproject/custom_roles.go | 6 ++---- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/pkg/api/v1/custom_roles.go b/pkg/api/v1/custom_roles.go index cff92a88eb..8bb2d1957d 100644 --- a/pkg/api/v1/custom_roles.go +++ b/pkg/api/v1/custom_roles.go @@ -45,10 +45,8 @@ func (in *CustomRole) ToAtlas() *mongodbatlas.CustomDBRole { resources := make([]mongodbatlas.Resource, 0, len(action.Resources)) for _, resource := range action.Resources { - if resource.Cluster != nil { - if !*resource.Cluster { - resource.Cluster = nil - } + if resource.Cluster != nil && !*resource.Cluster { + resource.Cluster = nil } resources = append(resources, mongodbatlas.Resource{ Collection: resource.Collection, diff --git a/pkg/controller/atlasproject/custom_roles.go b/pkg/controller/atlasproject/custom_roles.go index 94115aa090..75dfc9e960 100644 --- a/pkg/controller/atlasproject/custom_roles.go +++ b/pkg/controller/atlasproject/custom_roles.go @@ -73,10 +73,8 @@ func fetchCustomRoles(ctx *workflow.Context, projectID string) ([]v1.CustomRole, resources := make([]v1.Resource, 0, len(atlasAction.Resources)) for _, atlasResource := range atlasAction.Resources { - if atlasResource.Cluster != nil { - if !*atlasResource.Cluster { - atlasResource.Cluster = nil - } + if atlasResource.Cluster != nil && !*atlasResource.Cluster { + atlasResource.Cluster = nil } resources = append(resources, v1.Resource{ Cluster: atlasResource.Cluster, From 4b401292d8fc510bdae15ec51d50ff29dba4e649 Mon Sep 17 00:00:00 2001 From: Roo Thorp Date: Tue, 22 Aug 2023 12:27:15 +0100 Subject: [PATCH 5/5] Refresh AtlasProject object before deletion in tests --- test/int/project_test.go | 1 + 1 file changed, 1 insertion(+) diff --git a/test/int/project_test.go b/test/int/project_test.go index 965c373fa6..0fefa02ffa 100644 --- a/test/int/project_test.go +++ b/test/int/project_test.go @@ -54,6 +54,7 @@ var _ = Describe("AtlasProject", Label("int", "AtlasProject"), func() { AfterEach(func() { if createdProject != nil && createdProject.Status.ID != "" { By("Removing Atlas Project " + createdProject.Status.ID) + Expect(k8sClient.Get(context.Background(), kube.ObjectKeyFromObject(createdProject), createdProject)).To(Succeed()) Expect(k8sClient.Delete(context.Background(), createdProject)).To(Succeed()) Eventually(checkAtlasProjectRemoved(createdProject.Status.ID), 20, interval).Should(BeTrue()) }