mirror of
https://github.com/1Password/onepassword-operator.git
synced 2025-10-22 15:38:06 +00:00
Add Status field to OnePasswordItem resource
This makes it easier to see whehter the controller succeeded in creating the Kubernetes secret for a OnePasswordItem. If something failed, the `ready` field will be `false` and the `OnePasswordItemReady` condition will have a `status` of `False` with the error messages in the `message` field.
This commit is contained in:
@@ -96,10 +96,11 @@ func (r *ReconcileOnePasswordItem) Reconcile(request reconcile.Request) (reconci
|
||||
}
|
||||
|
||||
// Handles creation or updating secrets for deployment if needed
|
||||
if err := r.HandleOnePasswordItem(onepassworditem, request); err != nil {
|
||||
return reconcile.Result{}, err
|
||||
err := r.HandleOnePasswordItem(onepassworditem, request)
|
||||
if updateStatusErr := r.updateStatus(onepassworditem, err); updateStatusErr != nil {
|
||||
return reconcile.Result{}, fmt.Errorf("cannot update status: %s", updateStatusErr)
|
||||
}
|
||||
return reconcile.Result{}, nil
|
||||
return reconcile.Result{}, err
|
||||
}
|
||||
// If one password finalizer exists then we must cleanup associated secrets
|
||||
if utils.ContainsString(onepassworditem.ObjectMeta.Finalizers, finalizer) {
|
||||
@@ -169,3 +170,24 @@ func (r *ReconcileOnePasswordItem) HandleOnePasswordItem(resource *onepasswordv1
|
||||
|
||||
return kubeSecrets.CreateKubernetesSecretFromItem(r.kubeClient, secretName, resource.Namespace, item, autoRestart, labels, secretType, ownerRef)
|
||||
}
|
||||
|
||||
func (r *ReconcileOnePasswordItem) updateStatus(resource *onepasswordv1.OnePasswordItem, err error) error {
|
||||
condition := onepasswordv1.OnePasswordItemCondition{
|
||||
Type: onepasswordv1.OnePasswordItemReady,
|
||||
Status: metav1.ConditionTrue,
|
||||
}
|
||||
if err != nil {
|
||||
condition.Message = err.Error()
|
||||
condition.Status = metav1.ConditionFalse
|
||||
}
|
||||
|
||||
ready := err == nil
|
||||
if resource.Status.Ready == nil || ready != *resource.Status.Ready {
|
||||
condition.LastTransitionTime = metav1.Now()
|
||||
}
|
||||
|
||||
resource.Status.Ready = &ready
|
||||
|
||||
resource.Status.Conditions = []onepasswordv1.OnePasswordItemCondition{condition}
|
||||
return r.kubeClient.Status().Update(context.Background(), resource)
|
||||
}
|
||||
|
Reference in New Issue
Block a user