Browse code

Update CLI commit hash

Since this new version of the CLI resolves image digests for swarm
services by default, and we do not want integration tests to talk to
Docker Hub, update CLI tests to suppress this behavior.

Signed-off-by: Aaron Lehmann <aaron.lehmann@docker.com>

Aaron Lehmann authored on 2017/05/19 04:23:28
Showing 9 changed files
... ...
@@ -11,5 +11,5 @@ VNDR_COMMIT=c56e082291115e369f77601f9c071dd0b87c7120
11 11
 BINDATA_COMMIT=a0ff2567cfb70903282db057e799fd826784d41d
12 12
 
13 13
 # CLI
14
-DOCKERCLI_REPO=https://github.com/dperny/cli
15
-DOCKERCLI_COMMIT=7230906e0e297999eb33da74e0279c5cf41a119e
14
+DOCKERCLI_REPO=https://github.com/docker/cli
15
+DOCKERCLI_COMMIT=3dfb8343b139d6342acfd9975d7f1068b5b1c3d3
... ...
@@ -46,7 +46,8 @@ func (s *DockerSwarmSuite) TestPruneNetwork(c *check.C) {
46 46
 
47 47
 	serviceName := "testprunesvc"
48 48
 	replicas := 1
49
-	out, err := d.Cmd("service", "create", "--name", serviceName,
49
+	out, err := d.Cmd("service", "create", "--no-resolve-image",
50
+		"--name", serviceName,
50 51
 		"--replicas", strconv.Itoa(replicas),
51 52
 		"--network", "n3",
52 53
 		"busybox", "top")
... ...
@@ -17,7 +17,7 @@ import (
17 17
 
18 18
 func (s *DockerSwarmSuite) TestServiceCreateMountVolume(c *check.C) {
19 19
 	d := s.AddDaemon(c, true, true)
20
-	out, err := d.Cmd("service", "create", "--detach=true", "--mount", "type=volume,source=foo,target=/foo,volume-nocopy", "busybox", "top")
20
+	out, err := d.Cmd("service", "create", "--no-resolve-image", "--detach=true", "--mount", "type=volume,source=foo,target=/foo,volume-nocopy", "busybox", "top")
21 21
 	c.Assert(err, checker.IsNil, check.Commentf(out))
22 22
 	id := strings.TrimSpace(out)
23 23
 
... ...
@@ -76,7 +76,7 @@ func (s *DockerSwarmSuite) TestServiceCreateWithSecretSimple(c *check.C) {
76 76
 	})
77 77
 	c.Assert(id, checker.Not(checker.Equals), "", check.Commentf("secrets: %s", id))
78 78
 
79
-	out, err := d.Cmd("service", "create", "--name", serviceName, "--secret", testName, "busybox", "top")
79
+	out, err := d.Cmd("service", "create", "--no-resolve-image", "--name", serviceName, "--secret", testName, "busybox", "top")
80 80
 	c.Assert(err, checker.IsNil, check.Commentf(out))
81 81
 
82 82
 	out, err = d.Cmd("service", "inspect", "--format", "{{ json .Spec.TaskTemplate.ContainerSpec.Secrets }}", serviceName)
... ...
@@ -122,7 +122,7 @@ func (s *DockerSwarmSuite) TestServiceCreateWithSecretSourceTargetPaths(c *check
122 122
 	}
123 123
 
124 124
 	serviceName := "svc"
125
-	serviceCmd := []string{"service", "create", "--name", serviceName}
125
+	serviceCmd := []string{"service", "create", "--no-resolve-image", "--name", serviceName}
126 126
 	serviceCmd = append(serviceCmd, secretFlags...)
127 127
 	serviceCmd = append(serviceCmd, "busybox", "top")
128 128
 	out, err := d.Cmd(serviceCmd...)
... ...
@@ -175,7 +175,7 @@ func (s *DockerSwarmSuite) TestServiceCreateWithSecretReferencedTwice(c *check.C
175 175
 	c.Assert(id, checker.Not(checker.Equals), "", check.Commentf("secrets: %s", id))
176 176
 
177 177
 	serviceName := "svc"
178
-	out, err := d.Cmd("service", "create", "--name", serviceName, "--secret", "source=mysecret,target=target1", "--secret", "source=mysecret,target=target2", "busybox", "top")
178
+	out, err := d.Cmd("service", "create", "--no-resolve-image", "--name", serviceName, "--secret", "source=mysecret,target=target1", "--secret", "source=mysecret,target=target2", "busybox", "top")
179 179
 	c.Assert(err, checker.IsNil, check.Commentf(out))
180 180
 
181 181
 	out, err = d.Cmd("service", "inspect", "--format", "{{ json .Spec.TaskTemplate.ContainerSpec.Secrets }}", serviceName)
... ...
@@ -224,7 +224,7 @@ func (s *DockerSwarmSuite) TestServiceCreateWithConfigSimple(c *check.C) {
224 224
 	})
225 225
 	c.Assert(id, checker.Not(checker.Equals), "", check.Commentf("configs: %s", id))
226 226
 
227
-	out, err := d.Cmd("service", "create", "--name", serviceName, "--config", testName, "busybox", "top")
227
+	out, err := d.Cmd("service", "create", "--no-resolve-image", "--name", serviceName, "--config", testName, "busybox", "top")
228 228
 	c.Assert(err, checker.IsNil, check.Commentf(out))
229 229
 
230 230
 	out, err = d.Cmd("service", "inspect", "--format", "{{ json .Spec.TaskTemplate.ContainerSpec.Configs }}", serviceName)
... ...
@@ -269,7 +269,7 @@ func (s *DockerSwarmSuite) TestServiceCreateWithConfigSourceTargetPaths(c *check
269 269
 	}
270 270
 
271 271
 	serviceName := "svc"
272
-	serviceCmd := []string{"service", "create", "--name", serviceName}
272
+	serviceCmd := []string{"service", "create", "--no-resolve-image", "--name", serviceName}
273 273
 	serviceCmd = append(serviceCmd, configFlags...)
274 274
 	serviceCmd = append(serviceCmd, "busybox", "top")
275 275
 	out, err := d.Cmd(serviceCmd...)
... ...
@@ -322,7 +322,7 @@ func (s *DockerSwarmSuite) TestServiceCreateWithConfigReferencedTwice(c *check.C
322 322
 	c.Assert(id, checker.Not(checker.Equals), "", check.Commentf("configs: %s", id))
323 323
 
324 324
 	serviceName := "svc"
325
-	out, err := d.Cmd("service", "create", "--name", serviceName, "--config", "source=myconfig,target=target1", "--config", "source=myconfig,target=target2", "busybox", "top")
325
+	out, err := d.Cmd("service", "create", "--no-resolve-image", "--name", serviceName, "--config", "source=myconfig,target=target1", "--config", "source=myconfig,target=target2", "busybox", "top")
326 326
 	c.Assert(err, checker.IsNil, check.Commentf(out))
327 327
 
328 328
 	out, err = d.Cmd("service", "inspect", "--format", "{{ json .Spec.TaskTemplate.ContainerSpec.Configs }}", serviceName)
... ...
@@ -360,7 +360,7 @@ func (s *DockerSwarmSuite) TestServiceCreateWithConfigReferencedTwice(c *check.C
360 360
 
361 361
 func (s *DockerSwarmSuite) TestServiceCreateMountTmpfs(c *check.C) {
362 362
 	d := s.AddDaemon(c, true, true)
363
-	out, err := d.Cmd("service", "create", "--detach=true", "--mount", "type=tmpfs,target=/foo,tmpfs-size=1MB", "busybox", "sh", "-c", "mount | grep foo; tail -f /dev/null")
363
+	out, err := d.Cmd("service", "create", "--no-resolve-image", "--detach=true", "--mount", "type=tmpfs,target=/foo,tmpfs-size=1MB", "busybox", "sh", "-c", "mount | grep foo; tail -f /dev/null")
364 364
 	c.Assert(err, checker.IsNil, check.Commentf(out))
365 365
 	id := strings.TrimSpace(out)
366 366
 
... ...
@@ -31,7 +31,7 @@ func (s *DockerSwarmSuite) TestServiceHealthRun(c *check.C) {
31 31
 	c.Check(err, check.IsNil)
32 32
 
33 33
 	serviceName := "healthServiceRun"
34
-	out, err := d.Cmd("service", "create", "--detach=true", "--name", serviceName, imageName, "top")
34
+	out, err := d.Cmd("service", "create", "--no-resolve-image", "--detach=true", "--name", serviceName, imageName, "top")
35 35
 	c.Assert(err, checker.IsNil, check.Commentf(out))
36 36
 	id := strings.TrimSpace(out)
37 37
 
... ...
@@ -92,7 +92,7 @@ func (s *DockerSwarmSuite) TestServiceHealthStart(c *check.C) {
92 92
 	c.Check(err, check.IsNil)
93 93
 
94 94
 	serviceName := "healthServiceStart"
95
-	out, err := d.Cmd("service", "create", "--detach=true", "--name", serviceName, imageName, "top")
95
+	out, err := d.Cmd("service", "create", "--no-resolve-image", "--detach=true", "--name", serviceName, imageName, "top")
96 96
 	c.Assert(err, checker.IsNil, check.Commentf(out))
97 97
 	id := strings.TrimSpace(out)
98 98
 
... ...
@@ -31,7 +31,7 @@ func (s *DockerSwarmSuite) TestServiceLogs(c *check.C) {
31 31
 	}
32 32
 
33 33
 	for name, message := range services {
34
-		out, err := d.Cmd("service", "create", "--name", name, "busybox",
34
+		out, err := d.Cmd("service", "create", "--no-resolve-image", "--name", name, "busybox",
35 35
 			"sh", "-c", fmt.Sprintf("echo %s; tail -f /dev/null", message))
36 36
 		c.Assert(err, checker.IsNil)
37 37
 		c.Assert(strings.TrimSpace(out), checker.Not(checker.Equals), "")
... ...
@@ -74,7 +74,7 @@ func (s *DockerSwarmSuite) TestServiceLogsCompleteness(c *check.C) {
74 74
 	name := "TestServiceLogsCompleteness"
75 75
 
76 76
 	// make a service that prints 6 lines
77
-	out, err := d.Cmd("service", "create", "--name", name, "busybox", "sh", "-c", "for line in $(seq 0 5); do echo log test $line; done; sleep 100000")
77
+	out, err := d.Cmd("service", "create", "--no-resolve-image", "--name", name, "busybox", "sh", "-c", "for line in $(seq 0 5); do echo log test $line; done; sleep 100000")
78 78
 	c.Assert(err, checker.IsNil)
79 79
 	c.Assert(strings.TrimSpace(out), checker.Not(checker.Equals), "")
80 80
 
... ...
@@ -101,7 +101,7 @@ func (s *DockerSwarmSuite) TestServiceLogsTail(c *check.C) {
101 101
 	name := "TestServiceLogsTail"
102 102
 
103 103
 	// make a service that prints 6 lines
104
-	out, err := d.Cmd("service", "create", "--name", name, "busybox", "sh", "-c", "for line in $(seq 1 6); do echo log test $line; done; sleep 100000")
104
+	out, err := d.Cmd("service", "create", "--no-resolve-image", "--name", name, "busybox", "sh", "-c", "for line in $(seq 1 6); do echo log test $line; done; sleep 100000")
105 105
 	c.Assert(err, checker.IsNil)
106 106
 	c.Assert(strings.TrimSpace(out), checker.Not(checker.Equals), "")
107 107
 
... ...
@@ -125,7 +125,7 @@ func (s *DockerSwarmSuite) TestServiceLogsSince(c *check.C) {
125 125
 
126 126
 	name := "TestServiceLogsSince"
127 127
 
128
-	out, err := d.Cmd("service", "create", "--name", name, "busybox", "sh", "-c", "for i in $(seq 1 3); do sleep .1; echo log$i; done; sleep 10000000")
128
+	out, err := d.Cmd("service", "create", "--no-resolve-image", "--name", name, "busybox", "sh", "-c", "for i in $(seq 1 3); do sleep .1; echo log$i; done; sleep 10000000")
129 129
 	c.Assert(err, checker.IsNil)
130 130
 	c.Assert(strings.TrimSpace(out), checker.Not(checker.Equals), "")
131 131
 	waitAndAssert(c, defaultReconciliationTimeout, d.CheckActiveContainerCount, checker.Equals, 1)
... ...
@@ -159,7 +159,7 @@ func (s *DockerSwarmSuite) TestServiceLogsFollow(c *check.C) {
159 159
 
160 160
 	name := "TestServiceLogsFollow"
161 161
 
162
-	out, err := d.Cmd("service", "create", "--name", name, "busybox", "sh", "-c", "while true; do echo log test; sleep 0.1; done")
162
+	out, err := d.Cmd("service", "create", "--no-resolve-image", "--name", name, "busybox", "sh", "-c", "while true; do echo log test; sleep 0.1; done")
163 163
 	c.Assert(err, checker.IsNil)
164 164
 	c.Assert(strings.TrimSpace(out), checker.Not(checker.Equals), "")
165 165
 
... ...
@@ -207,7 +207,7 @@ func (s *DockerSwarmSuite) TestServiceLogsTaskLogs(c *check.C) {
207 207
 
208 208
 	result := icmd.RunCmd(d.Command(
209 209
 		// create a service with the name
210
-		"service", "create", "--name", name,
210
+		"service", "create", "--no-resolve-image", "--name", name,
211 211
 		// which has some number of replicas
212 212
 		fmt.Sprintf("--replicas=%v", replicas),
213 213
 		// which has this the task id as an environment variable templated in
... ...
@@ -259,7 +259,7 @@ func (s *DockerSwarmSuite) TestServiceLogsTTY(c *check.C) {
259 259
 
260 260
 	result := icmd.RunCmd(d.Command(
261 261
 		// create a service
262
-		"service", "create",
262
+		"service", "create", "--no-resolve-image",
263 263
 		// name it $name
264 264
 		"--name", name,
265 265
 		// use a TTY
... ...
@@ -297,7 +297,7 @@ func (s *DockerSwarmSuite) TestServiceLogsNoHangDeletedContainer(c *check.C) {
297 297
 
298 298
 	result := icmd.RunCmd(d.Command(
299 299
 		// create a service
300
-		"service", "create",
300
+		"service", "create", "--no-resolve-image",
301 301
 		// name it $name
302 302
 		"--name", name,
303 303
 		// busybox image, shell string
... ...
@@ -346,7 +346,7 @@ func (s *DockerSwarmSuite) TestServiceLogsDetails(c *check.C) {
346 346
 
347 347
 	result := icmd.RunCmd(d.Command(
348 348
 		// create a service
349
-		"service", "create",
349
+		"service", "create", "--no-resolve-image",
350 350
 		// name it $name
351 351
 		"--name", name,
352 352
 		// add an environment variable
... ...
@@ -14,11 +14,11 @@ func (s *DockerSwarmSuite) TestServiceScale(c *check.C) {
14 14
 	d := s.AddDaemon(c, true, true)
15 15
 
16 16
 	service1Name := "TestService1"
17
-	service1Args := append([]string{"service", "create", "--name", service1Name, defaultSleepImage}, sleepCommandForDaemonPlatform()...)
17
+	service1Args := append([]string{"service", "create", "--no-resolve-image", "--name", service1Name, defaultSleepImage}, sleepCommandForDaemonPlatform()...)
18 18
 
19 19
 	// global mode
20 20
 	service2Name := "TestService2"
21
-	service2Args := append([]string{"service", "create", "--name", service2Name, "--mode=global", defaultSleepImage}, sleepCommandForDaemonPlatform()...)
21
+	service2Args := append([]string{"service", "create", "--no-resolve-image", "--name", service2Name, "--mode=global", defaultSleepImage}, sleepCommandForDaemonPlatform()...)
22 22
 
23 23
 	// Create services
24 24
 	out, err := d.Cmd(service1Args...)
... ...
@@ -15,7 +15,7 @@ func (s *DockerSwarmSuite) TestServiceUpdatePort(c *check.C) {
15 15
 	d := s.AddDaemon(c, true, true)
16 16
 
17 17
 	serviceName := "TestServiceUpdatePort"
18
-	serviceArgs := append([]string{"service", "create", "--name", serviceName, "-p", "8080:8081", defaultSleepImage}, sleepCommandForDaemonPlatform()...)
18
+	serviceArgs := append([]string{"service", "create", "--no-resolve-image", "--name", serviceName, "-p", "8080:8081", defaultSleepImage}, sleepCommandForDaemonPlatform()...)
19 19
 
20 20
 	// Create a service with a port mapping of 8080:8081.
21 21
 	out, err := d.Cmd(serviceArgs...)
... ...
@@ -48,7 +48,7 @@ func (s *DockerSwarmSuite) TestServiceUpdatePort(c *check.C) {
48 48
 
49 49
 func (s *DockerSwarmSuite) TestServiceUpdateLabel(c *check.C) {
50 50
 	d := s.AddDaemon(c, true, true)
51
-	out, err := d.Cmd("service", "create", "--name=test", "busybox", "top")
51
+	out, err := d.Cmd("service", "create", "--no-resolve-image", "--name=test", "busybox", "top")
52 52
 	c.Assert(err, checker.IsNil, check.Commentf(out))
53 53
 	service := d.GetService(c, "test")
54 54
 	c.Assert(service.Spec.Labels, checker.HasLen, 0)
... ...
@@ -100,7 +100,7 @@ func (s *DockerSwarmSuite) TestServiceUpdateSecrets(c *check.C) {
100 100
 	testTarget := "testing"
101 101
 	serviceName := "test"
102 102
 
103
-	out, err := d.Cmd("service", "create", "--name", serviceName, "busybox", "top")
103
+	out, err := d.Cmd("service", "create", "--no-resolve-image", "--name", serviceName, "busybox", "top")
104 104
 	c.Assert(err, checker.IsNil, check.Commentf(out))
105 105
 
106 106
 	// add secret
... ...
@@ -142,7 +142,7 @@ func (s *DockerSwarmSuite) TestServiceUpdateConfigs(c *check.C) {
142 142
 	testTarget := "/testing"
143 143
 	serviceName := "test"
144 144
 
145
-	out, err := d.Cmd("service", "create", "--name", serviceName, "busybox", "top")
145
+	out, err := d.Cmd("service", "create", "--no-resolve-image", "--name", serviceName, "busybox", "top")
146 146
 	c.Assert(err, checker.IsNil, check.Commentf(out))
147 147
 
148 148
 	// add config
... ...
@@ -169,7 +169,7 @@ func (s *DockerSwarmSuite) TestSwarmIncompatibleDaemon(c *check.C) {
169 169
 func (s *DockerSwarmSuite) TestSwarmServiceTemplatingHostname(c *check.C) {
170 170
 	d := s.AddDaemon(c, true, true)
171 171
 
172
-	out, err := d.Cmd("service", "create", "--name", "test", "--hostname", "{{.Service.Name}}-{{.Task.Slot}}", "busybox", "top")
172
+	out, err := d.Cmd("service", "create", "--no-resolve-image", "--name", "test", "--hostname", "{{.Service.Name}}-{{.Task.Slot}}", "busybox", "top")
173 173
 	c.Assert(err, checker.IsNil, check.Commentf(out))
174 174
 
175 175
 	// make sure task has been deployed.
... ...
@@ -188,15 +188,15 @@ func (s *DockerSwarmSuite) TestSwarmServiceListFilter(c *check.C) {
188 188
 	name1 := "redis-cluster-md5"
189 189
 	name2 := "redis-cluster"
190 190
 	name3 := "other-cluster"
191
-	out, err := d.Cmd("service", "create", "--name", name1, "busybox", "top")
191
+	out, err := d.Cmd("service", "create", "--no-resolve-image", "--name", name1, "busybox", "top")
192 192
 	c.Assert(err, checker.IsNil)
193 193
 	c.Assert(strings.TrimSpace(out), checker.Not(checker.Equals), "")
194 194
 
195
-	out, err = d.Cmd("service", "create", "--name", name2, "busybox", "top")
195
+	out, err = d.Cmd("service", "create", "--no-resolve-image", "--name", name2, "busybox", "top")
196 196
 	c.Assert(err, checker.IsNil)
197 197
 	c.Assert(strings.TrimSpace(out), checker.Not(checker.Equals), "")
198 198
 
199
-	out, err = d.Cmd("service", "create", "--name", name3, "busybox", "top")
199
+	out, err = d.Cmd("service", "create", "--no-resolve-image", "--name", name3, "busybox", "top")
200 200
 	c.Assert(err, checker.IsNil)
201 201
 	c.Assert(strings.TrimSpace(out), checker.Not(checker.Equals), "")
202 202
 
... ...
@@ -246,7 +246,7 @@ func (s *DockerSwarmSuite) TestSwarmNodeTaskListFilter(c *check.C) {
246 246
 	d := s.AddDaemon(c, true, true)
247 247
 
248 248
 	name := "redis-cluster-md5"
249
-	out, err := d.Cmd("service", "create", "--name", name, "--replicas=3", "busybox", "top")
249
+	out, err := d.Cmd("service", "create", "--no-resolve-image", "--name", name, "--replicas=3", "busybox", "top")
250 250
 	c.Assert(err, checker.IsNil)
251 251
 	c.Assert(strings.TrimSpace(out), checker.Not(checker.Equals), "")
252 252
 
... ...
@@ -273,7 +273,7 @@ func (s *DockerSwarmSuite) TestSwarmPublishAdd(c *check.C) {
273 273
 	d := s.AddDaemon(c, true, true)
274 274
 
275 275
 	name := "top"
276
-	out, err := d.Cmd("service", "create", "--name", name, "--label", "x=y", "busybox", "top")
276
+	out, err := d.Cmd("service", "create", "--no-resolve-image", "--name", name, "--label", "x=y", "busybox", "top")
277 277
 	c.Assert(err, checker.IsNil)
278 278
 	c.Assert(strings.TrimSpace(out), checker.Not(checker.Equals), "")
279 279
 
... ...
@@ -295,7 +295,7 @@ func (s *DockerSwarmSuite) TestSwarmServiceWithGroup(c *check.C) {
295 295
 	d := s.AddDaemon(c, true, true)
296 296
 
297 297
 	name := "top"
298
-	out, err := d.Cmd("service", "create", "--name", name, "--user", "root:root", "--group", "wheel", "--group", "audio", "--group", "staff", "--group", "777", "busybox", "top")
298
+	out, err := d.Cmd("service", "create", "--no-resolve-image", "--name", name, "--user", "root:root", "--group", "wheel", "--group", "audio", "--group", "staff", "--group", "777", "busybox", "top")
299 299
 	c.Assert(err, checker.IsNil)
300 300
 	c.Assert(strings.TrimSpace(out), checker.Not(checker.Equals), "")
301 301
 
... ...
@@ -481,7 +481,7 @@ func (s *DockerSwarmSuite) TestSwarmIngressNetwork(c *check.C) {
481 481
 	c.Assert(strings.TrimSpace(out), checker.Contains, "is already present")
482 482
 
483 483
 	// It cannot be removed if it is being used
484
-	out, err = d.Cmd("service", "create", "--name", "srv1", "-p", "9000:8000", "busybox", "top")
484
+	out, err = d.Cmd("service", "create", "--no-resolve-image", "--name", "srv1", "-p", "9000:8000", "busybox", "top")
485 485
 	c.Assert(err, checker.IsNil, check.Commentf(out))
486 486
 	out, _, err = testutil.RunCommandPipelineWithOutput(
487 487
 		exec.Command("echo", "Y"),
... ...
@@ -500,7 +500,7 @@ func (s *DockerSwarmSuite) TestSwarmIngressNetwork(c *check.C) {
500 500
 	c.Assert(err, checker.IsNil, check.Commentf(out))
501 501
 
502 502
 	// A service which needs the ingress network cannot be created if no ingress is present
503
-	out, err = d.Cmd("service", "create", "--name", "srv2", "-p", "500:500", "busybox", "top")
503
+	out, err = d.Cmd("service", "create", "--no-resolve-image", "--name", "srv2", "-p", "500:500", "busybox", "top")
504 504
 	c.Assert(err, checker.NotNil)
505 505
 	c.Assert(strings.TrimSpace(out), checker.Contains, "no ingress network is present")
506 506
 
... ...
@@ -510,7 +510,7 @@ func (s *DockerSwarmSuite) TestSwarmIngressNetwork(c *check.C) {
510 510
 	c.Assert(strings.TrimSpace(out), checker.Contains, "no ingress network is present")
511 511
 
512 512
 	// But services which do not need routing mesh can be created regardless
513
-	out, err = d.Cmd("service", "create", "--name", "srv3", "--endpoint-mode", "dnsrr", "busybox", "top")
513
+	out, err = d.Cmd("service", "create", "--no-resolve-image", "--name", "srv3", "--endpoint-mode", "dnsrr", "busybox", "top")
514 514
 	c.Assert(err, checker.IsNil, check.Commentf(out))
515 515
 }
516 516
 
... ...
@@ -528,7 +528,7 @@ func (s *DockerSwarmSuite) TestSwarmCreateServiceWithNoIngressNetwork(c *check.C
528 528
 	// Make sure nothing panics because ingress network is missing
529 529
 	out, err = d.Cmd("network", "create", "-d", "overlay", "another-network")
530 530
 	c.Assert(err, checker.IsNil, check.Commentf(out))
531
-	out, err = d.Cmd("service", "create", "--name", "srv4", "--network", "another-network", "busybox", "top")
531
+	out, err = d.Cmd("service", "create", "--no-resolve-image", "--name", "srv4", "--network", "another-network", "busybox", "top")
532 532
 	c.Assert(err, checker.IsNil, check.Commentf(out))
533 533
 }
534 534
 
... ...
@@ -538,7 +538,7 @@ func (s *DockerSwarmSuite) TestSwarmTaskListFilter(c *check.C) {
538 538
 	d := s.AddDaemon(c, true, true)
539 539
 
540 540
 	name := "redis-cluster-md5"
541
-	out, err := d.Cmd("service", "create", "--name", name, "--replicas=3", "busybox", "top")
541
+	out, err := d.Cmd("service", "create", "--no-resolve-image", "--name", name, "--replicas=3", "busybox", "top")
542 542
 	c.Assert(err, checker.IsNil)
543 543
 	c.Assert(strings.TrimSpace(out), checker.Not(checker.Equals), "")
544 544
 
... ...
@@ -572,7 +572,7 @@ func (s *DockerSwarmSuite) TestSwarmTaskListFilter(c *check.C) {
572 572
 	c.Assert(out, checker.Not(checker.Contains), name+".3")
573 573
 
574 574
 	name = "redis-cluster-sha1"
575
-	out, err = d.Cmd("service", "create", "--name", name, "--mode=global", "busybox", "top")
575
+	out, err = d.Cmd("service", "create", "--no-resolve-image", "--name", name, "--mode=global", "busybox", "top")
576 576
 	c.Assert(err, checker.IsNil)
577 577
 	c.Assert(strings.TrimSpace(out), checker.Not(checker.Equals), "")
578 578
 
... ...
@@ -601,7 +601,7 @@ func (s *DockerSwarmSuite) TestPsListContainersFilterIsTask(c *check.C) {
601 601
 	bareID := strings.TrimSpace(out)[:12]
602 602
 	// Create a service
603 603
 	name := "busybox-top"
604
-	out, err = d.Cmd("service", "create", "--name", name, "busybox", "top")
604
+	out, err = d.Cmd("service", "create", "--no-resolve-image", "--name", name, "busybox", "top")
605 605
 	c.Assert(err, checker.IsNil)
606 606
 	c.Assert(strings.TrimSpace(out), checker.Not(checker.Equals), "")
607 607
 
... ...
@@ -820,7 +820,7 @@ func (s *DockerSwarmSuite) TestSwarmServiceEnvFile(c *check.C) {
820 820
 	c.Assert(err, checker.IsNil)
821 821
 
822 822
 	name := "worker"
823
-	out, err := d.Cmd("service", "create", "--env-file", path, "--env", "VAR1=B", "--env", "VAR1=C", "--env", "VAR2=", "--env", "VAR2", "--name", name, "busybox", "top")
823
+	out, err := d.Cmd("service", "create", "--no-resolve-image", "--env-file", path, "--env", "VAR1=B", "--env", "VAR1=C", "--env", "VAR2=", "--env", "VAR2", "--name", name, "busybox", "top")
824 824
 	c.Assert(err, checker.IsNil)
825 825
 	c.Assert(strings.TrimSpace(out), checker.Not(checker.Equals), "")
826 826
 
... ...
@@ -839,7 +839,7 @@ func (s *DockerSwarmSuite) TestSwarmServiceTTY(c *check.C) {
839 839
 
840 840
 	// Without --tty
841 841
 	expectedOutput := "none"
842
-	out, err := d.Cmd("service", "create", "--name", name, "busybox", "sh", "-c", ttyCheck)
842
+	out, err := d.Cmd("service", "create", "--no-resolve-image", "--name", name, "busybox", "sh", "-c", ttyCheck)
843 843
 	c.Assert(err, checker.IsNil)
844 844
 
845 845
 	// Make sure task has been deployed.
... ...
@@ -862,7 +862,7 @@ func (s *DockerSwarmSuite) TestSwarmServiceTTY(c *check.C) {
862 862
 
863 863
 	// With --tty
864 864
 	expectedOutput = "TTY"
865
-	out, err = d.Cmd("service", "create", "--name", name, "--tty", "busybox", "sh", "-c", ttyCheck)
865
+	out, err = d.Cmd("service", "create", "--no-resolve-image", "--name", name, "--tty", "busybox", "sh", "-c", ttyCheck)
866 866
 	c.Assert(err, checker.IsNil)
867 867
 
868 868
 	// Make sure task has been deployed.
... ...
@@ -883,7 +883,7 @@ func (s *DockerSwarmSuite) TestSwarmServiceTTYUpdate(c *check.C) {
883 883
 
884 884
 	// Create a service
885 885
 	name := "top"
886
-	_, err := d.Cmd("service", "create", "--name", name, "busybox", "top")
886
+	_, err := d.Cmd("service", "create", "--no-resolve-image", "--name", name, "busybox", "top")
887 887
 	c.Assert(err, checker.IsNil)
888 888
 
889 889
 	// Make sure task has been deployed.
... ...
@@ -918,7 +918,7 @@ func (s *DockerSwarmSuite) TestSwarmServiceNetworkUpdate(c *check.C) {
918 918
 
919 919
 	// Create a service
920 920
 	name := "top"
921
-	result = icmd.RunCmd(d.Command("service", "create", "--network", "foo", "--network", "bar", "--name", name, "busybox", "top"))
921
+	result = icmd.RunCmd(d.Command("service", "create", "--no-resolve-image", "--network", "foo", "--network", "bar", "--name", name, "busybox", "top"))
922 922
 	result.Assert(c, icmd.Success)
923 923
 
924 924
 	// Make sure task has been deployed.
... ...
@@ -945,7 +945,7 @@ func (s *DockerSwarmSuite) TestDNSConfig(c *check.C) {
945 945
 
946 946
 	// Create a service
947 947
 	name := "top"
948
-	_, err := d.Cmd("service", "create", "--name", name, "--dns=1.2.3.4", "--dns-search=example.com", "--dns-option=timeout:3", "busybox", "top")
948
+	_, err := d.Cmd("service", "create", "--no-resolve-image", "--name", name, "--dns=1.2.3.4", "--dns-search=example.com", "--dns-option=timeout:3", "busybox", "top")
949 949
 	c.Assert(err, checker.IsNil)
950 950
 
951 951
 	// Make sure task has been deployed.
... ...
@@ -972,7 +972,7 @@ func (s *DockerSwarmSuite) TestDNSConfigUpdate(c *check.C) {
972 972
 
973 973
 	// Create a service
974 974
 	name := "top"
975
-	_, err := d.Cmd("service", "create", "--name", name, "busybox", "top")
975
+	_, err := d.Cmd("service", "create", "--no-resolve-image", "--name", name, "busybox", "top")
976 976
 	c.Assert(err, checker.IsNil)
977 977
 
978 978
 	// Make sure task has been deployed.
... ...
@@ -1491,7 +1491,7 @@ func (s *DockerSwarmSuite) TestExtraHosts(c *check.C) {
1491 1491
 
1492 1492
 	// Create a service
1493 1493
 	name := "top"
1494
-	_, err := d.Cmd("service", "create", "--name", name, "--host=example.com:1.2.3.4", "busybox", "top")
1494
+	_, err := d.Cmd("service", "create", "--no-resolve-image", "--name", name, "--host=example.com:1.2.3.4", "busybox", "top")
1495 1495
 	c.Assert(err, checker.IsNil)
1496 1496
 
1497 1497
 	// Make sure task has been deployed.
... ...
@@ -1534,7 +1534,7 @@ func (s *DockerSwarmSuite) TestSwarmServiceInspectPretty(c *check.C) {
1534 1534
 	d := s.AddDaemon(c, true, true)
1535 1535
 
1536 1536
 	name := "top"
1537
-	out, err := d.Cmd("service", "create", "--name", name, "--limit-cpu=0.5", "busybox", "top")
1537
+	out, err := d.Cmd("service", "create", "--no-resolve-image", "--name", name, "--limit-cpu=0.5", "busybox", "top")
1538 1538
 	c.Assert(err, checker.IsNil, check.Commentf(out))
1539 1539
 
1540 1540
 	expectedOutput := `
... ...
@@ -1557,7 +1557,7 @@ func (s *DockerSwarmSuite) TestSwarmNetworkIPAMOptions(c *check.C) {
1557 1557
 	c.Assert(err, checker.IsNil, check.Commentf(out))
1558 1558
 	c.Assert(strings.TrimSpace(out), checker.Equals, "map[foo:bar]")
1559 1559
 
1560
-	out, err = d.Cmd("service", "create", "--network=foo", "--name", "top", "busybox", "top")
1560
+	out, err = d.Cmd("service", "create", "--no-resolve-image", "--network=foo", "--name", "top", "busybox", "top")
1561 1561
 	c.Assert(err, checker.IsNil, check.Commentf(out))
1562 1562
 
1563 1563
 	// make sure task has been deployed.
... ...
@@ -1575,7 +1575,7 @@ func (s *DockerTrustedSwarmSuite) TestTrustedServiceCreate(c *check.C) {
1575 1575
 	repoName := s.trustSuite.setupTrustedImage(c, "trusted-pull")
1576 1576
 
1577 1577
 	name := "trusted"
1578
-	cli.Docker(cli.Args("-D", "service", "create", "--name", name, repoName, "top"), trustedCmd, cli.Daemon(d.Daemon)).Assert(c, icmd.Expected{
1578
+	cli.Docker(cli.Args("-D", "service", "create", "--no-resolve-image", "--name", name, repoName, "top"), trustedCmd, cli.Daemon(d.Daemon)).Assert(c, icmd.Expected{
1579 1579
 		Err: "resolved image tag to",
1580 1580
 	})
1581 1581
 
... ...
@@ -1592,7 +1592,7 @@ func (s *DockerTrustedSwarmSuite) TestTrustedServiceCreate(c *check.C) {
1592 1592
 	cli.DockerCmd(c, "rmi", repoName)
1593 1593
 
1594 1594
 	name = "untrusted"
1595
-	cli.Docker(cli.Args("service", "create", "--name", name, repoName, "top"), trustedCmd, cli.Daemon(d.Daemon)).Assert(c, icmd.Expected{
1595
+	cli.Docker(cli.Args("service", "create", "--no-resolve-image", "--name", name, repoName, "top"), trustedCmd, cli.Daemon(d.Daemon)).Assert(c, icmd.Expected{
1596 1596
 		ExitCode: 1,
1597 1597
 		Err:      "Error: remote trust data does not exist",
1598 1598
 	})
... ...
@@ -1610,7 +1610,7 @@ func (s *DockerTrustedSwarmSuite) TestTrustedServiceUpdate(c *check.C) {
1610 1610
 	name := "myservice"
1611 1611
 
1612 1612
 	// Create a service without content trust
1613
-	cli.Docker(cli.Args("service", "create", "--name", name, repoName, "top"), cli.Daemon(d.Daemon)).Assert(c, icmd.Success)
1613
+	cli.Docker(cli.Args("service", "create", "--no-resolve-image", "--name", name, repoName, "top"), cli.Daemon(d.Daemon)).Assert(c, icmd.Success)
1614 1614
 
1615 1615
 	result := cli.Docker(cli.Args("service", "inspect", "--pretty", name), cli.Daemon(d.Daemon))
1616 1616
 	c.Assert(result.Error, checker.IsNil, check.Commentf(result.Combined()))
... ...
@@ -1618,7 +1618,7 @@ func (s *DockerTrustedSwarmSuite) TestTrustedServiceUpdate(c *check.C) {
1618 1618
 	// DOCKER_SERVICE_PREFER_OFFLINE_IMAGE.
1619 1619
 	c.Assert(result.Combined(), check.Not(checker.Contains), repoName+"@", check.Commentf(result.Combined()))
1620 1620
 
1621
-	cli.Docker(cli.Args("-D", "service", "update", "--image", repoName, name), trustedCmd, cli.Daemon(d.Daemon)).Assert(c, icmd.Expected{
1621
+	cli.Docker(cli.Args("-D", "service", "update", "--no-resolve-image", "--image", repoName, name), trustedCmd, cli.Daemon(d.Daemon)).Assert(c, icmd.Expected{
1622 1622
 		Err: "resolved image tag to",
1623 1623
 	})
1624 1624
 
... ...
@@ -1634,7 +1634,7 @@ func (s *DockerTrustedSwarmSuite) TestTrustedServiceUpdate(c *check.C) {
1634 1634
 	cli.DockerCmd(c, "push", repoName)
1635 1635
 	cli.DockerCmd(c, "rmi", repoName)
1636 1636
 
1637
-	cli.Docker(cli.Args("service", "update", "--image", repoName, name), trustedCmd, cli.Daemon(d.Daemon)).Assert(c, icmd.Expected{
1637
+	cli.Docker(cli.Args("service", "update", "--no-resolve-image", "--image", repoName, name), trustedCmd, cli.Daemon(d.Daemon)).Assert(c, icmd.Expected{
1638 1638
 		ExitCode: 1,
1639 1639
 		Err:      "Error: remote trust data does not exist",
1640 1640
 	})
... ...
@@ -1691,13 +1691,13 @@ func (s *DockerSwarmSuite) TestSwarmServicePsMultipleServiceIDs(c *check.C) {
1691 1691
 	d := s.AddDaemon(c, true, true)
1692 1692
 
1693 1693
 	name1 := "top1"
1694
-	out, err := d.Cmd("service", "create", "--detach=true", "--name", name1, "--replicas=3", "busybox", "top")
1694
+	out, err := d.Cmd("service", "create", "--no-resolve-image", "--detach=true", "--name", name1, "--replicas=3", "busybox", "top")
1695 1695
 	c.Assert(err, checker.IsNil)
1696 1696
 	c.Assert(strings.TrimSpace(out), checker.Not(checker.Equals), "")
1697 1697
 	id1 := strings.TrimSpace(out)
1698 1698
 
1699 1699
 	name2 := "top2"
1700
-	out, err = d.Cmd("service", "create", "--detach=true", "--name", name2, "--replicas=3", "busybox", "top")
1700
+	out, err = d.Cmd("service", "create", "--no-resolve-image", "--detach=true", "--name", name2, "--replicas=3", "busybox", "top")
1701 1701
 	c.Assert(err, checker.IsNil)
1702 1702
 	c.Assert(strings.TrimSpace(out), checker.Not(checker.Equals), "")
1703 1703
 	id2 := strings.TrimSpace(out)
... ...
@@ -1760,7 +1760,7 @@ func (s *DockerSwarmSuite) TestSwarmServicePsMultipleServiceIDs(c *check.C) {
1760 1760
 func (s *DockerSwarmSuite) TestSwarmPublishDuplicatePorts(c *check.C) {
1761 1761
 	d := s.AddDaemon(c, true, true)
1762 1762
 
1763
-	out, err := d.Cmd("service", "create", "--detach=true", "--publish", "5005:80", "--publish", "5006:80", "--publish", "80", "--publish", "80", "busybox", "top")
1763
+	out, err := d.Cmd("service", "create", "--no-resolve-image", "--detach=true", "--publish", "5005:80", "--publish", "5006:80", "--publish", "80", "--publish", "80", "busybox", "top")
1764 1764
 	c.Assert(err, check.IsNil, check.Commentf(out))
1765 1765
 	id := strings.TrimSpace(out)
1766 1766
 
... ...
@@ -1820,7 +1820,7 @@ func (s *DockerSwarmSuite) TestSwarmReadonlyRootfs(c *check.C) {
1820 1820
 
1821 1821
 	d := s.AddDaemon(c, true, true)
1822 1822
 
1823
-	out, err := d.Cmd("service", "create", "--name", "top", "--read-only", "busybox", "top")
1823
+	out, err := d.Cmd("service", "create", "--no-resolve-image", "--name", "top", "--read-only", "busybox", "top")
1824 1824
 	c.Assert(err, checker.IsNil, check.Commentf(out))
1825 1825
 
1826 1826
 	// make sure task has been deployed.
... ...
@@ -1915,7 +1915,7 @@ func (s *DockerSwarmSuite) TestSwarmStopSignal(c *check.C) {
1915 1915
 
1916 1916
 	d := s.AddDaemon(c, true, true)
1917 1917
 
1918
-	out, err := d.Cmd("service", "create", "--name", "top", "--stop-signal=SIGHUP", "busybox", "top")
1918
+	out, err := d.Cmd("service", "create", "--no-resolve-image", "--name", "top", "--stop-signal=SIGHUP", "busybox", "top")
1919 1919
 	c.Assert(err, checker.IsNil, check.Commentf(out))
1920 1920
 
1921 1921
 	// make sure task has been deployed.
... ...
@@ -1941,11 +1941,11 @@ func (s *DockerSwarmSuite) TestSwarmStopSignal(c *check.C) {
1941 1941
 func (s *DockerSwarmSuite) TestSwarmServiceLsFilterMode(c *check.C) {
1942 1942
 	d := s.AddDaemon(c, true, true)
1943 1943
 
1944
-	out, err := d.Cmd("service", "create", "--name", "top1", "busybox", "top")
1944
+	out, err := d.Cmd("service", "create", "--no-resolve-image", "--name", "top1", "busybox", "top")
1945 1945
 	c.Assert(err, checker.IsNil, check.Commentf(out))
1946 1946
 	c.Assert(strings.TrimSpace(out), checker.Not(checker.Equals), "")
1947 1947
 
1948
-	out, err = d.Cmd("service", "create", "--name", "top2", "--mode=global", "busybox", "top")
1948
+	out, err = d.Cmd("service", "create", "--no-resolve-image", "--name", "top2", "--mode=global", "busybox", "top")
1949 1949
 	c.Assert(err, checker.IsNil, check.Commentf(out))
1950 1950
 	c.Assert(strings.TrimSpace(out), checker.Not(checker.Equals), "")
1951 1951
 
... ...
@@ -2034,7 +2034,7 @@ func (s *DockerSwarmSuite) TestSwarmClusterEventsScope(c *check.C) {
2034 2034
 	d := s.AddDaemon(c, true, true)
2035 2035
 
2036 2036
 	// create a service
2037
-	out, err := d.Cmd("service", "create", "--name", "test", "--detach=false", "busybox", "top")
2037
+	out, err := d.Cmd("service", "create", "--no-resolve-image", "--name", "test", "--detach=false", "busybox", "top")
2038 2038
 	c.Assert(err, checker.IsNil, check.Commentf(out))
2039 2039
 	serviceID := strings.Split(out, "\n")[0]
2040 2040
 
... ...
@@ -2062,7 +2062,7 @@ func (s *DockerSwarmSuite) TestSwarmClusterEventsType(c *check.C) {
2062 2062
 	d := s.AddDaemon(c, true, true)
2063 2063
 
2064 2064
 	// create a service
2065
-	out, err := d.Cmd("service", "create", "--name", "test", "--detach=false", "busybox", "top")
2065
+	out, err := d.Cmd("service", "create", "--no-resolve-image", "--name", "test", "--detach=false", "busybox", "top")
2066 2066
 	c.Assert(err, checker.IsNil, check.Commentf(out))
2067 2067
 	serviceID := strings.Split(out, "\n")[0]
2068 2068
 
... ...
@@ -2090,7 +2090,7 @@ func (s *DockerSwarmSuite) TestSwarmClusterEventsService(c *check.C) {
2090 2090
 	d := s.AddDaemon(c, true, true)
2091 2091
 
2092 2092
 	// create a service
2093
-	out, err := d.Cmd("service", "create", "--name", "test", "--detach=false", "busybox", "top")
2093
+	out, err := d.Cmd("service", "create", "--no-resolve-image", "--name", "test", "--detach=false", "busybox", "top")
2094 2094
 	c.Assert(err, checker.IsNil, check.Commentf(out))
2095 2095
 	serviceID := strings.Split(out, "\n")[0]
2096 2096
 
... ...
@@ -15,7 +15,7 @@ import (
15 15
 func (s *DockerSwarmSuite) TestSwarmVolumePlugin(c *check.C) {
16 16
 	d := s.AddDaemon(c, true, true)
17 17
 
18
-	out, err := d.Cmd("service", "create", "--mount", "type=volume,source=my-volume,destination=/foo,volume-driver=customvolumedriver", "--name", "top", "busybox", "top")
18
+	out, err := d.Cmd("service", "create", "--no-resolve-image", "--mount", "type=volume,source=my-volume,destination=/foo,volume-driver=customvolumedriver", "--name", "top", "busybox", "top")
19 19
 	c.Assert(err, checker.IsNil, check.Commentf(out))
20 20
 
21 21
 	// Make sure task stays pending before plugin is available
... ...
@@ -74,7 +74,7 @@ func (s *DockerSwarmSuite) TestSwarmNetworkPluginV2(c *check.C) {
74 74
 
75 75
 	// create a global service to ensure that both nodes will have an instance
76 76
 	serviceName := "my-service"
77
-	_, err = d1.Cmd("service", "create", "--name", serviceName, "--mode=global", "--network", networkName, "busybox", "top")
77
+	_, err = d1.Cmd("service", "create", "--no-resolve-image", "--name", serviceName, "--mode=global", "--network", networkName, "busybox", "top")
78 78
 	c.Assert(err, checker.IsNil)
79 79
 
80 80
 	// wait for tasks ready
... ...
@@ -96,7 +96,7 @@ func (s *DockerSwarmSuite) TestSwarmNetworkPluginV2(c *check.C) {
96 96
 
97 97
 	image := "busybox"
98 98
 	// create a new global service again.
99
-	_, err = d1.Cmd("service", "create", "--name", serviceName, "--mode=global", "--network", networkName, image, "top")
99
+	_, err = d1.Cmd("service", "create", "--no-resolve-image", "--name", serviceName, "--mode=global", "--network", networkName, image, "top")
100 100
 	c.Assert(err, checker.IsNil)
101 101
 
102 102
 	waitAndAssert(c, defaultReconciliationTimeout, d1.CheckRunningTaskImages, checker.DeepEquals,