From ee4daf02b53490fdadb704344ec18e6fb5f8111a Mon Sep 17 00:00:00 2001 From: Bryan Boreham Date: Tue, 16 Jun 2015 15:01:53 +0100 Subject: [PATCH] Introduce ipam_cidrs_or_die, and call it where we don't want the container to survive an ipam failure. --- weave | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/weave b/weave index e653a1bf..5aa20b30 100755 --- a/weave +++ b/weave @@ -142,7 +142,7 @@ if [ "$1" = "run" ] ; then collect_cidr_args "$@" shift $CIDR_ARG_COUNT CONTAINER=$(docker $DOCKER_CLIENT_ARGS run $DNS_ARGS -d "$@") - exec_remote attach $CIDR_ARGS $CONTAINER + exec_remote attach $CIDR_ARGS --or-die $CONTAINER echo $CONTAINER exit 0 elif [ "$1" != "--local" ] ; then @@ -824,6 +824,13 @@ ipam_cidrs() { done } +ipam_cidrs_or_die() { + if ! ipam_cidrs "$@" ; then + docker kill $1 >/dev/null 2>&1 || true + exit 1 + fi +} + ###################################################################### # weave proxy helpers ###################################################################### @@ -1026,7 +1033,7 @@ case "$COMMAND" in -p $DOCKER_BRIDGE_IP:53:53/udp \ -v /var/run/docker.sock:/var/run/docker.sock \ $WEAVEDNS_DOCKER_ARGS $DNS_IMAGE -iface $CONTAINER_IFNAME -httpiface "$DNS_HTTP_IFNAME" "$@") - ipam_cidrs $DNS_CONTAINER $CIDR_ARGS + ipam_cidrs_or_die $DNS_CONTAINER $CIDR_ARGS with_container_netns_or_die $DNS_CONTAINER attach $ALL_CIDRS populate_dns echo $DNS_CONTAINER @@ -1103,7 +1110,7 @@ case "$COMMAND" in shift $CIDR_ARG_COUNT CONTAINER=$(docker run $DNS_ARGS -d "$@") create_bridge - ipam_cidrs $CONTAINER $CIDR_ARGS + ipam_cidrs_or_die $CONTAINER $CIDR_ARGS with_container_netns_or_die $CONTAINER attach $ALL_CIDRS when_dns_running with_container_fqdn $CONTAINER put_dns_fqdn $ALL_CIDRS echo $CONTAINER @@ -1123,7 +1130,7 @@ case "$COMMAND" in RES=$(docker start $1) CONTAINER=$(container_id $1) create_bridge - ipam_cidrs $CONTAINER $CIDR_ARGS + ipam_cidrs_or_die $CONTAINER $CIDR_ARGS with_container_netns_or_die $CONTAINER attach $ALL_CIDRS when_dns_running with_container_fqdn $CONTAINER put_dns_fqdn $ALL_CIDRS echo $RES @@ -1131,11 +1138,15 @@ case "$COMMAND" in attach) collect_cidr_args "$@" shift $CIDR_ARG_COUNT + if [ "$1" = "--or-die" ]; then + ATTACH_TYPE="_or_die" + shift + fi [ $# -eq 1 ] || usage CONTAINER=$(container_id $1) create_bridge - ipam_cidrs $CONTAINER $CIDR_ARGS - with_container_netns $CONTAINER attach $ALL_CIDRS >/dev/null + ipam_cidrs$ATTACH_TYPE $CONTAINER $CIDR_ARGS + with_container_netns$ATTACH_TYPE $CONTAINER attach $ALL_CIDRS >/dev/null when_dns_running with_container_fqdn $CONTAINER put_dns_fqdn $ALL_CIDRS ;; detach)