Merge pull request #2000 from thaJeztah/add_ps_state

docker ps: add State field to formatting
This commit is contained in:
Silvin Lubecki 2019-07-15 12:12:41 +02:00 committed by GitHub
commit 63ba419703
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 23 additions and 5 deletions

View File

@ -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
}

View File

@ -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": "",
},
}

View File

@ -12,6 +12,7 @@ const (
DescriptionHeader = "DESCRIPTION"
DriverHeader = "DRIVER"
ScopeHeader = "SCOPE"
StateHeader = "STATE"
StatusHeader = "STATUS"
PortsHeader = "PORTS"
ImageHeader = "IMAGE"

View File

@ -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. |