diff --git a/cli/command/formatter/container.go b/cli/command/formatter/container.go index e7e98cb998..7f216fcff2 100644 --- a/cli/command/formatter/container.go +++ b/cli/command/formatter/container.go @@ -44,6 +44,7 @@ func NewContainerFormat(source string, quiet bool, size bool) Format { image: {{.Image}} command: {{.Command}} created_at: {{.CreatedAt}} +state: {{- pad .State 1 0}} status: {{- pad .Status 1 0}} names: {{.Names}} labels: {{- pad .Labels 1 0}} @@ -87,6 +88,7 @@ func newContainerContext() *containerContext { "CreatedAt": CreatedAtHeader, "RunningFor": runningForHeader, "Ports": PortsHeader, + "State": StateHeader, "Status": StatusHeader, "Size": SizeHeader, "Labels": LabelsHeader, @@ -169,6 +171,10 @@ func (c *containerContext) Ports() string { return DisplayablePorts(c.c.Ports) } +func (c *containerContext) State() string { + return c.c.State +} + func (c *containerContext) Status() string { return c.c.Status } diff --git a/cli/command/formatter/container_test.go b/cli/command/formatter/container_test.go index cafb9abdac..0b70fa3426 100644 --- a/cli/command/formatter/container_test.go +++ b/cli/command/formatter/container_test.go @@ -168,6 +168,10 @@ containerID2 ubuntu "" 24 hours ago Context{Format: NewContainerFormat("table", true, false)}, "containerID1\ncontainerID2\n", }, + { + Context{Format: NewContainerFormat("table {{.State}}", false, true)}, + "STATE\nrunning\nrunning\n", + }, // Raw Format { Context{Format: NewContainerFormat("raw", false, false)}, @@ -175,6 +179,7 @@ containerID2 ubuntu "" 24 hours ago image: ubuntu command: "" created_at: %s +state: running status: names: foobar_baz labels: @@ -184,6 +189,7 @@ container_id: containerID2 image: ubuntu command: "" created_at: %s +state: running status: names: foobar_bar labels: @@ -197,6 +203,7 @@ ports: image: ubuntu command: "" created_at: %s +state: running status: names: foobar_baz labels: @@ -207,6 +214,7 @@ container_id: containerID2 image: ubuntu command: "" created_at: %s +state: running status: names: foobar_bar labels: @@ -237,8 +245,8 @@ size: 0B for _, testcase := range cases { containers := []types.Container{ - {ID: "containerID1", Names: []string{"/foobar_baz"}, Image: "ubuntu", Created: unixTime}, - {ID: "containerID2", Names: []string{"/foobar_bar"}, Image: "ubuntu", Created: unixTime}, + {ID: "containerID1", Names: []string{"/foobar_baz"}, Image: "ubuntu", Created: unixTime, State: "running"}, + {ID: "containerID2", Names: []string{"/foobar_bar"}, Image: "ubuntu", Created: unixTime, State: "running"}, } out := bytes.NewBufferString("") testcase.context.Output = out @@ -314,8 +322,8 @@ func TestContainerContextWriteWithNoContainers(t *testing.T) { func TestContainerContextWriteJSON(t *testing.T) { unix := time.Now().Add(-65 * time.Second).Unix() containers := []types.Container{ - {ID: "containerID1", Names: []string{"/foobar_baz"}, Image: "ubuntu", Created: unix}, - {ID: "containerID2", Names: []string{"/foobar_bar"}, Image: "ubuntu", Created: unix}, + {ID: "containerID1", Names: []string{"/foobar_baz"}, Image: "ubuntu", Created: unix, State: "running"}, + {ID: "containerID2", Names: []string{"/foobar_bar"}, Image: "ubuntu", Created: unix, State: "running"}, } expectedCreated := time.Unix(unix, 0).String() expectedJSONs := []map[string]interface{}{ @@ -332,6 +340,7 @@ func TestContainerContextWriteJSON(t *testing.T) { "Ports": "", "RunningFor": "About a minute ago", "Size": "0B", + "State": "running", "Status": "", }, { @@ -347,6 +356,7 @@ func TestContainerContextWriteJSON(t *testing.T) { "Ports": "", "RunningFor": "About a minute ago", "Size": "0B", + "State": "running", "Status": "", }, } diff --git a/cli/command/formatter/custom.go b/cli/command/formatter/custom.go index 6be9ed7ab5..bb46b225fb 100644 --- a/cli/command/formatter/custom.go +++ b/cli/command/formatter/custom.go @@ -12,6 +12,7 @@ const ( DescriptionHeader = "DESCRIPTION" DriverHeader = "DRIVER" ScopeHeader = "SCOPE" + StateHeader = "STATE" StatusHeader = "STATUS" PortsHeader = "PORTS" ImageHeader = "IMAGE" diff --git a/docs/reference/commandline/ps.md b/docs/reference/commandline/ps.md index e073c05970..59652a0eb1 100644 --- a/docs/reference/commandline/ps.md +++ b/docs/reference/commandline/ps.md @@ -397,7 +397,8 @@ Valid placeholders for the Go template are listed below: | `.CreatedAt` | Time when the container was created. | | `.RunningFor` | Elapsed time since the container was started. | | `.Ports` | Exposed ports. | -| `.Status` | Container status. | +| `.State` | Container status (for example; "created", "running", "exited"). | +| `.Status` | Container status with details about duration and health-status. | | `.Size` | Container disk size. | | `.Names` | Container names. | | `.Labels` | All labels assigned to the container. |