refactor volume functions

Signed-off-by: Manuel Morejon <manuel@mmorejon.io>
This commit is contained in:
Manuel Morejon
2023-08-15 01:30:41 +02:00
parent 9b4d8eb292
commit 1e73bc1220

View File

@@ -4,23 +4,10 @@ import corev1 "k8s.io/api/core/v1"
func AreVolumesUsingSecrets(volumes []corev1.Volume, secrets map[string]*corev1.Secret) bool { func AreVolumesUsingSecrets(volumes []corev1.Volume, secrets map[string]*corev1.Secret) bool {
for i := 0; i < len(volumes); i++ { for i := 0; i < len(volumes); i++ {
if secret := volumes[i].Secret; secret != nil { secret := IsVolumeUsingSecret(volumes[i], secrets)
secretName := secret.SecretName secretProjection := IsVolumeUsingSecretProjection(volumes[i], secrets)
_, ok := secrets[secretName] if secret == nil && secretProjection == nil {
if !ok { return false
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
}
}
}
} }
} }
if len(volumes) == 0 { 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 { 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++ { for i := 0; i < len(volumes); i++ {
if secret := volumes[i].Secret; secret != nil { secret := IsVolumeUsingSecret(volumes[i], secrets)
secretName := secret.SecretName if secret != nil {
secret, ok := secrets[secretName] updatedDeploymentSecrets[secret.Name] = secret
if ok { } else {
updatedDeploymentSecrets[secret.Name] = secret secretProjection := IsVolumeUsingSecretProjection(volumes[i], secrets)
} if secretProjection != nil {
} updatedDeploymentSecrets[secretProjection.Name] = secretProjection
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
}
}
} }
} }
} }
return updatedDeploymentSecrets 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
}