Эх сурвалжийг харах

trimming root path when a datafrom.find.path is provided.

Fixes #915.

Signed-off-by: Gustavo Carvalho <gustavo.carvalho@container-solutions.com>
Gustavo Carvalho 4 жил өмнө
parent
commit
ba382e077f

+ 3 - 3
e2e/suite/aws/parameterstore/find_by_name.go

@@ -72,11 +72,11 @@ func FindByNameWithPath(f *framework.Framework) (string, func(*framework.TestCas
 		tc.ExpectedSecret = &v1.Secret{
 			Type: v1.SecretTypeOpaque,
 			Data: map[string][]byte{
-				fmt.Sprintf("_%s_two", f.Namespace.Name):   []byte(secretValue),
-				fmt.Sprintf("_%s_three", f.Namespace.Name): []byte(secretValue),
+				"two":   []byte(secretValue),
+				"three": []byte(secretValue),
 			},
 		}
-		pathPrefix := fmt.Sprintf("/%s", f.Namespace.Name)
+		pathPrefix := fmt.Sprintf("/%s/", f.Namespace.Name)
 		tc.ExternalSecret.Spec.DataFrom = []esapi.ExternalSecretDataFromRemoteRef{
 			{
 				Find: &esapi.ExternalSecretFind{

+ 2 - 2
e2e/suite/aws/parameterstore/find_by_tags.go

@@ -97,8 +97,8 @@ func FindByTagWithPath(f *framework.Framework) (string, func(*framework.TestCase
 		tc.ExpectedSecret = &v1.Secret{
 			Type: v1.SecretTypeOpaque,
 			Data: map[string][]byte{
-				fmt.Sprintf("_foobar_%s_two", f.Namespace.Name):   []byte(secretValue),
-				fmt.Sprintf("_foobar_%s_three", f.Namespace.Name): []byte(secretValue),
+				fmt.Sprintf("_%s_two", f.Namespace.Name):   []byte(secretValue),
+				fmt.Sprintf("_%s_three", f.Namespace.Name): []byte(secretValue),
 			},
 		}
 		tc.ExternalSecret.Spec.DataFrom = []esapi.ExternalSecretDataFromRemoteRef{

+ 2 - 2
e2e/suite/common/find_by_name.go

@@ -73,8 +73,8 @@ func FindByNameWithPath(f *framework.Framework) (string, func(*framework.TestCas
 		tc.ExpectedSecret = &v1.Secret{
 			Type: v1.SecretTypeOpaque,
 			Data: map[string][]byte{
-				fmt.Sprintf("%s-two", f.Namespace.Name):   []byte(secretValue),
-				fmt.Sprintf("%s-three", f.Namespace.Name): []byte(secretValue),
+				"-two":   []byte(secretValue),
+				"-three": []byte(secretValue),
 			},
 		}
 		// AWS Secrets Manager is eventually consistent

+ 2 - 2
e2e/suite/common/find_by_tags.go

@@ -99,8 +99,8 @@ func FindByTagWithPath(f *framework.Framework) (string, func(*framework.TestCase
 		tc.ExpectedSecret = &v1.Secret{
 			Type: v1.SecretTypeOpaque,
 			Data: map[string][]byte{
-				fmt.Sprintf("foobar-%s-two", f.Namespace.Name):   []byte(secretValue),
-				fmt.Sprintf("foobar-%s-three", f.Namespace.Name): []byte(secretValue),
+				fmt.Sprintf("-%s-two", f.Namespace.Name):   []byte(secretValue),
+				fmt.Sprintf("-%s-three", f.Namespace.Name): []byte(secretValue),
 			},
 		}
 		// AWS Secrets Manager is eventually consistent

+ 13 - 3
pkg/provider/aws/parameterstore/parameterstore.go

@@ -18,6 +18,7 @@ import (
 	"encoding/json"
 	"errors"
 	"fmt"
+	"strings"
 
 	"github.com/aws/aws-sdk-go/aws"
 	"github.com/aws/aws-sdk-go/aws/session"
@@ -56,7 +57,8 @@ func New(sess *session.Session) (*ParameterStore, error) {
 	}, nil
 }
 
-// Empty GetAllSecrets.
+// GetAllSecrets Method
+// Creates kubernetes secrets with multiple External Secrets information.
 func (pm *ParameterStore) GetAllSecrets(ctx context.Context, ref esv1beta1.ExternalSecretFind) (map[string][]byte, error) {
 	if ref.Name != nil {
 		return pm.findByName(ref)
@@ -94,7 +96,11 @@ func (pm *ParameterStore) findByName(ref esv1beta1.ExternalSecretFind) (map[stri
 			if !matcher.MatchName(*param.Name) {
 				continue
 			}
-			err = pm.fetchAndSet(data, *param.Name)
+			paramName := *param.Name
+			if ref.Path != nil {
+				paramName = strings.TrimPrefix(paramName, *ref.Path)
+			}
+			err = pm.fetchAndSet(data, paramName)
 			if err != nil {
 				return nil, err
 			}
@@ -137,7 +143,11 @@ func (pm *ParameterStore) findByTags(ref esv1beta1.ExternalSecretFind) (map[stri
 			return nil, err
 		}
 		for _, param := range it.Parameters {
-			err = pm.fetchAndSet(data, *param.Name)
+			paramName := *param.Name
+			if ref.Path != nil {
+				paramName = strings.TrimPrefix(paramName, *ref.Path)
+			}
+			err = pm.fetchAndSet(data, paramName)
 			if err != nil {
 				return nil, err
 			}

+ 13 - 3
pkg/provider/aws/secretsmanager/secretsmanager.go

@@ -19,6 +19,7 @@ import (
 	"encoding/json"
 	"errors"
 	"fmt"
+	"strings"
 
 	"github.com/aws/aws-sdk-go/aws/session"
 	awssm "github.com/aws/aws-sdk-go/service/secretsmanager"
@@ -89,7 +90,8 @@ func (sm *SecretsManager) fetch(_ context.Context, ref esv1beta1.ExternalSecretD
 	return secretOut, nil
 }
 
-// Empty GetAllSecrets.
+// GetAllSecrets Method
+// Creates kubernetes secrets with multiple External Secrets information.
 func (sm *SecretsManager) GetAllSecrets(ctx context.Context, ref esv1beta1.ExternalSecretFind) (map[string][]byte, error) {
 	if ref.Name != nil {
 		return sm.findByName(ctx, ref)
@@ -133,7 +135,11 @@ func (sm *SecretsManager) findByName(ctx context.Context, ref esv1beta1.External
 				continue
 			}
 			log.V(1).Info("aws sm findByName matches", "name", *secret.Name)
-			err = sm.fetchAndSet(ctx, data, *secret.Name)
+			secretName := *secret.Name
+			if ref.Path != nil {
+				secretName = strings.TrimPrefix(secretName, *ref.Path)
+			}
+			err = sm.fetchAndSet(ctx, data, secretName)
 			if err != nil {
 				return nil, err
 			}
@@ -184,7 +190,11 @@ func (sm *SecretsManager) findByTags(ctx context.Context, ref esv1beta1.External
 		}
 		log.V(1).Info("aws sm findByTag found", "secrets", len(it.SecretList))
 		for _, secret := range it.SecretList {
-			err = sm.fetchAndSet(ctx, data, *secret.Name)
+			secretName := *secret.Name
+			if ref.Path != nil {
+				secretName = strings.TrimPrefix(secretName, *ref.Path)
+			}
+			err = sm.fetchAndSet(ctx, data, secretName)
 			if err != nil {
 				return nil, err
 			}