diff --git a/src/main/java/com/github/dockerjava/api/model/Network.java b/src/main/java/com/github/dockerjava/api/model/Network.java index 546904254..583441049 100644 --- a/src/main/java/com/github/dockerjava/api/model/Network.java +++ b/src/main/java/com/github/dockerjava/api/model/Network.java @@ -149,6 +149,18 @@ public String getIpRange() { public String getGateway() { return gateway; } + + public void setSubnet(String subnet) { + this.subnet = subnet; + } + + public void setIpRange(String ipRange) { + this.ipRange = ipRange; + } + + public void setGateway(String gateway) { + this.gateway = gateway; + } } } } diff --git a/src/main/java/com/github/dockerjava/core/command/CreateNetworkCmdImpl.java b/src/main/java/com/github/dockerjava/core/command/CreateNetworkCmdImpl.java index c7d3b0abb..b07076dc5 100644 --- a/src/main/java/com/github/dockerjava/core/command/CreateNetworkCmdImpl.java +++ b/src/main/java/com/github/dockerjava/core/command/CreateNetworkCmdImpl.java @@ -58,6 +58,9 @@ public CreateNetworkCmd withDriver(String driver) { @Override public CreateNetworkCmd withIpamConfig(Ipam.Config config) { + if (this.ipam == null) { + this.ipam = new Ipam(); + } this.ipam.getConfig().add(config); return this; } diff --git a/src/test/java/com/github/dockerjava/core/command/CreateNetworkCmdImplTest.java b/src/test/java/com/github/dockerjava/core/command/CreateNetworkCmdImplTest.java index eefeb535f..4875ba7c5 100644 --- a/src/test/java/com/github/dockerjava/core/command/CreateNetworkCmdImplTest.java +++ b/src/test/java/com/github/dockerjava/core/command/CreateNetworkCmdImplTest.java @@ -49,4 +49,20 @@ public void createNetwork() throws DockerException { assertEquals(network.getName(), networkName); assertEquals(network.getDriver(), "bridge"); } + + @Test + public void createNetworkWithIpamConfig() throws DockerException { + + String networkName = "testNetwork"; + Network.Ipam.Config config = new Network.Ipam.Config(); + config.setSubnet("10.67.79.0/24"); + CreateNetworkResponse createNetworkResponse = dockerClient.createNetworkCmd().withName(networkName).withIpamConfig(config).exec(); + + assertNotNull(createNetworkResponse.getId()); + + Network network = dockerClient.inspectNetworkCmd().withNetworkId(createNetworkResponse.getId()).exec(); + assertEquals(network.getName(), networkName); + assertEquals(network.getDriver(), "bridge"); + assertEquals("10.67.79.0/24", network.getIpam().getConfig().iterator().next().getSubnet()); + } } diff --git a/src/test/java/com/github/dockerjava/netty/exec/CreateNetworkCmdExecTest.java b/src/test/java/com/github/dockerjava/netty/exec/CreateNetworkCmdExecTest.java index fa9962826..63f2eb620 100644 --- a/src/test/java/com/github/dockerjava/netty/exec/CreateNetworkCmdExecTest.java +++ b/src/test/java/com/github/dockerjava/netty/exec/CreateNetworkCmdExecTest.java @@ -49,4 +49,20 @@ public void createNetwork() throws DockerException { assertEquals(network.getName(), networkName); assertEquals(network.getDriver(), "bridge"); } + + @Test + public void createNetworkWithIpamConfig() throws DockerException { + + String networkName = "testNetwork"; + Network.Ipam.Config config = new Network.Ipam.Config(); + config.setSubnet("10.67.79.0/24"); + CreateNetworkResponse createNetworkResponse = dockerClient.createNetworkCmd().withName(networkName).withIpamConfig(config).exec(); + + assertNotNull(createNetworkResponse.getId()); + + Network network = dockerClient.inspectNetworkCmd().withNetworkId(createNetworkResponse.getId()).exec(); + assertEquals(network.getName(), networkName); + assertEquals(network.getDriver(), "bridge"); + assertEquals("10.67.79.0/24", network.getIpam().getConfig().iterator().next().getSubnet()); + } }