@@ -28,6 +28,7 @@ import (
28
28
"sigs.k8s.io/controller-runtime/pkg/handler"
29
29
logf "sigs.k8s.io/controller-runtime/pkg/log"
30
30
"sigs.k8s.io/controller-runtime/pkg/manager"
31
+ "sigs.k8s.io/controller-runtime/pkg/predicate"
31
32
"sigs.k8s.io/controller-runtime/pkg/reconcile"
32
33
"sigs.k8s.io/controller-runtime/pkg/source"
33
34
)
@@ -53,8 +54,15 @@ func add(mgr manager.Manager, r reconcile.Reconciler) error {
53
54
return err
54
55
}
55
56
57
+ // Filter out update events if an object's metadata.generation is unchanged.
58
+ // - https://github.com/operator-framework/operator-sdk/issues/2795
59
+ // - https://github.com/kubernetes-sigs/kubebuilder/issues/1103
60
+ // - https://github.com/kubernetes-sigs/controller-runtime/pull/553
61
+ // - https://book-v1.book.kubebuilder.io/basics/status_subresource.html
62
+ pred := predicate.GenerationChangedPredicate {}
63
+
56
64
// Watch for changes to primary resource Stack
57
- err = c .Watch (& source.Kind {Type : & pulumiv1alpha1.Stack {}}, & handler.EnqueueRequestForObject {})
65
+ err = c .Watch (& source.Kind {Type : & pulumiv1alpha1.Stack {}}, & handler.EnqueueRequestForObject {}, pred )
58
66
if err != nil {
59
67
return err
60
68
}
@@ -214,7 +222,7 @@ func (r *ReconcileStack) Reconcile(request reconcile.Request) (reconcile.Result,
214
222
}
215
223
err = r .client .Status ().Update (context .TODO (), instance )
216
224
if err != nil {
217
- reqLogger .Error (err , "Failed to update Stack outputs " , "Stack.Name" , stack .Stack )
225
+ reqLogger .Error (err , "Failed to update Stack status " , "Stack.Name" , stack .Stack )
218
226
return reconcile.Result {}, err
219
227
}
220
228
0 commit comments