diff --git a/CHANGELOG.md b/CHANGELOG.md index 7519382c..a127222f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,7 +8,7 @@ ## Fixes -- A user-friendly description of a fix. {issue-number} +- OwnerReferences on secrets are now persisted after an item is updated. {#101} ## Security diff --git a/pkg/onepassword/secret_update_handler.go b/pkg/onepassword/secret_update_handler.go index a7a0c7c5..1d220a30 100644 --- a/pkg/onepassword/secret_update_handler.go +++ b/pkg/onepassword/secret_update_handler.go @@ -134,15 +134,21 @@ func (h *SecretUpdateHandler) updateKubernetesSecrets() (map[string]map[string]* log.Info(fmt.Sprintf("Secret '%v' has been updated in 1Password but is set to be ignored. Updates to an ignored secret will not trigger an update to a kubernetes secret or a rolling restart.", secret.GetName())) secret.Annotations[VersionAnnotation] = itemVersion secret.Annotations[ItemPathAnnotation] = itemPathString - h.client.Update(context.Background(), &secret) + if err := h.client.Update(context.Background(), &secret); err != nil { + log.Error(err, "failed to update secret %s annotations to version %d: %s", secret.Name, itemVersion, err) + continue + } continue } log.Info(fmt.Sprintf("Updating kubernetes secret '%v'", secret.GetName())) secret.Annotations[VersionAnnotation] = itemVersion secret.Annotations[ItemPathAnnotation] = itemPathString - updatedSecret := kubeSecrets.BuildKubernetesSecretFromOnePasswordItem(secret.Name, secret.Namespace, secret.Annotations, secret.Labels, string(secret.Type), *item, nil) - log.Info(fmt.Sprintf("New secret path: %v and version: %v", updatedSecret.Annotations[ItemPathAnnotation], updatedSecret.Annotations[VersionAnnotation])) - h.client.Update(context.Background(), updatedSecret) + secret.Data = kubeSecrets.BuildKubernetesSecretData(item.Fields, item.Files) + log.Info(fmt.Sprintf("New secret path: %v and version: %v", secret.Annotations[ItemPathAnnotation], secret.Annotations[VersionAnnotation])) + if err := h.client.Update(context.Background(), &secret); err != nil { + log.Error(err, "failed to update secret %s to version %d: %s", secret.Name, itemVersion, err) + continue + } if updatedSecrets[secret.Namespace] == nil { updatedSecrets[secret.Namespace] = make(map[string]*corev1.Secret) }