@@ -30,6 +30,7 @@ import (
3030 "sigs.k8s.io/controller-runtime/pkg/predicate"
3131 "sigs.k8s.io/controller-runtime/pkg/reconcile"
3232
33+ runtimeCtrl "github.com/fluxcd/pkg/runtime/controller"
3334 "github.com/fluxcd/pkg/runtime/predicates"
3435 sourcev1 "github.com/fluxcd/source-controller/api/v1"
3536
@@ -38,9 +39,10 @@ import (
3839
3940// KustomizationReconcilerOptions contains options for the KustomizationReconciler.
4041type KustomizationReconcilerOptions struct {
41- RateLimiter workqueue.TypedRateLimiter [reconcile.Request ]
42- WatchConfigsPredicate predicate.Predicate
43- WatchExternalArtifacts bool
42+ RateLimiter workqueue.TypedRateLimiter [reconcile.Request ]
43+ WatchConfigsPredicate predicate.Predicate
44+ WatchExternalArtifacts bool
45+ CancelHealthCheckOnNewRevision bool
4446}
4547
4648// SetupWithManager sets up the controller with the Manager.
@@ -129,43 +131,64 @@ func (r *KustomizationReconciler) SetupWithManager(ctx context.Context, mgr ctrl
129131 return fmt .Errorf ("failed creating index %s: %w" , indexSecret , err )
130132 }
131133
132- ctrlBuilder := ctrl .NewControllerManagedBy (mgr ).
133- For (& kustomizev1.Kustomization {}, builder .WithPredicates (
134- predicate .Or (predicate.GenerationChangedPredicate {}, predicates.ReconcileRequestedPredicate {}),
135- )).
134+ var blder * builder.Builder
135+ var toComplete reconcile.TypedReconciler [reconcile.Request ]
136+ var enqueueRequestsFromMapFunc func (objKind string , fn handler.MapFunc ) handler.EventHandler
137+
138+ ksPredicate := predicate .Or (
139+ predicate.GenerationChangedPredicate {},
140+ predicates.ReconcileRequestedPredicate {},
141+ )
142+
143+ if ! opts .CancelHealthCheckOnNewRevision {
144+ toComplete = r
145+ enqueueRequestsFromMapFunc = func (objKind string , fn handler.MapFunc ) handler.EventHandler {
146+ return handler .EnqueueRequestsFromMapFunc (fn )
147+ }
148+ blder = ctrl .NewControllerManagedBy (mgr ).
149+ For (& kustomizev1.Kustomization {}, builder .WithPredicates (ksPredicate ))
150+ } else {
151+ wr := runtimeCtrl .WrapReconciler (r )
152+ toComplete = wr
153+ enqueueRequestsFromMapFunc = wr .EnqueueRequestsFromMapFunc
154+ blder = runtimeCtrl .NewControllerManagedBy (mgr , wr ).
155+ For (& kustomizev1.Kustomization {}, ksPredicate ).Builder
156+ }
157+
158+ blder .
136159 Watches (
137160 & sourcev1.OCIRepository {},
138- handler . EnqueueRequestsFromMapFunc ( r .requestsForRevisionChangeOf (indexOCIRepository )),
161+ enqueueRequestsFromMapFunc ( sourcev1 . OCIRepositoryKind , r .requestsForRevisionChangeOf (indexOCIRepository )),
139162 builder .WithPredicates (SourceRevisionChangePredicate {}),
140163 ).
141164 Watches (
142165 & sourcev1.GitRepository {},
143- handler . EnqueueRequestsFromMapFunc ( r .requestsForRevisionChangeOf (indexGitRepository )),
166+ enqueueRequestsFromMapFunc ( sourcev1 . GitRepositoryKind , r .requestsForRevisionChangeOf (indexGitRepository )),
144167 builder .WithPredicates (SourceRevisionChangePredicate {}),
145168 ).
146169 Watches (
147170 & sourcev1.Bucket {},
148- handler . EnqueueRequestsFromMapFunc ( r .requestsForRevisionChangeOf (indexBucket )),
171+ enqueueRequestsFromMapFunc ( sourcev1 . BucketKind , r .requestsForRevisionChangeOf (indexBucket )),
149172 builder .WithPredicates (SourceRevisionChangePredicate {}),
150173 ).
151174 WatchesMetadata (
152175 & corev1.ConfigMap {},
153- handler . EnqueueRequestsFromMapFunc ( r .requestsForConfigDependency (indexConfigMap )),
176+ enqueueRequestsFromMapFunc ( "ConfigMap" , r .requestsForConfigDependency (indexConfigMap )),
154177 builder .WithPredicates (predicate.ResourceVersionChangedPredicate {}, opts .WatchConfigsPredicate ),
155178 ).
156179 WatchesMetadata (
157180 & corev1.Secret {},
158- handler . EnqueueRequestsFromMapFunc ( r .requestsForConfigDependency (indexSecret )),
181+ enqueueRequestsFromMapFunc ( "Secret" , r .requestsForConfigDependency (indexSecret )),
159182 builder .WithPredicates (predicate.ResourceVersionChangedPredicate {}, opts .WatchConfigsPredicate ),
160183 )
161184
162185 if opts .WatchExternalArtifacts {
163- ctrlBuilder = ctrlBuilder .Watches (
186+ blder = blder .Watches (
164187 & sourcev1.ExternalArtifact {},
165- handler . EnqueueRequestsFromMapFunc ( r .requestsForRevisionChangeOf (indexExternalArtifact )),
188+ enqueueRequestsFromMapFunc ( sourcev1 . ExternalArtifactKind , r .requestsForRevisionChangeOf (indexExternalArtifact )),
166189 builder .WithPredicates (SourceRevisionChangePredicate {}),
167190 )
168191 }
169192
170- return ctrlBuilder .WithOptions (controller.Options {RateLimiter : opts .RateLimiter }).Complete (r )
193+ return blder .WithOptions (controller.Options {RateLimiter : opts .RateLimiter }).Complete (toComplete )
171194}
0 commit comments