1
0
mirror of https://github.com/taigrr/wtf synced 2025-01-18 04:03:14 -08:00
wtf/modules/kubernetes/client.go
Andrew Suderman da0e1dbd5b
Adding a Kubernetes module for displaying Kubernetes cluster resources and info
Signed-off-by: Andrew Suderman <andrew@sudermanjr.com>
2019-08-05 21:43:52 -06:00

38 lines
810 B
Go

package kubernetes
import (
"sync"
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/tools/clientcmd"
)
var kubeClient *clientInstance
var clientOnce sync.Once
type clientInstance struct {
Client kubernetes.Interface
}
// getInstance returns a Kubernetes interface for a clientset
func (widget *Widget) getInstance() *clientInstance {
clientOnce.Do(func() {
if kubeClient == nil {
kubeClient = &clientInstance{
Client: widget.getKubeClient(),
}
}
})
return kubeClient
}
// getKubeClient returns a kubernetes clientset for the kubeconfig provided
func (widget *Widget) getKubeClient() kubernetes.Interface {
config, _ := clientcmd.BuildConfigFromFlags("", widget.kubeconfig)
clientset, err := kubernetes.NewForConfig(config)
if err != nil {
panic(err.Error)
}
return clientset
}