From 2d3174528c59d2ebe2255fc3596fc1d1adac2cdb Mon Sep 17 00:00:00 2001 From: Carlos Sanchez Date: Mon, 6 Jul 2015 20:11:45 +0200 Subject: [PATCH] Add labels to create and inspect container --- .../api/command/CreateContainerCmd.java | 9 ++++++++ .../dockerjava/api/model/ContainerConfig.java | 7 ++++++ .../core/command/CreateContainerCmdImpl.java | 18 +++++++++++++++ .../command/CreateContainerCmdImplTest.java | 22 +++++++++++++++++++ 4 files changed, 56 insertions(+) diff --git a/src/main/java/com/github/dockerjava/api/command/CreateContainerCmd.java b/src/main/java/com/github/dockerjava/api/command/CreateContainerCmd.java index 3b558b6d9..3e31321ee 100644 --- a/src/main/java/com/github/dockerjava/api/command/CreateContainerCmd.java +++ b/src/main/java/com/github/dockerjava/api/command/CreateContainerCmd.java @@ -1,5 +1,7 @@ package com.github.dockerjava.api.command; +import java.util.Map; + import com.github.dockerjava.api.ConflictException; import com.github.dockerjava.api.NotFoundException; import com.github.dockerjava.api.model.Bind; @@ -173,6 +175,8 @@ public static interface Exec extends DockerCmdExec labels); + /** * Add link to another container. */ @@ -238,4 +242,9 @@ public static interface Exec extends DockerCmdExec getLabels(); + } diff --git a/src/main/java/com/github/dockerjava/api/model/ContainerConfig.java b/src/main/java/com/github/dockerjava/api/model/ContainerConfig.java index 8ea673a36..0478e5ef0 100644 --- a/src/main/java/com/github/dockerjava/api/model/ContainerConfig.java +++ b/src/main/java/com/github/dockerjava/api/model/ContainerConfig.java @@ -51,6 +51,9 @@ public class ContainerConfig { @JsonProperty("Image") private String image; + @JsonProperty("Labels") + private Map labels; + @JsonProperty("MacAddress") private String macAddress; @@ -184,6 +187,10 @@ public String[] getOnBuild() { return onBuild; } + public Map getLabels() { + return labels; + } + @Override public String toString() { return ToStringBuilder.reflectionToString(this); diff --git a/src/main/java/com/github/dockerjava/core/command/CreateContainerCmdImpl.java b/src/main/java/com/github/dockerjava/core/command/CreateContainerCmdImpl.java index cc082b61f..3caf3c1bc 100644 --- a/src/main/java/com/github/dockerjava/core/command/CreateContainerCmdImpl.java +++ b/src/main/java/com/github/dockerjava/core/command/CreateContainerCmdImpl.java @@ -2,6 +2,8 @@ import static com.google.common.base.Preconditions.checkNotNull; +import java.util.Map; + import org.apache.commons.lang.builder.ToStringBuilder; import com.fasterxml.jackson.annotation.JsonIgnore; @@ -107,6 +109,9 @@ public class CreateContainerCmdImpl extends AbstrDockerCmd labels; + public CreateContainerCmdImpl(CreateContainerCmd.Exec exec, String image) { super(exec); checkNotNull(image, "image was not specified"); @@ -221,6 +226,12 @@ public Link[] getLinks() { return hostConfig.getLinks(); } + @Override + @JsonIgnore + public Map getLabels() { + return labels; + } + @Override @JsonIgnore public LxcConf[] getLxcConf() { @@ -471,6 +482,13 @@ public CreateContainerCmdImpl withImage(String image) { return this; } + @Override + public CreateContainerCmdImpl withLabels(Map labels) { + checkNotNull(labels, "labels was not specified"); + this.labels = labels; + return this; + } + @Override public CreateContainerCmdImpl withLinks(Link... links) { checkNotNull(links, "links was not specified"); diff --git a/src/test/java/com/github/dockerjava/core/command/CreateContainerCmdImplTest.java b/src/test/java/com/github/dockerjava/core/command/CreateContainerCmdImplTest.java index a33cfddfe..efeed530a 100644 --- a/src/test/java/com/github/dockerjava/core/command/CreateContainerCmdImplTest.java +++ b/src/test/java/com/github/dockerjava/core/command/CreateContainerCmdImplTest.java @@ -13,6 +13,8 @@ import java.lang.reflect.Method; import java.security.SecureRandom; import java.util.Arrays; +import java.util.HashMap; +import java.util.Map; import java.util.UUID; import static com.github.dockerjava.api.model.Capability.MKNOD; @@ -490,4 +492,24 @@ public void createContainerWithULimits() throws DockerException { } + @Test + public void createContainerWithLabels() throws DockerException { + + Map labels = new HashMap(); + labels.put("com.github.dockerjava.null", null); + labels.put("com.github.dockerjava.boolean", "true"); + + CreateContainerResponse container = dockerClient.createContainerCmd("busybox").withCmd("sleep", "9999") + .withLabels(labels).exec(); + + LOG.info("Created container {}", container.toString()); + + assertThat(container.getId(), not(isEmptyString())); + + InspectContainerResponse inspectContainerResponse = dockerClient.inspectContainerCmd(container.getId()).exec(); + + // null becomes empty string + labels.put("com.github.dockerjava.null", ""); + assertThat(inspectContainerResponse.getConfig().getLabels(), is(equalTo(labels))); + } }