Просмотр исходного кода

Merge pull request #15023 from hqhq/hq_add_status_in_inspect

Add status string to State field for inspect
Alexander Morozov 10 лет назад
Родитель
Сommit
6caaa8a635

+ 1 - 0
api/types/types.go

@@ -227,6 +227,7 @@ type ExecStartCheck struct {
 // ContainerState stores container's running state
 // it's part of ContainerJSONBase and will return by "inspect" command
 type ContainerState struct {
+	Status     string
 	Running    bool
 	Paused     bool
 	Restarting bool

+ 1 - 0
daemon/inspect.go

@@ -46,6 +46,7 @@ func (daemon *Daemon) getInspectData(container *Container) (*types.ContainerJSON
 	}
 
 	containerState := &types.ContainerState{
+		Status:     container.State.StateString(),
 		Running:    container.State.Running,
 		Paused:     container.State.Paused,
 		Restarting: container.State.Restarting,

+ 4 - 2
docs/reference/api/docker_remote_api_v1.21.md

@@ -437,8 +437,9 @@ Return low-level information on the container `id`
 			"Paused": false,
 			"Pid": 0,
 			"Restarting": false,
-			"Running": false,
-			"StartedAt": "2015-01-06T15:47:32.072697474Z"
+			"Running": true,
+			"StartedAt": "2015-01-06T15:47:32.072697474Z",
+			"Status": "running"
 		},
 		"Mounts": [
 			{
@@ -2176,6 +2177,7 @@ Return low-level information about the `exec` command `id`.
       "OpenStdout" : false,
       "Container" : {
         "State" : {
+          "Status" : "running",
           "Running" : true,
           "Paused" : false,
           "Restarting" : false,

+ 32 - 0
integration-cli/docker_cli_inspect_test.go

@@ -49,6 +49,38 @@ func (s *DockerSuite) TestInspectDefault(c *check.C) {
 	dockerCmd(c, "inspect", "busybox")
 }
 
+func (s *DockerSuite) TestInspectStatus(c *check.C) {
+	out, _ := dockerCmd(c, "run", "-d", "busybox", "top")
+	out = strings.TrimSpace(out)
+
+	inspectOut, err := inspectField(out, "State.Status")
+	c.Assert(err, check.IsNil)
+	if inspectOut != "running" {
+		c.Fatalf("inspect got wrong status, got: %q, expected: running", inspectOut)
+	}
+
+	dockerCmd(c, "pause", out)
+	inspectOut, err = inspectField(out, "State.Status")
+	c.Assert(err, check.IsNil)
+	if inspectOut != "paused" {
+		c.Fatalf("inspect got wrong status, got: %q, expected: paused", inspectOut)
+	}
+
+	dockerCmd(c, "unpause", out)
+	inspectOut, err = inspectField(out, "State.Status")
+	c.Assert(err, check.IsNil)
+	if inspectOut != "running" {
+		c.Fatalf("inspect got wrong status, got: %q, expected: running", inspectOut)
+	}
+
+	dockerCmd(c, "stop", out)
+	inspectOut, err = inspectField(out, "State.Status")
+	c.Assert(err, check.IsNil)
+	if inspectOut != "exited" {
+		c.Fatalf("inspect got wrong status, got: %q, expected: exited", inspectOut)
+	}
+}
+
 func (s *DockerSuite) TestInspectTypeFlagContainer(c *check.C) {
 
 	//Both the container and image are named busybox. docker inspect will fetch container