From cadc020ac590c531d6815ba8fbe8b0e05d8470f8 Mon Sep 17 00:00:00 2001 From: Alvaro Aleman Date: Tue, 5 Dec 2023 19:38:33 -0500 Subject: [PATCH] :warning: Drop DiscoveryRESTMapper The discovery restmapper was unused except for two places that we missed (when creating a cache directly as opposed through the manager and in a test). The discovery restmapper only ever loads mappings once during startup and is unable to reload them if they change. It also isn't lazy and we don't want anyone using it. --- pkg/cache/cache.go | 2 +- pkg/client/apiutil/apimachinery.go | 21 --------------------- pkg/handler/eventhandler_test.go | 2 +- 3 files changed, 2 insertions(+), 23 deletions(-) diff --git a/pkg/cache/cache.go b/pkg/cache/cache.go index cbc1ee586f..1cecf88e5e 100644 --- a/pkg/cache/cache.go +++ b/pkg/cache/cache.go @@ -412,7 +412,7 @@ func defaultOpts(config *rest.Config, opts Options) (Options, error) { // Construct a new Mapper if unset if opts.Mapper == nil { var err error - opts.Mapper, err = apiutil.NewDiscoveryRESTMapper(config, opts.HTTPClient) + opts.Mapper, err = apiutil.NewDynamicRESTMapper(config, opts.HTTPClient) if err != nil { return Options{}, fmt.Errorf("could not create RESTMapper from config: %w", err) } diff --git a/pkg/client/apiutil/apimachinery.go b/pkg/client/apiutil/apimachinery.go index 6a1bfb546e..3c0206bea5 100644 --- a/pkg/client/apiutil/apimachinery.go +++ b/pkg/client/apiutil/apimachinery.go @@ -31,11 +31,9 @@ import ( "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/apimachinery/pkg/runtime/serializer" - "k8s.io/client-go/discovery" "k8s.io/client-go/dynamic" clientgoscheme "k8s.io/client-go/kubernetes/scheme" "k8s.io/client-go/rest" - "k8s.io/client-go/restmapper" ) var ( @@ -60,25 +58,6 @@ func AddToProtobufScheme(addToScheme func(*runtime.Scheme) error) error { return addToScheme(protobufScheme) } -// NewDiscoveryRESTMapper constructs a new RESTMapper based on discovery -// information fetched by a new client with the given config. -func NewDiscoveryRESTMapper(c *rest.Config, httpClient *http.Client) (meta.RESTMapper, error) { - if httpClient == nil { - return nil, fmt.Errorf("httpClient must not be nil, consider using rest.HTTPClientFor(c) to create a client") - } - - // Get a mapper - dc, err := discovery.NewDiscoveryClientForConfigAndClient(c, httpClient) - if err != nil { - return nil, err - } - gr, err := restmapper.GetAPIGroupResources(dc) - if err != nil { - return nil, err - } - return restmapper.NewDiscoveryRESTMapper(gr), nil -} - // IsObjectNamespaced returns true if the object is namespace scoped. // For unstructured objects the gvk is found from the object itself. func IsObjectNamespaced(obj runtime.Object, scheme *runtime.Scheme, restmapper meta.RESTMapper) (bool, error) { diff --git a/pkg/handler/eventhandler_test.go b/pkg/handler/eventhandler_test.go index 4743e748c6..0df77c70d0 100644 --- a/pkg/handler/eventhandler_test.go +++ b/pkg/handler/eventhandler_test.go @@ -54,7 +54,7 @@ var _ = Describe("Eventhandler", func() { httpClient, err := rest.HTTPClientFor(cfg) Expect(err).ShouldNot(HaveOccurred()) - mapper, err = apiutil.NewDiscoveryRESTMapper(cfg, httpClient) + mapper, err = apiutil.NewDynamicRESTMapper(cfg, httpClient) Expect(err).ShouldNot(HaveOccurred()) })