diff --git a/pkg/eventlistener/event-listener.go b/pkg/eventlistener/event-listener.go index 13c8055..5f1ef51 100644 --- a/pkg/eventlistener/event-listener.go +++ b/pkg/eventlistener/event-listener.go @@ -68,7 +68,7 @@ type Resource struct { type CallbackFn func(Event, interface{}) error // RestClientFn will be used to get a REST request -type RestClientFn func(clientset *kubernetes.Clientset) *rest.Request +type RestClientFn func(clientset *kubernetes.Clientset) rest.Interface // NewEventListener returns a pointer to EventListener func NewEventListener(ctx context.Context, kubeConfig, kubeContext string, errHandler func(error), logLevel string) *EventListener { @@ -109,7 +109,7 @@ func (e *EventListener) Init() (err error) { // Listen for incoming events from a kubernetes instance func (e *EventListener) Listen(resource *Resource) (err error) { - listWatcher := e.newFilteredListWatchFromClient(resource.RestClient(e.clientSet), fields.Everything()) + listWatcher := e.newFilteredListWatchFromClient(resource.RestClient(e.clientSet), resource.ResourceName, fields.Everything()) queue := workqueue.NewRateLimitingQueue(workqueue.DefaultControllerRateLimiter()) @@ -161,14 +161,15 @@ func (e *EventListener) getKubeConfig() (config *rest.Config, err error) { ).ClientConfig() } -func (e *EventListener) newFilteredListWatchFromClient(r *rest.Request, fieldSelector fields.Selector) *cache.ListWatch { +func (e *EventListener) newFilteredListWatchFromClient(c cache.Getter, resource string, fieldSelector fields.Selector) *cache.ListWatch { optionsModifier := func(options *metav1.ListOptions) { options.FieldSelector = fieldSelector.String() } listFunc := func(options metav1.ListOptions) (runtime.Object, error) { optionsModifier(&options) - return r. + return c.Get(). + Resource(resource). VersionedParams(&options, metav1.ParameterCodec). Do(). Get() @@ -176,7 +177,8 @@ func (e *EventListener) newFilteredListWatchFromClient(r *rest.Request, fieldSel watchFunc := func(options metav1.ListOptions) (watch.Interface, error) { options.Watch = true optionsModifier(&options) - return r. + return c.Get(). + Resource(resource). VersionedParams(&options, metav1.ParameterCodec). Watch() } diff --git a/pkg/resource/ingress.go b/pkg/resource/ingress.go index 7ab81ef..beb09fd 100644 --- a/pkg/resource/ingress.go +++ b/pkg/resource/ingress.go @@ -18,8 +18,8 @@ func getIngress() resourceType { fn: func(callback string) (r *eventlistener.Resource, e error) { r = &eventlistener.Resource{} r.ResourceName = "ingresses" - r.RestClient = func(clientset *kubernetes.Clientset) *rest.Request { - return clientset.NetworkingV1beta1().RESTClient().Get().Resource(r.ResourceName) + r.RestClient = func(clientset *kubernetes.Clientset) rest.Interface { + return clientset.NetworkingV1beta1().RESTClient() } r.ResourceType = &v1beta1.Ingress{} r.Callback = createCallbackFn( diff --git a/pkg/resource/pod.go b/pkg/resource/pod.go index f56255c..98c52cc 100644 --- a/pkg/resource/pod.go +++ b/pkg/resource/pod.go @@ -19,8 +19,8 @@ func getPod() resourceType { fn: func(callback string) (r *eventlistener.Resource, e error) { r = &eventlistener.Resource{} r.ResourceName = "pods" - r.RestClient = func(clientset *kubernetes.Clientset) *rest.Request { - return clientset.CoreV1().RESTClient().Get().Resource(r.ResourceName) + r.RestClient = func(clientset *kubernetes.Clientset) rest.Interface { + return clientset.CoreV1().RESTClient() } r.ResourceType = &v1.Pod{} r.Callback = createCallbackFn( diff --git a/pkg/resource/serviceaccount.go b/pkg/resource/serviceaccount.go index 4b64e9d..ef6a29c 100644 --- a/pkg/resource/serviceaccount.go +++ b/pkg/resource/serviceaccount.go @@ -19,8 +19,8 @@ func getServiceAccount() resourceType { fn: func(callback string) (r *eventlistener.Resource, e error) { r = &eventlistener.Resource{} r.ResourceName = "serviceaccounts" - r.RestClient = func(clientset *kubernetes.Clientset) *rest.Request { - return clientset.CoreV1().RESTClient().Get().Resource(r.ResourceName) + r.RestClient = func(clientset *kubernetes.Clientset) rest.Interface { + return clientset.CoreV1().RESTClient() } r.ResourceType = &v1.ServiceAccount{} r.Callback = createCallbackFn(