From 6bc9bab449945afebd6a7d20974210fb2b8a7586 Mon Sep 17 00:00:00 2001 From: ezgidemirel Date: Mon, 31 Jul 2023 16:59:49 +0300 Subject: [PATCH 1/2] Ignore k8s secret not found when ESS enabled Signed-off-by: ezgidemirel (cherry picked from commit 8e756293ecbbd0992ee96b9f76e51b64eaf6b0f5) --- pkg/connection/store/kubernetes/store.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/connection/store/kubernetes/store.go b/pkg/connection/store/kubernetes/store.go index 9994d21bd..72623efb7 100644 --- a/pkg/connection/store/kubernetes/store.go +++ b/pkg/connection/store/kubernetes/store.go @@ -93,7 +93,7 @@ func buildClient(ctx context.Context, local client.Client, cfg v1.SecretStoreCon // ReadKeyValues reads and returns key value pairs for a given Kubernetes Secret. func (ss *SecretStore) ReadKeyValues(ctx context.Context, n store.ScopedName, s *store.Secret) error { ks := &corev1.Secret{} - if err := ss.client.Get(ctx, types.NamespacedName{Name: n.Name, Namespace: ss.namespaceForSecret(n)}, ks); err != nil { + if err := ss.client.Get(ctx, types.NamespacedName{Name: n.Name, Namespace: ss.namespaceForSecret(n)}, ks); resource.IgnoreNotFound(err) != nil { return errors.Wrap(err, errGetSecret) } s.Data = ks.Data From 1d5bddec53f7f9659c1be2674951617d079ef288 Mon Sep 17 00:00:00 2001 From: ezgidemirel Date: Wed, 2 Aug 2023 18:12:36 +0300 Subject: [PATCH 2/2] add unit test Signed-off-by: ezgidemirel (cherry picked from commit c7b06073db389922da5ad1f8a60ebc58796268bf) --- pkg/connection/store/kubernetes/store_test.go | 24 ++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/pkg/connection/store/kubernetes/store_test.go b/pkg/connection/store/kubernetes/store_test.go index 8735916a2..b5afd10e8 100644 --- a/pkg/connection/store/kubernetes/store_test.go +++ b/pkg/connection/store/kubernetes/store_test.go @@ -102,22 +102,39 @@ func TestSecretStoreReadKeyValues(t *testing.T) { args: args{ client: resource.ClientApplicator{ Client: &test.MockClient{ - MockGet: test.NewMockGetFn(nil, func(obj client.Object) error { + MockGet: func(ctx context.Context, key client.ObjectKey, obj client.Object) error { + if key.Name != fakeSecretName || key.Namespace != fakeSecretNamespace { + return errors.New("unexpected secret name or namespace to get the secret") + } *obj.(*corev1.Secret) = corev1.Secret{ Data: fakeKV(), } return nil - }), + }, }, }, n: store.ScopedName{ - Name: fakeSecretName, + Name: fakeSecretName, + Scope: fakeSecretNamespace, }, }, want: want{ result: store.KeyValues(fakeKV()), }, }, + "SecretNotFound": { + reason: "Should return nil as an error if secret is not found", + args: args{ + client: resource.ClientApplicator{ + Client: &test.MockClient{ + MockGet: test.NewMockGetFn(kerrors.NewNotFound(schema.GroupResource{}, "")), + }, + }, + }, + want: want{ + err: nil, + }, + }, } for name, tc := range cases { t.Run(name, func(t *testing.T) { @@ -126,6 +143,7 @@ func TestSecretStoreReadKeyValues(t *testing.T) { } s := &store.Secret{} + s.ScopedName = tc.args.n err := ss.ReadKeyValues(context.Background(), tc.args.n, s) if diff := cmp.Diff(tc.want.err, err, test.EquateErrors()); diff != "" { t.Errorf("\n%s\nss.ReadKeyValues(...): -want error, +got error:\n%s", tc.reason, diff)