Skip to content

Commit c414867

Browse files
fwieselnotandy
authored andcommitted
Decomission: Use Patch + FieldOwner
FieldOwner allows us to identify who maintains a field and detect if there is a conflict between multiple controllers.
1 parent dbd6735 commit c414867

File tree

1 file changed

+3
-2
lines changed

1 file changed

+3
-2
lines changed

internal/controller/decomission_controller.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -179,18 +179,19 @@ func (r *NodeDecommissionReconciler) removeFinalizer(ctx context.Context, node *
179179

180180
nodeBase := node.DeepCopy()
181181
controllerutil.RemoveFinalizer(node, decommissionFinalizerName)
182-
err := r.Patch(ctx, node, k8sclient.MergeFromWithOptions(nodeBase, k8sclient.MergeFromWithOptimisticLock{}))
182+
err := r.Patch(ctx, node, k8sclient.MergeFromWithOptions(nodeBase, k8sclient.MergeFromWithOptimisticLock{}), k8sclient.FieldOwner(DecommissionControllerName))
183183
return ctrl.Result{}, err
184184
}
185185

186186
func (r *NodeDecommissionReconciler) setDecommissioningCondition(ctx context.Context, hv *kvmv1.Hypervisor, message string) (ctrl.Result, error) {
187+
base := hv.DeepCopy()
187188
meta.SetStatusCondition(&hv.Status.Conditions, metav1.Condition{
188189
Type: kvmv1.ConditionTypeReady,
189190
Status: metav1.ConditionFalse,
190191
Reason: "Decommissioning",
191192
Message: message,
192193
})
193-
if err := r.Status().Update(ctx, hv); err != nil {
194+
if err := r.Status().Patch(ctx, hv, k8sclient.MergeFromWithOptions(base, k8sclient.MergeFromWithOptimisticLock{}), k8sclient.FieldOwner(DecommissionControllerName)); err != nil {
194195
return ctrl.Result{}, fmt.Errorf("cannot update hypervisor status due to %w", err)
195196
}
196197
return ctrl.Result{}, nil

0 commit comments

Comments
 (0)