Skip to content

Commit

Permalink
Show the number of networks, configs and secrets of a stack
Browse files Browse the repository at this point in the history
  • Loading branch information
moncho committed Apr 22, 2018
1 parent a3a18f1 commit 85c40ee
Show file tree
Hide file tree
Showing 4 changed files with 48 additions and 9 deletions.
12 changes: 12 additions & 0 deletions appui/swarm/stack_row.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,9 @@ type StackRow struct {
stack docker.Stack
Name *drytermui.ParColumn
Services *drytermui.ParColumn
Networks *drytermui.ParColumn
Configs *drytermui.ParColumn
Secrets *drytermui.ParColumn

appui.Row
}
Expand All @@ -24,17 +27,26 @@ func NewStackRow(stack docker.Stack, table drytermui.Table) *StackRow {
stack: stack,
Name: drytermui.NewThemedParColumn(appui.DryTheme, stack.Name),
Services: drytermui.NewThemedParColumn(appui.DryTheme, strconv.Itoa(stack.Services)),
Networks: drytermui.NewThemedParColumn(appui.DryTheme, strconv.Itoa(stack.Networks)),
Configs: drytermui.NewThemedParColumn(appui.DryTheme, strconv.Itoa(stack.Configs)),
Secrets: drytermui.NewThemedParColumn(appui.DryTheme, strconv.Itoa(stack.Secrets)),
}
row.Height = 1
row.Table = table
//Columns are rendered following the slice order
row.Columns = []termui.GridBufferer{
row.Name,
row.Services,
row.Networks,
row.Configs,
row.Secrets,
}
row.ParColumns = []*drytermui.ParColumn{
row.Name,
row.Services,
row.Networks,
row.Configs,
row.Secrets,
}
return row

Expand Down
20 changes: 12 additions & 8 deletions appui/swarm/stacks.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,9 @@ var defaultStackTableHeader = stackTableHeader()
var stackTableHeaders = []appui.SortableColumnHeader{
{Title: "NAME", Mode: docker.SortByStackName},
{Title: "SERVICES", Mode: docker.NoSortStack},
{Title: "NETWORKS", Mode: docker.NoSortStack},
{Title: "CONFIGS", Mode: docker.NoSortStack},
{Title: "SECRETS", Mode: docker.NoSortStack},
}

//StacksWidget shows information about services running on the Swarm
Expand Down Expand Up @@ -83,15 +86,15 @@ func (s *StacksWidget) Buffer() gizaktermui.Buffer {

selected := s.selectedIndex - s.startIndex

for i, serviceRow := range s.visibleRows() {
serviceRow.SetY(y)
y += serviceRow.GetHeight()
for i, stackRow := range s.visibleRows() {
stackRow.SetY(y)
y += stackRow.GetHeight()
if i != selected {
serviceRow.NotHighlighted()
stackRow.NotHighlighted()
} else {
serviceRow.Highlighted()
stackRow.Highlighted()
}
buf.Merge(serviceRow.Buffer())
buf.Merge(stackRow.Buffer())
}
}
return buf
Expand Down Expand Up @@ -289,8 +292,9 @@ func stackTableHeader() *termui.TableHeader {

header := termui.NewHeader(appui.DryTheme)
header.ColumnSpacing = appui.DefaultColumnSpacing
header.AddColumn(stackTableHeaders[0].Title)
header.AddColumn(stackTableHeaders[1].Title)
for _, t := range stackTableHeaders {
header.AddColumn(t.Title)
}

return header
}
5 changes: 4 additions & 1 deletion docker/stack.go
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
package docker

//Stack represents a Docker Swarm service stack
//Stack contains information about a Docker Swarm stack
type Stack struct {
Name string
Services int
Networks int
Configs int
Secrets int
}
20 changes: 20 additions & 0 deletions docker/swarm.go
Original file line number Diff line number Diff line change
Expand Up @@ -191,10 +191,30 @@ func (daemon *DockerDaemon) Stacks() ([]Stack, error) {
}
ztack, ok := m[name]
if !ok {
cc, err := daemon.StackConfigs(name)
if err != nil {
return nil, pkgError.Errorf("cannot get configs for stack %s",
name)
}
nn, err := daemon.StackNetworks(name)
if err != nil {
return nil, pkgError.Errorf("cannot get networks for stack %s",
name)
}
ss, err := daemon.StackSecrets(name)
if err != nil {
return nil, pkgError.Errorf("cannot get secrets for stack %s",
name)
}

m[name] = &Stack{
Name: name,
Services: 1,
Configs: len(cc),
Secrets: len(ss),
Networks: len(nn),
}

} else {
ztack.Services++
}
Expand Down

0 comments on commit 85c40ee

Please sign in to comment.