Skip to content

Commit 5fd25dc

Browse files
vinceprik8s-ci-robot
authored andcommitted
Add foregroundDeletion finalizer to Cluster object (kubernetes-sigs#988)
Signed-off-by: Vince Prignano <[email protected]>
1 parent 42f160d commit 5fd25dc

File tree

1 file changed

+21
-9
lines changed

1 file changed

+21
-9
lines changed

pkg/controller/cluster/cluster_controller.go

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import (
2020
"context"
2121

2222
"k8s.io/apimachinery/pkg/api/errors"
23+
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2324
"k8s.io/apimachinery/pkg/runtime"
2425
"k8s.io/klog"
2526
clusterv1 "sigs.k8s.io/cluster-api/pkg/apis/cluster/v1alpha1"
@@ -86,20 +87,31 @@ func (r *ReconcileCluster) Reconcile(request reconcile.Request) (reconcile.Resul
8687
}
8788

8889
name := cluster.Name
89-
klog.Infof("Running reconcile Cluster for %s\n", name)
90+
klog.Infof("Running reconcile Cluster for %q", name)
9091

9192
// If object hasn't been deleted and doesn't have a finalizer, add one
9293
// Add a finalizer to newly created objects.
93-
if cluster.ObjectMeta.DeletionTimestamp.IsZero() &&
94-
!util.Contains(cluster.ObjectMeta.Finalizers, clusterv1.ClusterFinalizer) {
95-
cluster.Finalizers = append(cluster.Finalizers, clusterv1.ClusterFinalizer)
96-
if err = r.Update(context.Background(), cluster); err != nil {
97-
klog.Infof("failed to add finalizer to cluster object %v due to error %v.", name, err)
98-
return reconcile.Result{}, err
94+
if cluster.ObjectMeta.DeletionTimestamp.IsZero() {
95+
finalizerCount := len(cluster.Finalizers)
96+
97+
if !util.Contains(cluster.Finalizers, metav1.FinalizerDeleteDependents) {
98+
cluster.Finalizers = append(cluster.ObjectMeta.Finalizers, metav1.FinalizerDeleteDependents)
99+
}
100+
101+
if !util.Contains(cluster.Finalizers, clusterv1.ClusterFinalizer) {
102+
cluster.Finalizers = append(cluster.ObjectMeta.Finalizers, clusterv1.ClusterFinalizer)
103+
}
104+
105+
if len(cluster.Finalizers) > finalizerCount {
106+
if err := r.Update(context.Background(), cluster); err != nil {
107+
klog.Infof("Failed to add finalizer to cluster %q: %v", name, err)
108+
return reconcile.Result{}, err
109+
}
110+
111+
// Since adding the finalizer updates the object return to avoid later update issues.
112+
return reconcile.Result{Requeue: true}, nil
99113
}
100114

101-
// Since adding the finalizer updates the object return to avoid later update issues
102-
return reconcile.Result{}, nil
103115
}
104116

105117
if !cluster.ObjectMeta.DeletionTimestamp.IsZero() {

0 commit comments

Comments
 (0)