package com.sequenceiq.cloudbreak.orchestrator.marathon; import org.junit.Before; import org.junit.Ignore; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.runners.MockitoJUnitRunner; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.google.common.collect.ImmutableMap; import mesosphere.marathon.client.Marathon; import mesosphere.marathon.client.MarathonClient; import mesosphere.marathon.client.model.v2.App; import mesosphere.marathon.client.model.v2.Container; import mesosphere.marathon.client.model.v2.Docker; import mesosphere.marathon.client.utils.MarathonException; @RunWith(MockitoJUnitRunner.class) @Ignore public class MarathonContainerOrchestratorTest { private static final Logger LOGGER = LoggerFactory.getLogger(MarathonContainerOrchestratorTest.class); private Marathon client; @Before public void setUp() { client = MarathonClient.getInstance("http://172.16.252.31:8080"); } @Test public void testCreateAmbariServerDbContainer() { App ambariDb = new App(); ambariDb.setId("ambari-db"); ambariDb.setCpus(0.5); ambariDb.setMem(512.0); ambariDb.setInstances(1); Container dbContainer = new Container(); dbContainer.setType("DOCKER"); Docker dbDocker = new Docker(); dbDocker.setImage("postgres:9.4.1"); dbDocker.setNetwork("HOST"); dbContainer.setDocker(dbDocker); ambariDb.setEnv(ImmutableMap.of("POSTGRES_PASSWORD", "bigdata", "POSTGRES_USER", "ambari")); ambariDb.setContainer(dbContainer); try { ambariDb = client.createApp(ambariDb); LOGGER.info(ambariDb.toString()); } catch (MarathonException e) { LOGGER.error("App could not be created on Marathon: ", e); } } @Test public void testCreateAmbariServerContainer() { String dbHost = "mesos-slave2"; App server = new App(); server.setId("ambari-server3"); server.setCpus(1.5); server.setMem(4096.0); server.setInstances(1); server.addPort(8080); Container serverContainer = new Container(); serverContainer.setType("DOCKER"); Docker serverDocker = new Docker(); serverDocker.setPrivileged(true); serverDocker.setImage("hortonworks/ambari-server:2.2.1-v5"); serverDocker.setNetwork("HOST"); serverContainer.setDocker(serverDocker); server.setCmd(String.format("/usr/sbin/init systemd.setenv=POSTGRES_DB=%s", dbHost)); server.setContainer(serverContainer); try { server = client.createApp(server); LOGGER.info(server.toString()); } catch (MarathonException e) { LOGGER.error("App could not be created on Marathon: ", e); } } @Test public void testCreateAmbariAgentsContainer() { String serverHost = "mesos-slave1"; App agents = new App(); agents.setId("ambari-agent"); agents.setCpus(1.5); agents.setMem(4096.0); agents.setInstances(3); Container agentContainer = new Container(); agentContainer.setType("DOCKER"); Docker agentDocker = new Docker(); agentDocker.setPrivileged(true); agentDocker.setImage("hortonworks/ambari-agent:2.2.1-v5"); agentDocker.setNetwork("HOST"); agentContainer.setDocker(agentDocker); agents.setCmd(String.format("/usr/sbin/init systemd.setenv=AMBARI_SERVER_ADDR=%s systemd.setenv=USE_CONSUL_DNS=false", serverHost)); agents.setContainer(agentContainer); try { agents = client.createApp(agents); LOGGER.info(agents.toString()); } catch (MarathonException e) { LOGGER.error("App could not be created on Marathon: ", e); } } }