-
Notifications
You must be signed in to change notification settings - Fork 8
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #33 from linkernetworks/johnlin/get-nodeip
support to get node IP Former-commit-id: e10f487bb051e4a26588eb088bfb9e4cb071e243 [formerly e10f487bb051e4a26588eb088bfb9e4cb071e243 [formerly 1768230]] Former-commit-id: 11226fca1172de15fb5c05546604809889a32da4 Former-commit-id: 29cc033
- Loading branch information
Showing
5 changed files
with
145 additions
and
30 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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, | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
package kubernetes | ||
|
||
import ( | ||
"testing" | ||
|
||
"github.com/stretchr/testify/assert" | ||
|
||
fakeclientset "k8s.io/client-go/kubernetes/fake" | ||
) | ||
|
||
func TestNewKubeCtl(t *testing.T) { | ||
clientset := fakeclientset.NewSimpleClientset() | ||
namespace := "default" | ||
kubectl := New(clientset, namespace) | ||
assert.Equal(t, namespace, kubectl.Namespace) | ||
assert.NotNil(t, kubectl) | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,56 +1,113 @@ | ||
package kubernetes | ||
|
||
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" | ||
"testing" | ||
) | ||
|
||
func TestGetNode(t *testing.T) { | ||
clientset := fakeclientset.NewSimpleClientset() | ||
type KubeCtlNodeTestSuite struct { | ||
suite.Suite | ||
kubectl *KubeCtl | ||
fakeclient *fakeclientset.Clientset | ||
} | ||
|
||
func (suite *KubeCtlNodeTestSuite) SetupTest() { | ||
suite.fakeclient = fakeclientset.NewSimpleClientset() | ||
namespace := "default" | ||
suite.kubectl = New(suite.fakeclient, namespace) | ||
} | ||
|
||
func (suite *KubeCtlNodeTestSuite) TestGetNode() { | ||
node := corev1.Node{ | ||
ObjectMeta: metav1.ObjectMeta{ | ||
Name: "K8S-Node", | ||
}, | ||
} | ||
_, err := clientset.CoreV1().Nodes().Create(&node) | ||
assert.NoError(t, err) | ||
_, err := suite.fakeclient.CoreV1().Nodes().Create(&node) | ||
assert.NoError(suite.T(), err) | ||
|
||
result, err := GetNode(clientset, "K8S-Node") | ||
assert.NoError(t, err) | ||
assert.Equal(t, node.GetName(), result.GetName()) | ||
result, err := suite.kubectl.GetNode("K8S-Node") | ||
assert.NoError(suite.T(), err) | ||
assert.Equal(suite.T(), node.GetName(), result.GetName()) | ||
} | ||
|
||
func TestGetNodeFail(t *testing.T) { | ||
clientset := fakeclientset.NewSimpleClientset() | ||
|
||
_, err := GetNode(clientset, "UnKnown_Name") | ||
assert.Error(t, err) | ||
func (suite *KubeCtlNodeTestSuite) TestGetNodeFail() { | ||
_, err := suite.kubectl.GetNode("Unknown_Name") | ||
assert.Error(suite.T(), err) | ||
} | ||
|
||
func TestGetNodes(t *testing.T) { | ||
clientset := fakeclientset.NewSimpleClientset() | ||
|
||
func (suite *KubeCtlNodeTestSuite) TestGetNodes() { | ||
node := corev1.Node{ | ||
ObjectMeta: metav1.ObjectMeta{ | ||
Name: "K8S-Node1", | ||
}, | ||
} | ||
_, err := clientset.CoreV1().Nodes().Create(&node) | ||
assert.NoError(t, err) | ||
_, err := suite.fakeclient.CoreV1().Nodes().Create(&node) | ||
assert.NoError(suite.T(), err) | ||
|
||
node = corev1.Node{ | ||
ObjectMeta: metav1.ObjectMeta{ | ||
Name: "K8S-Node2", | ||
}, | ||
} | ||
_, err = clientset.CoreV1().Nodes().Create(&node) | ||
assert.NoError(t, err) | ||
_, err = suite.fakeclient.CoreV1().Nodes().Create(&node) | ||
assert.NoError(suite.T(), err) | ||
|
||
nodes, err := suite.kubectl.GetNodes() | ||
assert.NoError(suite.T(), err) | ||
assert.Equal(suite.T(), 2, len(nodes)) | ||
} | ||
|
||
func (suite *KubeCtlNodeTestSuite) TestGetNodeExternalIP() { | ||
nodeAddr := corev1.NodeAddress{ | ||
Type: "ExternalIP", | ||
Address: "192.168.0.100", | ||
} | ||
node := corev1.Node{ | ||
ObjectMeta: metav1.ObjectMeta{ | ||
Name: "K8S-Node", | ||
}, | ||
Status: corev1.NodeStatus{ | ||
Addresses: []corev1.NodeAddress{nodeAddr}, | ||
}, | ||
} | ||
_, err := suite.fakeclient.CoreV1().Nodes().Create(&node) | ||
assert.NoError(suite.T(), err) | ||
|
||
nodeIP, err := suite.kubectl.GetNodeExternalIP("K8S-Node") | ||
assert.NoError(suite.T(), err) | ||
assert.Equal(suite.T(), nodeAddr.Address, nodeIP) | ||
} | ||
|
||
func (suite *KubeCtlNodeTestSuite) TestGetInvalidNodeExternalIP() { | ||
nodeAddr := corev1.NodeAddress{ | ||
Type: "ExternalIP", | ||
Address: "192.168.0.100", | ||
} | ||
node := corev1.Node{ | ||
ObjectMeta: metav1.ObjectMeta{ | ||
Name: "K8S-Node", | ||
}, | ||
Status: corev1.NodeStatus{ | ||
Addresses: []corev1.NodeAddress{nodeAddr}, | ||
}, | ||
} | ||
_, err := suite.fakeclient.CoreV1().Nodes().Create(&node) | ||
assert.NoError(suite.T(), err) | ||
|
||
nodeIP, err := suite.kubectl.GetNodeExternalIP("K8S-Node-0") | ||
assert.Error(suite.T(), err) | ||
assert.Equal(suite.T(), "", nodeIP) | ||
} | ||
|
||
func (suite *KubeCtlNodeTestSuite) TearDownTest() {} | ||
|
||
nodes, err := GetNodes(clientset) | ||
assert.NoError(t, err) | ||
assert.Equal(t, 2, len(nodes)) | ||
func TestKubeNodeTestSuite(t *testing.T) { | ||
suite.Run(t, new(KubeCtlNodeTestSuite)) | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters