From e6b17c701d312e27d8baba89188d3866cfed4495 Mon Sep 17 00:00:00 2001 From: Matthias Radestock Date: Thu, 8 Oct 2015 17:37:35 +0100 Subject: [PATCH] `dns-{add,remove}` can add/remove non-container DNS records ...by omitting the container name/id Fixes #1385. --- test/240_dns_add_name_test.sh | 7 +++++ weave | 56 ++++++++++++++++++++--------------- 2 files changed, 39 insertions(+), 24 deletions(-) diff --git a/test/240_dns_add_name_test.sh b/test/240_dns_add_name_test.sh index 10efa621..54cb0469 100755 --- a/test/240_dns_add_name_test.sh +++ b/test/240_dns_add_name_test.sh @@ -4,6 +4,7 @@ C1=10.2.0.78 C2=10.2.0.34 +C3=10.2.0.12 NAME1=seeone.weave.local NAME2=seetwo.weave.local NAME3=seethree.weave.local @@ -34,4 +35,10 @@ weave_on $HOST1 dns-remove c1 -h $NAME3 assert_no_dns_record $HOST1 c1 $NAME3 +weave_on $HOST1 dns-add $C3 -h $NAME1 +assert_dns_record $HOST1 c1 $NAME1 $C3 + +weave_on $HOST1 dns-remove $C3 -h $NAME1 +assert_no_dns_record $HOST1 c1 $NAME1 + end_suite diff --git a/weave b/weave index 6750df5f..ee3661a9 100755 --- a/weave +++ b/weave @@ -69,8 +69,10 @@ weave run [--with-dns | --without-dns] [ ...] weave start [ ...] weave attach [ ...] weave detach [ ...] -weave dns-add [ ...] [-h ] -weave dns-remove [ ...] [-h ] +weave dns-add [ ...] [-h ] | + ... -h +weave dns-remove [ ...] [-h ] | + ... -h weave dns-lookup weave expose [ ...] [-h ] weave hide [ ...] @@ -881,6 +883,26 @@ delete_dns_fqdn() { done } +collect_dns_add_remove_args() { + collect_ip_args "$@" + shift $IP_COUNT + if [ $# -gt 0 -a "$1" != "-h" ] ; then + C="$1" + shift + fi + if [ $# -eq 2 -a "$1" = "-h" ] ; then + FQDN="$2" + shift 2 + fi + [ $# -eq 0 -a \( -n "$C" -o \( $IP_COUNT -gt 0 -a -n "$FQDN" \) \) ] || usage + [ -n "$C" ] || C=$CONTAINER_NAME + check_running $CONTAINER_NAME + CONTAINER=$(container_id $C) + if [ $IP_COUNT -eq 0 ] ; then + IP_ARGS=$(with_container_addresses echo_ips $CONTAINER) + fi +} + ###################################################################### # IP Allocation Management helpers ###################################################################### @@ -1510,33 +1532,19 @@ case "$COMMAND" in show_addrs $ALL_CIDRS ;; dns-add) - collect_ip_args "$@" - shift $IP_COUNT - [ $# -eq 1 -o \( $# -eq 3 -a "$2" = "-h" \) ] || usage - check_running $CONTAINER_NAME - CONTAINER=$(container_id $1) - if [ $IP_COUNT -eq 0 ] ; then - IP_ARGS=$(with_container_addresses echo_ips $CONTAINER) - fi - if [ $# -eq 1 ] ; then - with_container_fqdn $CONTAINER put_dns_fqdn $IP_ARGS + collect_dns_add_remove_args "$@" + if [ -n "$FQDN" ] ; then + put_dns_fqdn $CONTAINER $FQDN $IP_ARGS else - put_dns_fqdn $CONTAINER "$3" $IP_ARGS + with_container_fqdn $CONTAINER put_dns_fqdn $IP_ARGS fi ;; dns-remove) - collect_ip_args "$@" - shift $IP_COUNT - [ $# -eq 1 -o \( $# -eq 3 -a "$2" = "-h" \) ] || usage - check_running $CONTAINER_NAME - CONTAINER=$(container_id $1) - if [ $IP_COUNT -eq 0 ] ; then - IP_ARGS=$(with_container_addresses echo_ips $CONTAINER) - fi - if [ $# -eq 1 ] ; then - delete_dns $CONTAINER $IP_ARGS + collect_dns_add_remove_args "$@" + if [ -n "$FQDN" ] ; then + delete_dns_fqdn $CONTAINER $FQDN $IP_ARGS else - delete_dns_fqdn $CONTAINER "$3" $IP_ARGS + delete_dns $CONTAINER $IP_ARGS fi ;; dns-lookup)