Browse code

Ignore 'not a swarm error' when inspecting a task.

Signed-off-by: Daniel Nephin <dnephin@docker.com>

Daniel Nephin authored on 2016/06/24 01:24:28
Showing 8 changed files
... ...
@@ -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')