@@ -25,9 +25,10 @@ import (
25
25
"time"
26
26
27
27
"github.com/golang/glog"
28
- "github.com/kubernetes-sigs/kubebuilder/pkg/controller/handlefunctions "
28
+ "github.com/kubernetes-sigs/kubebuilder/pkg/controller/eventhandlers "
29
29
"github.com/kubernetes-sigs/kubebuilder/pkg/controller/informers"
30
30
"github.com/kubernetes-sigs/kubebuilder/pkg/controller/metrics"
31
+ "github.com/kubernetes-sigs/kubebuilder/pkg/controller/predicates"
31
32
"github.com/kubernetes-sigs/kubebuilder/pkg/controller/types"
32
33
"github.com/kubernetes-sigs/kubebuilder/pkg/inject/run"
33
34
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -41,7 +42,7 @@ import (
41
42
var (
42
43
// DefaultReconcileFn is used by GenericController if Reconcile is not set
43
44
DefaultReconcileFn = func (k types.ReconcileKey ) error {
44
- log .Printf ("No ReconcileFn definded - skipping %+v" , k )
45
+ log .Printf ("No ReconcileFn defined - skipping %+v" , k )
45
46
return nil
46
47
}
47
48
@@ -87,34 +88,38 @@ func (gc *GenericController) GetMetrics() metrics.Metrics {
87
88
}
88
89
}
89
90
90
- // Watch watches objects matching obj's type and enqueues their keys.
91
- func (gc * GenericController ) Watch (obj metav1.Object ) error {
91
+ // Watch watches objects matching obj's type and enqueues their keys to be reconcild .
92
+ func (gc * GenericController ) Watch (obj metav1.Object , p ... predicates. Predicate ) error {
92
93
gc .once .Do (gc .init )
93
- return gc .queue .watchFor (obj )
94
+ return gc .queue .addEventHandler (obj ,
95
+ eventhandlers.MapAndEnqueue {Map : eventhandlers .MapToSelf , Predicates : p })
94
96
}
95
97
96
- // WatchAndMapToController watches objects matching obj's type and enqueues the keys of their controllers.
97
- func (gc * GenericController ) WatchAndMapToController (obj metav1.Object , gvks ... metav1.GroupVersionKind ) error {
98
+ // WatchControllerOf watches for events for objects matching obj's type and enqueues events for the
99
+ // controller of the object if the controller UID matches the ownerref UID.
100
+ // Will walk the owners references looking up the controller using the path function and comparing the UID of
101
+ // the object to the ownersref UID.
102
+ // e.g. if obj was a Pod and the path contained lookup functions for ReplicaSet, Deployment, Foo it would walk
103
+ // Pod -> (controller) ReplicaSet -> (controller) Deployment -> (controller) Foo and reconcile Foo only.
104
+ func (gc * GenericController ) WatchControllerOf (obj metav1.Object , path eventhandlers.Path ,
105
+ p ... predicates.Predicate ) error {
98
106
gc .once .Do (gc .init )
99
- return gc .queue .watchForAndMapToController (obj , gvks ... )
107
+ return gc .queue .addEventHandler (obj ,
108
+ eventhandlers.MapAndEnqueue {Map : eventhandlers.MapToController {Path : path }.Map , Predicates : p })
100
109
}
101
110
102
- func (gc * GenericController ) WatchAndMapToControllerIf (obj metav1.Object ,
103
- p handlefunctions.Predicate , gvks ... metav1.GroupVersionKind ) error {
111
+ // WatchTransformationOf watches objects matching obj's type and enqueues the key returned by mapFn.
112
+ func (gc * GenericController ) WatchTransformationOf (obj metav1.Object , mapFn eventhandlers.ObjToKey ,
113
+ p ... predicates.Predicate ) error {
104
114
gc .once .Do (gc .init )
105
- return gc .queue .watchForAndMapToControllerIf (obj , p , gvks ... )
115
+ return gc .queue .addEventHandler (obj ,
116
+ eventhandlers.MapAndEnqueue {Map : mapFn , Predicates : p })
106
117
}
107
118
108
- // WatchAndMap watches objects matching obj's type and enqueues the key returned by mapFn .
109
- func (gc * GenericController ) WatchAndMap (obj metav1.Object , mapFn handlefunctions. ObjToKey ) error {
119
+ // WatchEvents watches objects matching obj's type and uses the functions from provider to handle events .
120
+ func (gc * GenericController ) WatchEvents (obj metav1.Object , provider types. HandleFnProvider ) error {
110
121
gc .once .Do (gc .init )
111
- return gc .queue .watchForAndMapToNewObjectKey (obj , mapFn )
112
- }
113
-
114
- // WatchAndHandleEvents watches objects matching obj's type and uses the functions from provider to handle events.
115
- func (gc * GenericController ) WatchAndHandleEvents (obj metav1.Object , provider types.HandleFnProvider ) error {
116
- gc .once .Do (gc .init )
117
- return gc .queue .watchForAndHandleEvent (obj , fnToInterfaceAdapter {provider })
122
+ return gc .queue .addEventHandler (obj , fnToInterfaceAdapter {provider })
118
123
}
119
124
120
125
// WatchChannel enqueues object keys read from the channel.
0 commit comments