diff --git a/test/205_dns_disabled.sh b/test/205_dns_disabled.sh new file mode 100755 index 00000000..8799acbd --- /dev/null +++ b/test/205_dns_disabled.sh @@ -0,0 +1,24 @@ +#! /bin/bash + +. ./config.sh + +C1=10.2.0.87 + +start_suite "Standard behaviour when weaveDNS is disabled" + +weave_on $HOST1 launch --no-dns + +assert "weave_on $HOST1 dns-args" "" + +C=$(start_container_with_dns $HOST1 $C1/24 --name=c1) + +# hostname is left untouched; equals short container id +assert "exec_on $HOST1 c1 hostname" $(echo $C | cut -c1-12) + +# domainname is left empty +assert "exec_on $HOST1 c1 dnsdomainname" "" + +# external name resolution works +assert_raises "exec_on $HOST1 c1 getent hosts www.weave.works" + +end_suite diff --git a/weave b/weave index 0f79c023..97f7c51f 100755 --- a/weave +++ b/weave @@ -1131,15 +1131,12 @@ peer_args() { # weaveDNS helpers ###################################################################### -# Memoized function to query the weaveDNS server for our dns domain. -dns_domain() { - DNS_DOMAIN=${DNS_DOMAIN:-$(call_weave GET /domain 2>/dev/null || true)} - DNS_DOMAIN=${DNS_DOMAIN:-weave.local.} - echo $DNS_DOMAIN -} - dns_args() { - docker_bridge_ip + # NB: this is memoized + DNS_DOMAIN=${DNS_DOMAIN:-$(call_weave GET /domain 2>/dev/null || true)} + [ "$DNS_DOMAIN" = "404 page not found" ] && return 0 + DNS_DOMAIN=${DNS_DOMAIN:-weave.local.} + NAME_ARG="" HOSTNAME_SPECIFIED= DNS_SEARCH_SPECIFIED= @@ -1169,10 +1166,11 @@ dns_args() { shift done [ -n "$WITHOUT_DNS" ] && return 0 + + docker_bridge_ip DNS_ARGS="--dns $DOCKER_BRIDGE_IP" if [ -n "$NAME_ARG" -a -z "$HOSTNAME_SPECIFIED" ] ; then - DOMAIN=$(dns_domain) - HOSTNAME="$NAME_ARG.${DOMAIN%.}" + HOSTNAME="$NAME_ARG.${DNS_DOMAIN%.}" if [ ${#HOSTNAME} -gt 64 ] ; then echo "Container name too long to be used as hostname" >&2 else @@ -1182,7 +1180,7 @@ dns_args() { fi if [ -z "$DNS_SEARCH_SPECIFIED" ] ; then if [ -z "$HOSTNAME_SPECIFIED" ] ; then - DNS_ARGS="$DNS_ARGS --dns-search=$(dns_domain)" + DNS_ARGS="$DNS_ARGS --dns-search=$DNS_DOMAIN" else DNS_ARGS="$DNS_ARGS --dns-search=." fi