Skip to content
This repository has been archived by the owner on Feb 27, 2024. It is now read-only.

Commit

Permalink
more node detail
Browse files Browse the repository at this point in the history
Signed-off-by: Evan Hazlett <ejhazlett@gmail.com>
  • Loading branch information
ehazlett committed Sep 3, 2015
1 parent 733e16e commit b006474
Show file tree
Hide file tree
Showing 3 changed files with 81 additions and 17 deletions.
54 changes: 45 additions & 9 deletions controller/manager/utils.go
Expand Up @@ -38,6 +38,14 @@ func generateId(n int) string {

func parseClusterNodes(driverStatus [][]string) ([]*shipyard.Node, error) {
nodes := []*shipyard.Node{}
var node *shipyard.Node
nodeComplete := false
name := ""
addr := ""
containers := ""
reservedCPUs := ""
reservedMemory := ""
labels := []string{}
for _, l := range driverStatus {
if len(l) != 2 {
continue
Expand All @@ -50,19 +58,47 @@ func parseClusterNodes(driverStatus [][]string) ([]*shipyard.Node, error) {
continue
}

// cluster info like "Containers"
if strings.Index(label, " └") > -1 {
continue
if strings.Index(label, " └") == -1 {
name = label
addr = data
}

// parse node
node := &shipyard.Node{
Name: label,
Addr: data,
// node info like "Containers"
switch label {
case " └ Containers":
containers = data
case " └ Reserved CPUs":
reservedCPUs = data
case " └ Reserved Memory":
reservedMemory = data
case " └ Labels":
lbls := strings.Split(data, ",")
labels = lbls
nodeComplete = true
default:
continue
}

// TODO: get response time
nodes = append(nodes, node)
if nodeComplete {
node = &shipyard.Node{
Name: name,
Addr: addr,
Containers: containers,
ReservedCPUs: reservedCPUs,
ReservedMemory: reservedMemory,
Labels: labels,
}
nodes = append(nodes, node)

// reset info
name = ""
addr = ""
containers = ""
reservedCPUs = ""
reservedMemory = ""
labels = []string{}
nodeComplete = false
}
}

return nodes, nil
Expand Down
32 changes: 28 additions & 4 deletions controller/manager/utils_test.go
Expand Up @@ -10,8 +10,15 @@ func TestParseDriverStatus(t *testing.T) {
[]string{"\u0008Filters", "affinity, health, constraint"},
[]string{"\u0008Nodes", "1"},
[]string{"localhost", "127.0.0.1:2375"},
[]string{" └ Containers", "10"},
[]string{" └ Reserved CPUs", "1 / 4"},
[]string{" └ Reserved Memory", "2 / 8.083GiB"},
[]string{" └ Labels", "executiondriver=native-0.2, kernelversion=3.16.0-4-amd64, operatingsystem=Debian GNU/Linux 8 (jessie), storagedriver=btrfs"},
[]string{"remote", "1.2.3.4:2375"},
[]string{" └ Containers", "3"},
[]string{" └ Reserved CPUs", "0 / 4"},
[]string{" └ Reserved Memory", "0 / 8.083GiB"},
[]string{" └ Labels", "executiondriver=native-0.2, kernelversion=3.16.0-4-amd64, operatingsystem=Debian GNU/Linux 8 (jessie), storagedriver=aufs"},
}

nodes, err := parseClusterNodes(driverStatus)
Expand All @@ -27,18 +34,35 @@ func TestParseDriverStatus(t *testing.T) {
n2 := nodes[1]

if n1.Name != "localhost" {
t.Fatalf("expected name \"localhost\"; received \"%s\"", n1.Name)
t.Fatalf("expected name 'localhost'; received %q", n1.Name)
}

if n1.Addr != "127.0.0.1:2375" {
t.Fatalf("expected addr \"127.0.0.1:2375\"; received \"%s\"", n1.Addr)
t.Fatalf("expected addr '127.0.0.1:2375'; received %q", n1.Addr)
}

if n1.Containers != "10" {
t.Fatalf("expected 10 containers; received %q", n1.Containers)
}

if n1.ReservedCPUs != "1 / 4" {
t.Fatalf("expected 1 / 4 cpus; received %q", n1.ReservedCPUs)
}

if n2.Name != "remote" {
t.Fatalf("expected name \"remote\"; received \"%s\"", n2.Name)
t.Fatalf("expected name 'remote'; received %q", n2.Name)
}

if n2.Addr != "1.2.3.4:2375" {
t.Fatalf("expected addr \"1.2.3.4:2375\"; received \"%s\"", n2.Addr)
t.Fatalf("expected addr '1.2.3.4:2375'; received %q", n2.Addr)
}

if n2.Containers != "3" {
t.Fatalf("expected 3 containers; received %q", n1.Containers)
}

if n2.ReservedCPUs != "0 / 4" {
t.Fatalf("expected 0 / 4 cpus; received %q", n2.ReservedCPUs)
}

}
12 changes: 8 additions & 4 deletions node.go
@@ -1,8 +1,12 @@
package shipyard

type Node struct {
ID string `json:"id,omitempty" gorethink:"id,omitempty"`
Name string `json:"name,omitempty" gorethink:"name,omitempty"`
Addr string `json:"addr,omitempty" gorethink:"addr,omitempty"`
ResponseTime float64 `json:"response_time" gorethink:"response_time,omitempty"`
ID string `json:"id,omitempty" gorethink:"id,omitempty"`
Name string `json:"name,omitempty" gorethink:"name,omitempty"`
Addr string `json:"addr,omitempty" gorethink:"addr,omitempty"`
Containers string `json:"containers,omitempty"`
ReservedCPUs string `json:"reserved_cpus,omitempty"`
ReservedMemory string `json:"reserved_memory,omitempty"`
Labels []string `json:"labels,omitempty"`
ResponseTime float64 `json:"response_time" gorethink:"response_time,omitempty"`
}

0 comments on commit b006474

Please sign in to comment.