Skip to content

Commit 81c9640

Browse files
committed
only delete cluster if all other finalizers on cluster resource are gone
1 parent af5e25e commit 81c9640

File tree

1 file changed

+16
-1
lines changed

1 file changed

+16
-1
lines changed

internal/controller/cluster_controller.go

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,13 +92,28 @@ func (r *ClusterReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ct
9292
}
9393

9494
func (r *ClusterReconciler) handleDelete(ctx context.Context, cluster *clustersv1alpha1.Cluster) (ctrl.Result, error) {
95+
log := logf.FromContext(ctx)
9596
requeue := smartrequeue.FromContext(ctx)
9697
cluster.Status.Phase = commonapi.StatusPhaseTerminating
9798

98-
if !controllerutil.ContainsFinalizer(cluster, Finalizer) {
99+
// check if there are any foreign finalizers on the Cluster resource
100+
foreignFinalizers := make([]string, 0, len(cluster.Finalizers))
101+
found := false
102+
for _, fin := range cluster.Finalizers {
103+
if fin != Finalizer {
104+
foreignFinalizers = append(foreignFinalizers, fin)
105+
} else {
106+
found = true
107+
}
108+
}
109+
if !found {
99110
// Nothing to do
100111
return ctrl.Result{}, nil
101112
}
113+
if len(foreignFinalizers) > 0 {
114+
log.Info("Postponing cluster deletion until foreign finalizers are removed", "foreignFinalizers", foreignFinalizers)
115+
return requeue.Progressing()
116+
}
102117

103118
name := kindName(cluster)
104119

0 commit comments

Comments
 (0)