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/05/15 08:21:00 UTC
[camel] branch master updated: CAMEL-13526: Fix docker component
socket mode
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 8428138 CAMEL-13526: Fix docker component socket mode
8428138 is described below
commit 8428138963354ba456f8a29a85642331d1a3b6ec
Author: James Netherton <ja...@gmail.com>
AuthorDate: Wed May 15 09:19:08 2019 +0100
CAMEL-13526: Fix docker component socket mode
---
.../src/main/docs/docker-component.adoc | 2 +-
.../component/docker/DockerClientFactory.java | 5 +++-
.../component/docker/DockerClientProfile.java | 8 ++++--
.../component/docker/DockerConfiguration.java | 2 +-
.../component/docker/DockerClientProfileTest.java | 31 ++++++++++++++++++++++
.../src/test/resources/test-options.properties | 4 ++-
6 files changed, 46 insertions(+), 6 deletions(-)
diff --git a/components/camel-docker/src/main/docs/docker-component.adoc b/components/camel-docker/src/main/docs/docker-component.adoc
index 33982ff..dc3b283 100644
--- a/components/camel-docker/src/main/docs/docker-component.adoc
+++ b/components/camel-docker/src/main/docs/docker-component.adoc
@@ -63,7 +63,7 @@ with the following path and query parameters:
| Name | Description | Default | Type
| *email* (common) | Email address associated with the user | | String
| *host* (common) | *Required* Docker host | localhost | String
-| *port* (common) | *Required* Docker port | 2375 | Integer
+| *port* (common) | Docker port | 2375 | Integer
| *requestTimeout* (common) | Request timeout for response (in seconds) | | Integer
| *bridgeErrorHandler* (consumer) | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | boolean
| *exceptionHandler* (consumer) | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | | ExceptionHandler
diff --git a/components/camel-docker/src/main/java/org/apache/camel/component/docker/DockerClientFactory.java b/components/camel-docker/src/main/java/org/apache/camel/component/docker/DockerClientFactory.java
index 95d18db..92cab1f 100644
--- a/components/camel-docker/src/main/java/org/apache/camel/component/docker/DockerClientFactory.java
+++ b/components/camel-docker/src/main/java/org/apache/camel/component/docker/DockerClientFactory.java
@@ -72,7 +72,6 @@ public final class DockerClientFactory {
DockerClientProfile clientProfile = new DockerClientProfile();
clientProfile.setHost(host);
- clientProfile.setPort(port);
clientProfile.setEmail(email);
clientProfile.setUsername(username);
clientProfile.setPassword(password);
@@ -86,6 +85,10 @@ public final class DockerClientFactory {
clientProfile.setSocket(socket);
clientProfile.setCmdExecFactory(cmdExecFactory);
+ if (!socket) {
+ clientProfile.setPort(port);
+ }
+
DockerClient dockerClient = dockerComponent.getClient(clientProfile);
if (dockerClient != null) {
diff --git a/components/camel-docker/src/main/java/org/apache/camel/component/docker/DockerClientProfile.java b/components/camel-docker/src/main/java/org/apache/camel/component/docker/DockerClientProfile.java
index 9222d6c..da7ff10 100644
--- a/components/camel-docker/src/main/java/org/apache/camel/component/docker/DockerClientProfile.java
+++ b/components/camel-docker/src/main/java/org/apache/camel/component/docker/DockerClientProfile.java
@@ -142,9 +142,13 @@ public class DockerClientProfile {
public String toUrl() throws DockerException {
ObjectHelper.notNull(this.host, "host");
- ObjectHelper.notNull(this.port, "port");
- return ((this.socket) ? "unix" : "tcp") + "://" + host + ":" + port;
+ if (this.socket != null && this.socket) {
+ return String.format("unix://%s", host);
+ }
+
+ ObjectHelper.notNull(this.port, "port");
+ return String.format("tcp://%s:%d", host, port);
}
public Boolean isTlsVerify() {
diff --git a/components/camel-docker/src/main/java/org/apache/camel/component/docker/DockerConfiguration.java b/components/camel-docker/src/main/java/org/apache/camel/component/docker/DockerConfiguration.java
index 1c6637e..dab3b54 100644
--- a/components/camel-docker/src/main/java/org/apache/camel/component/docker/DockerConfiguration.java
+++ b/components/camel-docker/src/main/java/org/apache/camel/component/docker/DockerConfiguration.java
@@ -35,7 +35,7 @@ public class DockerConfiguration implements Cloneable {
private DockerOperation operation;
@UriParam(defaultValue = "localhost") @Metadata(required = true)
private String host = "localhost";
- @UriParam(defaultValue = "2375") @Metadata(required = true)
+ @UriParam(defaultValue = "2375")
private Integer port = 2375;
@UriParam(label = "security", secret = true)
private String username;
diff --git a/components/camel-docker/src/test/java/org/apache/camel/component/docker/DockerClientProfileTest.java b/components/camel-docker/src/test/java/org/apache/camel/component/docker/DockerClientProfileTest.java
index cc97be5..7fc444e 100644
--- a/components/camel-docker/src/test/java/org/apache/camel/component/docker/DockerClientProfileTest.java
+++ b/components/camel-docker/src/test/java/org/apache/camel/component/docker/DockerClientProfileTest.java
@@ -16,7 +16,10 @@
*/
package org.apache.camel.component.docker;
+import org.apache.camel.component.docker.exception.DockerException;
+import org.junit.Rule;
import org.junit.Test;
+import org.junit.rules.ExpectedException;
import static org.junit.Assert.assertEquals;
@@ -25,6 +28,9 @@ import static org.junit.Assert.assertEquals;
*/
public class DockerClientProfileTest {
+ @Rule
+ public ExpectedException expectedException = ExpectedException.none();
+
@Test
public void clientProfileTest() {
String host = "host";
@@ -62,4 +68,29 @@ public class DockerClientProfileTest {
assertEquals(clientProfile1, clientProfile2);
}
+ @Test
+ public void clientProfileUrlTest() throws DockerException {
+ DockerClientProfile profile = new DockerClientProfile();
+ profile.setHost("localhost");
+ profile.setPort(2375);
+ assertEquals("tcp://localhost:2375", profile.toUrl());
+ }
+
+ @Test
+ public void clientProfileNoPortSpecifiedUrlTest() throws DockerException {
+ DockerClientProfile profile = new DockerClientProfile();
+ profile.setHost("localhost");
+ expectedException.expectMessage("port must be specified");
+ assertEquals("tcp://localhost:2375", profile.toUrl());
+ }
+
+ @Test
+ public void clientProfileWithSocketUrlTest() throws DockerException {
+ DockerClientProfile profile = new DockerClientProfile();
+ profile.setHost("/var/run/docker.sock");
+ // Port should be ignored
+ profile.setPort(2375);
+ profile.setSocket(true);
+ assertEquals("unix:///var/run/docker.sock", profile.toUrl());
+ }
}
diff --git a/components/camel-docker/src/test/resources/test-options.properties b/components/camel-docker/src/test/resources/test-options.properties
index 78f913f..39766cb 100644
--- a/components/camel-docker/src/test/resources/test-options.properties
+++ b/components/camel-docker/src/test/resources/test-options.properties
@@ -15,7 +15,7 @@
## limitations under the License.
## ---------------------------------------------------------------------------
-# Docker host
+# Docker host. To use a unix socket, specify the path to the docker daemon socket. E.g /var/run/docker.sock
host=localhost
# Docker port
port=2375
@@ -24,3 +24,5 @@ port=2375
#certPath=/Users/cameluser/.docker/boot2docker-vm
# Enable HTTPS
#secure=true
+# Enable socket mode
+#socket=true
\ No newline at end of file