From 5e00dc425941c2b1971030122eaab83b95eede84 Mon Sep 17 00:00:00 2001 From: Carlos Goncalves Date: Sun, 20 Mar 2016 17:15:17 +0000 Subject: Add support to multi-installers and local envs As of now, only support for Apex is available. This patch makes things easier to extend support for other OPNFV installers. The patch also adds explicit support for local OpenStack environments (e.g. deployed via devstack). Change-Id: Ib36e8fef2418dfabbaa56b933f533650d184d4e3 Signed-off-by: Carlos Goncalves --- tests/run.sh | 60 ++++++++++++++++++++++++++++++++++++++---------------------- 1 file changed, 38 insertions(+), 22 deletions(-) diff --git a/tests/run.sh b/tests/run.sh index 5e1eb375..7720604c 100755 --- a/tests/run.sh +++ b/tests/run.sh @@ -18,38 +18,54 @@ ALARM_NAME=doctor_alarm1 INSPECTOR_PORT=12345 CONSUMER_PORT=12346 +SUPPORTED_INSTALLER_TYPES="apex local" INSTALLER_TYPE=${INSTALLER_TYPE:-apex} INSTALLER_IP=${INSTALLER_IP:-none} COMPUTE_HOST=${COMPUTE_HOST:-overcloud-novacompute-0} COMPUTE_IP=${COMPUTE_IP:-none} +COMPUTE_USER=${COMPUTE_USER:-heat-admin} ssh_opts="-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" -if [[ "$INSTALLER_TYPE" != "apex" ]] ; then +if [[ ! "$SUPPORTED_INSTALLER_TYPES" =~ "$INSTALLER_TYPE" ]] ; then echo "ERROR: INSTALLER_TYPE=$INSTALLER_TYPE is not supported." exit 1 fi -if [[ "$INSTALLER_IP" == "none" ]] ; then - instack_mac=$(sudo virsh domiflist instack | awk '/default/{print $5}') - INSTALLER_IP=$(/usr/sbin/arp -e | grep ${instack_mac} | awk '{print $1}') -fi - -if [[ "$COMPUTE_IP" == "none" ]] ; then - COMPUTE_IP=$(sudo ssh $ssh_opts $INSTALLER_IP \ - "source stackrc; \ - nova show $COMPUTE_HOST \ - | awk '/ ctlplane network /{print \$5}'") -fi - prepare_compute_ssh() { + ssh_opts_cpu="$ssh_opts" + + if [[ "$INSTALLER_TYPE" == "apex" ]] ; then + if [[ "$INSTALLER_IP" == "none" ]] ; then + instack_mac=$(sudo virsh domiflist instack | awk '/default/{print $5}') + INSTALLER_IP=$(/usr/sbin/arp -e | grep ${instack_mac} | awk '{print $1}') + fi + + if [[ "$COMPUTE_IP" == "none" ]] ; then + COMPUTE_IP=$(sudo ssh $ssh_opts $INSTALLER_IP \ + "source stackrc; \ + nova show $COMPUTE_HOST \ + | awk '/ ctlplane network /{print \$5}'") + fi + + # get ssh key from installer node + sudo scp $ssh_opts root@"$INSTALLER_IP":/home/stack/.ssh/id_rsa instack_key + sudo chown $(whoami):$(whoami) instack_key + chmod 400 instack_key + ssh_opts_cpu+=" -i instack_key" + elif [[ "$INSTALLER_TYPE" == "local" ]] ; then + if [[ "$COMPUTE_IP" == "none" ]] ; then + COMPUTE_IP=$(getent hosts "$COMPUTE_HOST" | awk '{ print $1 }') + if [[ -z "$COMPUTE_IP" ]]; then + echo "ERROR: Could not resolve $COMPUTE_HOST. Either manually set COMPUTE_IP or enable DNS resolution." + exit 1 + fi + fi + + echo "INSTALLER_TYPE set to 'local'. Assuming SSH keys already exchanged with $COMPUTE_HOST" + fi + # verify connectivity to target compute host ping -c 1 "$COMPUTE_IP" - - # get ssh key from installer node - sudo scp $ssh_opts root@"$INSTALLER_IP":/home/stack/.ssh/id_rsa instack_key - sudo chown $(whoami):$(whoami) instack_key - chmod 400 instack_key - ssh_opts_cpu="$ssh_opts -i instack_key" } download_image() { @@ -143,8 +159,8 @@ echo sudo ip link set $dev up sleep 1 END_TXT chmod +x disable_network.sh - scp $ssh_opts_cpu disable_network.sh "heat-admin@$COMPUTE_IP:" - ssh $ssh_opts_cpu "heat-admin@$COMPUTE_IP" 'nohup ./disable_network.sh > disable_network.log 2>&1 &' + scp $ssh_opts_cpu disable_network.sh "$COMPUTE_USER@$COMPUTE_IP:" + ssh $ssh_opts_cpu "$COMPUTE_USER@$COMPUTE_IP" 'nohup ./disable_network.sh > disable_network.log 2>&1 &' } calculate_notification_time() { @@ -176,7 +192,7 @@ cleanup() { #TODO: add host status check via nova admin api echo "waiting disabled compute host back to be enabled..." sleep 180 - ssh $ssh_opts_cpu "heat-admin@$COMPUTE_IP" \ + ssh $ssh_opts_cpu "$COMPUTE_USER@$COMPUTE_IP" \ "[ -e disable_network.log ] && cat disable_network.log" } -- cgit 1.2.3-korg