From dc8b02578905d761e3797b6d4fa07ba1cd17c9af Mon Sep 17 00:00:00 2001 From: Christopher Dancy Date: Fri, 17 Jul 2015 16:36:42 -0400 Subject: [PATCH 1/3] Added support for HostConfig.LogConfig --- .../dockerjava/api/model/HostConfig.java | 16 ++++++++- .../dockerjava/api/model/LogConfig.java | 36 +++++++++++++++++++ 2 files changed, 51 insertions(+), 1 deletion(-) create mode 100644 src/main/java/com/github/dockerjava/api/model/LogConfig.java diff --git a/src/main/java/com/github/dockerjava/api/model/HostConfig.java b/src/main/java/com/github/dockerjava/api/model/HostConfig.java index 8e228fbbd..6bced8395 100644 --- a/src/main/java/com/github/dockerjava/api/model/HostConfig.java +++ b/src/main/java/com/github/dockerjava/api/model/HostConfig.java @@ -17,6 +17,9 @@ public class HostConfig { @JsonProperty("LxcConf") private LxcConf[] lxcConf; + + @JsonProperty("LogConfig") + private LogConfig logConfig; @JsonProperty("PortBindings") private Ports portBindings; @@ -66,13 +69,14 @@ public class HostConfig { public HostConfig() { } - public HostConfig(Bind[] binds, Link[] links, LxcConf[] lxcConf, Ports portBindings, boolean publishAllPorts, + public HostConfig(Bind[] binds, Link[] links, LxcConf[] lxcConf, LogConfig logConfig, Ports portBindings, boolean publishAllPorts, boolean privileged, boolean readonlyRootfs, String[] dns, String[] dnsSearch, VolumesFrom[] volumesFrom, String containerIDFile, Capability[] capAdd, Capability[] capDrop, RestartPolicy restartPolicy, String networkMode, Device[] devices, String[] extraHosts, Ulimit[] ulimits) { this.binds = new Binds(binds); this.links = new Links(links); this.lxcConf = lxcConf; + this.logConfig = logConfig; this.portBindings = portBindings; this.publishAllPorts = publishAllPorts; this.privileged = privileged; @@ -98,6 +102,11 @@ public Bind[] getBinds() { public LxcConf[] getLxcConf() { return lxcConf; } + + @JsonIgnore + public LogConfig getLogConfig() { + return (logConfig == null) ? new LogConfig() : logConfig; + } public Ports getPortBindings() { return portBindings; @@ -177,6 +186,11 @@ public void setLinks(Link... links) { public void setLxcConf(LxcConf[] lxcConf) { this.lxcConf = lxcConf; } + + @JsonIgnore + public void setLogConfig(LogConfig logConfig) { + this.logConfig = logConfig; + } public void setPortBindings(Ports portBindings) { this.portBindings = portBindings; diff --git a/src/main/java/com/github/dockerjava/api/model/LogConfig.java b/src/main/java/com/github/dockerjava/api/model/LogConfig.java new file mode 100644 index 000000000..f7d6a648b --- /dev/null +++ b/src/main/java/com/github/dockerjava/api/model/LogConfig.java @@ -0,0 +1,36 @@ +package com.github.dockerjava.api.model; + +import java.util.List; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonProperty; + +public class LogConfig { + + @JsonProperty("Type") + public String type = "json-file"; + + @JsonProperty("Config") + public List config = null; + + public LogConfig(String type) { + this.type = type; + } + + public LogConfig() { + } + + public String getType() { + return type; + } + + @JsonIgnore + public List getConfig() { + return config; + } + + public LogConfig setType(String type) { + this.type = type; + return this; + } +} From 3e00a59902e8c122e70112026576e37150e4de81 Mon Sep 17 00:00:00 2001 From: Christopher Dancy Date: Sat, 18 Jul 2015 09:22:08 -0400 Subject: [PATCH 2/3] REMOVED: 'json-file' default as this is redundant. ADDED: documentation on how to use LogConfig and its available drivers. ADDED: fleshed out LogConfig support to be more in line with other options. --- .../api/command/CreateContainerCmd.java | 5 +++ .../dockerjava/api/model/LogConfig.java | 41 +++++++++++++++---- .../core/command/CreateContainerCmdImpl.java | 14 +++++++ 3 files changed, 51 insertions(+), 9 deletions(-) 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 371774414..4623167d0 100644 --- a/src/main/java/com/github/dockerjava/api/command/CreateContainerCmd.java +++ b/src/main/java/com/github/dockerjava/api/command/CreateContainerCmd.java @@ -10,6 +10,7 @@ import com.github.dockerjava.api.model.ExposedPort; import com.github.dockerjava.api.model.HostConfig; import com.github.dockerjava.api.model.Link; +import com.github.dockerjava.api.model.LogConfig; import com.github.dockerjava.api.model.LxcConf; import com.github.dockerjava.api.model.PortBinding; import com.github.dockerjava.api.model.Ports; @@ -88,6 +89,8 @@ public static interface Exec extends DockerCmdSyncExec config = null; + public Map config; - public LogConfig(String type) { + public LogConfig(String type, Map config) { this.type = type; + this.config = config; } public LogConfig() { @@ -23,14 +40,20 @@ public LogConfig() { public String getType() { return type; } - - @JsonIgnore - public List getConfig() { - return config; - } public LogConfig setType(String type) { this.type = type; return this; } + + @JsonIgnore + public Map getConfig() { + return config; + } + + @JsonIgnore + public LogConfig setConfig(Map config) { + this.config = config; + return 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 328513211..70177b57f 100644 --- a/src/main/java/com/github/dockerjava/core/command/CreateContainerCmdImpl.java +++ b/src/main/java/com/github/dockerjava/core/command/CreateContainerCmdImpl.java @@ -19,6 +19,7 @@ import com.github.dockerjava.api.model.ExposedPorts; import com.github.dockerjava.api.model.HostConfig; import com.github.dockerjava.api.model.Link; +import com.github.dockerjava.api.model.LogConfig; import com.github.dockerjava.api.model.LxcConf; import com.github.dockerjava.api.model.PortBinding; import com.github.dockerjava.api.model.Ports; @@ -269,6 +270,12 @@ public Map getLabels() { public LxcConf[] getLxcConf() { return hostConfig.getLxcConf(); } + + @Override + @JsonIgnore + public LogConfig getLogConfig() { + return hostConfig.getLogConfig(); + } public String getMacAddress() { return macAddress; @@ -558,6 +565,13 @@ public CreateContainerCmd withLxcConf(LxcConf... lxcConf) { this.hostConfig.setLxcConf(lxcConf); return this; } + + @Override + public CreateContainerCmd withLogConfig(LogConfig logConfig) { + checkNotNull(logConfig, "logConfig was not specified"); + this.hostConfig.setLogConfig(logConfig); + return this; + } @Override public CreateContainerCmdImpl withMacAddress(String macAddress) { From 6dd3c764d2b504b9206477ce69a8e5f01b974cde Mon Sep 17 00:00:00 2001 From: Christopher Dancy Date: Mon, 20 Jul 2015 10:18:31 -0400 Subject: [PATCH 3/3] ADDED: test 'createContainerWithLogConfig' to ensure LogConfig was properly set --- .../command/CreateContainerCmdImplTest.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) 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 00322bffa..eb5d1a3f0 100644 --- a/src/test/java/com/github/dockerjava/core/command/CreateContainerCmdImplTest.java +++ b/src/test/java/com/github/dockerjava/core/command/CreateContainerCmdImplTest.java @@ -38,6 +38,7 @@ import com.github.dockerjava.api.model.ExposedPort; import com.github.dockerjava.api.model.HostConfig; import com.github.dockerjava.api.model.Link; +import com.github.dockerjava.api.model.LogConfig; import com.github.dockerjava.api.model.Ports; import com.github.dockerjava.api.model.RestartPolicy; import com.github.dockerjava.api.model.Ulimit; @@ -534,4 +535,21 @@ public void createContainerWithLabels() throws DockerException { labels.put("com.github.dockerjava.null", ""); assertThat(inspectContainerResponse.getConfig().getLabels(), is(equalTo(labels))); } + + @Test(groups = "ignoreInCircleCi") + public void createContainerWithLogConfig() throws DockerException { + + LogConfig logConfig = new LogConfig("none", null); + CreateContainerResponse container = dockerClient.createContainerCmd("busybox"). + withLogConfig(logConfig).exec(); + + LOG.info("Created container {}", container.toString()); + + assertThat(container.getId(), not(isEmptyString())); + + InspectContainerResponse inspectContainerResponse = dockerClient.inspectContainerCmd(container.getId()).exec(); + + // null becomes empty string + assertEquals(inspectContainerResponse.getHostConfig().getLogConfig().type, logConfig.type); + } }