diff --git a/container.go b/container.go index 74516c6..74391d1 100644 --- a/container.go +++ b/container.go @@ -2,28 +2,24 @@ package main import ( "fmt" - "strings" "github.com/fsouza/go-dockerclient" ) type Container struct { id string - name string done chan bool stats chan *docker.Stats widgets *Widgets reader *StatReader } -func NewContainer(cid string, names []string) *Container { - name := strings.Join(names, ",") +func NewContainer(cid, names string) *Container { return &Container{ id: cid, - name: name, done: make(chan bool), stats: make(chan *docker.Stats), - widgets: NewWidgets(cid, name), + widgets: NewWidgets(cid, names), reader: &StatReader{}, } } diff --git a/grid.go b/grid.go index 5593bc5..ce96d70 100644 --- a/grid.go +++ b/grid.go @@ -12,7 +12,7 @@ type Grid struct { containers map[string]*Container } -func (g *Grid) AddContainer(id string, names []string) { +func (g *Grid) AddContainer(id, names string) { g.containers[id] = NewContainer(id, names) } @@ -60,7 +60,7 @@ func header() *ui.Row { ui.NewCol(2, 0, headerPar("CPU")), ui.NewCol(2, 0, headerPar("MEM")), ui.NewCol(2, 0, headerPar("NET RX/TX")), - ui.NewCol(2, 0, headerPar("NAMES")), + ui.NewCol(2, 0, headerPar("NAME")), ) } diff --git a/main.go b/main.go index f473e8f..5091915 100644 --- a/main.go +++ b/main.go @@ -2,6 +2,7 @@ package main import ( "os" + "strings" "github.com/fsouza/go-dockerclient" ) @@ -19,6 +20,11 @@ func getContainers(client *docker.Client) []docker.APIContainers { return containers } +// Return primary container name +func parseName(names []string) string { + return strings.Replace(names[0], "/", "", -1) +} + func main() { dockerhost := os.Getenv("DOCKER_HOST") if dockerhost == "" { @@ -32,7 +38,7 @@ func main() { g := &Grid{0, make(map[string]*Container)} for _, c := range getContainers(client) { - g.AddContainer(c.ID[:12], c.Names) + g.AddContainer(c.ID[:12], parseName(c.Names)) } for _, c := range g.containers { diff --git a/widgets.go b/widgets.go index 831d4b4..b83d1d6 100644 --- a/widgets.go +++ b/widgets.go @@ -9,9 +9,9 @@ import ( type Widgets struct { cid *ui.Par - names *ui.Par + net *ui.Par + name *ui.Par cpu *ui.Gauge - net *ui.Gauge memory *ui.Gauge } @@ -21,43 +21,59 @@ func (w *Widgets) MakeRow() *ui.Row { ui.NewCol(2, 0, w.cpu), ui.NewCol(2, 0, w.memory), ui.NewCol(2, 0, w.net), - ui.NewCol(2, 0, w.names), + ui.NewCol(2, 0, w.name), ) } func (w *Widgets) SetCPU(val int) { w.cpu.BarColor = colorScale(val) w.cpu.Label = fmt.Sprintf("%s%%", strconv.Itoa(val)) - if val < 5 && val > 0 { + if val < 5 { val = 5 + w.cpu.BarColor = ui.ColorBlack } w.cpu.Percent = val } func (w *Widgets) SetNet(rx int64, tx int64) { - w.net.Label = fmt.Sprintf("%s / %s", byteFormat(rx), byteFormat(tx)) + //w.net.Label = fmt.Sprintf("%s / %s", byteFormat(rx), byteFormat(tx)) + w.net.Text = fmt.Sprintf("%s / %s", byteFormat(rx), byteFormat(tx)) + //w.net2.Lines[0].Data = []int{0, 2, 5, 10, 20, 20, 2, 2, 0, 0} } func (w *Widgets) SetMem(val int64, limit int64) { - if val < 5 { - val = 5 - } - w.memory.Percent = round((float64(val) / float64(limit)) * 100) + percent := round((float64(val) / float64(limit)) * 100) w.memory.Label = fmt.Sprintf("%s / %s", byteFormat(val), byteFormat(limit)) + if percent < 5 { + percent = 5 + w.memory.BarColor = ui.ColorBlack + } else { + w.memory.BarColor = ui.ColorGreen + } + w.memory.Percent = percent } func NewWidgets(id string, names string) *Widgets { + cid := ui.NewPar(id) cid.Border = false cid.Height = 1 cid.Width = 20 cid.TextFgColor = ui.ColorWhite + name := ui.NewPar(names) name.Border = false name.Height = 1 name.Width = 20 name.TextFgColor = ui.ColorWhite - return &Widgets{cid, name, mkGauge(), mkGauge(), mkGauge()} + + net := ui.NewPar("-") + net.Border = false + net.Height = 1 + net.Width = 20 + net.TextFgColor = ui.ColorWhite + + return &Widgets{cid, net, name, mkGauge(), mkGauge()} } func mkGauge() *ui.Gauge {