From dd828615718918ddb0b1cc958eef75d13ac74a5c Mon Sep 17 00:00:00 2001 From: moncho <50428+moncho@users.noreply.github.com> Date: Thu, 26 Jul 2018 23:18:04 +0200 Subject: [PATCH] Show orchestrator field in stack list --- appui/swarm/stack_row.go | 30 ++++++++++-------- appui/swarm/stack_row_test.go | 57 +++++++++++++++++++++++++++++++++++ appui/swarm/stacks.go | 1 + 3 files changed, 75 insertions(+), 13 deletions(-) create mode 100644 appui/swarm/stack_row_test.go diff --git a/appui/swarm/stack_row.go b/appui/swarm/stack_row.go index 06a5e7b6..5338761e 100644 --- a/appui/swarm/stack_row.go +++ b/appui/swarm/stack_row.go @@ -11,12 +11,13 @@ import ( //StackRow is a Grid row showing stack information type StackRow struct { - stack docker.Stack - Name *drytermui.ParColumn - Services *drytermui.ParColumn - Networks *drytermui.ParColumn - Configs *drytermui.ParColumn - Secrets *drytermui.ParColumn + stack docker.Stack + Name *drytermui.ParColumn + Services *drytermui.ParColumn + Orchestrator *drytermui.ParColumn + Networks *drytermui.ParColumn + Configs *drytermui.ParColumn + Secrets *drytermui.ParColumn appui.Row } @@ -24,12 +25,13 @@ type StackRow struct { //NewStackRow creats a new StackRow widget func NewStackRow(stack docker.Stack, table drytermui.Table) *StackRow { row := &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)), + stack: stack, + Name: drytermui.NewThemedParColumn(appui.DryTheme, stack.Name), + Services: drytermui.NewThemedParColumn(appui.DryTheme, strconv.Itoa(stack.Services)), + Orchestrator: drytermui.NewThemedParColumn(appui.DryTheme, stack.Orchestrator), + 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 @@ -37,6 +39,7 @@ func NewStackRow(stack docker.Stack, table drytermui.Table) *StackRow { row.Columns = []termui.GridBufferer{ row.Name, row.Services, + row.Orchestrator, row.Networks, row.Configs, row.Secrets, @@ -44,6 +47,7 @@ func NewStackRow(stack docker.Stack, table drytermui.Table) *StackRow { row.ParColumns = []*drytermui.ParColumn{ row.Name, row.Services, + row.Orchestrator, row.Networks, row.Configs, row.Secrets, @@ -54,5 +58,5 @@ func NewStackRow(stack docker.Stack, table drytermui.Table) *StackRow { //ColumnsForFilter returns the columns that are used to filter func (row *StackRow) ColumnsForFilter() []*drytermui.ParColumn { - return []*drytermui.ParColumn{row.Name} + return []*drytermui.ParColumn{row.Name, row.Orchestrator} } diff --git a/appui/swarm/stack_row_test.go b/appui/swarm/stack_row_test.go new file mode 100644 index 00000000..4dd7927b --- /dev/null +++ b/appui/swarm/stack_row_test.go @@ -0,0 +1,57 @@ +package swarm + +import ( + "strconv" + "testing" + + "github.com/moncho/dry/docker" +) + +func TestStackRow(t *testing.T) { + type args struct { + stack docker.Stack + } + tests := []struct { + name string + args args + }{ + { + "stack row test", + args{ + docker.Stack{ + Name: "My name is my name", + Services: 5, + Orchestrator: "Swarm", + Networks: 4, + Configs: 2, + Secrets: 300, + }, + }, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + stack := tt.args.stack + row := NewStackRow(stack, nil) + + if row.Name.Text != stack.Name { + t.Errorf("Unexpected Name. Got %s, expected %s", row.Name.Text, stack.Name) + } + if row.Services.Text != strconv.Itoa(stack.Services) { + t.Errorf("Unexpected Services. Got %s, expected %d", row.Services.Text, stack.Services) + } + if row.Orchestrator.Text != stack.Orchestrator { + t.Errorf("Unexpected Orchestrator. Got %s, expected %s", row.Orchestrator.Text, stack.Orchestrator) + } + if row.Networks.Text != strconv.Itoa(stack.Networks) { + t.Errorf("Unexpected Networks. Got %s, expected %d", row.Networks.Text, stack.Networks) + } + if row.Configs.Text != strconv.Itoa(stack.Configs) { + t.Errorf("Unexpected Configs. Got %s, expected %d", row.Configs.Text, stack.Configs) + } + if row.Secrets.Text != strconv.Itoa(stack.Secrets) { + t.Errorf("Unexpected Secrets. Got %s, expected %d", row.Secrets.Text, stack.Secrets) + } + }) + } +} diff --git a/appui/swarm/stacks.go b/appui/swarm/stacks.go index 0c5f41bb..6c69997b 100644 --- a/appui/swarm/stacks.go +++ b/appui/swarm/stacks.go @@ -19,6 +19,7 @@ var defaultStackTableHeader = stackTableHeader() var stackTableHeaders = []appui.SortableColumnHeader{ {Title: "NAME", Mode: docker.SortByStackName}, {Title: "SERVICES", Mode: docker.NoSortStack}, + {Title: "ORCHESTRATOR", Mode: docker.NoSortStack}, {Title: "NETWORKS", Mode: docker.NoSortStack}, {Title: "CONFIGS", Mode: docker.NoSortStack}, {Title: "SECRETS", Mode: docker.NoSortStack},