Browse Source

Merge pull request #1108 from hydeenoble/provider/alibaba

Implemented ValidateStore function for Alibaba Provider
paul-the-alien[bot] 4 years ago
parent
commit
49f4bad35d
2 changed files with 69 additions and 0 deletions
  1. 37 0
      pkg/provider/alibaba/kms.go
  2. 32 0
      pkg/provider/alibaba/kms_test.go

+ 37 - 0
pkg/provider/alibaba/kms.go

@@ -208,6 +208,43 @@ func (kms *KeyManagementService) Validate() (esv1beta1.ValidationResult, error)
 }
 }
 
 
 func (kms *KeyManagementService) ValidateStore(store esv1beta1.GenericStore) error {
 func (kms *KeyManagementService) ValidateStore(store esv1beta1.GenericStore) error {
+	storeSpec := store.GetSpec()
+	alibabaSpec := storeSpec.Provider.Alibaba
+
+	regionID := alibabaSpec.RegionID
+
+	if regionID == "" {
+		return fmt.Errorf("missing alibaba region")
+	}
+
+	accessKeyID := alibabaSpec.Auth.SecretRef.AccessKeyID
+	err := utils.ValidateSecretSelector(store, accessKeyID)
+	if err != nil {
+		return err
+	}
+
+	if accessKeyID.Name == "" {
+		return fmt.Errorf("missing alibaba access ID name")
+	}
+
+	if accessKeyID.Key == "" {
+		return fmt.Errorf("missing alibaba access ID key")
+	}
+
+	accessKeySecret := alibabaSpec.Auth.SecretRef.AccessKeySecret
+	err = utils.ValidateSecretSelector(store, accessKeySecret)
+	if err != nil {
+		return err
+	}
+
+	if accessKeySecret.Name == "" {
+		return fmt.Errorf("missing alibaba access key secret name")
+	}
+
+	if accessKeySecret.Key == "" {
+		return fmt.Errorf("missing alibaba access key secret key")
+	}
+
 	return nil
 	return nil
 }
 }
 
 

+ 32 - 0
pkg/provider/alibaba/kms_test.go

@@ -25,6 +25,7 @@ import (
 	kmssdk "github.com/aliyun/alibaba-cloud-sdk-go/services/kms"
 	kmssdk "github.com/aliyun/alibaba-cloud-sdk-go/services/kms"
 
 
 	esv1beta1 "github.com/external-secrets/external-secrets/apis/externalsecrets/v1beta1"
 	esv1beta1 "github.com/external-secrets/external-secrets/apis/externalsecrets/v1beta1"
+	esmeta "github.com/external-secrets/external-secrets/apis/meta/v1"
 	fakesm "github.com/external-secrets/external-secrets/pkg/provider/alibaba/fake"
 	fakesm "github.com/external-secrets/external-secrets/pkg/provider/alibaba/fake"
 )
 )
 
 
@@ -186,6 +187,37 @@ func TestGetSecretMap(t *testing.T) {
 	}
 	}
 }
 }
 
 
+func TestValidateStore(t *testing.T) {
+	kms := KeyManagementService{}
+
+	store := &esv1beta1.SecretStore{
+		Spec: esv1beta1.SecretStoreSpec{
+			Provider: &esv1beta1.SecretStoreProvider{
+				Alibaba: &esv1beta1.AlibabaProvider{
+					RegionID: "region-1",
+					Auth: &esv1beta1.AlibabaAuth{
+						SecretRef: esv1beta1.AlibabaAuthSecretRef{
+							AccessKeyID: esmeta.SecretKeySelector{
+								Name: "accessKeyID",
+								Key:  "key-1",
+							},
+							AccessKeySecret: esmeta.SecretKeySelector{
+								Name: "accessKeySecret",
+								Key:  "key-1",
+							},
+						},
+					},
+				},
+			},
+		},
+	}
+
+	err := kms.ValidateStore(store)
+	if err != nil {
+		t.Errorf(err.Error())
+	}
+}
+
 func ErrorContains(out error, want string) bool {
 func ErrorContains(out error, want string) bool {
 	if out == nil {
 	if out == nil {
 		return want == ""
 		return want == ""