Add ability to get dynamic client

This commit is contained in:
Darren Shepherd
2020-10-30 16:08:28 -07:00
parent 92638937df
commit 3df58506a2
3 changed files with 13 additions and 4 deletions

View File

@@ -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
}

View File

@@ -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)

View File

@@ -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)