Skip to content

Commit 18389b8

Browse files
authored
Merge pull request #12678 from k8s-infra-cherrypick-robot/cherry-pick-12675-to-release-1.11
[release-1.11] 🐛 CAPD: Remove finalizers during deletion if ownerRef was never set
2 parents 3c015e7 + 5c9ba26 commit 18389b8

File tree

3 files changed

+37
-0
lines changed

3 files changed

+37
-0
lines changed

test/infrastructure/docker/exp/internal/controllers/dockermachinepool_controller.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,18 @@ func (r *DockerMachinePoolReconciler) Reconcile(ctx context.Context, req ctrl.Re
9696
return ctrl.Result{}, err
9797
}
9898
if machinePool == nil {
99+
// Note: If ownerRef was not set, there is nothing to delete. Remove finalizer so deletion can succeed.
100+
if !dockerMachinePool.DeletionTimestamp.IsZero() {
101+
if controllerutil.ContainsFinalizer(dockerMachinePool, infraexpv1.MachinePoolFinalizer) {
102+
dockerMachinePoolWithoutFinalizer := dockerMachinePool.DeepCopy()
103+
controllerutil.RemoveFinalizer(dockerMachinePoolWithoutFinalizer, infraexpv1.MachinePoolFinalizer)
104+
if err := r.Client.Patch(ctx, dockerMachinePoolWithoutFinalizer, client.MergeFrom(dockerMachinePool)); err != nil {
105+
return ctrl.Result{}, errors.Wrapf(err, "failed to patch DockerMachinePool %s", klog.KObj(dockerMachinePool))
106+
}
107+
}
108+
return ctrl.Result{}, nil
109+
}
110+
99111
log.Info("Waiting for MachinePool Controller to set OwnerRef on DockerMachinePool")
100112
return ctrl.Result{}, nil
101113
}

test/infrastructure/docker/internal/controllers/devmachine_controller.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ import (
2828
"sigs.k8s.io/controller-runtime/pkg/builder"
2929
"sigs.k8s.io/controller-runtime/pkg/client"
3030
"sigs.k8s.io/controller-runtime/pkg/controller"
31+
"sigs.k8s.io/controller-runtime/pkg/controller/controllerutil"
3132
"sigs.k8s.io/controller-runtime/pkg/handler"
3233

3334
clusterv1 "sigs.k8s.io/cluster-api/api/core/v1beta2"
@@ -139,6 +140,17 @@ func (r *DevMachineReconciler) Reconcile(ctx context.Context, req ctrl.Request)
139140
return ctrl.Result{}, err
140141
}
141142
if machine == nil {
143+
if !devMachine.DeletionTimestamp.IsZero() {
144+
if controllerutil.ContainsFinalizer(devMachine, infrav1.MachineFinalizer) {
145+
devMachineWithoutFinalizer := devMachine.DeepCopy()
146+
controllerutil.RemoveFinalizer(devMachineWithoutFinalizer, infrav1.MachineFinalizer)
147+
if err := r.Client.Patch(ctx, devMachineWithoutFinalizer, client.MergeFrom(devMachine)); err != nil {
148+
return ctrl.Result{}, errors.Wrapf(err, "failed to patch DevMachine %s", klog.KObj(devMachine))
149+
}
150+
}
151+
return ctrl.Result{}, nil
152+
}
153+
142154
log.Info("Waiting for Machine Controller to set OwnerRef on DevMachine")
143155
return ctrl.Result{}, nil
144156
}

test/infrastructure/docker/internal/controllers/dockermachine_controller.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ import (
2828
"sigs.k8s.io/controller-runtime/pkg/builder"
2929
"sigs.k8s.io/controller-runtime/pkg/client"
3030
"sigs.k8s.io/controller-runtime/pkg/controller"
31+
"sigs.k8s.io/controller-runtime/pkg/controller/controllerutil"
3132
"sigs.k8s.io/controller-runtime/pkg/handler"
3233

3334
clusterv1 "sigs.k8s.io/cluster-api/api/core/v1beta2"
@@ -93,6 +94,18 @@ func (r *DockerMachineReconciler) Reconcile(ctx context.Context, req ctrl.Reques
9394
return ctrl.Result{}, err
9495
}
9596
if machine == nil {
97+
// Note: If ownerRef was not set, there is nothing to delete. Remove finalizer so deletion can succeed.
98+
if !dockerMachine.DeletionTimestamp.IsZero() {
99+
if controllerutil.ContainsFinalizer(dockerMachine, infrav1.MachineFinalizer) {
100+
dockerMachineWithoutFinalizer := dockerMachine.DeepCopy()
101+
controllerutil.RemoveFinalizer(dockerMachineWithoutFinalizer, infrav1.MachineFinalizer)
102+
if err := r.Client.Patch(ctx, dockerMachineWithoutFinalizer, client.MergeFrom(dockerMachine)); err != nil {
103+
return ctrl.Result{}, errors.Wrapf(err, "failed to patch DockerMachine %s", klog.KObj(dockerMachine))
104+
}
105+
}
106+
return ctrl.Result{}, nil
107+
}
108+
96109
log.Info("Waiting for Machine Controller to set OwnerRef on DockerMachine")
97110
return ctrl.Result{}, nil
98111
}

0 commit comments

Comments
 (0)