add logic for checking for label or annotation updates

This commit is contained in:
mcmarkj
2021-08-03 21:32:04 +01:00
parent b3fc707337
commit 2096f4440f

View File

@@ -54,9 +54,10 @@ func CreateKubernetesSecretFromItem(kubeClient kubernetesClient.Client, secretNa
return err return err
} }
if currentSecret.Annotations[VersionAnnotation] != itemVersion { if CompareSecretFieldsWithOnePasswordItem(currentSecret.Annotations, secretAnnotations) || CompareSecretFieldsWithOnePasswordItem(currentSecret.Labels, labels) {
log.Info(fmt.Sprintf("Updating Secret %v at namespace '%v'", secret.Name, secret.Namespace)) log.Info(fmt.Sprintf("Updating Secret %v at namespace '%v'", secret.Name, secret.Namespace))
currentSecret.ObjectMeta.Annotations = secretAnnotations currentSecret.ObjectMeta.Annotations = secretAnnotations
currentSecret.ObjectMeta.Labels = labels
currentSecret.Data = secret.Data currentSecret.Data = secret.Data
return kubeClient.Update(context.Background(), currentSecret) return kubeClient.Update(context.Background(), currentSecret)
} }
@@ -86,3 +87,13 @@ func BuildKubernetesSecretData(fields []*onepassword.ItemField) map[string][]byt
} }
return secretData return secretData
} }
func CompareSecretFieldsWithOnePasswordItem(currentSecretsFields map[string]string, expectedFieldsOnSecret map[string]string) bool{
for key, value := range expectedFieldsOnSecret {
currentValue, exists := currentSecretsFields[key]
if !exists || currentValue != value {
return true
}
}
return false
}