|
|
@@ -18,6 +18,7 @@ import (
|
|
|
"context"
|
|
|
"encoding/json"
|
|
|
"fmt"
|
|
|
+ "path"
|
|
|
"strings"
|
|
|
|
|
|
"github.com/Azure/azure-sdk-for-go/profiles/latest/keyvault/keyvault"
|
|
|
@@ -168,6 +169,40 @@ func (a *Azure) GetSecretMap(ctx context.Context, ref esv1alpha1.ExternalSecretD
|
|
|
return nil, fmt.Errorf("unknown Azure Keyvault object Type for %s", secretName)
|
|
|
}
|
|
|
|
|
|
+// Implements store.Client.GetAllSecrets Interface.
|
|
|
+// New version of GetAllSecrets.
|
|
|
+func (a *Azure) GetAllSecrets(ctx context.Context, ref esv1alpha1.ExternalSecretDataRemoteRef) (map[string][]byte, error) {
|
|
|
+ basicClient := a.baseClient
|
|
|
+ secretsMap := make(map[string][]byte)
|
|
|
+
|
|
|
+ secretListIter, err := basicClient.GetSecretsComplete(context.Background(), a.vaultURL, nil)
|
|
|
+
|
|
|
+ if err != nil {
|
|
|
+ return nil, err
|
|
|
+ }
|
|
|
+ for secretListIter.NotDone() {
|
|
|
+ secretList := secretListIter.Response().Value
|
|
|
+ for _, secret := range *secretList {
|
|
|
+ if !*secret.Attributes.Enabled {
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ secretName := path.Base(*secret.ID)
|
|
|
+ secretResp, err := basicClient.GetSecret(context.Background(), a.vaultURL, secretName, "")
|
|
|
+ secretValue := *secretResp.Value
|
|
|
+
|
|
|
+ if err != nil {
|
|
|
+ return nil, err
|
|
|
+ }
|
|
|
+ secretsMap[secretName] = []byte(secretValue)
|
|
|
+ }
|
|
|
+ err = secretListIter.Next()
|
|
|
+ if err != nil {
|
|
|
+ return nil, err
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return secretsMap, nil
|
|
|
+}
|
|
|
+
|
|
|
func (a *Azure) newAzureClient(ctx context.Context) (*keyvault.BaseClient, string, error) {
|
|
|
spec := *a.store.GetSpec().Provider.AzureKV
|
|
|
tenantID := *spec.TenantID
|