@@ -20,6 +20,7 @@ import (
20
20
"context"
21
21
22
22
"k8s.io/apimachinery/pkg/api/errors"
23
+ metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
23
24
"k8s.io/apimachinery/pkg/runtime"
24
25
"k8s.io/klog"
25
26
clusterv1 "sigs.k8s.io/cluster-api/pkg/apis/cluster/v1alpha1"
@@ -86,20 +87,31 @@ func (r *ReconcileCluster) Reconcile(request reconcile.Request) (reconcile.Resul
86
87
}
87
88
88
89
name := cluster .Name
89
- klog .Infof ("Running reconcile Cluster for %s \n " , name )
90
+ klog .Infof ("Running reconcile Cluster for %q " , name )
90
91
91
92
// If object hasn't been deleted and doesn't have a finalizer, add one
92
93
// 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
99
113
}
100
114
101
- // Since adding the finalizer updates the object return to avoid later update issues
102
- return reconcile.Result {}, nil
103
115
}
104
116
105
117
if ! cluster .ObjectMeta .DeletionTimestamp .IsZero () {
0 commit comments