You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jclouds.apache.org by na...@apache.org on 2016/08/30 09:35:58 UTC
[34/50] jclouds git commit: [JCLOUDS-1117] fix for advanced Docker
configuration - the Config.Builder should stay unchanged if used
[JCLOUDS-1117] fix for advanced Docker configuration - the Config.Builder should stay unchanged if used
Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/d4cf7743
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/d4cf7743
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/d4cf7743
Branch: refs/heads/master
Commit: d4cf7743897000430eb8f102d713c0e4e8532c5b
Parents: 4ef2825
Author: Josef Cacek <jc...@redhat.com>
Authored: Tue May 24 14:09:06 2016 +0200
Committer: Ignasi Barrera <na...@apache.org>
Committed: Thu May 26 12:07:33 2016 +0200
----------------------------------------------------------------------
.../strategy/DockerComputeServiceAdapter.java | 70 +++++++++++---------
.../docker/compute/SshToCustomPortLiveTest.java | 14 +++-
2 files changed, 49 insertions(+), 35 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jclouds/blob/d4cf7743/apis/docker/src/main/java/org/jclouds/docker/compute/strategy/DockerComputeServiceAdapter.java
----------------------------------------------------------------------
diff --git a/apis/docker/src/main/java/org/jclouds/docker/compute/strategy/DockerComputeServiceAdapter.java b/apis/docker/src/main/java/org/jclouds/docker/compute/strategy/DockerComputeServiceAdapter.java
index a1c9cae..3c88f31 100644
--- a/apis/docker/src/main/java/org/jclouds/docker/compute/strategy/DockerComputeServiceAdapter.java
+++ b/apis/docker/src/main/java/org/jclouds/docker/compute/strategy/DockerComputeServiceAdapter.java
@@ -89,9 +89,11 @@ public class DockerComputeServiceAdapter implements
String loginUserPassword = template.getImage().getDefaultCredentials().getOptionalPassword().or("password");
DockerTemplateOptions templateOptions = DockerTemplateOptions.class.cast(options);
+
+ Config containerConfig = null;
Config.Builder containerConfigBuilder = templateOptions.getConfigBuilder();
if (containerConfigBuilder == null) {
- containerConfigBuilder = Config.builder();
+ containerConfigBuilder = Config.builder().image(imageId);
containerConfigBuilder.entrypoint(templateOptions.getEntrypoint());
containerConfigBuilder.cmd(templateOptions.getCommands());
@@ -110,14 +112,14 @@ public class DockerComputeServiceAdapter implements
}
HostConfig.Builder hostConfigBuilder = HostConfig.builder()
- .publishAllPorts(true)
- .privileged(templateOptions.getPrivileged());
+ .publishAllPorts(true)
+ .privileged(templateOptions.getPrivileged());
if (!templateOptions.getPortBindings().isEmpty()) {
Map<String, List<Map<String, String>>> portBindings = Maps.newHashMap();
for (Map.Entry<Integer, Integer> entry : templateOptions.getPortBindings().entrySet()) {
portBindings.put(entry.getValue() + "/tcp",
- Lists.<Map<String, String>>newArrayList(ImmutableMap.of("HostIp", "0.0.0.0", "HostPort", Integer.toString(entry.getKey()))));
+ Lists.<Map<String, String>>newArrayList(ImmutableMap.of("HostIp", "0.0.0.0", "HostPort", Integer.toString(entry.getKey()))));
}
hostConfigBuilder.portBindings(portBindings);
}
@@ -147,41 +149,43 @@ public class DockerComputeServiceAdapter implements
hostConfigBuilder.networkMode(templateOptions.getNetworkMode());
containerConfigBuilder.hostConfig(hostConfigBuilder.build());
- }
- containerConfigBuilder.image(imageId);
-
- // add the inbound ports into exposed ports map
- Config containerConfig = containerConfigBuilder.build();
- Map<String, Object> exposedPorts = Maps.newHashMap();
- if (containerConfig.exposedPorts() == null) {
- exposedPorts.putAll(containerConfig.exposedPorts());
- }
- for (int inboundPort : templateOptions.getInboundPorts()) {
- String portKey = inboundPort + "/tcp";
- if (!exposedPorts.containsKey(portKey)) {
- exposedPorts.put(portKey, Maps.newHashMap());
+ // add the inbound ports into exposed ports map
+ containerConfig = containerConfigBuilder.build();
+ Map<String, Object> exposedPorts = Maps.newHashMap();
+ if (containerConfig.exposedPorts() == null) {
+ exposedPorts.putAll(containerConfig.exposedPorts());
}
- }
- containerConfigBuilder.exposedPorts(exposedPorts);
+ for (int inboundPort : templateOptions.getInboundPorts()) {
+ String portKey = inboundPort + "/tcp";
+ if (!exposedPorts.containsKey(portKey)) {
+ exposedPorts.put(portKey, Maps.newHashMap());
+ }
+ }
+ containerConfigBuilder.exposedPorts(exposedPorts);
- // build once more after setting inboundPorts
- containerConfig = containerConfigBuilder.build();
+ // build once more after setting inboundPorts
+ containerConfig = containerConfigBuilder.build();
- // finally update port bindings
- Map<String, List<Map<String, String>>> portBindings = Maps.newHashMap();
- Map<String, List<Map<String, String>>> existingBindings = containerConfig.hostConfig().portBindings();
- if (existingBindings != null) {
- portBindings.putAll(existingBindings);
- }
- for (String exposedPort : containerConfig.exposedPorts().keySet()) {
- if (!portBindings.containsKey(exposedPort)) {
- portBindings.put(exposedPort, Lists.<Map<String, String>>newArrayList(ImmutableMap.of("HostIp", "0.0.0.0")));
+ // finally update port bindings
+ Map<String, List<Map<String, String>>> portBindings = Maps.newHashMap();
+ Map<String, List<Map<String, String>>> existingBindings = containerConfig.hostConfig().portBindings();
+ if (existingBindings != null) {
+ portBindings.putAll(existingBindings);
+ }
+ for (String exposedPort : containerConfig.exposedPorts().keySet()) {
+ if (!portBindings.containsKey(exposedPort)) {
+ portBindings.put(exposedPort, Lists.<Map<String, String>>newArrayList(ImmutableMap.of("HostIp", "0.0.0.0")));
+ }
}
+ hostConfigBuilder = HostConfig.builder().fromHostConfig(containerConfig.hostConfig());
+ hostConfigBuilder.portBindings(portBindings);
+ containerConfigBuilder.hostConfig(hostConfigBuilder.build());
+
+ } else {
+ containerConfigBuilder.image(imageId);
}
- HostConfig.Builder hostConfigBuilder = HostConfig.builder().fromHostConfig(containerConfig.hostConfig());
- hostConfigBuilder.portBindings(portBindings);
- containerConfigBuilder.hostConfig(hostConfigBuilder.build());
+
containerConfig = containerConfigBuilder.build();
logger.debug(">> creating new container with containerConfig(%s)", containerConfig);
http://git-wip-us.apache.org/repos/asf/jclouds/blob/d4cf7743/apis/docker/src/test/java/org/jclouds/docker/compute/SshToCustomPortLiveTest.java
----------------------------------------------------------------------
diff --git a/apis/docker/src/test/java/org/jclouds/docker/compute/SshToCustomPortLiveTest.java b/apis/docker/src/test/java/org/jclouds/docker/compute/SshToCustomPortLiveTest.java
index ba11feb..23f3838 100644
--- a/apis/docker/src/test/java/org/jclouds/docker/compute/SshToCustomPortLiveTest.java
+++ b/apis/docker/src/test/java/org/jclouds/docker/compute/SshToCustomPortLiveTest.java
@@ -26,6 +26,7 @@ import static org.testng.Assert.assertNotNull;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
+import java.util.Map;
import org.jclouds.compute.RunNodesException;
import org.jclouds.compute.domain.ExecResponse;
@@ -49,8 +50,11 @@ import org.testng.annotations.Test;
import com.google.common.base.Optional;
import com.google.common.base.Predicate;
import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Iterables;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
import com.google.inject.AbstractModule;
import com.google.inject.Module;
@@ -61,6 +65,7 @@ import com.google.inject.Module;
public class SshToCustomPortLiveTest extends BaseComputeServiceContextLiveTest {
private static final int SSH_PORT = 8822;
+ private static final int SSH_PORT_BRIDGE = 18822;
private static final String IMAGE_REPOSITORY = "jclouds/testrepo";
private static final String IMAGE_TAG_1 = "testtag";
private static final String IMAGE_TAG_2 = "second";
@@ -130,12 +135,17 @@ public class SshToCustomPortLiveTest extends BaseComputeServiceContextLiveTest {
@Test(dependsOnMethods = "testImageCreated")
public void testAdvancedConfig() throws RunNodesException {
+ final String portId = SSH_PORT + "/tcp";
final DockerTemplateOptions options = DockerTemplateOptions.Builder
.configBuilder(
Config.builder().env(ImmutableList.<String> of("SSH_PORT=" + SSH_PORT, "ROOT_PASSWORD=jcloudsRulez"))
- .hostConfig(HostConfig.builder().networkMode("host").build())
+ .exposedPorts(ImmutableMap.<String, Object> of(portId, Maps.newHashMap()))
+ .hostConfig(HostConfig.builder().networkMode("bridge")
+ .portBindings(ImmutableMap.<String, List<Map<String, String>>> of(portId,
+ Lists.<Map<String, String>>newArrayList(ImmutableMap.of("HostPort", String.valueOf(SSH_PORT_BRIDGE)))))
+ .build())
.image("test-if-this-value-is-correctly-overriden"))
- .overrideLoginUser("root").overrideLoginPassword("jcloudsRulez").blockOnPort(SSH_PORT, 30);
+ .overrideLoginUser("root").overrideLoginPassword("jcloudsRulez").blockOnPort(SSH_PORT_BRIDGE, 30);
final Template template = view.getComputeService().templateBuilder().imageId(image.id()).options(options).build();