diff --git a/Makefile b/Makefile index 2d2e2ace..63fcbb26 100644 --- a/Makefile +++ b/Makefile @@ -16,9 +16,9 @@ deps: clean: ./gradlew clean - docker rmi containersol/minimesos:latest - docker rmi containersol/mesos-hello-world-scheduler:latest - docker rmi containersol/mesos-hello-world-executor:latest + -docker rmi containersol/minimesos:latest + -docker rmi containersol/mesos-hello-world-scheduler:latest + -docker rmi containersol/mesos-hello-world-executor:latest build: ./gradlew build --info --stacktrace diff --git a/minimesos/src/main/java/com/containersol/minimesos/container/AbstractContainer.java b/minimesos/src/main/java/com/containersol/minimesos/container/AbstractContainer.java index 920c5352..63a11d37 100644 --- a/minimesos/src/main/java/com/containersol/minimesos/container/AbstractContainer.java +++ b/minimesos/src/main/java/com/containersol/minimesos/container/AbstractContainer.java @@ -18,6 +18,8 @@ import java.security.SecureRandom; import java.util.List; +import java.util.Map; +import java.util.TreeMap; import java.util.concurrent.*; import static com.jayway.awaitility.Awaitility.await; @@ -38,6 +40,8 @@ public abstract class AbstractContainer { protected DockerClient dockerClient; + protected Map envVars = new TreeMap<>(); + protected AbstractContainer(DockerClient dockerClient) { this.dockerClient = dockerClient; this.uuid = Integer.toUnsignedString(new SecureRandom().nextInt()); @@ -228,6 +232,10 @@ public String getClusterId() { return (cluster != null) ? cluster.getClusterId() : null; } + protected String[] createEnvironment() { + return envVars.entrySet().stream().map(e -> e.getKey() + "=" + e.getValue()).toArray(String[]::new); + } + private class ContainerIsRunning implements Callable { private String containerId; diff --git a/minimesos/src/main/java/com/containersol/minimesos/mesos/Consul.java b/minimesos/src/main/java/com/containersol/minimesos/mesos/Consul.java index d97d3d36..13d9fd9a 100644 --- a/minimesos/src/main/java/com/containersol/minimesos/mesos/Consul.java +++ b/minimesos/src/main/java/com/containersol/minimesos/mesos/Consul.java @@ -46,9 +46,12 @@ protected CreateContainerCmd dockerCommand() { String gatewayIpAddress = DockerContainersUtil.getGatewayIpAddress(dockerClient); portBindings.bind(consulDNSPort, Ports.Binding(gatewayIpAddress, DNS_PORT)); + envVars.put("SERVICE_IGNORE", "1"); + return dockerClient.createContainerCmd(config.getImageName() + ":" + config.getImageTag()) .withName(getName()) .withPortBindings(portBindings) + .withEnv(createEnvironment()) .withExposedPorts(consulHTTPPort, consulDNSPort); } diff --git a/minimesos/src/main/java/com/containersol/minimesos/mesos/MesosAgent.java b/minimesos/src/main/java/com/containersol/minimesos/mesos/MesosAgent.java index 4ea63848..417b974f 100644 --- a/minimesos/src/main/java/com/containersol/minimesos/mesos/MesosAgent.java +++ b/minimesos/src/main/java/com/containersol/minimesos/mesos/MesosAgent.java @@ -12,6 +12,7 @@ import org.apache.log4j.Logger; import java.util.ArrayList; +import java.util.Map; import java.util.TreeMap; /** @@ -91,8 +92,8 @@ protected CreateContainerCmd dockerCommand() { } @Override - public TreeMap getDefaultEnvVars() { - TreeMap envs = new TreeMap<>(); + public Map getDefaultEnvVars() { + Map envs = new TreeMap<>(); envs.put("MESOS_RESOURCES", getResources()); envs.put("MESOS_PORT", String.valueOf(getPortNumber())); envs.put("MESOS_MASTER", getFormattedZKAddress()); diff --git a/minimesos/src/main/java/com/containersol/minimesos/mesos/MesosContainer.java b/minimesos/src/main/java/com/containersol/minimesos/mesos/MesosContainer.java index 715d35b9..59149ce9 100644 --- a/minimesos/src/main/java/com/containersol/minimesos/mesos/MesosContainer.java +++ b/minimesos/src/main/java/com/containersol/minimesos/mesos/MesosContainer.java @@ -11,6 +11,7 @@ import com.mashape.unirest.request.GetRequest; import org.json.JSONObject; +import java.util.Map; import java.util.TreeMap; /** @@ -37,7 +38,7 @@ protected MesosContainer(DockerClient dockerClient, MesosCluster cluster, String public abstract int getPortNumber(); - protected abstract TreeMap getDefaultEnvVars(); + protected abstract Map getDefaultEnvVars(); @Override protected void pullImage() { @@ -58,13 +59,13 @@ public String getMesosImageName() { } protected String[] createMesosLocalEnvironment() { - TreeMap map = getDefaultEnvVars(); - map.putAll(getSharedEnvVars()); - return map.entrySet().stream().map(e -> e.getKey() + "=" + e.getValue()).toArray(String[]::new); + envVars.putAll(getDefaultEnvVars()); + envVars.putAll(getSharedEnvVars()); + return createEnvironment(); } - protected TreeMap getSharedEnvVars() { - TreeMap envs = new TreeMap<>(); + protected Map getSharedEnvVars() { + Map envs = new TreeMap<>(); envs.put("GLOG_v", "1"); envs.put("MESOS_EXECUTOR_REGISTRATION_TIMEOUT", "5mins"); envs.put("MESOS_CONTAINERIZERS", "docker,mesos"); diff --git a/minimesos/src/main/java/com/containersol/minimesos/mesos/MesosMaster.java b/minimesos/src/main/java/com/containersol/minimesos/mesos/MesosMaster.java index abf0ae5c..cb86cad9 100644 --- a/minimesos/src/main/java/com/containersol/minimesos/mesos/MesosMaster.java +++ b/minimesos/src/main/java/com/containersol/minimesos/mesos/MesosMaster.java @@ -50,8 +50,8 @@ public int getPortNumber() { } @Override - public TreeMap getDefaultEnvVars() { - TreeMap envs = new TreeMap<>(); + public Map getDefaultEnvVars() { + Map envs = new TreeMap<>(); envs.put("MESOS_QUORUM", "1"); envs.put("MESOS_ZK", getFormattedZKAddress()); envs.put("MESOS_LOGGING_LEVEL", getLoggingLevel()); diff --git a/minimesos/src/test/java/com/containersol/minimesos/ConsulRegistrationTest.java b/minimesos/src/test/java/com/containersol/minimesos/ConsulRegistrationTest.java index 295a214d..92dd4236 100644 --- a/minimesos/src/test/java/com/containersol/minimesos/ConsulRegistrationTest.java +++ b/minimesos/src/test/java/com/containersol/minimesos/ConsulRegistrationTest.java @@ -16,6 +16,7 @@ import org.junit.Test; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; public class ConsulRegistrationTest { @@ -52,4 +53,21 @@ public void testRegisterServiceWithConsul() throws UnirestException { assertEquals(HelloWorldContainer.SERVICE_PORT, service.getInt("ServicePort")); } + @Test + public void testConsulShouldBeIgnored() throws UnirestException { + String ipAddress = DockerContainersUtil.getIpAddress(dockerClient, CLUSTER.getConsulContainer().getContainerId()); + String url = String.format("http://%s:%d/v1/catalog/services", ipAddress, ConsulConfig.CONSUL_HTTP_PORT); + + JSONArray body = Unirest.get(url).asJson().getBody().getArray(); + assertEquals(1, body.length()); + + JSONObject service = body.getJSONObject(0); + assertFalse(service.has("consul-server-8300")); + assertFalse(service.has("consul-server-8301")); + assertFalse(service.has("consul-server-8302")); + assertFalse(service.has("consul-server-8400")); + assertFalse(service.has("consul-server-8500")); + assertFalse(service.has("consul-server-8600")); + } + } diff --git a/minimesos/src/test/java/com/containersol/minimesos/FlagsTest.java b/minimesos/src/test/java/com/containersol/minimesos/FlagsTest.java index cbc274d2..1e9f51d7 100644 --- a/minimesos/src/test/java/com/containersol/minimesos/FlagsTest.java +++ b/minimesos/src/test/java/com/containersol/minimesos/FlagsTest.java @@ -1,8 +1,8 @@ package com.containersol.minimesos; import com.containersol.minimesos.cluster.MesosCluster; -import com.containersol.minimesos.mesos.DockerClientFactory; import com.containersol.minimesos.mesos.ClusterArchitecture; +import com.containersol.minimesos.mesos.DockerClientFactory; import com.containersol.minimesos.mesos.MesosMaster; import com.containersol.minimesos.mesos.ZooKeeper; import com.github.dockerjava.api.DockerClient; @@ -11,8 +11,6 @@ import org.junit.ClassRule; import org.junit.Test; -import java.util.TreeMap; - public class FlagsTest { public static final String aclExampleJson = "{ \"run_tasks\": [ { \"principals\": { \"values\": [\"foo\", \"bar\"] }, \"users\": { \"values\": [\"alice\"] } } ] }"; @@ -46,11 +44,11 @@ protected MesosMasterEnvVars(DockerClient dockerClient, ZooKeeper zooKeeperConta @Override protected String[] createMesosLocalEnvironment() { - TreeMap envs = getDefaultEnvVars(); - envs.put("MESOS_AUTHENTICATE", "true"); - envs.put("MESOS_ACLS", aclExampleJson); + envVars.putAll(getDefaultEnvVars()); + envVars.put("MESOS_AUTHENTICATE", "true"); + envVars.put("MESOS_ACLS", aclExampleJson); - return envs.entrySet().stream().map(e -> e.getKey() + "=" + e.getValue()).toArray(String[]::new); + return createEnvironment(); } } }