open-telemetry / opentelemetry-collector-contrib

Contrib repository for the OpenTelemetry Collector
https://opentelemetry.io
Apache License 2.0
3.02k stars 2.34k forks source link

[chore] Upgrade k8s.io/client-go dependency #21032

Closed dmitryax closed 1 year ago

dmitryax commented 1 year ago

k8s.io/client-go 0.27.0 has breaking changes in ResourceEventHandler interface introduced in https://github.com/kubernetes/client-go/commit/5d70a118df80fd8ddb8fbd041af95acae49ae617

We have a few implementations of the interface that are causing the upgrade to fail:

Error: ../../extension/observer/k8sobserver/handler.go:28:36: cannot use (*handler)(nil) (value of type *handler) as type "k8s.io/client-go/tools/cache".ResourceEventHandler in variable declaration:
    *handler does not implement "k8s.io/client-go/tools/cache".ResourceEventHandler (wrong type for OnAdd method)
        have OnAdd(objectInterface interface{})
        want OnAdd(obj interface{}, isInInitialList bool)
Error: ../../extension/observer/k8sobserver/extension.go:61:45: cannot use k.handler (variable of type *handler) as type "k8s.io/client-go/tools/cache".ResourceEventHandler in argument to podInformer.AddEventHandler:
    *handler does not implement "k8s.io/client-go/tools/cache".ResourceEventHandler (wrong type for OnAdd method)
        have OnAdd(objectInterface interface{})
        want OnAdd(obj interface{}, isInInitialList bool)
Error: ../../extension/observer/k8sobserver/extension.go:70:46: cannot use k.handler (variable of type *handler) as type "k8s.io/client-go/tools/cache".ResourceEventHandler in argument to nodeInformer.AddEventHandler:
    *handler does not implement "k8s.io/client-go/tools/cache".ResourceEventHandler (wrong type for OnAdd method)
        have OnAdd(objectInterface interface{})
        want OnAdd(obj interface{}, isInInitialList bool)
# github.com/open-telemetry/opentelemetry-collector-contrib/processor/k8sattributesprocessor/internal/kube
Error: ../../processor/k8sattributesprocessor/internal/kube/fake_informer.go:54:9: cannot use handler (variable of type "k8s.io/client-go/tools/cache".ResourceEventHandler) as type "k8s.io/client-go/tools/cache".ResourceEventHandlerRegistration in return statement:
    "k8s.io/client-go/tools/cache".ResourceEventHandler does not implement "k8s.io/client-go/tools/cache".ResourceEventHandlerRegistration (missing HasSynced method)
Error: ../../processor/k8sattributesprocessor/internal/kube/fake_informer.go:148:9: cannot use handler (variable of type "k8s.io/client-go/tools/cache".ResourceEventHandler) as type "k8s.io/client-go/tools/cache".ResourceEventHandlerRegistration in return statement:
    "k8s.io/client-go/tools/cache".ResourceEventHandler does not implement "k8s.io/client-go/tools/cache".ResourceEventHandlerRegistration (missing HasSynced method)

Need to update the code to use the new interfaces and upgrade the k8s go library

bryan-aguilar commented 1 year ago

@dmitryax can you assign this to me? I am looking into the processor and can update the extension also for the new interfaces.

atoulme commented 1 year ago

Done, it's yours @bryan-aguilar !