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
k8s.io/client-go 0.27.0 has breaking changes in
ResourceEventHandler
interface introduced in https://github.com/kubernetes/client-go/commit/5d70a118df80fd8ddb8fbd041af95acae49ae617We have a few implementations of the interface that are causing the upgrade to fail:
Need to update the code to use the new interfaces and upgrade the k8s go library