Add an orchestrator column in the docker stack ls command

Signed-off-by: Silvin Lubecki <silvin.lubecki@docker.com>
This commit is contained in:
Silvin Lubecki 2018-03-27 16:38:47 +02:00 committed by Mathieu Champlon
parent 8963ab993e
commit 13d0c9c695
8 changed files with 40 additions and 29 deletions

View File

@ -5,9 +5,10 @@ import (
)
const (
defaultStackTableFormat = "table {{.Name}}\t{{.Services}}"
defaultStackTableFormat = "table {{.Name}}\t{{.Services}}\t{{.Orchestrator}}"
stackServicesHeader = "SERVICES"
stackOrchestrastorHeader = "ORCHESTRATOR"
)
// Stack contains deployed stack information.
@ -16,6 +17,8 @@ type Stack struct {
Name string
// Services is the number of the services
Services int
// Orchestratort is the platform on which the stack is deployed
Orchestrator string
}
// NewStackFormat returns a format for use with a stack Context
@ -50,6 +53,7 @@ func newStackContext() *stackContext {
stackCtx.header = map[string]string{
"Name": nameHeader,
"Services": stackServicesHeader,
"Orchestrator": stackOrchestrastorHeader,
}
return &stackCtx
}
@ -65,3 +69,7 @@ func (s *stackContext) Name() string {
func (s *stackContext) Services() string {
return strconv.Itoa(s.s.Services)
}
func (s *stackContext) Orchestrator() string {
return s.s.Orchestrator
}

View File

@ -27,9 +27,9 @@ func TestStackContextWrite(t *testing.T) {
// Table format
{
Context{Format: NewStackFormat("table")},
`NAME SERVICES
baz 2
bar 1
`NAME SERVICES ORCHESTRATOR
baz 2 orchestrator1
bar 1 orchestrator2
`,
},
{
@ -49,8 +49,8 @@ bar
}
stacks := []*Stack{
{Name: "baz", Services: 2},
{Name: "bar", Services: 1},
{Name: "baz", Services: 2, Orchestrator: "orchestrator1"},
{Name: "bar", Services: 1, Orchestrator: "orchestrator2"},
}
for _, testcase := range cases {
out := bytes.NewBufferString("")

View File

@ -48,6 +48,7 @@ func getStacks(kubeCli *KubeCli) ([]*formatter.Stack, error) {
formattedStacks = append(formattedStacks, &formatter.Stack{
Name: stack.name,
Services: len(stack.getServices()),
Orchestrator: "Kubernetes",
})
}
return formattedStacks, nil

View File

@ -61,6 +61,7 @@ func getStacks(ctx context.Context, apiclient client.APIClient) ([]*formatter.St
m[name] = &formatter.Stack{
Name: name,
Services: 1,
Orchestrator: "Swarm",
}
} else {
ztack.Services++

View File

@ -1,4 +1,4 @@
NAME SERVICES
service-name-1-foo 1
service-name-2-foo 1
service-name-10-foo 1
NAME SERVICES ORCHESTRATOR
service-name-1-foo 1 Swarm
service-name-2-foo 1 Swarm
service-name-10-foo 1 Swarm

View File

@ -1,3 +1,3 @@
NAME SERVICES
service-name-bar 1
service-name-foo 1
NAME SERVICES ORCHESTRATOR
service-name-bar 1 Swarm
service-name-foo 1 Swarm

View File

@ -1,2 +1,2 @@
NAME SERVICES
service-name-foo 1
NAME SERVICES ORCHESTRATOR
service-name-foo 1 Swarm

View File

@ -39,9 +39,9 @@ The following command shows all stacks and some additional information:
```bash
$ docker stack ls
ID SERVICES
vossibility-stack 6
myapp 2
ID SERVICES ORCHESTRATOR
myapp 2 Kubernetes
vossibility-stack 6 Swarm
```
### Formatting
@ -51,9 +51,10 @@ The formatting option (`--format`) pretty-prints stacks using a Go template.
Valid placeholders for the Go template are listed below:
| Placeholder | Description |
| ----------- | ------------------ |
| --------------- | ------------------ |
| `.Name` | Stack name |
| `.Services` | Number of services |
| `.Orchestrator` | Orchestrator name |
When using the `--format` option, the `stack ls` command either outputs
the data exactly as the template declares or, when using the