forked from networkservicemesh/cloudtest
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathutils.go
38 lines (32 loc) · 873 Bytes
/
utils.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
package k8s
import (
v1 "k8s.io/api/core/v1"
v12 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/rest"
"k8s.io/client-go/tools/clientcmd"
)
// Utils - basic Kubernetes utils.
type Utils struct {
config *rest.Config
clientset *kubernetes.Clientset
}
// NewK8sUtils - Creates a new k8s utils with config file.
func NewK8sUtils(configPath string) (*Utils, error) {
utils := &Utils{}
config, err := clientcmd.BuildConfigFromFlags("", configPath)
if err != nil {
return nil, err
}
utils.config = config
utils.clientset, err = kubernetes.NewForConfig(utils.config)
return utils, err
}
// GetNodes - return a list of kubernetes nodes.
func (u *Utils) GetNodes() ([]v1.Node, error) {
nodes, err := u.clientset.CoreV1().Nodes().List(v12.ListOptions{})
if err != nil {
return nil, err
}
return nodes.Items, nil
}