Browse Source

Move logic into separate function to try and help code smell

Daniel Hix 4 years ago
parent
commit
9c5c588b19
1 changed files with 47 additions and 31 deletions
  1. 47 31
      pkg/provider/vault/vault.go

+ 47 - 31
pkg/provider/vault/vault.go

@@ -248,46 +248,26 @@ func (v *client) newConfig() (*vault.Config, error) {
 	}
 
 	if v.store.CAProvider != nil {
+		var cert []byte
+		var err error
+
 		// If our cert is coming from a secret, fetch it and append.
 		// else if our cert is in a config map get it from there instead.
 		if v.store.CAProvider.Type == esv1alpha1.CAProviderTypeSecret {
-			secretRef := esmeta.SecretKeySelector{
-				Name:      v.store.CAProvider.Name,
-				Namespace: &v.store.CAProvider.Namespace,
-				Key:       v.store.CAProvider.Key,
-			}
-			ctx := context.Background()
-			res, err := v.secretKeyRef(ctx, &secretRef)
+			cert, err = getCertFromSecret(v)
 			if err != nil {
-				return nil, fmt.Errorf(errVaultCert, err)
-			}
-
-			ok := caCertPool.AppendCertsFromPEM([]byte(res))
-			if !ok {
-				return nil, errors.New(errVaultCert)
+				return nil, err
 			}
 		} else if v.store.CAProvider.Type == esv1alpha1.CAProviderTypeConfigMap {
-			objKey := types.NamespacedName{
-				Namespace: v.store.CAProvider.Namespace,
-				Name:      v.store.CAProvider.Name,
-			}
-
-			configMapRef := &corev1.ConfigMap{}
-			ctx := context.Background()
-			err := v.kube.Get(ctx, objKey, configMapRef)
+			cert, err = getCertFromConfigMap(v)
 			if err != nil {
-				return nil, fmt.Errorf(errVaultCert, err)
-			}
-
-			val, ok := configMapRef.Data[v.store.CAProvider.Key]
-			if !ok {
-				return nil, fmt.Errorf(errConfigMapFmt, v.store.CAProvider.Key)
+				return nil, err
 			}
+		}
 
-			ok = caCertPool.AppendCertsFromPEM([]byte(val))
-			if !ok {
-				return nil, errors.New(errVaultCert)
-			}
+		ok := caCertPool.AppendCertsFromPEM(cert)
+		if !ok {
+			return nil, errors.New(errVaultCert)
 		}
 	}
 
@@ -298,6 +278,42 @@ func (v *client) newConfig() (*vault.Config, error) {
 	return cfg, nil
 }
 
+func getCertFromSecret(v *client) ([]byte, error) {
+	secretRef := esmeta.SecretKeySelector{
+		Name:      v.store.CAProvider.Name,
+		Namespace: &v.store.CAProvider.Namespace,
+		Key:       v.store.CAProvider.Key,
+	}
+	ctx := context.Background()
+	res, err := v.secretKeyRef(ctx, &secretRef)
+	if err != nil {
+		return nil, fmt.Errorf(errVaultCert, err)
+	}
+
+	return []byte(res), nil
+}
+
+func getCertFromConfigMap(v *client) ([]byte, error) {
+	objKey := types.NamespacedName{
+		Namespace: v.store.CAProvider.Namespace,
+		Name:      v.store.CAProvider.Name,
+	}
+
+	configMapRef := &corev1.ConfigMap{}
+	ctx := context.Background()
+	err := v.kube.Get(ctx, objKey, configMapRef)
+	if err != nil {
+		return nil, fmt.Errorf(errVaultCert, err)
+	}
+
+	val, ok := configMapRef.Data[v.store.CAProvider.Key]
+	if !ok {
+		return nil, fmt.Errorf(errConfigMapFmt, v.store.CAProvider.Key)
+	}
+
+	return []byte(val), nil
+}
+
 func (v *client) setAuth(ctx context.Context, client Client, cfg *vault.Config) error {
 	tokenRef := v.store.Auth.TokenSecretRef
 	if tokenRef != nil {