[COMMON] Fix $BASH_SOURCE and pushd/popd bashisms
[oom.git] / kubernetes / contrib / dns-server-for-vhost-ingress-testing / deploy_dns.sh
index 81533b9..163877d 100755 (executable)
@@ -1,5 +1,5 @@
 #!/bin/bash -e
-#
+
 #   Copyright 2020 Samsung Electronics Co., Ltd.
 #
 #   Licensed under the Apache License, Version 2.0 (the "License");
@@ -23,9 +23,10 @@ SPATH="$( dirname "$( which "$0" )" )"
 
 usage() {
 cat << ==usage
-$0 [cluster_domain] [helm_chart_args ...]
+$0 [cluster_domain] [lb_ip] [helm_chart_args] ...
        [cluster_domain] Default value simpledemo.onap.org
-       [helm_chart_args...] Optional arguments passed to helm install command
+       [lb_ip] Default value LoadBalancer IP
+       [helm_chart_args] ... Optional arguments passed to helm install command
 $0 --help This message
 $0 --info Display howto configure target machine
 ==usage
@@ -44,23 +45,54 @@ Extra DNS server already deployed:
 ==infodeploy
 }
 
+
+list_node_with_external_addrs()
+{
+       local WORKER_NODES=$(kubectl get no -l node-role.kubernetes.io/worker=true -o jsonpath='{.items..metadata.name}')
+       for worker in $WORKER_NODES; do
+               local external_ip=$(kubectl get no $worker  -o jsonpath='{.metadata.annotations.rke\.cattle\.io/external-ip }')
+               local internal_ip=$(kubectl get no $worker  -o jsonpath='{.metadata.annotations.rke\.cattle\.io/internal-ip }')
+               if [ $internal_ip != $external_ip ]; then
+                       echo $external_ip
+                       break
+               fi
+       done
+}
+
+ingress_controller_ip() {
+       local metal_ns=$(kubectl get ns --no-headers --output=custom-columns=NAME:metadata.name |grep metallb-system)
+       if [ -z $metal_ns ]; then
+               echo $CLUSTER_IP
+       else
+               list_node_with_external_addrs
+       fi
+}
+
 deploy() {
-       pushd "$SPATH/bind9dns" > /dev/null
+       local ingress_ip=$(ingress_controller_ip)
+       initdir = $(pwd)
+       cd $SPATH/bind9dns
        if [ $# -eq 0 ]; then
                local cl_domain="simpledemo.onap.org"
        else
                local cl_domain=$1
                shift
        fi
-       helm install . --set dnsconf.wildcard="$cl_domain=$CLUSTER_IP" $@
-       popd > /dev/null
+       if [ $# -ne 0 ]; then
+               ingress_ip=$1
+               shift
+       fi
+       helm install . --set dnsconf.wildcard="$cl_domain=$ingress_ip" $@
+       cd $initdir
        target_machine_notice_info
 }
 
-if [[ $# -eq 1 ]] && [[ $1 == "-h" || $1 == "--help" ]]; then
+if [ $# -eq 1 ] && [ "$1" = "-h" ]; then
        usage
-elif [[ $# -eq 1 ]] && [[ $1 == "--info" ]]; then
-       target_machine_notice_info
+elif [ $# -eq 1 ] && [ "$1" = "--help" ]; then
+       usage
+elif [ $# -eq 1 ] && [ "$1" = "--info" ]; then
+       target_machine_notice_info
 else
        deploy $@
 fi