mirror of
https://github.com/niusmallnan/steve.git
synced 2025-09-18 16:12:35 +00:00
Add ability to get dynamic client
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
@@ -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)
|
||||
|
@@ -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)
|
||||
|
Reference in New Issue
Block a user