Skip to content

Commit b06e63e

Browse files
committed
Bumped deps, added ctx
1 parent faffc0b commit b06e63e

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

59 files changed

+897
-1217
lines changed

cmd/readiness/main.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,7 @@ func isWaitStep(status *health.StepStatus) bool {
161161

162162
func isInGoalState(health health.Status, conf config.Config) (bool, error) {
163163
if isHeadlessMode() {
164-
return headless.PerformCheckHeadlessMode(health, conf)
164+
return headless.PerformCheckHeadlessMode(ctx, health, conf)
165165
}
166166
return performCheckOMMode(health), nil
167167
}

cmd/readiness/readiness_test.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -260,7 +260,7 @@ func TestHeadlessAgentHasntReachedGoal(t *testing.T) {
260260
ready, err := isPodReady(c)
261261
assert.False(t, ready)
262262
assert.NoError(t, err)
263-
thePod, _ := c.ClientSet.CoreV1().Pods(c.Namespace).Get(context.TODO(), c.Hostname, metav1.GetOptions{})
263+
thePod, _ := c.ClientSet.CoreV1().Pods(c.Namespace).Get(ctx, c.Hostname, metav1.GetOptions{})
264264
assert.Equal(t, map[string]string{"agent.mongodb.com/version": "5"}, thePod.Annotations)
265265
}
266266

@@ -273,7 +273,7 @@ func TestHeadlessAgentReachedGoal(t *testing.T) {
273273
ready, err := isPodReady(c)
274274
assert.True(t, ready)
275275
assert.NoError(t, err)
276-
thePod, _ := c.ClientSet.CoreV1().Pods(c.Namespace).Get(context.TODO(), c.Hostname, metav1.GetOptions{})
276+
thePod, _ := c.ClientSet.CoreV1().Pods(c.Namespace).Get(ctx, c.Hostname, metav1.GetOptions{})
277277
assert.Equal(t, map[string]string{"agent.mongodb.com/version": "5"}, thePod.Annotations)
278278
}
279279

cmd/versionhook/main.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -192,7 +192,7 @@ func deletePod() error {
192192
return fmt.Errorf("could not get client: %s", err)
193193
}
194194

195-
if err := k8sClient.Delete(context.TODO(), &thisPod); err != nil {
195+
if err := k8sClient.Delete(ctx, &thisPod); err != nil {
196196
return fmt.Errorf("could not delete pod: %s", err)
197197
}
198198
return nil

config/crd/bases/mongodbcommunity.mongodb.com_mongodbcommunity.yaml

+8-11
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,10 @@
1+
12
---
23
apiVersion: apiextensions.k8s.io/v1
34
kind: CustomResourceDefinition
45
metadata:
56
annotations:
6-
controller-gen.kubebuilder.io/version: v0.11.3
7-
service.binding: path={.metadata.name}-{.spec.users[0].db}-{.spec.users[0].name},objectType=Secret
8-
service.binding/connectionString: path={.metadata.name}-{.spec.users[0].db}-{.spec.users[0].name},objectType=Secret,sourceKey=connectionString.standardSrv
9-
service.binding/password: path={.metadata.name}-{.spec.users[0].db}-{.spec.users[0].name},objectType=Secret,sourceKey=password
10-
service.binding/provider: community
11-
service.binding/type: mongodb
12-
service.binding/username: path={.metadata.name}-{.spec.users[0].db}-{.spec.users[0].name},objectType=Secret,sourceKey=username
7+
controller-gen.kubebuilder.io/version: v0.4.1
138
creationTimestamp: null
149
name: mongodbcommunity.mongodbcommunity.mongodb.com
1510
spec:
@@ -290,7 +285,6 @@ spec:
290285
TODO: Add other useful fields. apiVersion, kind, uid?'
291286
type: string
292287
type: object
293-
x-kubernetes-map-type: atomic
294288
agentMode:
295289
description: AgentMode contains the authentication mode used
296290
by the automation agent.
@@ -419,7 +413,6 @@ spec:
419413
TODO: Add other useful fields. apiVersion, kind, uid?'
420414
type: string
421415
type: object
422-
x-kubernetes-map-type: atomic
423416
caConfigMapRef:
424417
description: CaConfigMap is a reference to a ConfigMap containing
425418
the certificate for the CA which signed the server certificates
@@ -432,7 +425,6 @@ spec:
432425
TODO: Add other useful fields. apiVersion, kind, uid?'
433426
type: string
434427
type: object
435-
x-kubernetes-map-type: atomic
436428
certificateKeySecretRef:
437429
description: CertificateKeySecret is a reference to a Secret
438430
containing a private key and certificate to use for TLS.
@@ -450,7 +442,6 @@ spec:
450442
TODO: Add other useful fields. apiVersion, kind, uid?'
451443
type: string
452444
type: object
453-
x-kubernetes-map-type: atomic
454445
enabled:
455446
type: boolean
456447
optional:
@@ -602,3 +593,9 @@ spec:
602593
storage: true
603594
subresources:
604595
status: {}
596+
status:
597+
acceptedNames:
598+
kind: ""
599+
plural: ""
600+
conditions: []
601+
storedVersions: []

controllers/mongodb_cleanup.go

+5-4
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package controllers
22

33
import (
4+
"context"
45
apiErrors "k8s.io/apimachinery/pkg/api/errors"
56
"k8s.io/apimachinery/pkg/types"
67

@@ -9,14 +10,14 @@ import (
910
)
1011

1112
// cleanupPemSecret cleans up the old pem secret generated for the agent certificate.
12-
func (r *ReplicaSetReconciler) cleanupPemSecret(currentMDB mdbv1.MongoDBCommunitySpec, lastAppliedMDBSpec mdbv1.MongoDBCommunitySpec, namespace string) {
13+
func (r *ReplicaSetReconciler) cleanupPemSecret(ctx context.Context, currentMDB mdbv1.MongoDBCommunitySpec, lastAppliedMDBSpec mdbv1.MongoDBCommunitySpec, namespace string) {
1314
if currentMDB.GetAgentAuthMode() == lastAppliedMDBSpec.GetAgentAuthMode() {
1415
return
1516
}
1617

1718
if !currentMDB.IsAgentX509() && lastAppliedMDBSpec.IsAgentX509() {
1819
agentCertSecret := lastAppliedMDBSpec.GetAgentCertificateRef()
19-
if err := r.client.DeleteSecret(types.NamespacedName{
20+
if err := r.client.DeleteSecret(ctx, types.NamespacedName{
2021
Namespace: namespace,
2122
Name: agentCertSecret + "-pem",
2223
}); err != nil {
@@ -30,11 +31,11 @@ func (r *ReplicaSetReconciler) cleanupPemSecret(currentMDB mdbv1.MongoDBCommunit
3031
}
3132

3233
// cleanupScramSecrets cleans up old scram secrets based on the last successful applied mongodb spec.
33-
func (r *ReplicaSetReconciler) cleanupScramSecrets(currentMDB mdbv1.MongoDBCommunitySpec, lastAppliedMDBSpec mdbv1.MongoDBCommunitySpec, namespace string) {
34+
func (r *ReplicaSetReconciler) cleanupScramSecrets(ctx context.Context, currentMDB mdbv1.MongoDBCommunitySpec, lastAppliedMDBSpec mdbv1.MongoDBCommunitySpec, namespace string) {
3435
secretsToDelete := getScramSecretsToDelete(currentMDB, lastAppliedMDBSpec)
3536

3637
for _, s := range secretsToDelete {
37-
if err := r.client.DeleteSecret(types.NamespacedName{
38+
if err := r.client.DeleteSecret(ctx, types.NamespacedName{
3839
Name: s,
3940
Namespace: namespace,
4041
}); err != nil {

controllers/mongodb_cleanup_test.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -134,21 +134,21 @@ func TestReplicaSetReconcilerCleanupPemSecret(t *testing.T) {
134134
},
135135
}
136136

137-
mgr := kubeClient.NewManager(&mdb)
137+
mgr := kubeClient.NewManager(ctx, &mdb)
138138

139139
client := kubeClient.NewClient(mgr.GetClient())
140140
err := createAgentCertPemSecret(client, mdb, "CERT", "KEY", "")
141141
assert.NoError(t, err)
142142

143143
r := NewReconciler(mgr)
144144

145-
secret, err := r.client.GetSecret(mdb.AgentCertificatePemSecretNamespacedName())
145+
secret, err := r.client.GetSecret(ctx, mdb.AgentCertificatePemSecretNamespacedName())
146146
assert.NoError(t, err)
147147
assert.Equal(t, "CERT", string(secret.Data["tls.crt"]))
148148
assert.Equal(t, "KEY", string(secret.Data["tls.key"]))
149149

150-
r.cleanupPemSecret(mdb.Spec, lastAppliedSpec, "my-ns")
150+
r.cleanupPemSecret(ctx, mdb.Spec, lastAppliedSpec, "my-ns")
151151

152-
_, err = r.client.GetSecret(mdb.AgentCertificatePemSecretNamespacedName())
152+
_, err = r.client.GetSecret(ctx, mdb.AgentCertificatePemSecretNamespacedName())
153153
assert.Error(t, err)
154154
}

controllers/mongodb_tls.go

+34-33
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package controllers
22

33
import (
4+
"context"
45
"crypto/sha256"
56
"fmt"
67
"strings"
@@ -35,15 +36,15 @@ const (
3536
)
3637

3738
// validateTLSConfig will check that the configured ConfigMap and Secret exist and that they have the correct fields.
38-
func (r *ReplicaSetReconciler) validateTLSConfig(mdb mdbv1.MongoDBCommunity) (bool, error) {
39+
func (r *ReplicaSetReconciler) validateTLSConfig(ctx context.Context, mdb mdbv1.MongoDBCommunity) (bool, error) {
3940
if !mdb.Spec.Security.TLS.Enabled {
4041
return true, nil
4142
}
4243

4344
r.log.Info("Ensuring TLS is correctly configured")
4445

4546
// Ensure CA cert is configured
46-
_, err := getCaCrt(r.client, r.client, mdb)
47+
_, err := getCaCrt(ctx, r.client, r.client, mdb)
4748

4849
if err != nil {
4950
if apiErrors.IsNotFound(err) {
@@ -55,7 +56,7 @@ func (r *ReplicaSetReconciler) validateTLSConfig(mdb mdbv1.MongoDBCommunity) (bo
5556
}
5657

5758
// Ensure Secret exists
58-
_, err = secret.ReadStringData(r.client, mdb.TLSSecretNamespacedName())
59+
_, err = secret.ReadStringData(ctx, r.client, mdb.TLSSecretNamespacedName())
5960
if err != nil {
6061
if apiErrors.IsNotFound(err) {
6162
r.log.Warnf(`Secret "%s" not found`, mdb.TLSSecretNamespacedName())
@@ -67,20 +68,20 @@ func (r *ReplicaSetReconciler) validateTLSConfig(mdb mdbv1.MongoDBCommunity) (bo
6768

6869
// validate whether the secret contains "tls.crt" and "tls.key", or it contains "tls.pem"
6970
// if it contains all three, then the pem entry should be equal to the concatenation of crt and key
70-
_, err = getPemOrConcatenatedCrtAndKey(r.client, mdb, mdb.TLSSecretNamespacedName())
71+
_, err = getPemOrConcatenatedCrtAndKey(ctx, r.client, mdb, mdb.TLSSecretNamespacedName())
7172
if err != nil {
7273
r.log.Warnf(err.Error())
7374
return false, nil
7475
}
7576

7677
// Watch certificate-key secret to handle rotations
77-
r.secretWatcher.Watch(mdb.TLSSecretNamespacedName(), mdb.NamespacedName())
78+
r.secretWatcher.Watch(ctx, mdb.TLSSecretNamespacedName(), mdb.NamespacedName())
7879

7980
// Watch CA certificate changes
8081
if mdb.Spec.Security.TLS.CaCertificateSecret != nil {
81-
r.secretWatcher.Watch(mdb.TLSCaCertificateSecretNamespacedName(), mdb.NamespacedName())
82+
r.secretWatcher.Watch(ctx, mdb.TLSCaCertificateSecretNamespacedName(), mdb.NamespacedName())
8283
} else {
83-
r.configMapWatcher.Watch(mdb.TLSConfigMapNamespacedName(), mdb.NamespacedName())
84+
r.configMapWatcher.Watch(ctx, mdb.TLSConfigMapNamespacedName(), mdb.NamespacedName())
8485
}
8586

8687
r.log.Infof("Successfully validated TLS config")
@@ -89,17 +90,17 @@ func (r *ReplicaSetReconciler) validateTLSConfig(mdb mdbv1.MongoDBCommunity) (bo
8990

9091
// getTLSConfigModification creates a modification function which enables TLS in the automation config.
9192
// It will also ensure that the combined cert-key secret is created.
92-
func getTLSConfigModification(cmGetter configmap.Getter, secretGetter secret.Getter, mdb mdbv1.MongoDBCommunity) (automationconfig.Modification, error) {
93+
func getTLSConfigModification(ctx context.Context, cmGetter configmap.Getter, secretGetter secret.Getter, mdb mdbv1.MongoDBCommunity) (automationconfig.Modification, error) {
9394
if !mdb.Spec.Security.TLS.Enabled {
9495
return automationconfig.NOOP(), nil
9596
}
9697

97-
caCert, err := getCaCrt(cmGetter, secretGetter, mdb)
98+
caCert, err := getCaCrt(ctx, cmGetter, secretGetter, mdb)
9899
if err != nil {
99100
return automationconfig.NOOP(), err
100101
}
101102

102-
certKey, err := getPemOrConcatenatedCrtAndKey(secretGetter, mdb, mdb.TLSSecretNamespacedName())
103+
certKey, err := getPemOrConcatenatedCrtAndKey(ctx, secretGetter, mdb, mdb.TLSSecretNamespacedName())
103104
if err != nil {
104105
return automationconfig.NOOP(), err
105106
}
@@ -108,13 +109,13 @@ func getTLSConfigModification(cmGetter configmap.Getter, secretGetter secret.Get
108109
}
109110

110111
// getCertAndKey will fetch the certificate and key from the user-provided Secret.
111-
func getCertAndKey(getter secret.Getter, mdb mdbv1.MongoDBCommunity, secretName types.NamespacedName) string {
112-
cert, err := secret.ReadKey(getter, tlsSecretCertName, secretName)
112+
func getCertAndKey(ctx context.Context, getter secret.Getter, mdb mdbv1.MongoDBCommunity, secretName types.NamespacedName) string {
113+
cert, err := secret.ReadKey(ctx, getter, tlsSecretCertName, secretName)
113114
if err != nil {
114115
return ""
115116
}
116117

117-
key, err := secret.ReadKey(getter, tlsSecretKeyName, secretName)
118+
key, err := secret.ReadKey(ctx, getter, tlsSecretKeyName, secretName)
118119
if err != nil {
119120
return ""
120121
}
@@ -123,8 +124,8 @@ func getCertAndKey(getter secret.Getter, mdb mdbv1.MongoDBCommunity, secretName
123124
}
124125

125126
// getPem will fetch the pem from the user-provided secret
126-
func getPem(getter secret.Getter, mdb mdbv1.MongoDBCommunity, secretName types.NamespacedName) string {
127-
pem, err := secret.ReadKey(getter, tlsSecretPemName, secretName)
127+
func getPem(ctx context.Context, getter secret.Getter, mdb mdbv1.MongoDBCommunity, secretName types.NamespacedName) string {
128+
pem, err := secret.ReadKey(ctx, getter, tlsSecretPemName, secretName)
128129
if err != nil {
129130
return ""
130131
}
@@ -141,9 +142,9 @@ func combineCertificateAndKey(cert, key string) string {
141142
// This is either the tls.pem entry in the given secret, or the concatenation
142143
// of tls.crt and tls.key
143144
// It performs a basic validation on the entries.
144-
func getPemOrConcatenatedCrtAndKey(getter secret.Getter, mdb mdbv1.MongoDBCommunity, secretName types.NamespacedName) (string, error) {
145-
certKey := getCertAndKey(getter, mdb, secretName)
146-
pem := getPem(getter, mdb, secretName)
145+
func getPemOrConcatenatedCrtAndKey(ctx context.Context, getter secret.Getter, mdb mdbv1.MongoDBCommunity, secretName types.NamespacedName) (string, error) {
146+
certKey := getCertAndKey(ctx, getter, mdb, secretName)
147+
pem := getPem(ctx, getter, mdb, secretName)
147148
if certKey == "" && pem == "" {
148149
return "", fmt.Errorf(`neither "%s" nor the pair "%s"/"%s" were present in the TLS secret`, tlsSecretPemName, tlsSecretCertName, tlsSecretKeyName)
149150
}
@@ -159,16 +160,16 @@ func getPemOrConcatenatedCrtAndKey(getter secret.Getter, mdb mdbv1.MongoDBCommun
159160
return certKey, nil
160161
}
161162

162-
func getCaCrt(cmGetter configmap.Getter, secretGetter secret.Getter, mdb mdbv1.MongoDBCommunity) (string, error) {
163+
func getCaCrt(ctx context.Context, cmGetter configmap.Getter, secretGetter secret.Getter, mdb mdbv1.MongoDBCommunity) (string, error) {
163164
var caResourceName types.NamespacedName
164165
var caData map[string]string
165166
var err error
166167
if mdb.Spec.Security.TLS.CaCertificateSecret != nil {
167168
caResourceName = mdb.TLSCaCertificateSecretNamespacedName()
168-
caData, err = secret.ReadStringData(secretGetter, caResourceName)
169+
caData, err = secret.ReadStringData(ctx, secretGetter, caResourceName)
169170
} else if mdb.Spec.Security.TLS.CaConfigMap != nil {
170171
caResourceName = mdb.TLSConfigMapNamespacedName()
171-
caData, err = configmap.ReadData(cmGetter, caResourceName)
172+
caData, err = configmap.ReadData(ctx, cmGetter, caResourceName)
172173
}
173174

174175
if err != nil {
@@ -188,8 +189,8 @@ func getCaCrt(cmGetter configmap.Getter, secretGetter secret.Getter, mdb mdbv1.M
188189

189190
// ensureCASecret will create or update the operator managed Secret containing
190191
// the CA certficate from the user provided Secret or ConfigMap.
191-
func ensureCASecret(cmGetter configmap.Getter, secretGetter secret.Getter, getUpdateCreator secret.GetUpdateCreator, mdb mdbv1.MongoDBCommunity) error {
192-
cert, err := getCaCrt(cmGetter, secretGetter, mdb)
192+
func ensureCASecret(ctx context.Context, cmGetter configmap.Getter, secretGetter secret.Getter, getUpdateCreator secret.GetUpdateCreator, mdb mdbv1.MongoDBCommunity) error {
193+
cert, err := getCaCrt(ctx, cmGetter, secretGetter, mdb)
193194
if err != nil {
194195
return err
195196
}
@@ -203,13 +204,13 @@ func ensureCASecret(cmGetter configmap.Getter, secretGetter secret.Getter, getUp
203204
SetOwnerReferences(mdb.GetOwnerReferences()).
204205
Build()
205206

206-
return secret.CreateOrUpdate(getUpdateCreator, operatorSecret)
207+
return secret.CreateOrUpdate(ctx, getUpdateCreator, operatorSecret)
207208
}
208209

209210
// ensureTLSSecret will create or update the operator-managed Secret containing
210211
// the concatenated certificate and key from the user-provided Secret.
211-
func ensureTLSSecret(getUpdateCreator secret.GetUpdateCreator, mdb mdbv1.MongoDBCommunity) error {
212-
certKey, err := getPemOrConcatenatedCrtAndKey(getUpdateCreator, mdb, mdb.TLSSecretNamespacedName())
212+
func ensureTLSSecret(ctx context.Context, getUpdateCreator secret.GetUpdateCreator, mdb mdbv1.MongoDBCommunity) error {
213+
certKey, err := getPemOrConcatenatedCrtAndKey(ctx, getUpdateCreator, mdb, mdb.TLSSecretNamespacedName())
213214
if err != nil {
214215
return err
215216
}
@@ -223,15 +224,15 @@ func ensureTLSSecret(getUpdateCreator secret.GetUpdateCreator, mdb mdbv1.MongoDB
223224
SetOwnerReferences(mdb.GetOwnerReferences()).
224225
Build()
225226

226-
return secret.CreateOrUpdate(getUpdateCreator, operatorSecret)
227+
return secret.CreateOrUpdate(ctx, getUpdateCreator, operatorSecret)
227228
}
228229

229-
func ensureAgentCertSecret(getUpdateCreator secret.GetUpdateCreator, mdb mdbv1.MongoDBCommunity) error {
230+
func ensureAgentCertSecret(ctx context.Context, getUpdateCreator secret.GetUpdateCreator, mdb mdbv1.MongoDBCommunity) error {
230231
if mdb.Spec.GetAgentAuthMode() != "X509" {
231232
return nil
232233
}
233234

234-
certKey, err := getPemOrConcatenatedCrtAndKey(getUpdateCreator, mdb, mdb.AgentCertificateSecretNamespacedName())
235+
certKey, err := getPemOrConcatenatedCrtAndKey(ctx, getUpdateCreator, mdb, mdb.AgentCertificateSecretNamespacedName())
235236
if err != nil {
236237
return err
237238
}
@@ -243,13 +244,13 @@ func ensureAgentCertSecret(getUpdateCreator secret.GetUpdateCreator, mdb mdbv1.M
243244
SetOwnerReferences(mdb.GetOwnerReferences()).
244245
Build()
245246

246-
return secret.CreateOrUpdate(getUpdateCreator, agentCertSecret)
247+
return secret.CreateOrUpdate(ctx, getUpdateCreator, agentCertSecret)
247248
}
248249

249250
// ensurePrometheusTLSSecret will create or update the operator-managed Secret containing
250251
// the concatenated certificate and key from the user-provided Secret.
251-
func ensurePrometheusTLSSecret(getUpdateCreator secret.GetUpdateCreator, mdb mdbv1.MongoDBCommunity) error {
252-
certKey, err := getPemOrConcatenatedCrtAndKey(getUpdateCreator, mdb, mdb.DeepCopy().PrometheusTLSSecretNamespacedName())
252+
func ensurePrometheusTLSSecret(ctx context.Context, getUpdateCreator secret.GetUpdateCreator, mdb mdbv1.MongoDBCommunity) error {
253+
certKey, err := getPemOrConcatenatedCrtAndKey(ctx, getUpdateCreator, mdb, mdb.DeepCopy().PrometheusTLSSecretNamespacedName())
253254
if err != nil {
254255
return err
255256
}
@@ -263,7 +264,7 @@ func ensurePrometheusTLSSecret(getUpdateCreator secret.GetUpdateCreator, mdb mdb
263264
SetOwnerReferences(mdb.GetOwnerReferences()).
264265
Build()
265266

266-
return secret.CreateOrUpdate(getUpdateCreator, operatorSecret)
267+
return secret.CreateOrUpdate(ctx, getUpdateCreator, operatorSecret)
267268
}
268269

269270
// tlsOperatorSecretFileName calculates the file name to use for the mounted

0 commit comments

Comments
 (0)