mirror of https://github.com/docker/docs.git
Merge pull request #942 from vieux/use_port_docker_offer
Allow multiple docker engines/mesos slaves in the mesos tests
This commit is contained in:
commit
6ecab7f5b7
|
|
@ -46,6 +46,7 @@ const (
|
|||
frameworkName = "swarm"
|
||||
defaultDockerEnginePort = "2375"
|
||||
defaultDockerEngineTLSPort = "2376"
|
||||
dockerPortAttribute = "docker_port"
|
||||
defaultOfferTimeout = 10 * time.Minute
|
||||
defaultTaskCreationTimeout = 5 * time.Second
|
||||
)
|
||||
|
|
|
|||
|
|
@ -1,6 +1,8 @@
|
|||
package mesos
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
log "github.com/Sirupsen/logrus"
|
||||
"github.com/docker/swarm/cluster"
|
||||
"github.com/mesos/mesos-go/mesosproto"
|
||||
|
|
@ -28,9 +30,20 @@ func (c *Cluster) ResourceOffers(_ mesosscheduler.SchedulerDriver, offers []*mes
|
|||
|
||||
for _, offer := range offers {
|
||||
slaveID := offer.SlaveId.GetValue()
|
||||
dockerPort := c.dockerEnginePort
|
||||
for _, attribute := range offer.GetAttributes() {
|
||||
if attribute.GetName() == dockerPortAttribute {
|
||||
switch attribute.GetType() {
|
||||
case mesosproto.Value_SCALAR:
|
||||
dockerPort = fmt.Sprintf("%d", int(attribute.GetScalar().GetValue()))
|
||||
case mesosproto.Value_TEXT:
|
||||
dockerPort = attribute.GetText().GetValue()
|
||||
}
|
||||
}
|
||||
}
|
||||
s, ok := c.slaves[slaveID]
|
||||
if !ok {
|
||||
engine := cluster.NewEngine(*offer.Hostname+":"+c.dockerEnginePort, 0)
|
||||
engine := cluster.NewEngine(*offer.Hostname+":"+dockerPort, 0)
|
||||
if err := engine.Connect(c.TLSConfig); err != nil {
|
||||
log.Error(err)
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -9,12 +9,12 @@ function teardown() {
|
|||
}
|
||||
|
||||
@test "docker info" {
|
||||
start_docker 1
|
||||
start_docker 2
|
||||
start_mesos
|
||||
swarm_manage_mesos
|
||||
run docker_swarm info
|
||||
[ "$status" -eq 0 ]
|
||||
[[ "${output}" == *'Offers'* ]]
|
||||
[[ "${output}" == *'Offers: 2'* ]]
|
||||
}
|
||||
|
||||
@test "docker run no resources" {
|
||||
|
|
|
|||
|
|
@ -4,38 +4,40 @@ load ../helpers
|
|||
|
||||
MESOS_IMAGE=jimenez/mesos-dev:clang
|
||||
MESOS_MASTER_PORT=$(( ( RANDOM % 1000 ) + 10000 ))
|
||||
BASE_PORT=2375
|
||||
|
||||
# Start mesos master and slave.
|
||||
function start_mesos() {
|
||||
local current=${#DOCKER_CONTAINERS[@]}
|
||||
MESOS_MASTER=$(
|
||||
docker_host run -d --name mesos-master --net=host \
|
||||
$MESOS_IMAGE /mesos/build/bin/mesos-master.sh --ip=127.0.0.1 --work_dir=/ --registry=in_memory --port=$MESOS_MASTER_PORT
|
||||
)
|
||||
|
||||
retry 10 1 eval "docker_host ps | grep 'mesos-master'"
|
||||
|
||||
MESOS_SLAVE=$(
|
||||
docker_host run --privileged -d --name mesos-slave --volumes-from node-0 -e DOCKER_HOST="${HOSTS[0]}" -v /sys/fs/cgroup:/sys/fs/cgroup --net=host \
|
||||
$MESOS_IMAGE /mesos/build/bin/mesos-slave.sh --master=127.0.0.1:$MESOS_MASTER_PORT --containerizers=docker --hostname=127.0.0.1 --port=$(($MESOS_MASTER_PORT + 1))
|
||||
)
|
||||
|
||||
retry 10 1 eval "docker_host ps | grep 'mesos-slave'"
|
||||
for ((i=0; i < current; i++)); do
|
||||
local docker_port=$(echo ${HOSTS[$i]} | cut -d: -f2)
|
||||
MESOS_SLAVES[$i]=$(
|
||||
docker_host run --privileged -d --name mesos-slave-$i --volumes-from node-$i -e DOCKER_HOST="${HOSTS[$i]}" -v /sys/fs/cgroup:/sys/fs/cgroup --net=host \
|
||||
$MESOS_IMAGE /mesos/build/bin/mesos-slave.sh --master=127.0.0.1:$MESOS_MASTER_PORT --containerizers=docker --attributes="docker_port:$docker_port" --hostname=127.0.0.1 --port=$(($MESOS_MASTER_PORT + (1 + $i)))
|
||||
)
|
||||
retry 10 1 eval "docker_host ps | grep 'mesos-slave-$i'"
|
||||
done
|
||||
}
|
||||
|
||||
# Start the swarm manager in background.
|
||||
function swarm_manage_mesos() {
|
||||
local current=${#DOCKER_CONTAINERS[@]}
|
||||
"$SWARM_BINARY" -l debug manage -H "$SWARM_HOST" --cluster-driver mesos-experimental --cluster-opt mesos.user=daemon 127.0.0.1:$MESOS_MASTER_PORT &
|
||||
SWARM_PID=$!
|
||||
retry 10 1 eval "docker_swarm info | grep 'Offers: 1'"
|
||||
retry 10 1 eval "docker_swarm info | grep 'Offers: $current'"
|
||||
}
|
||||
|
||||
# Stop mesos master and slave.
|
||||
function stop_mesos() {
|
||||
echo "Stopping $DOCKER_CONTAINER"
|
||||
docker_host rm -f -v $DOCKER_CONTAINER > /dev/null;
|
||||
echo "Stopping $MESOS_MASTER"
|
||||
docker_host rm -f -v $MESOS_MASTER > /dev/null;
|
||||
echo "Stopping $MESOS_SLAVE"
|
||||
docker_host rm -f -v $MESOS_SLAVE > /dev/null;
|
||||
for id in ${MESOS_SLAVES[@]}; do
|
||||
echo "Stopping $id"
|
||||
docker_host rm -f -v $id > /dev/null;
|
||||
done
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue