Skip to content

Commit 6e725be

Browse files
authored
Fix connection secret creation (#774)
1 parent c9b5ce9 commit 6e725be

File tree

5 files changed

+24
-26
lines changed

5 files changed

+24
-26
lines changed

pkg/controller/atlasdatabaseuser/atlasdatabaseuser_controller.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,6 @@ import (
2222
"fmt"
2323
"time"
2424

25-
"github.com/mongodb/mongodb-atlas-kubernetes/pkg/controller/validate"
26-
2725
"go.mongodb.org/atlas/mongodbatlas"
2826
"go.uber.org/zap"
2927
corev1 "k8s.io/api/core/v1"
@@ -39,8 +37,10 @@ import (
3937
mdbv1 "github.com/mongodb/mongodb-atlas-kubernetes/pkg/api/v1"
4038
"github.com/mongodb/mongodb-atlas-kubernetes/pkg/api/v1/status"
4139
"github.com/mongodb/mongodb-atlas-kubernetes/pkg/controller/atlas"
40+
"github.com/mongodb/mongodb-atlas-kubernetes/pkg/controller/connectionsecret"
4241
"github.com/mongodb/mongodb-atlas-kubernetes/pkg/controller/customresource"
4342
"github.com/mongodb/mongodb-atlas-kubernetes/pkg/controller/statushandler"
43+
"github.com/mongodb/mongodb-atlas-kubernetes/pkg/controller/validate"
4444
"github.com/mongodb/mongodb-atlas-kubernetes/pkg/controller/watch"
4545
"github.com/mongodb/mongodb-atlas-kubernetes/pkg/controller/workflow"
4646
"github.com/mongodb/mongodb-atlas-kubernetes/pkg/util/kube"
@@ -182,7 +182,7 @@ func (r AtlasDatabaseUserReconciler) Delete(e event.DeleteEvent) error {
182182
}
183183

184184
// We ignore the error as it will be printed by the function
185-
_ = removeStaleSecretsByUserName(r.Client, project.ID(), dbUser.Spec.Username, *dbUser, log)
185+
_ = connectionsecret.RemoveStaleSecretsByUserName(r.Client, project.ID(), dbUser.Spec.Username, *dbUser, log)
186186

187187
return nil
188188
}

pkg/controller/atlasdatabaseuser/databaseuser.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@ import (
66
"fmt"
77
"time"
88

9-
"github.com/mongodb/mongodb-atlas-kubernetes/pkg/controller/atlasdeployment"
10-
119
"github.com/google/go-cmp/cmp"
1210
"github.com/google/go-cmp/cmp/cmpopts"
1311
"go.mongodb.org/atlas/mongodbatlas"
@@ -18,6 +16,8 @@ import (
1816
mdbv1 "github.com/mongodb/mongodb-atlas-kubernetes/pkg/api/v1"
1917
"github.com/mongodb/mongodb-atlas-kubernetes/pkg/api/v1/status"
2018
"github.com/mongodb/mongodb-atlas-kubernetes/pkg/controller/atlas"
19+
"github.com/mongodb/mongodb-atlas-kubernetes/pkg/controller/atlasdeployment"
20+
"github.com/mongodb/mongodb-atlas-kubernetes/pkg/controller/connectionsecret"
2121
"github.com/mongodb/mongodb-atlas-kubernetes/pkg/controller/workflow"
2222
"github.com/mongodb/mongodb-atlas-kubernetes/pkg/util/compat"
2323
"github.com/mongodb/mongodb-atlas-kubernetes/pkg/util/timeutil"
@@ -45,7 +45,7 @@ func (r *AtlasDatabaseUserReconciler) ensureDatabaseUser(ctx *workflow.Context,
4545
return result
4646
}
4747

48-
if result := CreateOrUpdateConnectionSecrets(ctx, r.Client, r.EventRecorder, project, dbUser); !result.IsOk() {
48+
if result := connectionsecret.CreateOrUpdateConnectionSecrets(ctx, r.Client, r.EventRecorder, project, dbUser); !result.IsOk() {
4949
return result
5050
}
5151

@@ -89,7 +89,7 @@ func checkUserExpired(log *zap.SugaredLogger, k8sClient client.Client, projectID
8989
return workflow.Terminate(workflow.DatabaseUserInvalidSpec, err.Error()).WithoutRetry()
9090
}
9191
if deleteAfter.Before(time.Now()) {
92-
if err = removeStaleSecretsByUserName(k8sClient, projectID, dbUser.Spec.Username, dbUser, log); err != nil {
92+
if err = connectionsecret.RemoveStaleSecretsByUserName(k8sClient, projectID, dbUser.Spec.Username, dbUser, log); err != nil {
9393
return workflow.Terminate(workflow.Internal, err.Error())
9494
}
9595
return workflow.Terminate(workflow.DatabaseUserExpired, "The database user is expired and has been removed from Atlas").WithoutRetry()

pkg/controller/atlasdeployment/deployment.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -245,6 +245,9 @@ func (r *AtlasDeploymentReconciler) ensureConnectionSecrets(ctx *workflow.Contex
245245
SrvConnURL: connectionStrings.StandardSrv,
246246
Password: password,
247247
}
248+
connectionsecret.FillPrivateConnStrings(connectionStrings, &data)
249+
250+
ctx.Log.Debugw("Creating a connection Secret", "data", data)
248251

249252
secretName, err := connectionsecret.Ensure(r.Client, project.Namespace, project.Spec.Name, project.ID(), name, data)
250253
if err != nil {

pkg/controller/atlasdatabaseuser/connectionsecrets.go renamed to pkg/controller/connectionsecret/connectionsecrets.go

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package atlasdatabaseuser
1+
package connectionsecret
22

33
import (
44
"context"
@@ -10,7 +10,6 @@ import (
1010
"sigs.k8s.io/controller-runtime/pkg/client"
1111

1212
mdbv1 "github.com/mongodb/mongodb-atlas-kubernetes/pkg/api/v1"
13-
"github.com/mongodb/mongodb-atlas-kubernetes/pkg/controller/connectionsecret"
1413
"github.com/mongodb/mongodb-atlas-kubernetes/pkg/controller/workflow"
1514
"github.com/mongodb/mongodb-atlas-kubernetes/pkg/util/kube"
1615
"github.com/mongodb/mongodb-atlas-kubernetes/pkg/util/stringutil"
@@ -91,16 +90,16 @@ func createOrUpdateConnectionSecretsFromDeploymentSecrets(ctx *workflow.Context,
9190
if err != nil {
9291
return workflow.Terminate(workflow.DatabaseUserConnectionSecretsNotCreated, err.Error())
9392
}
94-
data := connectionsecret.ConnectionData{
93+
data := ConnectionData{
9594
DBUserName: dbUser.Spec.Username,
9695
Password: password,
9796
ConnURL: ds.connectionStrings.Standard,
9897
SrvConnURL: ds.connectionStrings.StandardSrv,
9998
}
100-
fillPrivateConnStrings(ds.connectionStrings, &data)
99+
FillPrivateConnStrings(ds.connectionStrings, &data)
101100

102101
var secretName string
103-
if secretName, err = connectionsecret.Ensure(k8sClient, dbUser.Namespace, project.Spec.Name, project.ID(), ds.name, data); err != nil {
102+
if secretName, err = Ensure(k8sClient, dbUser.Namespace, project.Spec.Name, project.ID(), ds.name, data); err != nil {
104103
return workflow.Terminate(workflow.DatabaseUserConnectionSecretsNotCreated, err.Error())
105104
}
106105
secrets = append(secrets, secretName)
@@ -128,7 +127,7 @@ func cleanupStaleSecrets(ctx *workflow.Context, k8sClient client.Client, project
128127
// Performing the cleanup of old secrets only if the username has changed
129128
if user.Status.UserName != user.Spec.Username {
130129
// Note, that we pass the username from the status, not from the spec
131-
return removeStaleSecretsByUserName(k8sClient, projectID, user.Status.UserName, user, ctx.Log)
130+
return RemoveStaleSecretsByUserName(k8sClient, projectID, user.Status.UserName, user, ctx.Log)
132131
}
133132
return nil
134133
}
@@ -139,12 +138,12 @@ func removeStaleByScope(ctx *workflow.Context, k8sClient client.Client, projectI
139138
if len(scopes) == 0 {
140139
return nil
141140
}
142-
secrets, err := connectionsecret.ListByUserName(k8sClient, user.Namespace, projectID, user.Spec.Username)
141+
secrets, err := ListByUserName(k8sClient, user.Namespace, projectID, user.Spec.Username)
143142
if err != nil {
144143
return err
145144
}
146145
for i, s := range secrets {
147-
deployment, ok := s.Labels[connectionsecret.ClusterLabelKey]
146+
deployment, ok := s.Labels[ClusterLabelKey]
148147
if !ok {
149148
continue
150149
}
@@ -158,9 +157,9 @@ func removeStaleByScope(ctx *workflow.Context, k8sClient client.Client, projectI
158157
return nil
159158
}
160159

161-
// removeStaleSecretsByUserName removes the stale secrets when the database user name changes (as it's used as a part of Secret name)
162-
func removeStaleSecretsByUserName(k8sClient client.Client, projectID, userName string, user mdbv1.AtlasDatabaseUser, log *zap.SugaredLogger) error {
163-
secrets, err := connectionsecret.ListByUserName(k8sClient, user.Namespace, projectID, userName)
160+
// RemoveStaleSecretsByUserName removes the stale secrets when the database user name changes (as it's used as a part of Secret name)
161+
func RemoveStaleSecretsByUserName(k8sClient client.Client, projectID, userName string, user mdbv1.AtlasDatabaseUser, log *zap.SugaredLogger) error {
162+
secrets, err := ListByUserName(k8sClient, user.Namespace, projectID, userName)
164163
if err != nil {
165164
return err
166165
}
@@ -181,7 +180,7 @@ func removeStaleSecretsByUserName(k8sClient client.Client, projectID, userName s
181180
return lastError
182181
}
183182

184-
func fillPrivateConnStrings(connStrings *mongodbatlas.ConnectionStrings, data *connectionsecret.ConnectionData) {
183+
func FillPrivateConnStrings(connStrings *mongodbatlas.ConnectionStrings, data *ConnectionData) {
185184
if connStrings.Private != "" {
186185
data.PvtConnURL = connStrings.Private
187186
data.PvtSrvConnURL = connStrings.PrivateSrv

test/int/dbuser_test.go

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,22 +13,18 @@ import (
1313
. "github.com/onsi/gomega"
1414
"go.mongodb.org/atlas/mongodbatlas"
1515
"go.mongodb.org/mongo-driver/bson"
16+
"go.mongodb.org/mongo-driver/mongo"
1617
"go.mongodb.org/mongo-driver/mongo/options"
1718
corev1 "k8s.io/api/core/v1"
1819
apiErrors "k8s.io/apimachinery/pkg/api/errors"
1920
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2021
"sigs.k8s.io/controller-runtime/pkg/client"
2122

22-
"github.com/mongodb/mongodb-atlas-kubernetes/pkg/controller/atlasdatabaseuser"
23-
24-
"github.com/mongodb/mongodb-atlas-kubernetes/pkg/controller/customresource"
25-
26-
"go.mongodb.org/mongo-driver/mongo"
27-
2823
mdbv1 "github.com/mongodb/mongodb-atlas-kubernetes/pkg/api/v1"
2924
"github.com/mongodb/mongodb-atlas-kubernetes/pkg/api/v1/project"
3025
"github.com/mongodb/mongodb-atlas-kubernetes/pkg/api/v1/status"
3126
"github.com/mongodb/mongodb-atlas-kubernetes/pkg/controller/connectionsecret"
27+
"github.com/mongodb/mongodb-atlas-kubernetes/pkg/controller/customresource"
3228
"github.com/mongodb/mongodb-atlas-kubernetes/pkg/controller/workflow"
3329
"github.com/mongodb/mongodb-atlas-kubernetes/pkg/util/kube"
3430
"github.com/mongodb/mongodb-atlas-kubernetes/pkg/util/testutil"
@@ -427,7 +423,7 @@ var _ = Describe("AtlasDatabaseUser", Label("int", "AtlasDatabaseUser"), func()
427423
s1 := validateSecret(k8sClient, *createdProject, *createdDeploymentAWS, *createdDBUser)
428424
s2 := validateSecret(k8sClient, *createdProject, *createdDeploymentAzure, *createdDBUser)
429425

430-
testutil.EventExists(k8sClient, createdDBUser, "Normal", atlasdatabaseuser.ConnectionSecretsEnsuredEvent,
426+
testutil.EventExists(k8sClient, createdDBUser, "Normal", connectionsecret.ConnectionSecretsEnsuredEvent,
431427
fmt.Sprintf("Connection Secrets were created/updated: (%s|%s|, ){3}", s1.Name, s2.Name))
432428
})
433429
By("Changing the db user name - two stale secret are expected to be removed, two added instead", func() {

0 commit comments

Comments
 (0)