Skip to content

Commit 46f2bd7

Browse files
authored
chore: Ports over Flex and IP Access List new resource work (#33)
* Ports over flex work * Ports IPAccessList works * Fix * Fixes
1 parent 2cb6b6c commit 46f2bd7

28 files changed

+1172
-404
lines changed

Makefile

+1-1
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ fuzz-normalizer-test: ## Run fuzz test
7272
.PHONY: build-debug
7373
build-debug: ## Generate a binary in ./bin for debugging plugin
7474
@echo "==> Building kubernetes plugin binary for debugging"
75-
go build -gcflags="all=-N -l" -o ./bin/atlas_cli_plugin_kubernetes ./cmd/plugin
75+
go build -gcflags="all=-N -l" -o ./bin/atlas-cli-plugin-kubernetes ./cmd/plugin
7676

7777
.PHONY: e2e-test
7878
e2e-test: build-debug ## Run E2E tests

docs/command/atlas-kubernetes-config-generate.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ Options
6060
* - --operatorVersion
6161
- string
6262
- false
63-
- Version of Atlas Kubernetes Operator to generate resources for. This value defaults to "2.6.0".
63+
- Version of Atlas Kubernetes Operator to generate resources for. This value defaults to "2.7.0".
6464
* - --orgId
6565
- string
6666
- false

go.mod

+7-7
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
module github.com/mongodb/atlas-cli-plugin-kubernetes
22

3-
go 1.23.1
3+
go 1.23.5
44

5-
toolchain go1.23.3
5+
toolchain go1.23.6
66

77
require (
88
github.com/Masterminds/semver/v3 v3.3.1
@@ -15,7 +15,7 @@ require (
1515
github.com/mongodb-forks/digest v1.1.0
1616
github.com/mongodb-labs/cobra2snooty v0.18.2
1717
github.com/mongodb/atlas-cli-core v0.0.0-20250102164103-49387c8ee633
18-
github.com/mongodb/mongodb-atlas-kubernetes/v2 v2.6.1
18+
github.com/mongodb/mongodb-atlas-kubernetes/v2 v2.7.0
1919
github.com/spf13/afero v1.12.0
2020
github.com/spf13/cobra v1.8.1
2121
github.com/spf13/viper v1.19.0
@@ -82,13 +82,13 @@ require (
8282
go.mongodb.org/atlas-sdk/v20241113001 v20241113001.0.0 // indirect
8383
go.uber.org/multierr v1.11.0 // indirect
8484
go.uber.org/zap v1.27.0 // indirect
85-
golang.org/x/net v0.33.0 // indirect
85+
golang.org/x/net v0.34.0 // indirect
8686
golang.org/x/oauth2 v0.25.0 // indirect
8787
golang.org/x/sys v0.29.0 // indirect
88-
golang.org/x/term v0.27.0 // indirect
88+
golang.org/x/term v0.28.0 // indirect
8989
golang.org/x/text v0.21.0 // indirect
90-
golang.org/x/time v0.8.0 // indirect
91-
google.golang.org/protobuf v1.36.1 // indirect
90+
golang.org/x/time v0.9.0 // indirect
91+
google.golang.org/protobuf v1.36.4 // indirect
9292
gopkg.in/inf.v0 v0.9.1 // indirect
9393
gopkg.in/ini.v1 v1.67.0 // indirect
9494
k8s.io/klog/v2 v2.130.1 // indirect

go.sum

+21-21
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
cel.dev/expr v0.18.0 h1:CJ6drgk+Hf96lkLikr4rFf19WrU0BOWEihyZnI2TAzo=
2-
cel.dev/expr v0.18.0/go.mod h1:MrpN08Q+lEBs+bGYdLxxHkZoUSsCp0nSKTs0nTymJgw=
1+
cel.dev/expr v0.19.0 h1:lXuo+nDhpyJSpWxpPVi5cPUwzKb+dsdOiw6IreM5yt0=
2+
cel.dev/expr v0.19.0/go.mod h1:MrpN08Q+lEBs+bGYdLxxHkZoUSsCp0nSKTs0nTymJgw=
33
github.com/BurntSushi/toml v1.4.0 h1:kuoIxZQy2WRRk1pttg9asf+WVv6tWQuBNVmK8+nqPr0=
44
github.com/BurntSushi/toml v1.4.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho=
55
github.com/Masterminds/semver/v3 v3.3.1 h1:QtNSWtVZ3nBfk8mAOu/B6v7FMJ+NHTIgUPi7rj+4nv4=
@@ -118,8 +118,8 @@ github.com/mongodb-labs/cobra2snooty v0.18.2 h1:qWpLCMWbQb5FSZ5ehiWN2URmieMJhQtQ
118118
github.com/mongodb-labs/cobra2snooty v0.18.2/go.mod h1:WnzqCFmx4f72Yj9dL/ulBUqcatfURGdKFf8DLT4h7zQ=
119119
github.com/mongodb/atlas-cli-core v0.0.0-20250102164103-49387c8ee633 h1:aAP61m3j8m2kKURFbauAu/Hk7nV+k8puGakS0M03tqk=
120120
github.com/mongodb/atlas-cli-core v0.0.0-20250102164103-49387c8ee633/go.mod h1:zeBvF+hvzhmHwvjT9QuLeGrKQlsY1YlQo8v25wWzQug=
121-
github.com/mongodb/mongodb-atlas-kubernetes/v2 v2.6.1 h1:NoRZUpYYvLY/WiHY1Kmz7ox0e+kagB1Pgji0jaBYhsA=
122-
github.com/mongodb/mongodb-atlas-kubernetes/v2 v2.6.1/go.mod h1:3F3cvp67gO87yDKerAPoe7RwYxK0yTSSraSbm1vGtSg=
121+
github.com/mongodb/mongodb-atlas-kubernetes/v2 v2.7.0 h1:Fcj23AIwISOgQNjXqpvw3OA6FfKd+ZqwOzGxd9Sx/Gg=
122+
github.com/mongodb/mongodb-atlas-kubernetes/v2 v2.7.0/go.mod h1:aNJO0I6HBltZ+UHGoS+0mnOgLyLqnKhbVZ1UDiHe8kA=
123123
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA=
124124
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
125125
github.com/onsi/ginkgo/v2 v2.22.2 h1:/3X8Panh8/WwhU/3Ssa6rCKqPLuAkVY2I0RoyDLySlU=
@@ -197,10 +197,10 @@ go.mongodb.org/atlas-sdk/v20241113001 v20241113001.0.0 h1:G3UZcWwWziGUuaILWp/Gc+
197197
go.mongodb.org/atlas-sdk/v20241113001 v20241113001.0.0/go.mod h1:fMiUyCacIAm+XwFkJ4j+rJtYLRsGU7hButtgGv+SBU4=
198198
go.mongodb.org/atlas-sdk/v20241113004 v20241113004.0.0 h1:dmIp82dS4foajdKgcKRfr26g0cWE52jQAf+nbgFXr10=
199199
go.mongodb.org/atlas-sdk/v20241113004 v20241113004.0.0/go.mod h1:z6m7PcfItkgV3+mnLuStlTkdTbfUBQJpRyES8tuHNCk=
200-
go.opentelemetry.io/otel v1.29.0 h1:PdomN/Al4q/lN6iBJEN3AwPvUiHPMlt93c8bqTG5Llw=
201-
go.opentelemetry.io/otel v1.29.0/go.mod h1:N/WtXPs1CNCUEx+Agz5uouwCba+i+bJGFicT8SR4NP8=
202-
go.opentelemetry.io/otel/trace v1.29.0 h1:J/8ZNK4XgR7a21DZUAsbF8pZ5Jcw1VhACmnYt39JTi4=
203-
go.opentelemetry.io/otel/trace v1.29.0/go.mod h1:eHl3w0sp3paPkYstJOmAimxhiFXPg+MMTlEh3nsQgWQ=
200+
go.opentelemetry.io/otel v1.34.0 h1:zRLXxLCgL1WyKsPVrgbSdMN4c0FMkDAskSTQP+0hdUY=
201+
go.opentelemetry.io/otel v1.34.0/go.mod h1:OWFPOQ+h4G8xpyjgqo4SxJYdDQ/qmRH+wivy7zzx9oI=
202+
go.opentelemetry.io/otel/trace v1.34.0 h1:+ouXS2V8Rd4hp4580a8q23bg0azF2nI8cqLYnC8mh/k=
203+
go.opentelemetry.io/otel/trace v1.34.0/go.mod h1:Svm7lSjQD7kG7KJ/MUHPVXSDGz2OX4h0M2jHBhmSfRE=
204204
go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
205205
go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE=
206206
go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
@@ -220,8 +220,8 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL
220220
golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
221221
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
222222
golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
223-
golang.org/x/net v0.33.0 h1:74SYHlV8BIgHIFC/LrYkOGIwL19eTYXQ5wc6TBuO36I=
224-
golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4=
223+
golang.org/x/net v0.34.0 h1:Mb7Mrk043xzHgnRM88suvJFwzVrRfHEHJEl5/71CKw0=
224+
golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k=
225225
golang.org/x/oauth2 v0.25.0 h1:CY4y7XT9v0cRI9oupztF8AgiIu99L/ksR/Xp/6jrZ70=
226226
golang.org/x/oauth2 v0.25.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI=
227227
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
@@ -240,14 +240,14 @@ golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
240240
golang.org/x/sys v0.29.0 h1:TPYlXGxvx1MGTn2GiZDhnjPA9wZzZeGKHHmKhHYvgaU=
241241
golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
242242
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
243-
golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q=
244-
golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM=
243+
golang.org/x/term v0.28.0 h1:/Ts8HFuMR2E6IP/jlo7QVLZHggjKQbhu/7H0LJFr3Gg=
244+
golang.org/x/term v0.28.0/go.mod h1:Sw/lC2IAUZ92udQNf3WodGtn4k/XoLyZoh8v/8uiwek=
245245
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
246246
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
247247
golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo=
248248
golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ=
249-
golang.org/x/time v0.8.0 h1:9i3RxcPv3PZnitoVGMPDKZSq1xW1gK1Xy3ArNOGZfEg=
250-
golang.org/x/time v0.8.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
249+
golang.org/x/time v0.9.0 h1:EsRrnYcQiGH+5FfbgvV4AP7qEZstoyrHB0DzarOQ4ZY=
250+
golang.org/x/time v0.9.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
251251
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
252252
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
253253
golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
@@ -259,13 +259,13 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T
259259
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
260260
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
261261
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
262-
google.golang.org/genproto v0.0.0-20241118233622-e639e219e697 h1:ToEetK57OidYuqD4Q5w+vfEnPvPpuTwedCNVohYJfNk=
263-
google.golang.org/genproto/googleapis/api v0.0.0-20241209162323-e6fa225c2576 h1:CkkIfIt50+lT6NHAVoRYEyAvQGFM7xEwXUUywFvEb3Q=
264-
google.golang.org/genproto/googleapis/api v0.0.0-20241209162323-e6fa225c2576/go.mod h1:1R3kvZ1dtP3+4p4d3G8uJ8rFk/fWlScl38vanWACI08=
265-
google.golang.org/genproto/googleapis/rpc v0.0.0-20241223144023-3abc09e42ca8 h1:TqExAhdPaB60Ux47Cn0oLV07rGnxZzIsaRhQaqS666A=
266-
google.golang.org/genproto/googleapis/rpc v0.0.0-20241223144023-3abc09e42ca8/go.mod h1:lcTa1sDdWEIHMWlITnIczmw5w60CF9ffkb8Z+DVmmjA=
267-
google.golang.org/protobuf v1.36.1 h1:yBPeRvTftaleIgM3PZ/WBIZ7XM/eEYAaEyCwvyjq/gk=
268-
google.golang.org/protobuf v1.36.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
262+
google.golang.org/genproto v0.0.0-20250122153221-138b5a5a4fd4 h1:Pw6WnI9W/LIdRxqK7T6XGugGbHIRl5Q7q3BssH6xk4s=
263+
google.golang.org/genproto/googleapis/api v0.0.0-20250124145028-65684f501c47 h1:5iw9XJTD4thFidQmFVvx0wi4g5yOHk76rNRUxz1ZG5g=
264+
google.golang.org/genproto/googleapis/api v0.0.0-20250124145028-65684f501c47/go.mod h1:AfA77qWLcidQWywD0YgqfpJzf50w2VjzBml3TybHeJU=
265+
google.golang.org/genproto/googleapis/rpc v0.0.0-20250124145028-65684f501c47 h1:91mG8dNTpkC0uChJUQ9zCiRqx3GEEFOWaRZ0mI6Oj2I=
266+
google.golang.org/genproto/googleapis/rpc v0.0.0-20250124145028-65684f501c47/go.mod h1:+2Yz8+CLJbIfL9z73EW45avw8Lmge3xVElCP9zEKi50=
267+
google.golang.org/protobuf v1.36.4 h1:6A3ZDJHn/eNqc1i+IdefRzy/9PokBTPvcqMySR7NNIM=
268+
google.golang.org/protobuf v1.36.4/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
269269
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
270270
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
271271
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=

internal/kubernetes/operator/config_exporter.go

+67-4
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Copyright 2024 MongoDB Inc
1+
// Copyright 2025 MongoDB Inc
22
//
33
// Licensed under the Apache License, Version 2.0 (the "License");
44
// you may not use this file except in compliance with the License.
@@ -28,6 +28,7 @@ import (
2828
"github.com/mongodb/atlas-cli-plugin-kubernetes/internal/kubernetes/operator/project"
2929
"github.com/mongodb/atlas-cli-plugin-kubernetes/internal/kubernetes/operator/resources"
3030
"github.com/mongodb/atlas-cli-plugin-kubernetes/internal/kubernetes/operator/streamsprocessing"
31+
"github.com/mongodb/atlas-cli-plugin-kubernetes/internal/pointer"
3132
"github.com/mongodb/atlas-cli-plugin-kubernetes/internal/store"
3233
"go.mongodb.org/atlas-sdk/v20241113004/admin"
3334
"k8s.io/apimachinery/pkg/runtime"
@@ -66,7 +67,6 @@ type Patcher interface {
6667

6768
var (
6869
ErrServerless = errors.New("serverless instance error")
69-
ErrClusterNotFound = errors.New("cluster not found")
7070
ErrNoCloudManagerClusters = errors.New("can not get 'advanced clusters' object")
7171
)
7272

@@ -276,6 +276,28 @@ func (e *ConfigExporter) exportProject() ([]runtime.Object, string, error) {
276276
}
277277
}
278278

279+
if e.featureValidator.IsResourceSupported(features.ResourceAtlasIPAccessList) {
280+
ipAccessList, isEmpty, err := project.BuildIPAccessList(
281+
e.dataProvider,
282+
project.IPAccessListRequest{
283+
ProjectName: projectData.Project.Name,
284+
ProjectID: e.projectID,
285+
TargetNamespace: e.targetNamespace,
286+
Version: e.operatorVersion,
287+
Credentials: credentialsName,
288+
IndependentResource: e.independentResources,
289+
Dictionary: e.dictionaryForAtlasNames,
290+
},
291+
)
292+
if err != nil {
293+
return nil, "", err
294+
}
295+
296+
if !isEmpty {
297+
r = append(r, ipAccessList)
298+
}
299+
}
300+
279301
// DB users
280302
usersData, relatedSecrets, err := dbusers.BuildDBUsers(
281303
e.dataProvider,
@@ -336,8 +358,16 @@ func (e *ConfigExporter) exportDeployments(projectName string) ([]runtime.Object
336358
continue
337359
}
338360

339-
// Try serverless cluster next
340-
serverlessCluster, err := deployment.BuildServerlessDeployments(e.dataProvider, e.featureValidator, e.projectID, projectName, deploymentName, e.targetNamespace, e.dictionaryForAtlasNames, e.operatorVersion)
361+
// Try flex cluster next
362+
if flexCluster, err := deployment.BuildFlexDeployments(e.dataProvider, e.projectID, projectName, deploymentName, e.targetNamespace, e.dictionaryForAtlasNames, e.operatorVersion); err == nil {
363+
if flexCluster != nil {
364+
result = append(result, flexCluster)
365+
}
366+
continue
367+
}
368+
369+
// Try serverless cluster last
370+
serverlessCluster, err := deployment.BuildServerlessDeployments(e.dataProvider, e.projectID, projectName, deploymentName, e.targetNamespace, e.dictionaryForAtlasNames, e.operatorVersion)
341371
if err == nil {
342372
if serverlessCluster != nil {
343373
result = append(result, serverlessCluster)
@@ -346,11 +376,33 @@ func (e *ConfigExporter) exportDeployments(projectName string) ([]runtime.Object
346376
}
347377
return nil, fmt.Errorf("%w: %s(%s), e: %w", ErrServerless, deploymentName, e.projectID, err)
348378
}
379+
349380
return result, nil
350381
}
351382

352383
func fetchClusterNames(clustersProvider store.AllClustersLister, projectID string) ([]string, error) {
353384
result := make([]string, 0, DefaultClustersCount)
385+
386+
flexResult := make(map[string]struct{}, DefaultClustersCount)
387+
flexClusters, err := clustersProvider.ListFlexClusters(
388+
&admin.ListFlexClustersApiParams{
389+
GroupId: projectID,
390+
ItemsPerPage: pointer.Get(maxClusters),
391+
},
392+
)
393+
if err != nil {
394+
return nil, err
395+
}
396+
397+
for _, cluster := range flexClusters.GetResults() {
398+
if reflect.ValueOf(cluster).IsZero() {
399+
continue
400+
}
401+
402+
result = append(result, cluster.GetName())
403+
flexResult[cluster.GetName()] = struct{}{}
404+
}
405+
354406
clusters, err := clustersProvider.ProjectClusters(projectID, &store.ListOptions{ItemsPerPage: maxClusters})
355407
if err != nil {
356408
return nil, err
@@ -364,6 +416,12 @@ func fetchClusterNames(clustersProvider store.AllClustersLister, projectID strin
364416
if reflect.ValueOf(cluster).IsZero() {
365417
continue
366418
}
419+
420+
// Deduplicate non-migrated instances
421+
if _, ok := flexResult[cluster.GetName()]; ok {
422+
continue
423+
}
424+
367425
result = append(result, cluster.GetName())
368426
}
369427

@@ -377,6 +435,11 @@ func fetchClusterNames(clustersProvider store.AllClustersLister, projectID strin
377435
}
378436

379437
for _, cluster := range serverlessInstances.GetResults() {
438+
// Deduplicate non-migrated instances
439+
if _, ok := flexResult[cluster.GetName()]; ok {
440+
continue
441+
}
442+
380443
result = append(result, *cluster.Name)
381444
}
382445

internal/kubernetes/operator/dbusers/dbusers.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Copyright 2022 MongoDB Inc
1+
// Copyright 2025 MongoDB Inc
22
//
33
// Licensed under the Apache License, Version 2.0 (the "License");
44
// you may not use this file except in compliance with the License.
@@ -116,7 +116,7 @@ func setReference(dbUser *akov2.AtlasDatabaseUser, independentResource bool, pro
116116
}
117117
return dbUser
118118
}
119-
dbUser.Spec.Project = &akov2common.ResourceRefNamespaced{
119+
dbUser.Spec.ProjectRef = &akov2common.ResourceRefNamespaced{
120120
Name: projectName,
121121
Namespace: namespace,
122122
}

internal/kubernetes/operator/dbusers/dbusers_test.go

+6-4
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Copyright 2022 MongoDB Inc
1+
// Copyright 2025 MongoDB Inc
22
//
33
// Licensed under the Apache License, Version 2.0 (the "License");
44
// you may not use this file except in compliance with the License.
@@ -198,9 +198,11 @@ func TestBuildDBUsers(t *testing.T) {
198198
},
199199
},
200200
Spec: akov2.AtlasDatabaseUserSpec{
201-
Project: &akov2common.ResourceRefNamespaced{
202-
Name: resources.NormalizeAtlasName(projectName, dictionary),
203-
Namespace: targetNamespace,
201+
ProjectDualReference: akov2.ProjectDualReference{
202+
ProjectRef: &akov2common.ResourceRefNamespaced{
203+
Name: resources.NormalizeAtlasName(projectName, dictionary),
204+
Namespace: targetNamespace,
205+
},
204206
},
205207
DatabaseName: user.DatabaseName,
206208
DeleteAfterDate: user.DeleteAfterDate.Format(timeFormatISO8601),

0 commit comments

Comments
 (0)