Skip to content

Commit 203bc94

Browse files
authored
Merge pull request #171 from fluxcd/status-patch
Patch status sub-resource
2 parents d7a0716 + 5aded37 commit 203bc94

File tree

1 file changed

+11
-9
lines changed

1 file changed

+11
-9
lines changed

controllers/kustomization_controller.go

+11-9
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,7 @@ func (r *KustomizationReconciler) Reconcile(req ctrl.Request) (ctrl.Result, erro
165165
if kustomization.Spec.Suspend {
166166
msg := "Kustomization is suspended, skipping reconciliation"
167167
kustomization = kustomizev1.KustomizationNotReady(kustomization, "", meta.SuspendedReason, msg)
168-
if err := r.Status().Update(ctx, &kustomization); err != nil {
168+
if err := r.updateStatus(ctx, req, kustomization.Status); err != nil {
169169
log.Error(err, "unable to update status")
170170
return ctrl.Result{Requeue: true}, err
171171
}
@@ -185,7 +185,7 @@ func (r *KustomizationReconciler) Reconcile(req ctrl.Request) (ctrl.Result, erro
185185

186186
// set the reconciliation status to progressing
187187
kustomization = kustomizev1.KustomizationProgressing(kustomization)
188-
if err := r.Status().Update(ctx, &kustomization); err != nil {
188+
if err := r.updateStatus(ctx, req, kustomization.Status); err != nil {
189189
log.Error(err, "unable to update status to progressing")
190190
return ctrl.Result{Requeue: true}, err
191191
}
@@ -197,8 +197,8 @@ func (r *KustomizationReconciler) Reconcile(req ctrl.Request) (ctrl.Result, erro
197197
if apierrors.IsNotFound(err) {
198198
msg := "Source not found"
199199
kustomization = kustomizev1.KustomizationNotReady(kustomization, "", kustomizev1.ArtifactFailedReason, msg)
200-
if err := r.Status().Update(ctx, &kustomization); err != nil {
201-
log.Error(err, "unable to update status")
200+
if err := r.updateStatus(ctx, req, kustomization.Status); err != nil {
201+
log.Error(err, "unable to update status for source not found")
202202
return ctrl.Result{Requeue: true}, err
203203
}
204204
r.recordReadiness(kustomization, false)
@@ -214,8 +214,8 @@ func (r *KustomizationReconciler) Reconcile(req ctrl.Request) (ctrl.Result, erro
214214
if source.GetArtifact() == nil {
215215
msg := "Source is not ready, artifact not found"
216216
kustomization = kustomizev1.KustomizationNotReady(kustomization, "", kustomizev1.ArtifactFailedReason, msg)
217-
if err := r.Status().Update(ctx, &kustomization); err != nil {
218-
log.Error(err, "unable to update status")
217+
if err := r.updateStatus(ctx, req, kustomization.Status); err != nil {
218+
log.Error(err, "unable to update status for artifact not found")
219219
return ctrl.Result{Requeue: true}, err
220220
}
221221
r.recordReadiness(kustomization, false)
@@ -229,8 +229,8 @@ func (r *KustomizationReconciler) Reconcile(req ctrl.Request) (ctrl.Result, erro
229229
if err := r.checkDependencies(kustomization); err != nil {
230230
kustomization = kustomizev1.KustomizationNotReady(
231231
kustomization, source.GetArtifact().Revision, meta.DependencyNotReadyReason, err.Error())
232-
if err := r.Status().Update(ctx, &kustomization); err != nil {
233-
log.Error(err, "unable to update status")
232+
if err := r.updateStatus(ctx, req, kustomization.Status); err != nil {
233+
log.Error(err, "unable to update status for dependency not ready")
234234
return ctrl.Result{Requeue: true}, err
235235
}
236236
// we can't rely on exponential backoff because it will prolong the execution too much,
@@ -1039,8 +1039,10 @@ func (r *KustomizationReconciler) updateStatus(ctx context.Context, req ctrl.Req
10391039
return err
10401040
}
10411041

1042+
patch := client.MergeFrom(kustomization.DeepCopy())
10421043
kustomization.Status = newStatus
1043-
return r.Status().Update(ctx, &kustomization)
1044+
1045+
return r.Status().Patch(ctx, &kustomization, patch)
10441046
}
10451047

10461048
func containsString(slice []string, s string) bool {

0 commit comments

Comments
 (0)