|
@@ -10,6 +10,10 @@ function dnet_container_name() {
|
|
echo dnet-$1-$2
|
|
echo dnet-$1-$2
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+function dnet_container_ip() {
|
|
|
|
+ docker inspect --format '{{.NetworkSettings.IPAddress}}' dnet-$1-$2
|
|
|
|
+}
|
|
|
|
+
|
|
function get_sbox_id() {
|
|
function get_sbox_id() {
|
|
local line
|
|
local line
|
|
|
|
|
|
@@ -18,17 +22,17 @@ function get_sbox_id() {
|
|
}
|
|
}
|
|
|
|
|
|
function net_connect() {
|
|
function net_connect() {
|
|
- local al gl
|
|
|
|
- if [ -n "$4" ]; then
|
|
|
|
- if [ "${4}" != ":" ]; then
|
|
|
|
- al="--alias=${4}"
|
|
|
|
- fi
|
|
|
|
- fi
|
|
|
|
- if [ -n "$5" ]; then
|
|
|
|
- gl="--alias=${5}"
|
|
|
|
- fi
|
|
|
|
- dnet_cmd $(inst_id2port ${1}) service publish $gl ${2}.${3}
|
|
|
|
- dnet_cmd $(inst_id2port ${1}) service attach $al ${2} ${2}.${3}
|
|
|
|
|
|
+ local al gl
|
|
|
|
+ if [ -n "$4" ]; then
|
|
|
|
+ if [ "${4}" != ":" ]; then
|
|
|
|
+ al="--alias=${4}"
|
|
|
|
+ fi
|
|
|
|
+ fi
|
|
|
|
+ if [ -n "$5" ]; then
|
|
|
|
+ gl="--alias=${5}"
|
|
|
|
+ fi
|
|
|
|
+ dnet_cmd $(inst_id2port ${1}) service publish $gl ${2}.${3}
|
|
|
|
+ dnet_cmd $(inst_id2port ${1}) service attach $al ${2} ${2}.${3}
|
|
}
|
|
}
|
|
|
|
|
|
function net_disconnect() {
|
|
function net_disconnect() {
|
|
@@ -107,7 +111,7 @@ function parse_discovery_str() {
|
|
}
|
|
}
|
|
|
|
|
|
function start_dnet() {
|
|
function start_dnet() {
|
|
- local inst suffix name hport cport hopt store bridge_ip labels tomlfile
|
|
|
|
|
|
+ local inst suffix name hport cport hopt store bridge_ip labels tomlfile nip
|
|
local discovery provider address
|
|
local discovery provider address
|
|
|
|
|
|
inst=$1
|
|
inst=$1
|
|
@@ -115,13 +119,16 @@ function start_dnet() {
|
|
suffix=$1
|
|
suffix=$1
|
|
shift
|
|
shift
|
|
|
|
|
|
- stop_dnet ${inst} ${suffix}
|
|
|
|
- name=$(dnet_container_name ${inst} ${suffix})
|
|
|
|
|
|
+ store=$(echo $suffix | cut -d":" -f1)
|
|
|
|
+ nip=$(echo $suffix | cut -s -d":" -f2)
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ stop_dnet ${inst} ${store}
|
|
|
|
+ name=$(dnet_container_name ${inst} ${store})
|
|
|
|
|
|
hport=$((41000+${inst}-1))
|
|
hport=$((41000+${inst}-1))
|
|
cport=2385
|
|
cport=2385
|
|
hopt=""
|
|
hopt=""
|
|
- store=${suffix}
|
|
|
|
|
|
|
|
while [ -n "$1" ]
|
|
while [ -n "$1" ]
|
|
do
|
|
do
|
|
@@ -138,21 +145,32 @@ function start_dnet() {
|
|
|
|
|
|
bridge_ip=$(get_docker_bridge_ip)
|
|
bridge_ip=$(get_docker_bridge_ip)
|
|
|
|
|
|
- echo "start_dnet parsed values: " ${inst} ${suffix} ${name} ${hport} ${cport} ${hopt} ${store} ${labels}
|
|
|
|
|
|
+ echo "start_dnet parsed values: " ${inst} ${suffix} ${name} ${hport} ${cport} ${hopt} ${store}
|
|
|
|
|
|
mkdir -p /tmp/dnet/${name}
|
|
mkdir -p /tmp/dnet/${name}
|
|
tomlfile="/tmp/dnet/${name}/libnetwork.toml"
|
|
tomlfile="/tmp/dnet/${name}/libnetwork.toml"
|
|
|
|
|
|
# Try discovery URLs with or without path
|
|
# Try discovery URLs with or without path
|
|
|
|
+ neigh_ip=""
|
|
|
|
+ neighbors=""
|
|
if [ "$store" = "zookeeper" ]; then
|
|
if [ "$store" = "zookeeper" ]; then
|
|
read discovery provider address < <(parse_discovery_str zk://${bridge_ip}:2182)
|
|
read discovery provider address < <(parse_discovery_str zk://${bridge_ip}:2182)
|
|
elif [ "$store" = "etcd" ]; then
|
|
elif [ "$store" = "etcd" ]; then
|
|
read discovery provider address < <(parse_discovery_str etcd://${bridge_ip}:42000/custom_prefix)
|
|
read discovery provider address < <(parse_discovery_str etcd://${bridge_ip}:42000/custom_prefix)
|
|
- else
|
|
|
|
|
|
+ elif [ "$store" = "consul" ]; then
|
|
read discovery provider address < <(parse_discovery_str consul://${bridge_ip}:8500/custom_prefix)
|
|
read discovery provider address < <(parse_discovery_str consul://${bridge_ip}:8500/custom_prefix)
|
|
|
|
+ else
|
|
|
|
+ if [ "$nip" != "" ]; then
|
|
|
|
+ neighbors="neighbors = [\"${nip}:7946\"]"
|
|
|
|
+ fi
|
|
|
|
+
|
|
|
|
+ discovery=""
|
|
|
|
+ provider=""
|
|
|
|
+ address=""
|
|
fi
|
|
fi
|
|
|
|
|
|
- cat > ${tomlfile} <<EOF
|
|
|
|
|
|
+ if [ "$discovery" != "" ]; then
|
|
|
|
+ cat > ${tomlfile} <<EOF
|
|
title = "LibNetwork Configuration file for ${name}"
|
|
title = "LibNetwork Configuration file for ${name}"
|
|
|
|
|
|
[daemon]
|
|
[daemon]
|
|
@@ -166,9 +184,22 @@ title = "LibNetwork Configuration file for ${name}"
|
|
provider = "${provider}"
|
|
provider = "${provider}"
|
|
address = "${address}"
|
|
address = "${address}"
|
|
EOF
|
|
EOF
|
|
|
|
+ else
|
|
|
|
+ cat > ${tomlfile} <<EOF
|
|
|
|
+title = "LibNetwork Configuration file for ${name}"
|
|
|
|
+
|
|
|
|
+[daemon]
|
|
|
|
+ debug = false
|
|
|
|
+ isagent = true
|
|
|
|
+ bind = "eth0"
|
|
|
|
+ ${neighbors}
|
|
|
|
+EOF
|
|
|
|
+ fi
|
|
|
|
+
|
|
cat ${tomlfile}
|
|
cat ${tomlfile}
|
|
docker run \
|
|
docker run \
|
|
-d \
|
|
-d \
|
|
|
|
+ --hostname=${name} \
|
|
--name=${name} \
|
|
--name=${name} \
|
|
--privileged \
|
|
--privileged \
|
|
-p ${hport}:${cport} \
|
|
-p ${hport}:${cport} \
|
|
@@ -183,6 +214,19 @@ EOF
|
|
wait_for_dnet $(inst_id2port ${inst}) ${name}
|
|
wait_for_dnet $(inst_id2port ${inst}) ${name}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+function start_ovrouter() {
|
|
|
|
+ local name=${1}
|
|
|
|
+ local parent=${2}
|
|
|
|
+
|
|
|
|
+ docker run \
|
|
|
|
+ -d \
|
|
|
|
+ --name=${name} \
|
|
|
|
+ --net=container:${parent} \
|
|
|
|
+ --volumes-from ${parent} \
|
|
|
|
+ -w /go/src/github.com/docker/libnetwork \
|
|
|
|
+ mrjana/golang ./cmd/ovrouter/ovrouter eth0
|
|
|
|
+}
|
|
|
|
+
|
|
function skip_for_circleci() {
|
|
function skip_for_circleci() {
|
|
if [ -n "$CIRCLECI" ]; then
|
|
if [ -n "$CIRCLECI" ]; then
|
|
skip
|
|
skip
|
|
@@ -289,7 +333,7 @@ function test_overlay() {
|
|
end=3
|
|
end=3
|
|
# Setup overlay network and connect containers ot it
|
|
# Setup overlay network and connect containers ot it
|
|
if [ -z "${2}" -o "${2}" != "skip_add" ]; then
|
|
if [ -z "${2}" -o "${2}" != "skip_add" ]; then
|
|
- if [ -z "${2}" -o "${2}" != "internal" ]; then
|
|
|
|
|
|
+ if [ -z "${2}" -o "${2}" != "internal" ]; then
|
|
dnet_cmd $(inst_id2port 1) network create -d overlay multihost
|
|
dnet_cmd $(inst_id2port 1) network create -d overlay multihost
|
|
else
|
|
else
|
|
dnet_cmd $(inst_id2port 1) network create -d overlay --internal multihost
|
|
dnet_cmd $(inst_id2port 1) network create -d overlay --internal multihost
|
|
@@ -307,7 +351,7 @@ function test_overlay() {
|
|
do
|
|
do
|
|
if [ -z "${2}" -o "${2}" != "internal" ]; then
|
|
if [ -z "${2}" -o "${2}" != "internal" ]; then
|
|
runc $(dnet_container_name $i $dnet_suffix) $(get_sbox_id ${i} container_${i}) \
|
|
runc $(dnet_container_name $i $dnet_suffix) $(get_sbox_id ${i} container_${i}) \
|
|
- "ping -c 1 www.google.com"
|
|
|
|
|
|
+ "ping -c 1 www.google.com"
|
|
else
|
|
else
|
|
default_route=`runc $(dnet_container_name $i $dnet_suffix) $(get_sbox_id ${i} container_${i}) "ip route | grep default"`
|
|
default_route=`runc $(dnet_container_name $i $dnet_suffix) $(get_sbox_id ${i} container_${i}) "ip route | grep default"`
|
|
[ "$default_route" = "" ]
|
|
[ "$default_route" = "" ]
|
|
@@ -324,33 +368,33 @@ function test_overlay() {
|
|
|
|
|
|
# Setup bridge network and connect containers ot it
|
|
# Setup bridge network and connect containers ot it
|
|
if [ -z "${2}" -o "${2}" != "skip_add" ]; then
|
|
if [ -z "${2}" -o "${2}" != "skip_add" ]; then
|
|
- if [ -z "${2}" -o "${2}" != "internal" ]; then
|
|
|
|
|
|
+ if [ -z "${2}" -o "${2}" != "internal" ]; then
|
|
dnet_cmd $(inst_id2port 1) network create -d bridge br1
|
|
dnet_cmd $(inst_id2port 1) network create -d bridge br1
|
|
dnet_cmd $(inst_id2port 1) network create -d bridge br2
|
|
dnet_cmd $(inst_id2port 1) network create -d bridge br2
|
|
net_connect ${start} container_${start} br1
|
|
net_connect ${start} container_${start} br1
|
|
net_connect ${start} container_${start} br2
|
|
net_connect ${start} container_${start} br2
|
|
|
|
|
|
- # Make sure external connectivity works
|
|
|
|
|
|
+ # Make sure external connectivity works
|
|
runc $(dnet_container_name ${start} $dnet_suffix) $(get_sbox_id ${start} container_${start}) \
|
|
runc $(dnet_container_name ${start} $dnet_suffix) $(get_sbox_id ${start} container_${start}) \
|
|
- "ping -c 1 www.google.com"
|
|
|
|
|
|
+ "ping -c 1 www.google.com"
|
|
net_disconnect ${start} container_${start} br1
|
|
net_disconnect ${start} container_${start} br1
|
|
net_disconnect ${start} container_${start} br2
|
|
net_disconnect ${start} container_${start} br2
|
|
|
|
|
|
- # Make sure external connectivity works
|
|
|
|
|
|
+ # Make sure external connectivity works
|
|
runc $(dnet_container_name ${start} $dnet_suffix) $(get_sbox_id ${start} container_${start}) \
|
|
runc $(dnet_container_name ${start} $dnet_suffix) $(get_sbox_id ${start} container_${start}) \
|
|
- "ping -c 1 www.google.com"
|
|
|
|
|
|
+ "ping -c 1 www.google.com"
|
|
dnet_cmd $(inst_id2port 1) network rm br1
|
|
dnet_cmd $(inst_id2port 1) network rm br1
|
|
dnet_cmd $(inst_id2port 1) network rm br2
|
|
dnet_cmd $(inst_id2port 1) network rm br2
|
|
|
|
|
|
- # Disconnect from overlay network
|
|
|
|
- net_disconnect ${start} container_${start} multihost
|
|
|
|
|
|
+ # Disconnect from overlay network
|
|
|
|
+ net_disconnect ${start} container_${start} multihost
|
|
|
|
|
|
- # Connect to overlay network again
|
|
|
|
- net_connect ${start} container_${start} multihost
|
|
|
|
|
|
+ # Connect to overlay network again
|
|
|
|
+ net_connect ${start} container_${start} multihost
|
|
|
|
|
|
- # Make sure external connectivity still works
|
|
|
|
- runc $(dnet_container_name ${start} $dnet_suffix) $(get_sbox_id ${start} container_${start}) \
|
|
|
|
- "ping -c 1 www.google.com"
|
|
|
|
|
|
+ # Make sure external connectivity still works
|
|
|
|
+ runc $(dnet_container_name ${start} $dnet_suffix) $(get_sbox_id ${start} container_${start}) \
|
|
|
|
+ "ping -c 1 www.google.com"
|
|
fi
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
|