Skip to content

Commit

Permalink
Add k8s get node by name and list nodes
Browse files Browse the repository at this point in the history
  • Loading branch information
chenyunchen committed Jun 20, 2018
1 parent a4b499e commit 371abbf
Show file tree
Hide file tree
Showing 7 changed files with 277 additions and 13 deletions.
7 changes: 5 additions & 2 deletions config/k8s.json
Original file line number Diff line number Diff line change
Expand Up @@ -40,5 +40,8 @@
"dbVersion": "v1.0.0",
"version": "<GIT_COMMIT>",
"logFileName": "access_log"
}
}
},
"kubernetes": {
"namespace": "default"
}
}
5 changes: 4 additions & 1 deletion config/local.json
Original file line number Diff line number Diff line change
Expand Up @@ -29,5 +29,8 @@
"dbVersion": "v1.0.0",
"version": "local",
"logFileName": "access_log"
},
"kubernetes": {
"namespace": "default"
}
}
}
5 changes: 4 additions & 1 deletion config/testing.json
Original file line number Diff line number Diff line change
Expand Up @@ -29,5 +29,8 @@
"dbVersion": "v1.0.0",
"version": "local",
"logFileName": "access_log"
},
"kubernetes": {
"namespace": "default"
}
}
}
25 changes: 25 additions & 0 deletions src/kubernetes/nodes.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package kubernetes

import (
v1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/client-go/kubernetes"
)

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

func GetNodes(clientset *kubernetes.Clientset) ([]*v1.Node, error) {
nodes := []*v1.Node{}
nodesList, err := clientset.CoreV1().Nodes().List(metav1.ListOptions{})
if err != nil {
return nodes, err
}

for _, n := range nodesList.Items {
nodes = append(nodes, &n)
}

return nodes, nil
}
39 changes: 39 additions & 0 deletions src/kubernetes/nodes_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package kubernetes

import (
"github.com/linkernetworks/config"
"github.com/linkernetworks/service/kubernetes"
"github.com/stretchr/testify/assert"
"os"
"testing"
)

func TestGetNodeFail(t *testing.T) {
if _, ok := os.LookupEnv("TEST_K8S"); !ok {
t.SkipNow()
}

kubernetes := kubernetes.NewFromConfig(&config.KubernetesConfig{
Namespace: "default",
})
clientset, err := kubernetes.NewClientset()
assert.NoError(t, err)

_, err = GetNode(clientset, "UnKnown_Name")
assert.Error(t, err)
}

func TestGetNodes(t *testing.T) {
if _, ok := os.LookupEnv("TEST_K8S"); !ok {
t.SkipNow()
}

kubernetes := kubernetes.NewFromConfig(&config.KubernetesConfig{
Namespace: "default",
})
clientset, err := kubernetes.NewClientset()
assert.NoError(t, err)

nodes, err := GetNodes(clientset)
assert.NoError(t, err)
}
23 changes: 14 additions & 9 deletions src/serviceprovider/serviceprovider.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,16 @@ import (
"github.com/linkernetworks/influxdb"
"github.com/linkernetworks/mongo"
"github.com/linkernetworks/redis"
"github.com/linkernetworks/service/kubernetes"
)

type Container struct {
Config config.Config
Redis *redis.Service
Mongo *mongo.Service
Gearman *gearman.Service
Influxdb *influxdb.InfluxdbService
Config config.Config
Redis *redis.Service
Mongo *mongo.Service
Gearman *gearman.Service
Influxdb *influxdb.InfluxdbService
Kubernetes *kubernetes.Service
}

type ServiceDiscoverResponse struct {
Expand All @@ -42,11 +44,14 @@ func New(cf config.Config) *Container {
logger.Infof("Connecting to influxdb: %s", cf.Influxdb.Url)
influx := &influxdb.InfluxdbService{Url: cf.Influxdb.Url}

kubernetes := kubernetes.NewFromConfig(cf.Kubernetes)

sp := &Container{
Config: cf,
Redis: redisService,
Mongo: mongo,
Influxdb: influx,
Config: cf,
Redis: redisService,
Mongo: mongo,
Influxdb: influx,
Kubernetes: kubernetes,
}

return sp
Expand Down
Loading

0 comments on commit 371abbf

Please sign in to comment.