Signed-off-by: Daniel Nephin <dnephin@docker.com>
| ... | ... |
@@ -2,6 +2,7 @@ package system |
| 2 | 2 |
|
| 3 | 3 |
import ( |
| 4 | 4 |
"fmt" |
| 5 |
+ "strings" |
|
| 5 | 6 |
|
| 6 | 7 |
"golang.org/x/net/context" |
| 7 | 8 |
|
| ... | ... |
@@ -85,14 +86,18 @@ func inspectAll(ctx context.Context, dockerCli *client.DockerCli, getSize bool) |
| 85 | 85 |
return i, rawImage, err |
| 86 | 86 |
} |
| 87 | 87 |
|
| 88 |
- // Search for task with that id if an image doesn't exists. |
|
| 88 |
+ // Search for task with that id if an image doesn't exist. |
|
| 89 | 89 |
t, rawTask, err := client.TaskInspectWithRaw(ctx, ref) |
| 90 |
- if err == nil || !apiclient.IsErrNotFound(err) {
|
|
| 90 |
+ if err == nil || !(apiclient.IsErrNotFound(err) || isErrorNoSwarmMode(err)) {
|
|
| 91 | 91 |
if getSize {
|
| 92 | 92 |
fmt.Fprintln(dockerCli.Err(), "WARNING: --size ignored for tasks") |
| 93 | 93 |
} |
| 94 | 94 |
return t, rawTask, err |
| 95 | 95 |
} |
| 96 |
- return nil, nil, fmt.Errorf("Error: No such image, container or task: %s", ref)
|
|
| 96 |
+ return nil, nil, fmt.Errorf("Error: No such container, image or task: %s", ref)
|
|
| 97 | 97 |
} |
| 98 | 98 |
} |
| 99 |
+ |
|
| 100 |
+func isErrorNoSwarmMode(err error) bool {
|
|
| 101 |
+ return strings.Contains(err.Error(), "This node is not a swarm manager") |
|
| 102 |
+} |
| ... | ... |
@@ -176,7 +176,7 @@ func (s *DockerRegistrySuite) TestRemoveImageByDigest(c *check.C) {
|
| 176 | 176 |
_, err = inspectFieldWithError(imageReference, "Id") |
| 177 | 177 |
//unexpected nil err trying to inspect what should be a non-existent image |
| 178 | 178 |
c.Assert(err, checker.NotNil) |
| 179 |
- c.Assert(err.Error(), checker.Contains, "No such image") |
|
| 179 |
+ c.Assert(err.Error(), checker.Contains, "No such container, image") |
|
| 180 | 180 |
} |
| 181 | 181 |
|
| 182 | 182 |
func (s *DockerRegistrySuite) TestBuildByDigest(c *check.C) {
|
| ... | ... |
@@ -326,7 +326,7 @@ func (s *DockerDaemonSuite) TestDaemonIptablesCreate(c *check.C) {
|
| 326 | 326 |
} |
| 327 | 327 |
|
| 328 | 328 |
// make sure the container is not running |
| 329 |
- runningOut, err := s.d.Cmd("inspect", "--format='{{.State.Running}}'", "top")
|
|
| 329 |
+ runningOut, err := s.d.Cmd("inspect", "--format={{.State.Running}}", "top")
|
|
| 330 | 330 |
if err != nil {
|
| 331 | 331 |
c.Fatalf("Could not inspect on container: %s, %v", out, err)
|
| 332 | 332 |
} |
| ... | ... |
@@ -2196,7 +2196,7 @@ func (s *DockerDaemonSuite) TestCleanupMountsAfterDaemonCrash(c *check.C) {
|
| 2196 | 2196 |
} |
| 2197 | 2197 |
|
| 2198 | 2198 |
// container should be running. |
| 2199 |
- out, err = s.d.Cmd("inspect", "--format='{{.State.Running}}'", id)
|
|
| 2199 |
+ out, err = s.d.Cmd("inspect", "--format={{.State.Running}}", id)
|
|
| 2200 | 2200 |
c.Assert(err, check.IsNil, check.Commentf("Output: %s", out))
|
| 2201 | 2201 |
out = strings.TrimSpace(out) |
| 2202 | 2202 |
if out != "true" {
|
| ... | ... |
@@ -353,7 +353,7 @@ func (s *DockerExternalGraphdriverSuite) testExternalGraphDriver(name string, ex |
| 353 | 353 |
|
| 354 | 354 |
err = s.d.Restart("-s", name)
|
| 355 | 355 |
|
| 356 |
- out, err = s.d.Cmd("inspect", "--format='{{.GraphDriver.Name}}'", "graphtest")
|
|
| 356 |
+ out, err = s.d.Cmd("inspect", "--format={{.GraphDriver.Name}}", "graphtest")
|
|
| 357 | 357 |
c.Assert(err, check.IsNil, check.Commentf(out)) |
| 358 | 358 |
c.Assert(strings.TrimSpace(out), check.Equals, name) |
| 359 | 359 |
|
| ... | ... |
@@ -73,10 +73,10 @@ func (s *DockerSuite) TestHealth(c *check.C) {
|
| 73 | 73 |
|
| 74 | 74 |
// Inspect the options |
| 75 | 75 |
out, _ = dockerCmd(c, "inspect", |
| 76 |
- "--format='timeout={{.Config.Healthcheck.Timeout}} "+
|
|
| 76 |
+ "--format=timeout={{.Config.Healthcheck.Timeout}} "+
|
|
| 77 | 77 |
"interval={{.Config.Healthcheck.Interval}} "+
|
| 78 | 78 |
"retries={{.Config.Healthcheck.Retries}} "+
|
| 79 |
- "test={{.Config.Healthcheck.Test}}'", name)
|
|
| 79 |
+ "test={{.Config.Healthcheck.Test}}", name)
|
|
| 80 | 80 |
c.Check(out, checker.Equals, "timeout=30s interval=1s retries=0 test=[CMD-SHELL cat /status]\n") |
| 81 | 81 |
|
| 82 | 82 |
// Start |
| ... | ... |
@@ -85,7 +85,7 @@ func (s *DockerSuite) TestInspectTypeFlagContainer(c *check.C) {
|
| 85 | 85 |
|
| 86 | 86 |
dockerCmd(c, "run", "--name=busybox", "-d", "busybox", "top") |
| 87 | 87 |
|
| 88 |
- formatStr := "--format='{{.State.Running}}'"
|
|
| 88 |
+ formatStr := "--format={{.State.Running}}"
|
|
| 89 | 89 |
out, _ := dockerCmd(c, "inspect", "--type=container", formatStr, "busybox") |
| 90 | 90 |
c.Assert(out, checker.Equals, "true\n") // not a container JSON |
| 91 | 91 |
} |
| ... | ... |
@@ -137,7 +137,7 @@ func (s *DockerSuite) TestInspectImageFilterInt(c *check.C) {
|
| 137 | 137 |
c.Assert(err, checker.IsNil, check.Commentf("failed to inspect size of the image: %s, %v", out, err))
|
| 138 | 138 |
|
| 139 | 139 |
//now see if the size turns out to be the same |
| 140 |
- formatStr := fmt.Sprintf("--format='{{eq .Size %d}}'", size)
|
|
| 140 |
+ formatStr := fmt.Sprintf("--format={{eq .Size %d}}", size)
|
|
| 141 | 141 |
out, _ = dockerCmd(c, "inspect", formatStr, imageTest) |
| 142 | 142 |
result, err := strconv.ParseBool(strings.TrimSuffix(out, "\n")) |
| 143 | 143 |
c.Assert(err, checker.IsNil) |
| ... | ... |
@@ -159,7 +159,7 @@ func (s *DockerSuite) TestInspectContainerFilterInt(c *check.C) {
|
| 159 | 159 |
c.Assert(err, checker.IsNil, check.Commentf("failed to inspect exitcode of the container: %s, %v", out, err))
|
| 160 | 160 |
|
| 161 | 161 |
//now get the exit code to verify |
| 162 |
- formatStr := fmt.Sprintf("--format='{{eq .State.ExitCode %d}}'", exitCode)
|
|
| 162 |
+ formatStr := fmt.Sprintf("--format={{eq .State.ExitCode %d}}", exitCode)
|
|
| 163 | 163 |
out, _ = dockerCmd(c, "inspect", formatStr, id) |
| 164 | 164 |
result, err := strconv.ParseBool(strings.TrimSuffix(out, "\n")) |
| 165 | 165 |
c.Assert(err, checker.IsNil) |
| ... | ... |
@@ -289,7 +289,7 @@ func (s *DockerSuite) TestInspectNoSizeFlagContainer(c *check.C) {
|
| 289 | 289 |
|
| 290 | 290 |
runSleepingContainer(c, "--name=busybox", "-d") |
| 291 | 291 |
|
| 292 |
- formatStr := "--format='{{.SizeRw}},{{.SizeRootFs}}'"
|
|
| 292 |
+ formatStr := "--format={{.SizeRw}},{{.SizeRootFs}}"
|
|
| 293 | 293 |
out, _ := dockerCmd(c, "inspect", "--type=container", formatStr, "busybox") |
| 294 | 294 |
c.Assert(strings.TrimSpace(out), check.Equals, "<nil>,<nil>", check.Commentf("Exepcted not to display size info: %s", out))
|
| 295 | 295 |
} |
| ... | ... |
@@ -333,7 +333,7 @@ func (s *DockerSuite) TestInspectTemplateError(c *check.C) {
|
| 333 | 333 |
|
| 334 | 334 |
func (s *DockerSuite) TestInspectJSONFields(c *check.C) {
|
| 335 | 335 |
runSleepingContainer(c, "--name=busybox", "-d") |
| 336 |
- out, _, err := dockerCmdWithError("inspect", "--type=container", "--format='{{.HostConfig.Dns}}'", "busybox")
|
|
| 336 |
+ out, _, err := dockerCmdWithError("inspect", "--type=container", "--format={{.HostConfig.Dns}}", "busybox")
|
|
| 337 | 337 |
|
| 338 | 338 |
c.Assert(err, check.IsNil) |
| 339 | 339 |
c.Assert(out, checker.Equals, "[]\n") |
| ... | ... |
@@ -63,7 +63,7 @@ func (s *DockerSuite) TestRenameCheckNames(c *check.C) {
|
| 63 | 63 |
|
| 64 | 64 |
name, err := inspectFieldWithError("first_name", "Name")
|
| 65 | 65 |
c.Assert(err, checker.NotNil, check.Commentf(name)) |
| 66 |
- c.Assert(err.Error(), checker.Contains, "No such image, container or task: first_name") |
|
| 66 |
+ c.Assert(err.Error(), checker.Contains, "No such container, image or task: first_name") |
|
| 67 | 67 |
} |
| 68 | 68 |
|
| 69 | 69 |
func (s *DockerSuite) TestRenameInvalidName(c *check.C) {
|
| ... | ... |
@@ -129,7 +129,7 @@ func (s *DockerSuite) TestRenameContainerWithLinkedContainer(c *check.C) {
|
| 129 | 129 |
db1, _ := dockerCmd(c, "run", "--name", "db1", "-d", "busybox", "top") |
| 130 | 130 |
dockerCmd(c, "run", "--name", "app1", "-d", "--link", "db1:/mysql", "busybox", "top") |
| 131 | 131 |
dockerCmd(c, "rename", "app1", "app2") |
| 132 |
- out, _, err := dockerCmdWithError("inspect", "--format='{{ .Id }}'", "app2/mysql")
|
|
| 132 |
+ out, _, err := dockerCmdWithError("inspect", "--format={{ .Id }}", "app2/mysql")
|
|
| 133 | 133 |
c.Assert(err, checker.IsNil) |
| 134 | 134 |
c.Assert(strings.TrimSpace(out), checker.Equals, strings.TrimSpace(db1)) |
| 135 | 135 |
} |
| ... | ... |
@@ -45,7 +45,7 @@ func (s *DockerDaemonSuite) TestDaemonUserNamespaceRootSetting(c *check.C) {
|
| 45 | 45 |
user := s.findUser(c, "userns") |
| 46 | 46 |
c.Assert(uidgid[0], checker.Equals, user) |
| 47 | 47 |
|
| 48 |
- pid, err := s.d.Cmd("inspect", "--format='{{.State.Pid}}'", "userns")
|
|
| 48 |
+ pid, err := s.d.Cmd("inspect", "--format={{.State.Pid}}", "userns")
|
|
| 49 | 49 |
c.Assert(err, checker.IsNil, check.Commentf("Could not inspect running container: out: %q", pid))
|
| 50 | 50 |
// check the uid and gid maps for the PID to ensure root is remapped |
| 51 | 51 |
// (cmd = cat /proc/<pid>/uid_map | grep -E '0\s+9999\s+1') |