@@ -34,7 +34,9 @@ import (
34
34
"sigs.k8s.io/controller-runtime/pkg/client"
35
35
"sigs.k8s.io/controller-runtime/pkg/controller"
36
36
"sigs.k8s.io/controller-runtime/pkg/controller/controllerutil"
37
+ "sigs.k8s.io/controller-runtime/pkg/event"
37
38
"sigs.k8s.io/controller-runtime/pkg/handler"
39
+ "sigs.k8s.io/controller-runtime/pkg/predicate"
38
40
"sigs.k8s.io/controller-runtime/pkg/reconcile"
39
41
40
42
infrav1 "sigs.k8s.io/cluster-api-provider-aws/v2/api/v1beta2"
@@ -199,6 +201,28 @@ func (r *AWSMachinePoolReconciler) SetupWithManager(ctx context.Context, mgr ctr
199
201
handler .EnqueueRequestsFromMapFunc (machinePoolToInfrastructureMapFunc (expinfrav1 .GroupVersion .WithKind ("AWSMachinePool" ))),
200
202
).
201
203
WithEventFilter (predicates .ResourceNotPausedAndHasFilterLabel (logger .FromContext (ctx ).GetLogger (), r .WatchFilterValue )).
204
+ WithEventFilter (
205
+ predicate.Funcs {
206
+ // Avoid reconciling if the event triggering the reconciliation is related to incremental status updates
207
+ // for AWSMachinePool resources only
208
+ UpdateFunc : func (e event.UpdateEvent ) bool {
209
+ if e .ObjectOld .GetObjectKind ().GroupVersionKind ().Kind != "AWSMachinePool" {
210
+ return true
211
+ }
212
+
213
+ oldCluster := e .ObjectOld .(* expinfrav1.AWSMachinePool ).DeepCopy ()
214
+ newCluster := e .ObjectNew .(* expinfrav1.AWSMachinePool ).DeepCopy ()
215
+
216
+ oldCluster .Status = expinfrav1.AWSMachinePoolStatus {}
217
+ newCluster .Status = expinfrav1.AWSMachinePoolStatus {}
218
+
219
+ oldCluster .ObjectMeta .ResourceVersion = ""
220
+ newCluster .ObjectMeta .ResourceVersion = ""
221
+
222
+ return ! cmp .Equal (oldCluster , newCluster )
223
+ },
224
+ },
225
+ ).
202
226
Complete (r )
203
227
}
204
228
0 commit comments