You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ja...@apache.org on 2019/04/03 08:53:57 UTC
[camel] branch master updated: CAMEL-12002: Upgrade docker-java
client to 3.1.1
This is an automated email from the ASF dual-hosted git repository.
jamesnetherton pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/master by this push:
new b00cd86 CAMEL-12002: Upgrade docker-java client to 3.1.1
b00cd86 is described below
commit b00cd869d0eea176310ffe2ba11bd2dac3520cf6
Author: James Netherton <ja...@gmail.com>
AuthorDate: Wed Apr 3 09:25:46 2019 +0100
CAMEL-12002: Upgrade docker-java client to 3.1.1
---
.../component/docker/producer/DockerProducer.java | 27 +++---
.../headers/CopyFileContainerCmdHeaderTest.java | 11 ++-
.../headers/CreateContainerCmdHeaderTest.java | 20 +++--
.../docker/it/FakeDockerCmdExecFactory.java | 98 +++++++++++++++++++++-
parent/pom.xml | 4 +-
.../karaf/features/src/main/resources/features.xml | 3 +-
6 files changed, 132 insertions(+), 31 deletions(-)
diff --git a/components/camel-docker/src/main/java/org/apache/camel/component/docker/producer/DockerProducer.java b/components/camel-docker/src/main/java/org/apache/camel/component/docker/producer/DockerProducer.java
index 7463825..6be98ef 100644
--- a/components/camel-docker/src/main/java/org/apache/camel/component/docker/producer/DockerProducer.java
+++ b/components/camel-docker/src/main/java/org/apache/camel/component/docker/producer/DockerProducer.java
@@ -22,7 +22,7 @@ import com.github.dockerjava.api.DockerClient;
import com.github.dockerjava.api.command.AuthCmd;
import com.github.dockerjava.api.command.CommitCmd;
import com.github.dockerjava.api.command.ContainerDiffCmd;
-import com.github.dockerjava.api.command.CopyFileFromContainerCmd;
+import com.github.dockerjava.api.command.CopyArchiveFromContainerCmd;
import com.github.dockerjava.api.command.CreateContainerCmd;
import com.github.dockerjava.api.command.CreateImageCmd;
import com.github.dockerjava.api.command.ExecCreateCmd;
@@ -67,6 +67,8 @@ import org.apache.camel.util.ObjectHelper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import static com.github.dockerjava.api.model.HostConfig.newHostConfig;
+
/**
* The Docker producer.
*/
@@ -587,7 +589,7 @@ public class DockerProducer extends DefaultProducer {
* @param message
* @return
*/
- private CopyFileFromContainerCmd executeCopyFileContainerRequest(DockerClient client, Message message) {
+ private CopyArchiveFromContainerCmd executeCopyFileContainerRequest(DockerClient client, Message message) {
LOGGER.debug("Executing Docker Copy File/Folder Container Request");
@@ -598,15 +600,15 @@ public class DockerProducer extends DefaultProducer {
throw new IllegalArgumentException("Container ID and Resource must be specified");
}
- CopyFileFromContainerCmd copyFileContainerCmd = client.copyFileFromContainerCmd(containerId, resource);
+ CopyArchiveFromContainerCmd copyArchiveFromContainerCmd = client.copyArchiveFromContainerCmd(containerId, resource);
String hostPath = DockerHelper.getProperty(DockerConstants.DOCKER_HOST_PATH, configuration, message, String.class);
if (hostPath != null) {
- copyFileContainerCmd.withHostPath(hostPath);
+ copyArchiveFromContainerCmd.withHostPath(hostPath);
}
- return copyFileContainerCmd;
+ return copyArchiveFromContainerCmd;
}
@@ -626,6 +628,7 @@ public class DockerProducer extends DefaultProducer {
ObjectHelper.notNull(image, "Image must be specified");
CreateContainerCmd createContainerCmd = client.createContainerCmd(image);
+ createContainerCmd.withHostConfig(newHostConfig());
Boolean attachStdErr = DockerHelper.getProperty(DockerConstants.DOCKER_ATTACH_STD_ERR, configuration, message, Boolean.class);
@@ -648,13 +651,13 @@ public class DockerProducer extends DefaultProducer {
Capability[] capAdd = DockerHelper.getArrayProperty(DockerConstants.DOCKER_CAP_ADD, message, Capability.class);
if (capAdd != null) {
- createContainerCmd.withCapAdd(capAdd);
+ createContainerCmd.getHostConfig().withCapAdd(capAdd);
}
Capability[] capDrop = DockerHelper.getArrayProperty(DockerConstants.DOCKER_CAP_DROP, message, Capability.class);
if (capDrop != null) {
- createContainerCmd.withCapDrop(capDrop);
+ createContainerCmd.getHostConfig().withCapDrop(capDrop);
}
String[] cmd = DockerHelper.parseDelimitedStringHeader(DockerConstants.DOCKER_CMD, message);
@@ -666,7 +669,7 @@ public class DockerProducer extends DefaultProducer {
Integer cpuShares = DockerHelper.getProperty(DockerConstants.DOCKER_CPU_SHARES, configuration, message, Integer.class);
if (cpuShares != null) {
- createContainerCmd.withCpuShares(cpuShares);
+ createContainerCmd.getHostConfig().withCpuShares(cpuShares);
}
Boolean disableNetwork = DockerHelper.getProperty(DockerConstants.DOCKER_DISABLE_NETWORK, configuration, message, Boolean.class);
@@ -678,7 +681,7 @@ public class DockerProducer extends DefaultProducer {
String[] dns = DockerHelper.parseDelimitedStringHeader(DockerConstants.DOCKER_DNS, message);
if (dns != null) {
- createContainerCmd.withDns(dns);
+ createContainerCmd.getHostConfig().withDns(dns);
}
String domainName = DockerHelper.getProperty(DockerConstants.DOCKER_DOMAIN_NAME, configuration, message, String.class);
@@ -720,13 +723,13 @@ public class DockerProducer extends DefaultProducer {
Long memoryLimit = DockerHelper.getProperty(DockerConstants.DOCKER_MEMORY_LIMIT, configuration, message, Long.class);
if (memoryLimit != null) {
- createContainerCmd.withMemory(memoryLimit);
+ createContainerCmd.getHostConfig().withMemory(memoryLimit);
}
Long memorySwap = DockerHelper.getProperty(DockerConstants.DOCKER_MEMORY_SWAP, configuration, message, Long.class);
if (memorySwap != null) {
- createContainerCmd.withMemorySwap(memorySwap);
+ createContainerCmd.getHostConfig().withMemorySwap(memorySwap);
}
String name = DockerHelper.getProperty(DockerConstants.DOCKER_NAME, configuration, message, String.class);
@@ -774,7 +777,7 @@ public class DockerProducer extends DefaultProducer {
VolumesFrom[] volumesFrom = DockerHelper.getArrayProperty(DockerConstants.DOCKER_VOLUMES_FROM, message, VolumesFrom.class);
if (volumesFrom != null) {
- createContainerCmd.withVolumesFrom(volumesFrom);
+ createContainerCmd.getHostConfig().withVolumesFrom(volumesFrom);
}
String workingDir = DockerHelper.getProperty(DockerConstants.DOCKER_WORKING_DIR, configuration, message, String.class);
diff --git a/components/camel-docker/src/test/java/org/apache/camel/component/docker/headers/CopyFileContainerCmdHeaderTest.java b/components/camel-docker/src/test/java/org/apache/camel/component/docker/headers/CopyFileContainerCmdHeaderTest.java
index 8c5fd31..7cd70c0 100644
--- a/components/camel-docker/src/test/java/org/apache/camel/component/docker/headers/CopyFileContainerCmdHeaderTest.java
+++ b/components/camel-docker/src/test/java/org/apache/camel/component/docker/headers/CopyFileContainerCmdHeaderTest.java
@@ -18,7 +18,7 @@ package org.apache.camel.component.docker.headers;
import java.util.Map;
-import com.github.dockerjava.api.command.CopyFileFromContainerCmd;
+import com.github.dockerjava.api.command.CopyArchiveFromContainerCmd;
import org.apache.camel.component.docker.DockerConstants;
import org.apache.camel.component.docker.DockerOperation;
@@ -32,10 +32,10 @@ import static org.mockito.ArgumentMatchers.eq;
/**
* Validates Copy File from Container Request headers are applied properly
*/
-public class CopyFileContainerCmdHeaderTest extends BaseDockerHeaderTest<CopyFileFromContainerCmd> {
+public class CopyFileContainerCmdHeaderTest extends BaseDockerHeaderTest<CopyArchiveFromContainerCmd> {
@Mock
- private CopyFileFromContainerCmd mockObject;
+ private CopyArchiveFromContainerCmd mockObject;
@Test
public void copyFileFromContainerHeaderTest() {
@@ -52,14 +52,13 @@ public class CopyFileContainerCmdHeaderTest extends BaseDockerHeaderTest<CopyFil
template.sendBodyAndHeaders("direct:in", "", headers);
- Mockito.verify(dockerClient, Mockito.times(1)).copyFileFromContainerCmd(containerId, resource);
+ Mockito.verify(dockerClient, Mockito.times(1)).copyArchiveFromContainerCmd(containerId, resource);
Mockito.verify(mockObject, Mockito.times(1)).withHostPath(eq(hostPath));
-
}
@Override
protected void setupMocks() {
- Mockito.when(dockerClient.copyFileFromContainerCmd(anyString(), anyString())).thenReturn(mockObject);
+ Mockito.when(dockerClient.copyArchiveFromContainerCmd(anyString(), anyString())).thenReturn(mockObject);
}
@Override
diff --git a/components/camel-docker/src/test/java/org/apache/camel/component/docker/headers/CreateContainerCmdHeaderTest.java b/components/camel-docker/src/test/java/org/apache/camel/component/docker/headers/CreateContainerCmdHeaderTest.java
index 9f4dfd3..ff781fd 100644
--- a/components/camel-docker/src/test/java/org/apache/camel/component/docker/headers/CreateContainerCmdHeaderTest.java
+++ b/components/camel-docker/src/test/java/org/apache/camel/component/docker/headers/CreateContainerCmdHeaderTest.java
@@ -43,6 +43,9 @@ public class CreateContainerCmdHeaderTest extends BaseDockerHeaderTest<CreateCon
@Mock
private CreateContainerCmd mockObject;
+ @Mock
+ private HostConfig hostConfig;
+
@Test
public void createContainerHeaderTest() {
@@ -67,7 +70,6 @@ public class CreateContainerCmdHeaderTest extends BaseDockerHeaderTest<CreateCon
VolumesFrom volumesFromContainer = new VolumesFrom("/etc");
String env = "FOO=bar";
String cmd = "whoami";
- HostConfig hostConfig = new HostConfig();
Capability capAdd = Capability.NET_BROADCAST;
Capability capDrop = Capability.BLOCK_SUSPEND;
String[] entrypoint = new String[]{"sleep", "9999"};
@@ -104,6 +106,7 @@ public class CreateContainerCmdHeaderTest extends BaseDockerHeaderTest<CreateCon
headers.put(DockerConstants.DOCKER_DNS, dns);
headers.put(DockerConstants.DOCKER_DOMAIN_NAME, domainName);
+ Mockito.when(mockObject.getHostConfig()).thenReturn(hostConfig);
template.sendBodyAndHeaders("direct:in", "", headers);
@@ -120,22 +123,21 @@ public class CreateContainerCmdHeaderTest extends BaseDockerHeaderTest<CreateCon
Mockito.verify(mockObject, Mockito.times(1)).withAttachStderr(attachStdErr);
Mockito.verify(mockObject, Mockito.times(1)).withAttachStdin(attachStdIn);
Mockito.verify(mockObject, Mockito.times(1)).withAttachStdout(attachStdOut);
- Mockito.verify(mockObject, Mockito.times(1)).withMemory(memoryLimit);
- Mockito.verify(mockObject, Mockito.times(1)).withMemorySwap(swapMemory);
- Mockito.verify(mockObject, Mockito.times(1)).withCpuShares(cpuShares);
Mockito.verify(mockObject, Mockito.times(1)).withVolumes(volumes);
- Mockito.verify(mockObject, Mockito.times(1)).withVolumesFrom(volumesFromContainer);
Mockito.verify(mockObject, Mockito.times(1)).withEnv(env);
Mockito.verify(mockObject, Mockito.times(1)).withCmd(cmd);
Mockito.verify(mockObject, Mockito.times(1)).withHostConfig(hostConfig);
- Mockito.verify(mockObject, Mockito.times(1)).withCapAdd(capAdd);
- Mockito.verify(mockObject, Mockito.times(1)).withCapDrop(capDrop);
Mockito.verify(mockObject, Mockito.times(1)).withEntrypoint(entrypoint);
Mockito.verify(mockObject, Mockito.times(1)).withPortSpecs(portSpecs);
- Mockito.verify(mockObject, Mockito.times(1)).withDns(dns);
Mockito.verify(mockObject, Mockito.times(1)).withDomainName(domainName);
-
+ Mockito.verify(hostConfig, Mockito.times(1)).withVolumesFrom(volumesFromContainer);
+ Mockito.verify(hostConfig, Mockito.times(1)).withCapAdd(capAdd);
+ Mockito.verify(hostConfig, Mockito.times(1)).withCapDrop(capDrop);
+ Mockito.verify(hostConfig, Mockito.times(1)).withDns(dns);
+ Mockito.verify(hostConfig, Mockito.times(1)).withMemory(memoryLimit);
+ Mockito.verify(hostConfig, Mockito.times(1)).withMemorySwap(swapMemory);
+ Mockito.verify(hostConfig, Mockito.times(1)).withCpuShares(cpuShares);
}
@Override
diff --git a/components/camel-docker/src/test/java/org/apache/camel/component/docker/it/FakeDockerCmdExecFactory.java b/components/camel-docker/src/test/java/org/apache/camel/component/docker/it/FakeDockerCmdExecFactory.java
index 7086415..87ed0c0 100644
--- a/components/camel-docker/src/test/java/org/apache/camel/component/docker/it/FakeDockerCmdExecFactory.java
+++ b/components/camel-docker/src/test/java/org/apache/camel/component/docker/it/FakeDockerCmdExecFactory.java
@@ -30,6 +30,7 @@ import com.github.dockerjava.api.command.CopyFileFromContainerCmd;
import com.github.dockerjava.api.command.CreateContainerCmd;
import com.github.dockerjava.api.command.CreateImageCmd;
import com.github.dockerjava.api.command.CreateNetworkCmd;
+import com.github.dockerjava.api.command.CreateServiceCmd;
import com.github.dockerjava.api.command.CreateVolumeCmd;
import com.github.dockerjava.api.command.DisconnectFromNetworkCmd;
import com.github.dockerjava.api.command.DockerCmdExecFactory;
@@ -37,18 +38,28 @@ import com.github.dockerjava.api.command.EventsCmd;
import com.github.dockerjava.api.command.ExecCreateCmd;
import com.github.dockerjava.api.command.ExecStartCmd;
import com.github.dockerjava.api.command.InfoCmd;
+import com.github.dockerjava.api.command.InitializeSwarmCmd;
import com.github.dockerjava.api.command.InspectContainerCmd;
import com.github.dockerjava.api.command.InspectExecCmd;
import com.github.dockerjava.api.command.InspectImageCmd;
import com.github.dockerjava.api.command.InspectNetworkCmd;
+import com.github.dockerjava.api.command.InspectServiceCmd;
+import com.github.dockerjava.api.command.InspectSwarmCmd;
+import com.github.dockerjava.api.command.InspectSwarmNodeCmd;
import com.github.dockerjava.api.command.InspectVolumeCmd;
+import com.github.dockerjava.api.command.JoinSwarmCmd;
import com.github.dockerjava.api.command.KillContainerCmd;
+import com.github.dockerjava.api.command.LeaveSwarmCmd;
import com.github.dockerjava.api.command.ListContainersCmd;
import com.github.dockerjava.api.command.ListImagesCmd;
import com.github.dockerjava.api.command.ListNetworksCmd;
+import com.github.dockerjava.api.command.ListServicesCmd;
+import com.github.dockerjava.api.command.ListSwarmNodesCmd;
+import com.github.dockerjava.api.command.ListTasksCmd;
import com.github.dockerjava.api.command.ListVolumesCmd;
import com.github.dockerjava.api.command.LoadImageCmd;
import com.github.dockerjava.api.command.LogContainerCmd;
+import com.github.dockerjava.api.command.LogSwarmObjectCmd;
import com.github.dockerjava.api.command.PauseContainerCmd;
import com.github.dockerjava.api.command.PingCmd;
import com.github.dockerjava.api.command.PullImageCmd;
@@ -56,6 +67,8 @@ import com.github.dockerjava.api.command.PushImageCmd;
import com.github.dockerjava.api.command.RemoveContainerCmd;
import com.github.dockerjava.api.command.RemoveImageCmd;
import com.github.dockerjava.api.command.RemoveNetworkCmd;
+import com.github.dockerjava.api.command.RemoveServiceCmd;
+import com.github.dockerjava.api.command.RemoveSwarmNodeCmd;
import com.github.dockerjava.api.command.RemoveVolumeCmd;
import com.github.dockerjava.api.command.RenameContainerCmd;
import com.github.dockerjava.api.command.RestartContainerCmd;
@@ -68,6 +81,9 @@ import com.github.dockerjava.api.command.TagImageCmd;
import com.github.dockerjava.api.command.TopContainerCmd;
import com.github.dockerjava.api.command.UnpauseContainerCmd;
import com.github.dockerjava.api.command.UpdateContainerCmd;
+import com.github.dockerjava.api.command.UpdateServiceCmd;
+import com.github.dockerjava.api.command.UpdateSwarmCmd;
+import com.github.dockerjava.api.command.UpdateSwarmNodeCmd;
import com.github.dockerjava.api.command.VersionCmd;
import com.github.dockerjava.api.command.WaitContainerCmd;
import com.github.dockerjava.api.model.Version;
@@ -351,7 +367,87 @@ public class FakeDockerCmdExecFactory implements DockerCmdExecFactory {
}
@Override
- public void close() throws IOException {
+ public InitializeSwarmCmd.Exec createInitializeSwarmCmdExec() {
+ return null;
+ }
+
+ @Override
+ public InspectSwarmCmd.Exec createInspectSwarmCmdExec() {
+ return null;
+ }
+
+ @Override
+ public JoinSwarmCmd.Exec createJoinSwarmCmdExec() {
+ return null;
+ }
+
+ @Override
+ public LeaveSwarmCmd.Exec createLeaveSwarmCmdExec() {
+ return null;
+ }
+
+ @Override
+ public UpdateSwarmCmd.Exec createUpdateSwarmCmdExec() {
+ return null;
+ }
+
+ @Override
+ public ListServicesCmd.Exec createListServicesCmdExec() {
+ return null;
+ }
+
+ @Override
+ public CreateServiceCmd.Exec createCreateServiceCmdExec() {
+ return null;
+ }
+
+ @Override
+ public InspectServiceCmd.Exec createInspectServiceCmdExec() {
+ return null;
+ }
+
+ @Override
+ public UpdateServiceCmd.Exec createUpdateServiceCmdExec() {
+ return null;
+ }
+ @Override
+ public RemoveServiceCmd.Exec createRemoveServiceCmdExec() {
+ return null;
+ }
+
+ @Override
+ public LogSwarmObjectCmd.Exec logSwarmObjectExec(String s) {
+ return null;
+ }
+
+ @Override
+ public ListSwarmNodesCmd.Exec listSwarmNodeCmdExec() {
+ return null;
+ }
+
+ @Override
+ public InspectSwarmNodeCmd.Exec inspectSwarmNodeCmdExec() {
+ return null;
+ }
+
+ @Override
+ public RemoveSwarmNodeCmd.Exec removeSwarmNodeCmdExec() {
+ return null;
+ }
+
+ @Override
+ public UpdateSwarmNodeCmd.Exec updateSwarmNodeCmdExec() {
+ return null;
+ }
+
+ @Override
+ public ListTasksCmd.Exec listTasksCmdExec() {
+ return null;
+ }
+
+ @Override
+ public void close() throws IOException {
+ // Noop
}
}
\ No newline at end of file
diff --git a/parent/pom.xml b/parent/pom.xml
index 02db4a4..5160d3f 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -175,8 +175,8 @@
<disruptor-version>3.4.2</disruptor-version>
<dnsjava-version>2.1.8</dnsjava-version>
<dnsjava-bundle-version>2.1.8_1</dnsjava-bundle-version>
- <docker-java-version>3.0.14</docker-java-version>
- <docker-java-bundle-version>3.0.14_1</docker-java-bundle-version>
+ <docker-java-version>3.1.1</docker-java-version>
+ <docker-java-bundle-version>3.1.1_1</docker-java-bundle-version>
<dom4j-bundle-version>1.6.1_5</dom4j-bundle-version>
<dozer-version>6.4.1</dozer-version>
<drools-version>7.19.0.Final</drools-version>
diff --git a/platforms/karaf/features/src/main/resources/features.xml b/platforms/karaf/features/src/main/resources/features.xml
index 1a12e64..205442d 100644
--- a/platforms/karaf/features/src/main/resources/features.xml
+++ b/platforms/karaf/features/src/main/resources/features.xml
@@ -768,6 +768,7 @@
<bundle dependency='true'>mvn:com.fasterxml.jackson.core/jackson-core/${jackson2-version}</bundle>
<bundle dependency='true'>mvn:com.fasterxml.jackson.core/jackson-databind/${jackson2-version}</bundle>
<bundle dependency='true'>mvn:com.fasterxml.jackson.core/jackson-annotations/${jackson2-version}</bundle>
+ <bundle dependency='true'>mvn:com.fasterxml.jackson.module/jackson-module-jaxb-annotations/${jackson2-version}</bundle>
<bundle dependency='true'>mvn:com.fasterxml.jackson.jaxrs/jackson-jaxrs-base/${jackson2-version}</bundle>
<bundle dependency='true'>mvn:com.fasterxml.jackson.jaxrs/jackson-jaxrs-json-provider/${jackson2-version}</bundle>
<bundle dependency='true'>mvn:com.google.guava/guava/${google-guava-version}</bundle>
@@ -781,7 +782,7 @@
<bundle dependency='true'>mvn:io.netty/netty-transport-native-kqueue/${netty-version}</bundle>
<bundle dependency='true'>mvn:io.netty/netty-codec/${netty-version}</bundle>
<bundle dependency='true'>mvn:io.netty/netty-codec-http/${netty-version}</bundle>
- <bundle dependency='true'>mvn:org.apache.servicemix.specs/org.apache.servicemix.specs.jsr339-api-2.0.1/${servicemix-specs-version}</bundle>
+ <bundle dependency='true'>mvn:org.apache.servicemix.specs/org.apache.servicemix.specs.jaxrs-api-2.1/${servicemix-specs-version}</bundle>
<bundle dependency='true'>mvn:commons-codec/commons-codec/${commons-codec-version}</bundle>
<bundle dependency='true'>mvn:org.apache.commons/commons-compress/${commons-compress-version}</bundle>
<bundle dependency='true'>mvn:commons-io/commons-io/${commons-io-version}</bundle>