Browse code

Merge pull request #29074 from yongtang/29044-swarm-ipam-options

Fix missing IPAM options in swarm network mode

Vincent Demeester authored on 2016/12/13 01:27:01
Showing 2 changed files
... ...
@@ -566,7 +566,8 @@ func (c *containerConfig) networkCreateRequest(name string) (clustertypes.Networ
566 566
 		// ID:     na.Network.ID,
567 567
 		Driver: na.Network.DriverState.Name,
568 568
 		IPAM: &network.IPAM{
569
-			Driver: na.Network.IPAM.Driver.Name,
569
+			Driver:  na.Network.IPAM.Driver.Name,
570
+			Options: na.Network.IPAM.Driver.Options,
570 571
 		},
571 572
 		Options:        na.Network.DriverState.Options,
572 573
 		Labels:         na.Network.Spec.Annotations.Labels,
... ...
@@ -1336,3 +1336,25 @@ Resources:
1336 1336
 	c.Assert(err, checker.IsNil, check.Commentf(out))
1337 1337
 	c.Assert(out, checker.Contains, expectedOutput, check.Commentf(out))
1338 1338
 }
1339
+
1340
+func (s *DockerSwarmSuite) TestSwarmNetworkIPAMOptions(c *check.C) {
1341
+	d := s.AddDaemon(c, true, true)
1342
+
1343
+	out, err := d.Cmd("network", "create", "-d", "overlay", "--ipam-opt", "foo=bar", "foo")
1344
+	c.Assert(err, checker.IsNil, check.Commentf(out))
1345
+	c.Assert(strings.TrimSpace(out), checker.Not(checker.Equals), "")
1346
+
1347
+	out, err = d.Cmd("network", "inspect", "--format", "{{.IPAM.Options}}", "foo")
1348
+	c.Assert(err, checker.IsNil, check.Commentf(out))
1349
+	c.Assert(strings.TrimSpace(out), checker.Equals, "map[foo:bar]")
1350
+
1351
+	out, err = d.Cmd("service", "create", "--network=foo", "--name", "top", "busybox", "top")
1352
+	c.Assert(err, checker.IsNil, check.Commentf(out))
1353
+
1354
+	// make sure task has been deployed.
1355
+	waitAndAssert(c, defaultReconciliationTimeout, d.CheckActiveContainerCount, checker.Equals, 1)
1356
+
1357
+	out, err = d.Cmd("network", "inspect", "--format", "{{.IPAM.Options}}", "foo")
1358
+	c.Assert(err, checker.IsNil, check.Commentf(out))
1359
+	c.Assert(strings.TrimSpace(out), checker.Equals, "map[foo:bar]")
1360
+}