Browse Source

Update NewClient method to persist provider

Changed tests for faketest.go to allow the provider to be set

Co-authored-by: William Young <will.young@engineerbetter.com>
Signed-off-by: Gustavo Carvalho <gustavo.carvalho@container-solutions.com>
Dominic Meddick 4 years ago
parent
commit
b80d7d9c3b

+ 1 - 7
config/crds/bases/external-secrets.io_secretsinks.yaml

@@ -2,7 +2,7 @@ apiVersion: apiextensions.k8s.io/v1
 kind: CustomResourceDefinition
 kind: CustomResourceDefinition
 metadata:
 metadata:
   annotations:
   annotations:
-    controller-gen.kubebuilder.io/version: v0.8.0
+    controller-gen.kubebuilder.io/version: v0.9.0
   creationTimestamp: null
   creationTimestamp: null
   name: secretsinks.external-secrets.io
   name: secretsinks.external-secrets.io
 spec:
 spec:
@@ -140,9 +140,3 @@ spec:
     storage: true
     storage: true
     subresources:
     subresources:
       status: {}
       status: {}
-status:
-  acceptedNames:
-    kind: ""
-    plural: ""
-  conditions: []
-  storedVersions: []

+ 1 - 7
deploy/crds/bundle.yaml

@@ -3151,18 +3151,12 @@ spec:
           name: kubernetes
           name: kubernetes
           namespace: default
           namespace: default
           path: /convert
           path: /convert
-status:
-  acceptedNames:
-    kind: ""
-    plural: ""
-  conditions: []
-  storedVersions: []
 ---
 ---
 apiVersion: apiextensions.k8s.io/v1
 apiVersion: apiextensions.k8s.io/v1
 kind: CustomResourceDefinition
 kind: CustomResourceDefinition
 metadata:
 metadata:
   annotations:
   annotations:
-    controller-gen.kubebuilder.io/version: v0.8.0
+    controller-gen.kubebuilder.io/version: v0.9.0
   creationTimestamp: null
   creationTimestamp: null
   name: secretstores.external-secrets.io
   name: secretstores.external-secrets.io
 spec:
 spec:

+ 13 - 2
pkg/provider/fake/fake.go

@@ -31,7 +31,8 @@ var (
 )
 )
 
 
 type Provider struct {
 type Provider struct {
-	config *esv1beta1.FakeProvider
+	config   *esv1beta1.FakeProvider
+	database map[string]*esv1beta1.FakeProvider
 }
 }
 
 
 // Capabilities return the provider supported capabilities (ReadOnly, WriteOnly, ReadWrite).
 // Capabilities return the provider supported capabilities (ReadOnly, WriteOnly, ReadWrite).
@@ -40,12 +41,22 @@ func (p *Provider) Capabilities() esv1beta1.SecretStoreCapabilities {
 }
 }
 
 
 func (p *Provider) NewClient(ctx context.Context, store esv1beta1.GenericStore, kube client.Client, namespace string) (esv1beta1.SecretsClient, error) {
 func (p *Provider) NewClient(ctx context.Context, store esv1beta1.GenericStore, kube client.Client, namespace string) (esv1beta1.SecretsClient, error) {
+	if p.database == nil {
+		p.database = make(map[string]*esv1beta1.FakeProvider)
+	}
 	cfg, err := getProvider(store)
 	cfg, err := getProvider(store)
 	if err != nil {
 	if err != nil {
 		return nil, err
 		return nil, err
 	}
 	}
+	prov, ok := p.database[store.GetName()]
+	if !ok {
+		p.database[store.GetName()] = cfg
+		return &Provider{
+			config: cfg,
+		}, nil
+	}
 	return &Provider{
 	return &Provider{
-		config: cfg,
+		config: prov,
 	}, nil
 	}, nil
 }
 }
 
 

+ 10 - 4
pkg/provider/fake/fake_test.go

@@ -18,9 +18,9 @@ import (
 	"fmt"
 	"fmt"
 	"testing"
 	"testing"
 
 
-	"github.com/onsi/gomega"
-
 	esv1beta1 "github.com/external-secrets/external-secrets/apis/externalsecrets/v1beta1"
 	esv1beta1 "github.com/external-secrets/external-secrets/apis/externalsecrets/v1beta1"
+	"github.com/onsi/gomega"
+	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 )
 )
 
 
 func TestNewClient(t *testing.T) {
 func TestNewClient(t *testing.T) {
@@ -123,9 +123,12 @@ func TestGetSecret(t *testing.T) {
 		},
 		},
 	}
 	}
 
 
-	for _, row := range tbl {
+	for i, row := range tbl {
 		t.Run(row.name, func(t *testing.T) {
 		t.Run(row.name, func(t *testing.T) {
 			cl, err := p.NewClient(context.Background(), &esv1beta1.SecretStore{
 			cl, err := p.NewClient(context.Background(), &esv1beta1.SecretStore{
+				ObjectMeta: metav1.ObjectMeta{
+					Name: fmt.Sprintf("secret-store-%v", i),
+				},
 				Spec: esv1beta1.SecretStoreSpec{
 				Spec: esv1beta1.SecretStoreSpec{
 					Provider: &esv1beta1.SecretStoreProvider{
 					Provider: &esv1beta1.SecretStoreProvider{
 						Fake: &esv1beta1.FakeProvider{
 						Fake: &esv1beta1.FakeProvider{
@@ -204,9 +207,12 @@ func TestGetSecretMap(t *testing.T) {
 		},
 		},
 	}
 	}
 
 
-	for _, row := range tbl {
+	for i, row := range tbl {
 		t.Run(row.name, func(t *testing.T) {
 		t.Run(row.name, func(t *testing.T) {
 			cl, err := p.NewClient(context.Background(), &esv1beta1.SecretStore{
 			cl, err := p.NewClient(context.Background(), &esv1beta1.SecretStore{
+				ObjectMeta: metav1.ObjectMeta{
+					Name: fmt.Sprintf("secret-store-%v", i),
+				},
 				Spec: esv1beta1.SecretStoreSpec{
 				Spec: esv1beta1.SecretStoreSpec{
 					Provider: &esv1beta1.SecretStoreProvider{
 					Provider: &esv1beta1.SecretStoreProvider{
 						Fake: &esv1beta1.FakeProvider{
 						Fake: &esv1beta1.FakeProvider{