Use patchStatus for alert and provider

Signed-off-by: Somtochi Onyekwere <somtochionyekwere@gmail.com>
This commit is contained in:
Somtochi Onyekwere 2021-03-29 13:25:41 +01:00
parent c64d2c200b
commit f2f9960c0b
3 changed files with 29 additions and 5 deletions

View File

@ -72,7 +72,7 @@ func (r *AlertReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl
// validate alert spec and provider
if err := r.validate(ctx, alert); err != nil {
meta.SetResourceCondition(&alert, meta.ReadyCondition, metav1.ConditionFalse, meta.ReconciliationFailedReason, err.Error())
if err := r.Status().Update(ctx, &alert); err != nil {
if err := r.patchStatus(ctx, req, alert.Status); err != nil {
return ctrl.Result{Requeue: true}, err
}
return ctrl.Result{Requeue: true}, err
@ -81,7 +81,7 @@ func (r *AlertReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl
if !apimeta.IsStatusConditionTrue(alert.Status.Conditions, meta.ReadyCondition) || alert.Status.ObservedGeneration != alert.Generation {
meta.SetResourceCondition(&alert, meta.ReadyCondition, metav1.ConditionTrue, v1beta1.InitializedReason, v1beta1.InitializedReason)
alert.Status.ObservedGeneration = alert.Generation
if err := r.Status().Update(ctx, &alert); err != nil {
if err := r.patchStatus(ctx, req, alert.Status); err != nil {
return ctrl.Result{Requeue: true}, err
}
log.Info("Alert initialised")
@ -152,3 +152,15 @@ func (r *AlertReconciler) recordReadiness(ctx context.Context, alert v1beta1.Ale
}, !alert.DeletionTimestamp.IsZero())
}
}
func (r *AlertReconciler) patchStatus(ctx context.Context, req ctrl.Request, newStatus v1beta1.AlertStatus) error {
var alert v1beta1.Alert
if err := r.Get(ctx, req.NamespacedName, &alert); err != nil {
return err
}
patch := client.MergeFrom(alert.DeepCopy())
alert.Status = newStatus
return r.Status().Patch(ctx, &alert, patch)
}

View File

@ -71,7 +71,7 @@ func (r *ProviderReconciler) Reconcile(ctx context.Context, req ctrl.Request) (c
// validate provider spec and credentials
if err := r.validate(ctx, provider); err != nil {
meta.SetResourceCondition(&provider, meta.ReadyCondition, metav1.ConditionFalse, meta.ReconciliationFailedReason, err.Error())
if err := r.Status().Update(ctx, &provider); err != nil {
if err := r.patchStatus(ctx, req, provider.Status); err != nil {
return ctrl.Result{Requeue: true}, err
}
return ctrl.Result{Requeue: true}, err
@ -79,7 +79,7 @@ func (r *ProviderReconciler) Reconcile(ctx context.Context, req ctrl.Request) (c
if !apimeta.IsStatusConditionTrue(provider.Status.Conditions, meta.ReadyCondition) {
meta.SetResourceCondition(&provider, meta.ReadyCondition, metav1.ConditionTrue, v1beta1.InitializedReason, v1beta1.InitializedReason)
if err := r.Status().Update(ctx, &provider); err != nil {
if err := r.patchStatus(ctx, req, provider.Status); err != nil {
return ctrl.Result{Requeue: true}, err
}
log.Info("Provider initialised")
@ -149,3 +149,15 @@ func (r *ProviderReconciler) recordReadiness(ctx context.Context, provider v1bet
}, !provider.DeletionTimestamp.IsZero())
}
}
func (r *ProviderReconciler) patchStatus(ctx context.Context, req ctrl.Request, newStatus v1beta1.ProviderStatus) error {
var provider v1beta1.Provider
if err := r.Get(ctx, req.NamespacedName, &provider); err != nil {
return err
}
patch := client.MergeFrom(provider.DeepCopy())
provider.Status = newStatus
return r.Status().Patch(ctx, &provider, patch)
}

View File

@ -69,7 +69,7 @@ func (r *ReceiverReconciler) Reconcile(ctx context.Context, req ctrl.Request) (c
token, err := r.token(ctx, receiver)
if err != nil {
receiver = v1beta1.ReceiverNotReady(receiver, v1beta1.TokenNotFoundReason, err.Error())
if err := r.Status().Update(ctx, &receiver); err != nil {
if err := r.patchStatus(ctx, req, receiver.Status); err != nil {
return ctrl.Result{Requeue: true}, err
}
return ctrl.Result{}, err