mirror of
https://github.com/niusmallnan/steve.git
synced 2025-09-19 17:15:42 +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
|
return p.metadata
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *Factory) DynamicClient() dynamic.Interface {
|
func (p *Factory) AdminDynamicClient() dynamic.Interface {
|
||||||
return p.dynamic
|
return p.dynamic
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -111,6 +111,10 @@ func (p *Factory) AdminK8sInterface() (kubernetes.Interface, error) {
|
|||||||
return kubernetes.NewForConfig(p.clientCfg)
|
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) {
|
func (p *Factory) Client(ctx *types.APIRequest, s *types.APISchema, namespace string) (dynamic.ResourceInterface, error) {
|
||||||
return newClient(ctx, p.clientCfg, s, namespace, p.impersonate)
|
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
|
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)
|
cfg, err := setupConfig(ctx, cfg, impersonate)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
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 {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@@ -118,7 +118,7 @@ func setup(ctx context.Context, server *Server) error {
|
|||||||
asl = accesscontrol.NewAccessStore(ctx, true, server.controllers.RBAC)
|
asl = accesscontrol.NewAccessStore(ctx, true, server.controllers.RBAC)
|
||||||
}
|
}
|
||||||
|
|
||||||
ccache := clustercache.NewClusterCache(ctx, cf.DynamicClient())
|
ccache := clustercache.NewClusterCache(ctx, cf.AdminDynamicClient())
|
||||||
server.ClusterCache = ccache
|
server.ClusterCache = ccache
|
||||||
|
|
||||||
server.BaseSchemas, err = resources.DefaultSchemas(ctx, server.BaseSchemas, ccache, cf)
|
server.BaseSchemas, err = resources.DefaultSchemas(ctx, server.BaseSchemas, ccache, cf)
|
||||||
|
@@ -46,6 +46,7 @@ type ClientGetter interface {
|
|||||||
K8sInterface(ctx *types.APIRequest) (kubernetes.Interface, error)
|
K8sInterface(ctx *types.APIRequest) (kubernetes.Interface, error)
|
||||||
AdminK8sInterface() (kubernetes.Interface, error)
|
AdminK8sInterface() (kubernetes.Interface, error)
|
||||||
Client(ctx *types.APIRequest, schema *types.APISchema, namespace string) (dynamic.ResourceInterface, 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)
|
AdminClient(ctx *types.APIRequest, schema *types.APISchema, namespace string) (dynamic.ResourceInterface, error)
|
||||||
TableClient(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)
|
TableAdminClient(ctx *types.APIRequest, schema *types.APISchema, namespace string) (dynamic.ResourceInterface, error)
|
||||||
|
Reference in New Issue
Block a user