Skip to content

Instantly share code, notes, and snippets.

@manuelmazzuola
Last active July 27, 2023 12:48
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save manuelmazzuola/943db0cda93dfc435912968e7cf34126 to your computer and use it in GitHub Desktop.
Save manuelmazzuola/943db0cda93dfc435912968e7cf34126 to your computer and use it in GitHub Desktop.
how to implement a RESTClientGetter for helm action pkg
package main
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"
"k8s.io/client-go/tools/clientcmd/api"
)
type RESTClientGetter struct {
clientconfig clientcmd.ClientConfig
}
func NewRESTClientGetter(kubeconfig string, namespace string) (*RESTClientGetter, error) {
clientconfig, err := clientcmd.NewClientConfigFromBytes([]byte(kubeconfig))
if err != nil {
return nil, err
}
rawconfig, err := clientconfig.RawConfig()
if err != nil {
return nil, err
}
clientconfig = clientcmd.NewDefaultClientConfig(rawconfig, &clientcmd.ConfigOverrides{
Context: api.Context{
Namespace: namespace,
},
})
return &RESTClientGetter{clientconfig}, nil
}
func (r *RESTClientGetter) ToRESTConfig() (*rest.Config, error) {
return r.clientconfig.ClientConfig()
}
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
}
func (r *RESTClientGetter) ToRESTMapper() (meta.RESTMapper, error) {
dc, err := r.ToDiscoveryClient()
if err != nil {
return nil, err
}
return restmapper.NewDeferredDiscoveryRESTMapper(dc), nil
}
func (r *RESTClientGetter) ToRawKubeConfigLoader() clientcmd.ClientConfig {
return r.clientconfig
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment