mirror of
https://github.com/kubernetes-sigs/node-feature-discovery.git
synced 2025-03-13 20:30:03 +00:00
pkg/apihelpers: split out loading of kubeconfig to a separate function
Make kubeconfig loading and parsing re-usable for multiple clients.
This commit is contained in:
parent
5a193fd15a
commit
237c4f7824
3 changed files with 36 additions and 31 deletions
|
@ -31,24 +31,11 @@ import (
|
|||
|
||||
// Implements APIHelpers
|
||||
type K8sHelpers struct {
|
||||
Kubeconfig string
|
||||
Kubeconfig *restclient.Config
|
||||
}
|
||||
|
||||
func (h K8sHelpers) GetClient() (*k8sclient.Clientset, error) {
|
||||
// Set up an in-cluster K8S client.
|
||||
var config *restclient.Config
|
||||
var err error
|
||||
|
||||
if h.Kubeconfig == "" {
|
||||
config, err = restclient.InClusterConfig()
|
||||
} else {
|
||||
config, err = clientcmd.BuildConfigFromFlags("", h.Kubeconfig)
|
||||
}
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
clientset, err := k8sclient.NewForConfig(config)
|
||||
clientset, err := k8sclient.NewForConfig(h.Kubeconfig)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
@ -56,20 +43,7 @@ func (h K8sHelpers) GetClient() (*k8sclient.Clientset, error) {
|
|||
}
|
||||
|
||||
func (h K8sHelpers) GetTopologyClient() (*topologyclientset.Clientset, error) {
|
||||
// Set up an in-cluster K8S client.
|
||||
var config *restclient.Config
|
||||
var err error
|
||||
|
||||
if h.Kubeconfig == "" {
|
||||
config, err = restclient.InClusterConfig()
|
||||
} else {
|
||||
config, err = clientcmd.BuildConfigFromFlags("", h.Kubeconfig)
|
||||
}
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
topologyClient, err := topologyclientset.NewForConfig(config)
|
||||
topologyClient, err := topologyclientset.NewForConfig(h.Kubeconfig)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
@ -132,3 +106,10 @@ func (h K8sHelpers) GetPod(cli *k8sclient.Clientset, namespace string, podName s
|
|||
|
||||
return pod, nil
|
||||
}
|
||||
|
||||
func GetKubeconfig(path string) (*restclient.Config, error) {
|
||||
if path == "" {
|
||||
return restclient.InClusterConfig()
|
||||
}
|
||||
return clientcmd.BuildConfigFromFlags("", path)
|
||||
}
|
||||
|
|
|
@ -91,7 +91,15 @@ func (w *nfdTopologyUpdater) Run() error {
|
|||
return fmt.Errorf("failed to get PodResource Client: %w", err)
|
||||
}
|
||||
|
||||
kubeApihelper := apihelper.K8sHelpers{Kubeconfig: w.args.KubeConfigFile}
|
||||
var kubeApihelper apihelper.K8sHelpers
|
||||
if !w.args.NoPublish {
|
||||
kubeconfig, err := apihelper.GetKubeconfig(w.args.KubeConfigFile)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
kubeApihelper = apihelper.K8sHelpers{Kubeconfig: kubeconfig}
|
||||
}
|
||||
|
||||
var resScan resourcemonitor.ResourcesScanner
|
||||
|
||||
resScan, err = resourcemonitor.NewPodResourcesScanner(w.resourcemonitorArgs.Namespace, podResClient, kubeApihelper)
|
||||
|
|
|
@ -39,6 +39,7 @@ import (
|
|||
api "k8s.io/api/core/v1"
|
||||
"k8s.io/apimachinery/pkg/api/errors"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
restclient "k8s.io/client-go/rest"
|
||||
"k8s.io/klog/v2"
|
||||
|
||||
"sigs.k8s.io/node-feature-discovery/pkg/apihelper"
|
||||
|
@ -110,6 +111,7 @@ type nfdMaster struct {
|
|||
stop chan struct{}
|
||||
ready chan bool
|
||||
apihelper apihelper.APIHelpers
|
||||
kubeconfig *restclient.Config
|
||||
}
|
||||
|
||||
// Create new NfdMaster server instance.
|
||||
|
@ -145,7 +147,13 @@ func NewNfdMaster(args *Args) (NfdMaster, error) {
|
|||
}
|
||||
|
||||
// Initialize Kubernetes API helpers
|
||||
nfd.apihelper = apihelper.K8sHelpers{Kubeconfig: args.Kubeconfig}
|
||||
if !args.NoPublish {
|
||||
kubeconfig, err := nfd.getKubeconfig()
|
||||
if err != nil {
|
||||
return nfd, err
|
||||
}
|
||||
nfd.apihelper = apihelper.K8sHelpers{Kubeconfig: kubeconfig}
|
||||
}
|
||||
|
||||
return nfd, nil
|
||||
}
|
||||
|
@ -519,6 +527,14 @@ func (m *nfdMaster) annotationName(name string) string {
|
|||
return path.Join(m.annotationNs, name)
|
||||
}
|
||||
|
||||
func (m *nfdMaster) getKubeconfig() (*restclient.Config, error) {
|
||||
var err error
|
||||
if m.kubeconfig == nil {
|
||||
m.kubeconfig, err = apihelper.GetKubeconfig(m.args.Kubeconfig)
|
||||
}
|
||||
return m.kubeconfig, err
|
||||
}
|
||||
|
||||
// Remove any labels having the given prefix
|
||||
func removeLabelsWithPrefix(n *api.Node, search string) []apihelper.JsonPatch {
|
||||
var p []apihelper.JsonPatch
|
||||
|
|
Loading…
Add table
Reference in a new issue