Skip to content

Commit

Permalink
Feat: Added Available Condition to apply_controller (#97)
Browse files Browse the repository at this point in the history
* Added Available Condition

* Added Available Condition

* comment fix

Co-authored-by: Youn Jae Kim <[email protected]>
  • Loading branch information
aagusuab and aagusuab authored Aug 2, 2022
1 parent aae628a commit 6ec7e3f
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 2 deletions.
27 changes: 26 additions & 1 deletion pkg/controllers/apply_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,7 @@ func (r *ApplyWorkReconciler) Reconcile(ctx context.Context, req ctrl.Request) (
appliedWork := &workv1alpha1.AppliedWork{}
if err := r.spokeClient.Get(ctx, types.NamespacedName{Name: kLogObjRef.Name}, appliedWork); err != nil {
klog.ErrorS(err, utils.MessageResourceRetrieveFailed, "AppliedWork", kLogObjRef.Name)
meta.SetStatusCondition(&work.Status.Conditions, generateWorkAvailableStatusCondition(metav1.ConditionFalse, work.Generation))

return ctrl.Result{}, errors.Wrap(err, fmt.Sprintf(utils.MessageResourceRetrieveFailed+", %s=%s", "AppliedWork", work.Name))
}
Expand Down Expand Up @@ -138,10 +139,12 @@ func (r *ApplyWorkReconciler) Reconcile(ctx context.Context, req ctrl.Request) (

work.Status.ManifestConditions = manifestConditions

// Update status condition of work
workCond := generateWorkAppliedStatusCondition(manifestConditions, work.Generation)
work.Status.Conditions = []metav1.Condition{workCond}

//Update available status condition of work
meta.SetStatusCondition(&work.Status.Conditions, generateWorkAvailableStatusCondition(workCond.Status, work.Generation))

err = r.client.Status().Update(ctx, work, &client.UpdateOptions{})
if err != nil {
klog.ErrorS(err, utils.MessageResourceStatusUpdateFailed, work.Kind, kLogObjRef)
Expand Down Expand Up @@ -473,3 +476,25 @@ func generateWorkAppliedStatusCondition(manifestConditions []workv1alpha1.Manife
ObservedGeneration: observedGeneration,
}
}

func generateWorkAvailableStatusCondition(status metav1.ConditionStatus, observedGeneration int64) metav1.Condition {
if status == metav1.ConditionTrue {
return metav1.Condition{
Type: ConditionTypeAvailable,
Status: metav1.ConditionTrue,
LastTransitionTime: metav1.Now(),
Reason: "AppliedWorkAvailable",
Message: "This workload is available",
ObservedGeneration: observedGeneration,
}
}

return metav1.Condition{
Type: ConditionTypeAvailable,
Status: metav1.ConditionFalse,
LastTransitionTime: metav1.Now(),
Reason: "AppliedWorkFailed",
Message: "This workload is not fully available",
ObservedGeneration: observedGeneration,
}
}
3 changes: 2 additions & 1 deletion pkg/controllers/manager.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,8 @@ const (
workFinalizer = "multicluster.x-k8s.io/work-cleanup"
specHashAnnotation = "multicluster.x-k8s.io/spec-hash"

ConditionTypeApplied = "Applied"
ConditionTypeApplied = "Applied"
ConditionTypeAvailable = "Available"

// number of concurrent reconcile loop for work
maxWorkConcurrency = 5
Expand Down

0 comments on commit 6ec7e3f

Please sign in to comment.