Skip to content

Commit 140ba21

Browse files
authored
CLOUDP-321083: support description in AtlasDatabaseUser (#2357)
* Upgrade the dbuser service to v20241113001 * CLOUDP-321083: support 'description' in AtlasDatabaseUser
1 parent 0fca0ef commit 140ba21

File tree

8 files changed

+35
-24
lines changed

8 files changed

+35
-24
lines changed

api/v1/atlasdatabaseuser_types.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,10 @@ type AtlasDatabaseUserSpec struct {
6565
// The specified date must be in the future and within one week.
6666
DeleteAfterDate string `json:"deleteAfterDate,omitempty"`
6767

68+
// Description of this database user. Maximum 100 characters.
69+
// +kubebuilder:validation:MaxLength:=100
70+
Description string `json:"description,omitempty"`
71+
6872
// Labels is an array containing key-value pairs that tag and categorize the database user.
6973
// Each key and value has a maximum length of 255 characters.
7074
Labels []common.LabelSpec `json:"labels,omitempty"`

config/crd/bases/atlas.mongodb.com_atlasdatabaseusers.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,10 @@ spec:
9191
DeleteAfterDate is a timestamp in ISO 8601 date and time format in UTC after which Atlas deletes the user.
9292
The specified date must be in the future and within one week.
9393
type: string
94+
description:
95+
description: Description of this database user. Maximum 100 characters.
96+
maxLength: 100
97+
type: string
9498
externalProjectRef:
9599
description: |-
96100
"externalProjectRef" holds the parent Atlas project ID.

internal/controller/atlasdatabaseuser/databaseuser.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ func (r *AtlasDatabaseUserReconciler) handleDatabaseUser(ctx *workflow.Context,
6666
if err != nil {
6767
return r.terminate(ctx, atlasDatabaseUser, api.DatabaseUserReadyType, workflow.AtlasAPIAccessNotConfigured, true, err)
6868
}
69-
dbUserService := dbuser.NewAtlasUsers(sdkClientSet.SdkClient20231115008.DatabaseUsersApi)
69+
dbUserService := dbuser.NewAtlasUsers(sdkClientSet.SdkClient20241113001.DatabaseUsersApi)
7070
deploymentService := deployment.NewAtlasDeployments(sdkClientSet.SdkClient20231115008.ClustersApi, sdkClientSet.SdkClient20231115008.ServerlessInstancesApi, sdkClientSet.SdkClient20231115008.GlobalClustersApi, sdkClientSet.SdkClient20241113001.FlexClustersApi, r.AtlasProvider.IsCloudGov())
7171
atlasProject, err := r.ResolveProject(ctx.Context, sdkClientSet.SdkClient20231115008, atlasDatabaseUser)
7272
if err != nil {

internal/controller/atlasdatabaseuser/databaseuser_test.go

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import (
2727
"go.mongodb.org/atlas-sdk/v20231115008/admin"
2828
"go.mongodb.org/atlas-sdk/v20231115008/mockadmin"
2929
adminv20241113001 "go.mongodb.org/atlas-sdk/v20241113001/admin"
30+
mockadminv20241113001 "go.mongodb.org/atlas-sdk/v20241113001/mockadmin"
3031
"go.uber.org/zap"
3132
"go.uber.org/zap/zaptest"
3233
corev1 "k8s.io/api/core/v1"
@@ -189,21 +190,21 @@ func TestHandleDatabaseUser(t *testing.T) {
189190
projectAPI.EXPECT().GetProjectExecute(mock.AnythingOfType("admin.GetProjectApiRequest")).
190191
Return(&admin.Group{Id: pointer.MakePtr("project-id")}, nil, nil)
191192

192-
userAPI := mockadmin.NewDatabaseUsersApi(t)
193+
userAPI := mockadminv20241113001.NewDatabaseUsersApi(t)
193194
userAPI.EXPECT().GetDatabaseUser(context.Background(), "project-id", "admin", "user1").
194-
Return(admin.GetDatabaseUserApiRequest{ApiService: userAPI})
195+
Return(adminv20241113001.GetDatabaseUserApiRequest{ApiService: userAPI})
195196
userAPI.EXPECT().GetDatabaseUserExecute(mock.AnythingOfType("admin.GetDatabaseUserApiRequest")).
196197
Return(nil, nil, nil)
197198
userAPI.EXPECT().CreateDatabaseUser(context.Background(), "project-id", mock.AnythingOfType("*admin.CloudDatabaseUser")).
198-
Return(admin.CreateDatabaseUserApiRequest{ApiService: userAPI})
199+
Return(adminv20241113001.CreateDatabaseUserApiRequest{ApiService: userAPI})
199200
userAPI.EXPECT().CreateDatabaseUserExecute(mock.AnythingOfType("admin.CreateDatabaseUserApiRequest")).
200-
Return(&admin.CloudDatabaseUser{}, nil, nil)
201+
Return(&adminv20241113001.CloudDatabaseUser{}, nil, nil)
201202

202203
clusterAPI := mockadmin.NewClustersApi(t)
203204

204205
return &atlas.ClientSet{
205-
SdkClient20231115008: &admin.APIClient{ProjectsApi: projectAPI, ClustersApi: clusterAPI, DatabaseUsersApi: userAPI},
206-
SdkClient20241113001: &adminv20241113001.APIClient{},
206+
SdkClient20231115008: &admin.APIClient{ProjectsApi: projectAPI, ClustersApi: clusterAPI},
207+
SdkClient20241113001: &adminv20241113001.APIClient{DatabaseUsersApi: userAPI},
207208
}, nil
208209
},
209210
},
@@ -2263,15 +2264,15 @@ func DefaultTestProvider(t *testing.T) *atlasmock.TestProvider {
22632264
return false
22642265
},
22652266
SdkClientSetFunc: func(ctx context.Context, creds *atlas.Credentials, log *zap.SugaredLogger) (*atlas.ClientSet, error) {
2266-
userAPI := mockadmin.NewDatabaseUsersApi(t)
2267+
userAPI := mockadminv20241113001.NewDatabaseUsersApi(t)
22672268
userAPI.EXPECT().GetDatabaseUser(context.Background(), "my-project", "admin", "user1").
2268-
Return(admin.GetDatabaseUserApiRequest{ApiService: userAPI})
2269+
Return(adminv20241113001.GetDatabaseUserApiRequest{ApiService: userAPI})
22692270
userAPI.EXPECT().GetDatabaseUserExecute(mock.AnythingOfType("admin.GetDatabaseUserApiRequest")).
22702271
Return(nil, nil, nil)
22712272
userAPI.EXPECT().CreateDatabaseUser(context.Background(), "my-project", mock.AnythingOfType("*admin.CloudDatabaseUser")).
2272-
Return(admin.CreateDatabaseUserApiRequest{ApiService: userAPI})
2273+
Return(adminv20241113001.CreateDatabaseUserApiRequest{ApiService: userAPI})
22732274
userAPI.EXPECT().CreateDatabaseUserExecute(mock.AnythingOfType("admin.CreateDatabaseUserApiRequest")).
2274-
Return(&admin.CloudDatabaseUser{}, nil, nil)
2275+
Return(&adminv20241113001.CloudDatabaseUser{}, nil, nil)
22752276

22762277
clusterAPI := mockadmin.NewClustersApi(t)
22772278

@@ -2283,11 +2284,12 @@ func DefaultTestProvider(t *testing.T) *atlasmock.TestProvider {
22832284

22842285
return &atlas.ClientSet{
22852286
SdkClient20231115008: &admin.APIClient{
2286-
ProjectsApi: projectAPI,
2287-
ClustersApi: clusterAPI,
2287+
ProjectsApi: projectAPI,
2288+
ClustersApi: clusterAPI,
2289+
},
2290+
SdkClient20241113001: &adminv20241113001.APIClient{
22882291
DatabaseUsersApi: userAPI,
22892292
},
2290-
SdkClient20241113001: &adminv20241113001.APIClient{},
22912293
}, nil
22922294
},
22932295
}

internal/translation/dbuser/conversion.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ import (
2121
"time"
2222

2323
"github.com/nsf/jsondiff"
24-
"go.mongodb.org/atlas-sdk/v20231115008/admin"
24+
"go.mongodb.org/atlas-sdk/v20241113001/admin"
2525

2626
akov2 "github.com/mongodb/mongodb-atlas-kubernetes/v2/api/v1"
2727
"github.com/mongodb/mongodb-atlas-kubernetes/v2/api/v1/common"
@@ -126,6 +126,7 @@ func fromAtlas(dbUser *admin.CloudDatabaseUser) (*User, error) {
126126
AtlasDatabaseUserSpec: &akov2.AtlasDatabaseUserSpec{
127127
DatabaseName: dbUser.DatabaseName,
128128
DeleteAfterDate: dateFromAtlas(dbUser.DeleteAfterDate),
129+
Description: dbUser.GetDescription(),
129130
Labels: labelsFromAtlas(dbUser.Labels),
130131
Roles: rolesFromAtlas(dbUser.GetRoles()),
131132
Scopes: scopes,
@@ -155,6 +156,7 @@ func toAtlas(au *User) (*admin.CloudDatabaseUser, error) {
155156
X509Type: pointer.MakePtrOrNil(au.X509Type),
156157
AwsIAMType: pointer.MakePtrOrNil(au.AWSIAMType),
157158
GroupId: au.ProjectID,
159+
Description: pointer.MakePtrOrNil(au.Description),
158160
Labels: labelsToAtlas(au.Labels),
159161
Roles: rolesToAtlas(au.Roles),
160162
Scopes: scopesToAtlas(au.Scopes),

internal/translation/dbuser/dbuser.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ import (
1919
"errors"
2020
"fmt"
2121

22-
"go.mongodb.org/atlas-sdk/v20231115008/admin"
22+
"go.mongodb.org/atlas-sdk/v20241113001/admin"
2323

2424
"github.com/mongodb/mongodb-atlas-kubernetes/v2/internal/controller/atlas"
2525
)

internal/translation/dbuser/dbuser_test.go

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,10 @@ import (
2323

2424
"github.com/stretchr/testify/assert"
2525
"github.com/stretchr/testify/require"
26-
"go.mongodb.org/atlas-sdk/v20231115008/admin"
27-
"go.mongodb.org/atlas-sdk/v20231115008/mockadmin"
26+
"go.mongodb.org/atlas-sdk/v20241113001/admin"
27+
"go.mongodb.org/atlas-sdk/v20241113001/mockadmin"
2828

2929
akov2 "github.com/mongodb/mongodb-atlas-kubernetes/v2/api/v1"
30-
"github.com/mongodb/mongodb-atlas-kubernetes/v2/internal/pointer"
3130
)
3231

3332
func TestAtlasUsersGet(t *testing.T) {
@@ -37,7 +36,7 @@ func TestAtlasUsersGet(t *testing.T) {
3736
username := "test-user"
3837

3938
notFoundErr := &admin.GenericOpenAPIError{}
40-
notFoundErr.SetModel(admin.ApiError{ErrorCode: pointer.MakePtr("USERNAME_NOT_FOUND")})
39+
notFoundErr.SetModel(admin.ApiError{ErrorCode: "USERNAME_NOT_FOUND"})
4140

4241
tests := []struct {
4342
name string
@@ -83,7 +82,7 @@ func TestAtlasUsersGet(t *testing.T) {
8382
admin.GetDatabaseUserApiRequest{ApiService: mockUsersAPI})
8483

8584
internalServerError := &admin.GenericOpenAPIError{}
86-
internalServerError.SetModel(admin.ApiError{ErrorCode: pointer.MakePtr("500")})
85+
internalServerError.SetModel(admin.ApiError{ErrorCode: "500"})
8786
mockUsersAPI.EXPECT().GetDatabaseUserExecute(admin.GetDatabaseUserApiRequest{ApiService: mockUsersAPI}).Return(
8887
nil, &http.Response{StatusCode: http.StatusInternalServerError}, errors.New("some error"))
8988
},
@@ -112,7 +111,7 @@ func TestAtlasUsersDelete(t *testing.T) {
112111
db := "database"
113112
username := "test-user"
114113
notFoundErr := &admin.GenericOpenAPIError{}
115-
notFoundErr.SetModel(admin.ApiError{ErrorCode: pointer.MakePtr("USER_NOT_FOUND")})
114+
notFoundErr.SetModel(admin.ApiError{ErrorCode: "USER_NOT_FOUND"})
116115
tests := []struct {
117116
name string
118117
setupMock func(mockUsersAPI *mockadmin.DatabaseUsersApi)
@@ -146,7 +145,7 @@ func TestAtlasUsersDelete(t *testing.T) {
146145
admin.DeleteDatabaseUserApiRequest{ApiService: mockUsersAPI})
147146

148147
internalServerError := &admin.GenericOpenAPIError{}
149-
internalServerError.SetModel(admin.ApiError{ErrorCode: pointer.MakePtr("500")})
148+
internalServerError.SetModel(admin.ApiError{ErrorCode: "500"})
150149
mockUsersAPI.EXPECT().DeleteDatabaseUserExecute(admin.DeleteDatabaseUserApiRequest{ApiService: mockUsersAPI}).
151150
Return(nil, &http.Response{StatusCode: http.StatusInternalServerError}, fmt.Errorf("some error"))
152151
},

internal/translation/dbuser/internal_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ import (
2020

2121
"github.com/stretchr/testify/assert"
2222
"github.com/stretchr/testify/require"
23-
"go.mongodb.org/atlas-sdk/v20231115008/admin"
23+
"go.mongodb.org/atlas-sdk/v20241113001/admin"
2424

2525
akov2 "github.com/mongodb/mongodb-atlas-kubernetes/v2/api/v1"
2626
"github.com/mongodb/mongodb-atlas-kubernetes/v2/internal/pointer"

0 commit comments

Comments
 (0)