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>