|
|
@@ -27,6 +27,7 @@ import (
|
|
|
"reflect"
|
|
|
"strconv"
|
|
|
"strings"
|
|
|
+ "time"
|
|
|
|
|
|
"github.com/aws/aws-sdk-go/aws"
|
|
|
"github.com/aws/aws-sdk-go/aws/credentials"
|
|
|
@@ -233,7 +234,7 @@ func (c *Connector) newClient(ctx context.Context, store esv1beta1.GenericStore,
|
|
|
}
|
|
|
vaultSpec := storeSpec.Provider.Vault
|
|
|
|
|
|
- vStore, cfg, err := c.prepareConfig(kube, corev1, vaultSpec, namespace, store.GetObjectKind().GroupVersionKind().Kind)
|
|
|
+ vStore, cfg, err := c.prepareConfig(kube, corev1, vaultSpec, storeSpec.RetrySettings, namespace, store.GetObjectKind().GroupVersionKind().Kind)
|
|
|
if err != nil {
|
|
|
return nil, err
|
|
|
}
|
|
|
@@ -247,7 +248,7 @@ func (c *Connector) newClient(ctx context.Context, store esv1beta1.GenericStore,
|
|
|
}
|
|
|
|
|
|
func (c *Connector) NewGeneratorClient(ctx context.Context, kube kclient.Client, corev1 typedcorev1.CoreV1Interface, vaultSpec *esv1beta1.VaultProvider, namespace string) (util.Client, error) {
|
|
|
- vStore, cfg, err := c.prepareConfig(kube, corev1, vaultSpec, namespace, "Generator")
|
|
|
+ vStore, cfg, err := c.prepareConfig(kube, corev1, vaultSpec, nil, namespace, "Generator")
|
|
|
if err != nil {
|
|
|
return nil, err
|
|
|
}
|
|
|
@@ -265,7 +266,7 @@ func (c *Connector) NewGeneratorClient(ctx context.Context, kube kclient.Client,
|
|
|
return client, nil
|
|
|
}
|
|
|
|
|
|
-func (c *Connector) prepareConfig(kube kclient.Client, corev1 typedcorev1.CoreV1Interface, vaultSpec *esv1beta1.VaultProvider, namespace, storeKind string) (*client, *vault.Config, error) {
|
|
|
+func (c *Connector) prepareConfig(kube kclient.Client, corev1 typedcorev1.CoreV1Interface, vaultSpec *esv1beta1.VaultProvider, retrySettings *esv1beta1.SecretStoreRetrySettings, namespace, storeKind string) (*client, *vault.Config, error) {
|
|
|
vStore := &client{
|
|
|
kube: kube,
|
|
|
corev1: corev1,
|
|
|
@@ -279,6 +280,26 @@ func (c *Connector) prepareConfig(kube kclient.Client, corev1 typedcorev1.CoreV1
|
|
|
if err != nil {
|
|
|
return nil, nil, err
|
|
|
}
|
|
|
+
|
|
|
+ // Setup retry options if present
|
|
|
+ if retrySettings != nil {
|
|
|
+ if retrySettings.MaxRetries != nil {
|
|
|
+ cfg.MaxRetries = int(*retrySettings.MaxRetries)
|
|
|
+ } else {
|
|
|
+ // By default we rely only on the reconciliation process for retrying
|
|
|
+ cfg.MaxRetries = 0
|
|
|
+ }
|
|
|
+
|
|
|
+ if retrySettings.RetryInterval != nil {
|
|
|
+ retryWait, err := time.ParseDuration(*retrySettings.RetryInterval)
|
|
|
+ if err != nil {
|
|
|
+ return nil, nil, err
|
|
|
+ }
|
|
|
+ cfg.MinRetryWait = retryWait
|
|
|
+ cfg.MaxRetryWait = retryWait
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
return vStore, cfg, nil
|
|
|
}
|
|
|
|
|
|
@@ -998,8 +1019,6 @@ func (v *client) readSecret(ctx context.Context, path, version string) (map[stri
|
|
|
func (v *client) newConfig() (*vault.Config, error) {
|
|
|
cfg := vault.DefaultConfig()
|
|
|
cfg.Address = v.store.Server
|
|
|
- // In a controller-runtime context, we rely on the reconciliation process for retrying
|
|
|
- cfg.MaxRetries = 0
|
|
|
|
|
|
if len(v.store.CABundle) == 0 && v.store.CAProvider == nil {
|
|
|
return cfg, nil
|