diff --git a/pkg/client/factory.go b/pkg/client/factory.go index f9119c4..98b7270 100644 --- a/pkg/client/factory.go +++ b/pkg/client/factory.go @@ -90,7 +90,7 @@ func (p *Factory) MetadataClient() metadata.Interface { return p.metadata } -func (p *Factory) DynamicClient() dynamic.Interface { +func (p *Factory) AdminDynamicClient() dynamic.Interface { return p.dynamic } @@ -111,6 +111,10 @@ func (p *Factory) AdminK8sInterface() (kubernetes.Interface, error) { return kubernetes.NewForConfig(p.clientCfg) } +func (p *Factory) DynamicClient(ctx *types.APIRequest) (dynamic.Interface, error) { + return newDynamicClient(ctx, p.clientCfg, p.impersonate) +} + func (p *Factory) Client(ctx *types.APIRequest, s *types.APISchema, namespace string) (dynamic.ResourceInterface, error) { return newClient(ctx, p.clientCfg, s, namespace, p.impersonate) } @@ -169,13 +173,17 @@ func setupConfig(ctx *types.APIRequest, cfg *rest.Config, impersonate bool) (*re return cfg, nil } -func newClient(ctx *types.APIRequest, cfg *rest.Config, s *types.APISchema, namespace string, impersonate bool) (dynamic.ResourceInterface, error) { +func newDynamicClient(ctx *types.APIRequest, cfg *rest.Config, impersonate bool) (dynamic.Interface, error) { cfg, err := setupConfig(ctx, cfg, impersonate) if err != nil { return nil, err } - client, err := dynamic.NewForConfig(cfg) + return dynamic.NewForConfig(cfg) +} + +func newClient(ctx *types.APIRequest, cfg *rest.Config, s *types.APISchema, namespace string, impersonate bool) (dynamic.ResourceInterface, error) { + client, err := newDynamicClient(ctx, cfg, impersonate) if err != nil { return nil, err } diff --git a/pkg/server/server.go b/pkg/server/server.go index 7fd5bc8..863d737 100644 --- a/pkg/server/server.go +++ b/pkg/server/server.go @@ -118,7 +118,7 @@ func setup(ctx context.Context, server *Server) error { asl = accesscontrol.NewAccessStore(ctx, true, server.controllers.RBAC) } - ccache := clustercache.NewClusterCache(ctx, cf.DynamicClient()) + ccache := clustercache.NewClusterCache(ctx, cf.AdminDynamicClient()) server.ClusterCache = ccache server.BaseSchemas, err = resources.DefaultSchemas(ctx, server.BaseSchemas, ccache, cf) diff --git a/pkg/stores/proxy/proxy_store.go b/pkg/stores/proxy/proxy_store.go index 92c4c40..7862b06 100644 --- a/pkg/stores/proxy/proxy_store.go +++ b/pkg/stores/proxy/proxy_store.go @@ -46,6 +46,7 @@ type ClientGetter interface { K8sInterface(ctx *types.APIRequest) (kubernetes.Interface, error) AdminK8sInterface() (kubernetes.Interface, error) Client(ctx *types.APIRequest, schema *types.APISchema, namespace string) (dynamic.ResourceInterface, error) + DynamicClient(ctx *types.APIRequest) (dynamic.Interface, error) AdminClient(ctx *types.APIRequest, schema *types.APISchema, namespace string) (dynamic.ResourceInterface, error) TableClient(ctx *types.APIRequest, schema *types.APISchema, namespace string) (dynamic.ResourceInterface, error) TableAdminClient(ctx *types.APIRequest, schema *types.APISchema, namespace string) (dynamic.ResourceInterface, error)