From 1e73bc12205a793ea77d94ba1092e11d90b5972a Mon Sep 17 00:00:00 2001 From: Manuel Morejon Date: Tue, 15 Aug 2023 01:30:41 +0200 Subject: [PATCH] refactor volume functions Signed-off-by: Manuel Morejon --- pkg/onepassword/volumes.go | 70 ++++++++++++++++++++------------------ 1 file changed, 37 insertions(+), 33 deletions(-) diff --git a/pkg/onepassword/volumes.go b/pkg/onepassword/volumes.go index ed4e182..cb1c1b1 100644 --- a/pkg/onepassword/volumes.go +++ b/pkg/onepassword/volumes.go @@ -4,23 +4,10 @@ import corev1 "k8s.io/api/core/v1" func AreVolumesUsingSecrets(volumes []corev1.Volume, secrets map[string]*corev1.Secret) bool { for i := 0; i < len(volumes); i++ { - if secret := volumes[i].Secret; secret != nil { - secretName := secret.SecretName - _, ok := secrets[secretName] - if !ok { - return false - } - } - if volumes[i].Projected != nil { - for j := 0; j < len(volumes[i].Projected.Sources); j++ { - if secret := volumes[i].Projected.Sources[j].Secret; secret != nil { - secretName := secret.Name - _, ok := secrets[secretName] - if !ok { - return false - } - } - } + secret := IsVolumeUsingSecret(volumes[i], secrets) + secretProjection := IsVolumeUsingSecretProjection(volumes[i], secrets) + if secret == nil && secretProjection == nil { + return false } } if len(volumes) == 0 { @@ -31,24 +18,41 @@ func AreVolumesUsingSecrets(volumes []corev1.Volume, secrets map[string]*corev1. func AppendUpdatedVolumeSecrets(volumes []corev1.Volume, secrets map[string]*corev1.Secret, updatedDeploymentSecrets map[string]*corev1.Secret) map[string]*corev1.Secret { for i := 0; i < len(volumes); i++ { - if secret := volumes[i].Secret; secret != nil { - secretName := secret.SecretName - secret, ok := secrets[secretName] - if ok { - updatedDeploymentSecrets[secret.Name] = secret - } - } - if volumes[i].Projected != nil { - for j := 0; j < len(volumes[i].Projected.Sources); j++ { - if secret := volumes[i].Projected.Sources[j].Secret; secret != nil { - secretName := secret.Name - secret, ok := secrets[secretName] - if ok { - updatedDeploymentSecrets[secret.Name] = secret - } - } + secret := IsVolumeUsingSecret(volumes[i], secrets) + if secret != nil { + updatedDeploymentSecrets[secret.Name] = secret + } else { + secretProjection := IsVolumeUsingSecretProjection(volumes[i], secrets) + if secretProjection != nil { + updatedDeploymentSecrets[secretProjection.Name] = secretProjection } } } return updatedDeploymentSecrets } + +func IsVolumeUsingSecret(volume corev1.Volume, secrets map[string]*corev1.Secret) *corev1.Secret { + if secret := volume.Secret; secret != nil { + secretName := secret.SecretName + secretFound, ok := secrets[secretName] + if ok { + return secretFound + } + } + return nil +} + +func IsVolumeUsingSecretProjection(volume corev1.Volume, secrets map[string]*corev1.Secret) *corev1.Secret { + if volume.Projected != nil { + for i := 0; i < len(volume.Projected.Sources); i++ { + if secret := volume.Projected.Sources[i].Secret; secret != nil { + secretName := secret.Name + secretFound, ok := secrets[secretName] + if ok { + return secretFound + } + } + } + } + return nil +}