diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/command/CreateVolumeCmd.java b/docker-java-api/src/main/java/com/github/dockerjava/api/command/CreateVolumeCmd.java index 3d052033f..4a3ef9819 100644 --- a/docker-java-api/src/main/java/com/github/dockerjava/api/command/CreateVolumeCmd.java +++ b/docker-java-api/src/main/java/com/github/dockerjava/api/command/CreateVolumeCmd.java @@ -9,6 +9,9 @@ public interface CreateVolumeCmd extends SyncDockerCmd { @CheckForNull String getName(); + @CheckForNull + Map getLabels(); + @CheckForNull String getDriver(); @@ -21,6 +24,12 @@ public interface CreateVolumeCmd extends SyncDockerCmd { */ CreateVolumeCmd withName(String name); + /** + * @param labels + * - A mapping of labels keys and values. Labels are a mechanism for applying metadata to Docker objects. + */ + CreateVolumeCmd withLabels(Map labels); + /** * @param driver * - Name of the volume driver to use. Defaults to local for the name. diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/command/CreateVolumeResponse.java b/docker-java-api/src/main/java/com/github/dockerjava/api/command/CreateVolumeResponse.java index a6dffb94d..9c31b8dc4 100644 --- a/docker-java-api/src/main/java/com/github/dockerjava/api/command/CreateVolumeResponse.java +++ b/docker-java-api/src/main/java/com/github/dockerjava/api/command/CreateVolumeResponse.java @@ -4,6 +4,8 @@ import lombok.EqualsAndHashCode; import lombok.ToString; +import java.util.Map; + /** * * @author Marcus Linke @@ -15,6 +17,9 @@ public class CreateVolumeResponse { @JsonProperty("Name") private String name; + @JsonProperty("Labels") + private Map labels; + @JsonProperty("Driver") private String driver; @@ -25,6 +30,10 @@ public String getName() { return name; } + public Map getLabels() { + return labels; + } + public String getDriver() { return driver; } diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/command/InspectVolumeResponse.java b/docker-java-api/src/main/java/com/github/dockerjava/api/command/InspectVolumeResponse.java index 020e0f9ae..c79232811 100644 --- a/docker-java-api/src/main/java/com/github/dockerjava/api/command/InspectVolumeResponse.java +++ b/docker-java-api/src/main/java/com/github/dockerjava/api/command/InspectVolumeResponse.java @@ -4,6 +4,8 @@ import lombok.EqualsAndHashCode; import lombok.ToString; +import java.util.Map; + /** * * @author Marcus Linke @@ -15,6 +17,9 @@ public class InspectVolumeResponse { @JsonProperty("Name") private String name; + @JsonProperty("Labels") + private Map labels; + @JsonProperty("Driver") private String driver; @@ -25,6 +30,10 @@ public String getName() { return name; } + public Map getLabels() { + return labels; + } + public String getDriver() { return driver; } diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/command/CreateVolumeCmdImpl.java b/docker-java-core/src/main/java/com/github/dockerjava/core/command/CreateVolumeCmdImpl.java index 46b12ebea..48dbcfa1e 100644 --- a/docker-java-core/src/main/java/com/github/dockerjava/core/command/CreateVolumeCmdImpl.java +++ b/docker-java-core/src/main/java/com/github/dockerjava/core/command/CreateVolumeCmdImpl.java @@ -19,6 +19,9 @@ public class CreateVolumeCmdImpl extends AbstrDockerCmd labels; + @JsonProperty("Driver") private String driver; @@ -34,6 +37,11 @@ public String getName() { return name; } + @Override + public Map getLabels() { + return labels; + } + @Override public String getDriver() { return driver; @@ -51,6 +59,13 @@ public CreateVolumeCmdImpl withName(String name) { return this; } + @Override + public CreateVolumeCmdImpl withLabels(Map labels) { + checkNotNull(labels, "labels was not specified"); + this.labels = labels; + return this; + } + @Override public CreateVolumeCmdImpl withDriver(String driver) { checkNotNull(driver, "driver was not specified"); diff --git a/docker-java/src/test/java/com/github/dockerjava/cmd/CreateVolumeCmdIT.java b/docker-java/src/test/java/com/github/dockerjava/cmd/CreateVolumeCmdIT.java index 951b1ed6d..f59907afa 100644 --- a/docker-java/src/test/java/com/github/dockerjava/cmd/CreateVolumeCmdIT.java +++ b/docker-java/src/test/java/com/github/dockerjava/cmd/CreateVolumeCmdIT.java @@ -4,6 +4,8 @@ import com.github.dockerjava.api.exception.DockerException; import org.junit.Test; +import java.util.Collections; + import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.containsString; import static org.hamcrest.Matchers.equalTo; @@ -16,10 +18,11 @@ public void createVolume() throws DockerException { String volumeName = "volume1"; CreateVolumeResponse createVolumeResponse = dockerRule.getClient().createVolumeCmd().withName(volumeName) - .withDriver("local").exec(); + .withDriver("local").withLabels(Collections.singletonMap("is-timelord", "yes")).exec(); assertThat(createVolumeResponse.getName(), equalTo(volumeName)); assertThat(createVolumeResponse.getDriver(), equalTo("local")); + assertThat(createVolumeResponse.getLabels(), equalTo(Collections.singletonMap("is-timelord", "yes"))); assertThat(createVolumeResponse.getMountpoint(), containsString("/volume1/")); } @@ -29,17 +32,19 @@ public void createVolumeWithExistingName() throws DockerException { String volumeName = "volume1"; CreateVolumeResponse createVolumeResponse1 = dockerRule.getClient().createVolumeCmd().withName(volumeName) - .withDriver("local").exec(); + .withDriver("local").withLabels(Collections.singletonMap("is-timelord", "yes")).exec(); assertThat(createVolumeResponse1.getName(), equalTo(volumeName)); assertThat(createVolumeResponse1.getDriver(), equalTo("local")); + assertThat(createVolumeResponse1.getLabels(), equalTo(Collections.singletonMap("is-timelord", "yes"))); assertThat(createVolumeResponse1.getMountpoint(), containsString("/volume1/")); CreateVolumeResponse createVolumeResponse2 = dockerRule.getClient().createVolumeCmd().withName(volumeName) - .withDriver("local").exec(); + .withDriver("local").withLabels(Collections.singletonMap("is-timelord", "yes")).exec(); assertThat(createVolumeResponse2.getName(), equalTo(volumeName)); assertThat(createVolumeResponse2.getDriver(), equalTo("local")); + assertThat(createVolumeResponse2.getLabels(), equalTo(Collections.singletonMap("is-timelord", "yes"))); assertThat(createVolumeResponse2.getMountpoint(), equalTo(createVolumeResponse1.getMountpoint())); } } diff --git a/docker-java/src/test/java/com/github/dockerjava/cmd/InspectVolumeCmdIT.java b/docker-java/src/test/java/com/github/dockerjava/cmd/InspectVolumeCmdIT.java index 20e56dceb..2e9b806b2 100644 --- a/docker-java/src/test/java/com/github/dockerjava/cmd/InspectVolumeCmdIT.java +++ b/docker-java/src/test/java/com/github/dockerjava/cmd/InspectVolumeCmdIT.java @@ -5,6 +5,8 @@ import com.github.dockerjava.api.exception.NotFoundException; import org.junit.Test; +import java.util.Collections; + import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.containsString; import static org.hamcrest.Matchers.equalTo; @@ -16,12 +18,14 @@ public void inspectVolume() throws DockerException { String volumeName = "volume1"; - dockerRule.getClient().createVolumeCmd().withName(volumeName).withDriver("local").exec(); + dockerRule.getClient().createVolumeCmd().withName(volumeName).withDriver("local") + .withLabels(Collections.singletonMap("is-timelord", "yes")).exec(); InspectVolumeResponse inspectVolumeResponse = dockerRule.getClient().inspectVolumeCmd(volumeName).exec(); assertThat(inspectVolumeResponse.getName(), equalTo("volume1")); assertThat(inspectVolumeResponse.getDriver(), equalTo("local")); + assertThat(inspectVolumeResponse.getLabels(), equalTo(Collections.singletonMap("is-timelord", "yes"))); assertThat(inspectVolumeResponse.getMountpoint(), containsString("/volume1/")); } diff --git a/docker-java/src/test/java/com/github/dockerjava/cmd/ListVolumesCmdIT.java b/docker-java/src/test/java/com/github/dockerjava/cmd/ListVolumesCmdIT.java index a54ae33da..df073e16d 100644 --- a/docker-java/src/test/java/com/github/dockerjava/cmd/ListVolumesCmdIT.java +++ b/docker-java/src/test/java/com/github/dockerjava/cmd/ListVolumesCmdIT.java @@ -5,6 +5,8 @@ import com.github.dockerjava.api.exception.DockerException; import org.junit.Test; +import java.util.Collections; + import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.containsString; import static org.hamcrest.Matchers.equalTo; @@ -16,10 +18,11 @@ public class ListVolumesCmdIT extends CmdIT { public void listVolumes() throws DockerException { CreateVolumeResponse createVolumeResponse = dockerRule.getClient().createVolumeCmd().withName("volume1") - .withDriver("local").exec(); + .withDriver("local").withLabels(Collections.singletonMap("is-timelord", "yes")).exec(); assertThat(createVolumeResponse.getName(), equalTo("volume1")); assertThat(createVolumeResponse.getDriver(), equalTo("local")); + assertThat(createVolumeResponse.getLabels(), equalTo(Collections.singletonMap("is-timelord", "yes"))); assertThat(createVolumeResponse.getMountpoint(), containsString("/volume1/")); ListVolumesResponse listVolumesResponse = dockerRule.getClient().listVolumesCmd().exec(); diff --git a/docker-java/src/test/java/com/github/dockerjava/cmd/RemoveVolumeCmdIT.java b/docker-java/src/test/java/com/github/dockerjava/cmd/RemoveVolumeCmdIT.java index 562e43c4c..76037e1e3 100644 --- a/docker-java/src/test/java/com/github/dockerjava/cmd/RemoveVolumeCmdIT.java +++ b/docker-java/src/test/java/com/github/dockerjava/cmd/RemoveVolumeCmdIT.java @@ -5,6 +5,8 @@ import com.github.dockerjava.api.exception.NotFoundException; import org.junit.Test; +import java.util.Collections; + import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.containsString; import static org.hamcrest.Matchers.equalTo; @@ -19,10 +21,12 @@ public void removeVolume() throws DockerException { CreateVolumeResponse createVolumeResponse = dockerRule.getClient().createVolumeCmd() .withName(volumeName) - .withDriver("local").exec(); + .withDriver("local") + .withLabels(Collections.singletonMap("is-timelord", "yes")).exec(); assertThat(createVolumeResponse.getName(), equalTo(volumeName)); assertThat(createVolumeResponse.getDriver(), equalTo("local")); + assertThat(createVolumeResponse.getLabels(), equalTo(Collections.singletonMap("is-timelord", "yes"))); assertThat(createVolumeResponse.getMountpoint(), containsString(volumeName)); dockerRule.getClient().removeVolumeCmd(volumeName).exec();