mirror of
https://github.com/edgelesssys/constellation.git
synced 2024-12-23 22:49:43 -05:00
2d8fcd9bf4
Co-authored-by: Malte Poll <mp@edgeless.systems> Co-authored-by: katexochen <katexochen@users.noreply.github.com> Co-authored-by: Daniel Weiße <dw@edgeless.systems> Co-authored-by: Thomas Tendyck <tt@edgeless.systems> Co-authored-by: Benedict Schlueter <bs@edgeless.systems> Co-authored-by: leongross <leon.gross@rub.de> Co-authored-by: Moritz Eckert <m1gh7ym0@gmail.com>
65 lines
1.8 KiB
Go
65 lines
1.8 KiB
Go
package client
|
|
|
|
import (
|
|
"k8s.io/apimachinery/pkg/api/meta"
|
|
"k8s.io/client-go/discovery"
|
|
"k8s.io/client-go/discovery/cached/memory"
|
|
"k8s.io/client-go/rest"
|
|
"k8s.io/client-go/restmapper"
|
|
"k8s.io/client-go/tools/clientcmd"
|
|
)
|
|
|
|
// restClientGetter implements k8s.io/cli-runtime/pkg/resource.RESTClientGetter.
|
|
type restClientGetter struct {
|
|
clientconfig clientcmd.ClientConfig
|
|
}
|
|
|
|
// newRESTClientGetter creates a new restClientGetter using a kubeconfig.
|
|
func newRESTClientGetter(kubeconfig []byte) (*restClientGetter, error) {
|
|
clientconfig, err := clientcmd.NewClientConfigFromBytes(kubeconfig)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
rawconfig, err := clientconfig.RawConfig()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
clientconfig = clientcmd.NewDefaultClientConfig(rawconfig, &clientcmd.ConfigOverrides{})
|
|
|
|
return &restClientGetter{clientconfig}, nil
|
|
}
|
|
|
|
// ToRESTConfig returns k8s REST client config.
|
|
func (r *restClientGetter) ToRESTConfig() (*rest.Config, error) {
|
|
return r.clientconfig.ClientConfig()
|
|
}
|
|
|
|
// ToDiscoveryClient creates new k8s discovery client from restClientGetter.
|
|
func (r *restClientGetter) ToDiscoveryClient() (discovery.CachedDiscoveryInterface, error) {
|
|
restconfig, err := r.clientconfig.ClientConfig()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
dc, err := discovery.NewDiscoveryClientForConfig(restconfig)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return memory.NewMemCacheClient(dc), nil
|
|
}
|
|
|
|
// ToRESTMapper creates new k8s RESTMapper from restClientGetter.
|
|
func (r *restClientGetter) ToRESTMapper() (meta.RESTMapper, error) {
|
|
dc, err := r.ToDiscoveryClient()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return restmapper.NewDeferredDiscoveryRESTMapper(dc), nil
|
|
}
|
|
|
|
// ToRawKubeConfigLoader returns the inner k8s ClientConfig.
|
|
func (r *restClientGetter) ToRawKubeConfigLoader() clientcmd.ClientConfig {
|
|
return r.clientconfig
|
|
}
|