Skip to content

Commit

Permalink
add kubectl class
Browse files Browse the repository at this point in the history
  • Loading branch information
John-Lin committed Jun 23, 2018
1 parent 536c1e1 commit 1e7a421
Show file tree
Hide file tree
Showing 4 changed files with 59 additions and 24 deletions.
17 changes: 17 additions & 0 deletions src/kubernetes/kubectl.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package kubernetes

import (
"k8s.io/client-go/kubernetes"
)

type KubeCtl struct {
Clientset kubernetes.Interface
Namespace string
}

func New(clientset kubernetes.Interface, namespace string) *KubeCtl {
return &KubeCtl{
Clientset: clientset,
Namespace: namespace,
}
}
13 changes: 6 additions & 7 deletions src/kubernetes/nodes.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,15 @@ package kubernetes
import (
corev1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/client-go/kubernetes"
)

func GetNode(clientset kubernetes.Interface, name string) (*corev1.Node, error) {
return clientset.CoreV1().Nodes().Get(name, metav1.GetOptions{})
func (kc *KubeCtl) GetNode(name string) (*corev1.Node, error) {
return kc.Clientset.CoreV1().Nodes().Get(name, metav1.GetOptions{})
}

func GetNodes(clientset kubernetes.Interface) ([]*corev1.Node, error) {
func (kc *KubeCtl) GetNodes() ([]*corev1.Node, error) {
nodes := []*corev1.Node{}
nodesList, err := clientset.CoreV1().Nodes().List(metav1.ListOptions{})
nodesList, err := kc.Clientset.CoreV1().Nodes().List(metav1.ListOptions{})
if err != nil {
return nodes, err
}
Expand All @@ -22,8 +21,8 @@ func GetNodes(clientset kubernetes.Interface) ([]*corev1.Node, error) {
return nodes, nil
}

func GetNodeExternalIP(clientset kubernetes.Interface, name string) (string, error) {
node, err := GetNode(clientset, name)
func (kc *KubeCtl) GetNodeExternalIP(name string) (string, error) {
node, err := kc.GetNode(name)
if err != nil {
return "", err
}
Expand Down
41 changes: 24 additions & 17 deletions src/kubernetes/nodes_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,60 +4,67 @@ import (
"testing"

"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/suite"

corev1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
fakeclientset "k8s.io/client-go/kubernetes/fake"
)

func TestGetNode(t *testing.T) {
type KubeCtlTestSuite struct {
suite.Suite
kubectl *KubeCtl
fakeclient fakeclientset.Clientset
}

func (suite *KubeCtlTestSuite) SetupTest() {
clientset := fakeclientset.NewSimpleClientset()
namespace := "default"
suite.kubectl = New(clientset, namespace)
}

func (suite *KubeCtlTestSuite) TestGetNode(t *testing.T) {
node := corev1.Node{
ObjectMeta: metav1.ObjectMeta{
Name: "K8S-Node",
},
}
_, err := clientset.CoreV1().Nodes().Create(&node)
_, err := suite.fakeclient.CoreV1().Nodes().Create(&node)
assert.NoError(t, err)

result, err := GetNode(clientset, "K8S-Node")
result, err := suite.kubectl.GetNode("K8S-Node")
assert.NoError(t, err)
assert.Equal(t, node.GetName(), result.GetName())
}

func TestGetNodeFail(t *testing.T) {
clientset := fakeclientset.NewSimpleClientset()

_, err := GetNode(clientset, "UnKnown_Name")
func (suite *KubeCtlTestSuite) TestGetNodeFail(t *testing.T) {
_, err := suite.kubectl.GetNode("UnKnown_Name")
assert.Error(t, err)
}

func TestGetNodes(t *testing.T) {
clientset := fakeclientset.NewSimpleClientset()

func (suite *KubeCtlTestSuite) TestGetNodes(t *testing.T) {
node := corev1.Node{
ObjectMeta: metav1.ObjectMeta{
Name: "K8S-Node1",
},
}
_, err := clientset.CoreV1().Nodes().Create(&node)
_, err := suite.fakeclient.CoreV1().Nodes().Create(&node)
assert.NoError(t, err)

node = corev1.Node{
ObjectMeta: metav1.ObjectMeta{
Name: "K8S-Node2",
},
}
_, err = clientset.CoreV1().Nodes().Create(&node)
_, err = suite.fakeclient.CoreV1().Nodes().Create(&node)
assert.NoError(t, err)

nodes, err := GetNodes(clientset)
nodes, err := suite.kubectl.GetNodes()
assert.NoError(t, err)
assert.Equal(t, 2, len(nodes))
}

func TestGetNodeExternalIP(t *testing.T) {
clientset := fakeclientset.NewSimpleClientset()
func (suite *KubeCtlTestSuite) TestGetNodeExternalIP(t *testing.T) {
nodeAddr := corev1.NodeAddress{
Type: "ExternalIP",
Address: "192.168.0.100",
Expand All @@ -70,10 +77,10 @@ func TestGetNodeExternalIP(t *testing.T) {
Addresses: []corev1.NodeAddress{nodeAddr},
},
}
_, err := clientset.CoreV1().Nodes().Create(&node)
_, err := suite.fakeclient.CoreV1().Nodes().Create(&node)
assert.NoError(t, err)

nodeIP, err := GetNodeExternalIP(clientset, "K8S-Node")
nodeIP, err := suite.kubectl.GetNodeExternalIP("K8S-Node")
assert.NoError(t, err)
assert.Equal(t, nodeAddr.Address, nodeIP)
}
12 changes: 12 additions & 0 deletions vendor/vendor.json
Original file line number Diff line number Diff line change
Expand Up @@ -596,6 +596,18 @@
"revision": "f35b8ab0b5a2cef36673838d662e249dd9c94686",
"revisionTime": "2018-05-06T18:05:49Z"
},
{
"checksumSHA1": "wnEANt4k5X/KGwoFyfSSnpxULm4=",
"path": "github.com/stretchr/testify/require",
"revision": "f35b8ab0b5a2cef36673838d662e249dd9c94686",
"revisionTime": "2018-05-06T18:05:49Z"
},
{
"checksumSHA1": "uefllr2OtKBGo/kQSAPbW3w6p0A=",
"path": "github.com/stretchr/testify/suite",
"revision": "f35b8ab0b5a2cef36673838d662e249dd9c94686",
"revisionTime": "2018-05-06T18:05:49Z"
},
{
"checksumSHA1": "L1vKtjhZ2Lej0kfsLaTUm7ps/Yg=",
"path": "github.com/x-cray/logrus-prefixed-formatter",
Expand Down

0 comments on commit 1e7a421

Please sign in to comment.