@@ -74,10 +74,11 @@ func ControllerManagedBy(m manager.Manager) *Builder {
7474
7575// ForInput represents the information set by the For method.
7676type ForInput struct {
77- object client.Object
78- predicates []predicate.Predicate
79- objectProjection objectProjection
80- err error
77+ object client.Object
78+ forceDefaultCluster bool // in cluster-aware mode, force the object to be watched in the default cluster
79+ predicates []predicate.Predicate
80+ objectProjection objectProjection
81+ err error
8182}
8283
8384// For defines the type of Object being *reconciled*, and configures the ControllerManagedBy to respond to create / delete /
@@ -100,10 +101,11 @@ func (blder *Builder) For(object client.Object, opts ...ForOption) *Builder {
100101
101102// OwnsInput represents the information set by Owns method.
102103type OwnsInput struct {
103- matchEveryOwner bool
104- object client.Object
105- predicates []predicate.Predicate
106- objectProjection objectProjection
104+ matchEveryOwner bool
105+ object client.Object
106+ forceDefaultCluster bool // in cluster-aware mode, force the object to be watched in the default cluster
107+ predicates []predicate.Predicate
108+ objectProjection objectProjection
107109}
108110
109111// Owns defines types of Objects being *generated* by the ControllerManagedBy, and configures the ControllerManagedBy to respond to
@@ -126,10 +128,11 @@ func (blder *Builder) Owns(object client.Object, opts ...OwnsOption) *Builder {
126128
127129// WatchesInput represents the information set by Watches method.
128130type WatchesInput struct {
129- src source.Source
130- eventHandler handler.EventHandler
131- predicates []predicate.Predicate
132- objectProjection objectProjection
131+ src source.Source
132+ forceDefaultCluster bool // in cluster-aware mode, force the object to be watched in the default cluster
133+ eventHandler handler.EventHandler
134+ predicates []predicate.Predicate
135+ objectProjection objectProjection
133136}
134137
135138// Watches defines the type of Object to watch, and configures the ControllerManagedBy to respond to create / delete /
@@ -284,7 +287,10 @@ func (blder *Builder) doWatch() error {
284287 if err != nil {
285288 return err
286289 }
287- src := source .Kind (blder .cluster .GetCache (), obj )
290+ src := clusterAwareSource {
291+ Source : source .Kind (blder .cluster .GetCache (), obj ),
292+ forceDefaultCluster : blder .forInput .forceDefaultCluster ,
293+ }
288294 hdler := & handler.EnqueueRequestForObject {}
289295 allPredicates := append ([]predicate.Predicate (nil ), blder .globalPredicates ... )
290296 allPredicates = append (allPredicates , blder .forInput .predicates ... )
@@ -302,7 +308,10 @@ func (blder *Builder) doWatch() error {
302308 if err != nil {
303309 return err
304310 }
305- src := source .Kind (blder .cluster .GetCache (), obj )
311+ src := clusterAwareSource {
312+ Source : source .Kind (blder .cluster .GetCache (), obj ),
313+ forceDefaultCluster : own .forceDefaultCluster ,
314+ }
306315 opts := []handler.OwnerOption {}
307316 if ! own .matchEveryOwner {
308317 opts = append (opts , handler .OnlyControllerOwner ())
@@ -342,7 +351,10 @@ func (blder *Builder) doWatch() error {
342351 }
343352 allPredicates := append ([]predicate.Predicate (nil ), blder .globalPredicates ... )
344353 allPredicates = append (allPredicates , w .predicates ... )
345- if err := blder .ctrl .Watch (w .src , w .eventHandler , allPredicates ... ); err != nil {
354+ if err := blder .ctrl .Watch (
355+ clusterAwareSource {Source : w .src , forceDefaultCluster : w .forceDefaultCluster },
356+ w .eventHandler , allPredicates ... ,
357+ ); err != nil {
346358 return err
347359 }
348360 }
@@ -431,3 +443,12 @@ func (blder *Builder) doController(r reconcile.Reconciler) error {
431443 blder .ctrl , err = newController (controllerName , blder .mgr , ctrlOptions )
432444 return err
433445}
446+
447+ type clusterAwareSource struct {
448+ source.Source
449+ forceDefaultCluster bool
450+ }
451+
452+ func (s clusterAwareSource ) ForceDefaultCluster () bool {
453+ return s .forceDefaultCluster
454+ }
0 commit comments