Преглед изворни кода

feat: implement es ready condition

Signed-off-by: Moritz Johner <beller.moritz@googlemail.com>
Moritz Johner пре 5 година
родитељ
комит
990ba8d818

+ 4 - 0
apis/externalsecrets/v1alpha1/secretstore_types.go

@@ -45,8 +45,12 @@ type SecretStoreProvider struct {
 	// AWSSM configures this store to sync secrets using AWS Secret Manager provider
 	// +optional
 	AWSSM *AWSSMProvider `json:"awssm,omitempty"`
+	NOOP  *NOOPProvider  `json:"noop,omitempty"`
 }
 
+// NOOPProvider is a noop implementation that yields static secrets.
+type NOOPProvider struct{}
+
 type SecretStoreConditionType string
 
 const (

+ 20 - 0
apis/externalsecrets/v1alpha1/zz_generated.deepcopy.go

@@ -345,6 +345,21 @@ func (in *ExternalSecretTemplateMetadata) DeepCopy() *ExternalSecretTemplateMeta
 	return out
 }
 
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *NOOPProvider) DeepCopyInto(out *NOOPProvider) {
+	*out = *in
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NOOPProvider.
+func (in *NOOPProvider) DeepCopy() *NOOPProvider {
+	if in == nil {
+		return nil
+	}
+	out := new(NOOPProvider)
+	in.DeepCopyInto(out)
+	return out
+}
+
 // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
 func (in *SecretStore) DeepCopyInto(out *SecretStore) {
 	*out = *in
@@ -412,6 +427,11 @@ func (in *SecretStoreProvider) DeepCopyInto(out *SecretStoreProvider) {
 		*out = new(AWSSMProvider)
 		(*in).DeepCopyInto(*out)
 	}
+	if in.NOOP != nil {
+		in, out := &in.NOOP, &out.NOOP
+		*out = new(NOOPProvider)
+		**out = **in
+	}
 }
 
 // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SecretStoreProvider.

+ 4 - 0
config/crd/bases/external-secrets.io_clustersecretstores.yaml

@@ -123,6 +123,10 @@ spec:
                     - auth
                     - region
                     type: object
+                  noop:
+                    description: NOOPProvider is a noop implementation that yields
+                      static secrets.
+                    type: object
                 type: object
             required:
             - provider

+ 4 - 0
config/crd/bases/external-secrets.io_secretstores.yaml

@@ -123,6 +123,10 @@ spec:
                     - auth
                     - region
                     type: object
+                  noop:
+                    description: NOOPProvider is a noop implementation that yields
+                      static secrets.
+                    type: object
                 type: object
             required:
             - provider

+ 12 - 0
pkg/controllers/externalsecret/suite_test.go

@@ -89,6 +89,18 @@ var _ = BeforeSuite(func(done Done) {
 		Expect(k8sManager.Start(ctrl.SetupSignalHandler())).ToNot(HaveOccurred())
 	}()
 
+	err = (&Reconciler{
+		Client: k8sClient,
+		Scheme: k8sManager.GetScheme(),
+		Log:    ctrl.Log.WithName("controllers").WithName("ExternalSecrets"),
+	}).SetupWithManager(k8sManager)
+	Expect(err).ToNot(HaveOccurred())
+
+	go func() {
+		defer GinkgoRecover()
+		Expect(k8sManager.Start(ctrl.SetupSignalHandler())).ToNot(HaveOccurred())
+	}()
+
 	close(done)
 }, 60)
 

+ 50 - 0
pkg/provider/noop/noop.go

@@ -0,0 +1,50 @@
+/*
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+package noop
+
+import (
+	"context"
+
+	"sigs.k8s.io/controller-runtime/pkg/client"
+
+	esv1alpha1 "github.com/external-secrets/external-secrets/apis/externalsecrets/v1alpha1"
+	"github.com/external-secrets/external-secrets/pkg/provider"
+	"github.com/external-secrets/external-secrets/pkg/provider/schema"
+)
+
+// Noop is a provider that does nothing.
+type Noop struct{}
+
+// New constructs a Noop Provider.
+func (sm *Noop) New(ctx context.Context, store esv1alpha1.GenericStore, kube client.Client, namespace string) (provider.Provider, error) {
+	return sm, nil // stub
+}
+
+// GetSecret returns a single secret from the provider.
+func (sm *Noop) GetSecret(ctx context.Context, ref esv1alpha1.ExternalSecretDataRemoteRef) ([]byte, error) {
+	return []byte("NOOP"), nil
+}
+
+// GetSecretMap returns multiple k/v pairs from the provider.
+func (sm *Noop) GetSecretMap(ctx context.Context, ref esv1alpha1.ExternalSecretDataRemoteRef) (map[string][]byte, error) {
+	return map[string][]byte{
+		"noop": []byte("NOOP"),
+	}, nil
+}
+
+func init() {
+	schema.Register(&Noop{}, &esv1alpha1.SecretStoreProvider{
+		NOOP: &esv1alpha1.NOOPProvider{},
+	})
+}

+ 1 - 0
pkg/provider/register/register.go

@@ -19,4 +19,5 @@ import (
 
 	// register awssm provider.
 	_ "github.com/external-secrets/external-secrets/pkg/provider/aws/secretsmanager"
+	_ "github.com/external-secrets/external-secrets/pkg/provider/noop"
 )