From c9a723504341058d9df97b5978e1f36e0b34dfc4 Mon Sep 17 00:00:00 2001 From: "Ciro S. Costa" Date: Wed, 14 Dec 2016 17:17:37 -0200 Subject: [PATCH] Adds network labels to createNetworkCmd and Network domain --- .../api/command/CreateNetworkCmd.java | 11 ++++++++++ .../github/dockerjava/api/model/Network.java | 9 ++++++++ .../core/command/CreateNetworkCmdImpl.java | 21 ++++++++++++++++--- .../command/CreateNetworkCmdImplTest.java | 21 +++++++++++++++++++ 4 files changed, 59 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/github/dockerjava/api/command/CreateNetworkCmd.java b/src/main/java/com/github/dockerjava/api/command/CreateNetworkCmd.java index 39989bd13..dc1f2cb86 100644 --- a/src/main/java/com/github/dockerjava/api/command/CreateNetworkCmd.java +++ b/src/main/java/com/github/dockerjava/api/command/CreateNetworkCmd.java @@ -36,6 +36,12 @@ public interface CreateNetworkCmd extends SyncDockerCmd { @CheckForNull Boolean getEnableIPv6(); + /** + * @since {@link RemoteApiVersion#VERSION_1_23} + */ + @CheckForNull + Map getLabels(); + /** The new network's name. Required. */ CreateNetworkCmd withName(@Nonnull String name); @@ -52,6 +58,11 @@ public interface CreateNetworkCmd extends SyncDockerCmd { CreateNetworkCmd withInternal(boolean internal); + /** + * @since {@link RemoteApiVersion#VERSION_1_23} + */ + CreateNetworkCmd withLabels(Map labels); + CreateNetworkCmd withEnableIpv6(boolean enableIpv6); interface Exec extends DockerCmdSyncExec { 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 c0f9f36eb..bbccba79a 100644 --- a/src/main/java/com/github/dockerjava/api/model/Network.java +++ b/src/main/java/com/github/dockerjava/api/model/Network.java @@ -34,6 +34,9 @@ public class Network implements Serializable { @JsonProperty("Containers") private Map containers; + @JsonProperty("Labels") + private Map labels; + @JsonProperty("Options") private Map options; @@ -53,6 +56,12 @@ public String getDriver() { return driver; } + + public Map getLabels() { + return labels; + } + + public Ipam getIpam() { return ipam; } 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 834aa6905..980ef50ca 100644 --- a/src/main/java/com/github/dockerjava/core/command/CreateNetworkCmdImpl.java +++ b/src/main/java/com/github/dockerjava/core/command/CreateNetworkCmdImpl.java @@ -1,8 +1,5 @@ package com.github.dockerjava.core.command; -import java.util.HashMap; -import java.util.Map; - import com.fasterxml.jackson.annotation.JsonProperty; import com.github.dockerjava.api.command.CreateNetworkCmd; import com.github.dockerjava.api.command.CreateNetworkResponse; @@ -10,6 +7,9 @@ import com.github.dockerjava.api.model.Network; import com.github.dockerjava.api.model.Network.Ipam; +import java.util.HashMap; +import java.util.Map; + public class CreateNetworkCmdImpl extends AbstrDockerCmd implements CreateNetworkCmd { @@ -28,6 +28,9 @@ public class CreateNetworkCmdImpl extends AbstrDockerCmd labels; + @JsonProperty("Internal") private Boolean internal; @@ -73,6 +76,12 @@ public Boolean getEnableIPv6() { return enableIpv6; } + @Override + public Map getLabels() { + return labels; + } + + @Override public CreateNetworkCmd withName(String name) { this.name = name; @@ -109,6 +118,12 @@ public CreateNetworkCmd withInternal(boolean internal) { return this; } + @Override + public CreateNetworkCmd withLabels(Map labels) { + this.labels = labels; + return this; + } + @Override public CreateNetworkCmd withEnableIpv6(boolean enableIpv6) { this.enableIpv6 = enableIpv6; 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 cc70331f2..3f53783de 100644 --- a/src/test/java/com/github/dockerjava/core/command/CreateNetworkCmdImplTest.java +++ b/src/test/java/com/github/dockerjava/core/command/CreateNetworkCmdImplTest.java @@ -12,6 +12,10 @@ import org.testng.annotations.Test; import java.lang.reflect.Method; +import java.util.Collections; + +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.equalTo; @Test(groups = "integration") public class CreateNetworkCmdImplTest extends AbstractDockerClientTest { @@ -64,4 +68,21 @@ public void createNetworkWithIpamConfig() throws DockerException { assertEquals(network.getDriver(), "bridge"); assertEquals("10.67.79.0/24", network.getIpam().getConfig().iterator().next().getSubnet()); } + + + @Test + public void createNetworkWithLabels() throws DockerException { + + String networkName = "testNetwork"; + CreateNetworkResponse createNetworkResponse = dockerClient.createNetworkCmd() + .withName(networkName).withLabels(Collections.singletonMap("test", "abc")).exec(); + + assertNotNull(createNetworkResponse.getId()); + + Network network = dockerClient.inspectNetworkCmd().withNetworkId(createNetworkResponse.getId()).exec(); + assertEquals(network.getName(), networkName); + assertThat(network.getLabels().get("test"), equalTo("abc")); + assertEquals(network.getDriver(), "bridge"); + } + }