summaryrefslogtreecommitdiffstats
path: root/tests/run.sh
diff options
context:
space:
mode:
authorCarlos Goncalves <carlos.goncalves@neclab.eu>2016-11-16 09:55:01 +0000
committerCarlos Goncalves <carlos.goncalves@neclab.eu>2016-12-10 16:18:46 +0000
commit83076cf49ebd8ded4d5d5e9667fcd8e9e9be4172 (patch)
tree0649e9f7e01d3a73b25099396a40c9c26d2d3c2d /tests/run.sh
parent23f860704776c1be1d71e81580044de4c33d7a93 (diff)
Refactor installers support code
Restructuring tests directory to become more modular, and adding installer helper functions. JIRA: DOCTOR-71 Change-Id: Ib3846c35485cfa4f0a0881beb69811cdc0b8f66f Signed-off-by: Carlos Goncalves <carlos.goncalves@neclab.eu>
Diffstat (limited to 'tests/run.sh')
-rwxr-xr-xtests/run.sh172
1 files changed, 13 insertions, 159 deletions
diff --git a/tests/run.sh b/tests/run.sh
index ea7ded50..141d836a 100755
--- a/tests/run.sh
+++ b/tests/run.sh
@@ -26,10 +26,6 @@ DOCTOR_PROJECT=doctor
#TODO: change back to `_member_` when JIRA DOCTOR-55 is done
DOCTOR_ROLE=admin
-SUPPORTED_INSTALLER_TYPES="apex fuel local"
-INSTALLER_TYPE=${INSTALLER_TYPE:-local}
-INSTALLER_IP=${INSTALLER_IP:-none}
-
SUPPORTED_INSPECTOR_TYPES="sample congress"
INSPECTOR_TYPE=${INSPECTOR_TYPE:-sample}
TOP_DIR=$(cd $(dirname "$0") && pwd)
@@ -38,151 +34,11 @@ ssh_opts="-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no"
as_doctor_user="--os-username $DOCTOR_USER --os-password $DOCTOR_PW
--os-tenant-name $DOCTOR_PROJECT"
-if [[ ! "$SUPPORTED_INSTALLER_TYPES" =~ "$INSTALLER_TYPE" ]] ; then
- echo "ERROR: INSTALLER_TYPE=$INSTALLER_TYPE is not supported."
- exit 1
-fi
-
if [[ ! "$SUPPORTED_INSPECTOR_TYPES" =~ "$INSPECTOR_TYPE" ]] ; then
echo "ERROR: INSPECTOR_TYPE=$INSPECTOR_TYPE is not supported."
exit 1
fi
-get_installer_ip() {
- 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
- elif [[ "$INSTALLER_TYPE" == "fuel" ]] ; then
- if [[ "$INSTALLER_IP" == "none" ]] ; then
- instack_mac=$(sudo virsh domiflist fuel-opnfv | awk '/pxebr/{print $5}')
- INSTALLER_IP=$(/usr/sbin/arp -e | grep ${instack_mac} | awk '{print $1}')
- fi
- fi
-
- if [[ "$INSTALLER_TYPE" != "local" ]] ; then
- die_if_not_set $LINENO INSTALLER_IP "No installer IP"
- fi
-}
-
-prepare_ssh_to_cloud() {
- ssh_opts_cpu="$ssh_opts"
-
- # get ssh key from installer node
- if [[ "$INSTALLER_TYPE" == "apex" ]] ; then
- 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" == "fuel" ]] ; then
- sshpass -p r00tme scp $ssh_opts root@${INSTALLER_IP}:.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
- echo "INSTALLER_TYPE set to 'local'. Assuming SSH keys already exchanged with $COMPUTE_HOST"
- fi
-}
-
-prepare_test_env() {
- #TODO delete it when fuel support the configuration
- if [[ "$INSTALLER_TYPE" == "fuel" ]] ; then
- echo "modify the configuration..."
- cat > set_conf.sh << 'END_TXT'
-#!/bin/bash
-if [ -e /etc/ceilometer/event_pipeline.yaml ]; then
- if ! grep -q '^ *- notifier://?topic=alarm.all$' /etc/ceilometer/event_pipeline.yaml; then
- sed -i 's|- notifier://|- notifier://?topic=alarm.all|' /etc/ceilometer/event_pipeline.yaml
- echo "modify the ceilometer config"
- service ceilometer-agent-notification restart
- fi
-else
- echo "ceilometer event_pipeline.yaml file does not exist"
- exit 1
-fi
-if [ -e /etc/nova/nova.conf ]; then
- if ! grep -q '^notification_driver=messaging$' /etc/nova/nova.conf; then
- sed -i -r 's/notification_driver=/notification_driver=messaging/g' /etc/nova/nova.conf
- echo "modify nova config"
- service nova-api restart
- fi
-else
- echo "nova.conf file does not exist"
- exit 1
-fi
-exit 0
-END_TXT
- chmod +x set_conf.sh
- CONTROLLER_IP=$(sshpass -p r00tme ssh 2>/dev/null $ssh_opts root@${INSTALLER_IP} \
- "fuel node | grep controller | cut -d '|' -f 5|xargs")
- for node in $CONTROLLER_IP;do
- scp $ssh_opts_cpu set_conf.sh "root@$node:"
- ssh $ssh_opts_cpu "root@$node" './set_conf.sh > set_conf.log 2>&1 &'
- sleep 1
- scp $ssh_opts_cpu "root@$node:set_conf.log" set_conf_$node.log
- done
-
- if grep -q "modify the ceilometer config" set_conf_*.log ; then
- NEED_TO_RESTORE_CEILOMETER=true
- fi
- if grep -q "modify nova config" set_conf_*.log ; then
- NEED_TO_RESTORE_NOVA=true
- fi
-
- echo "waiting service restart..."
- sleep 60
- fi
-}
-
-restore_test_env() {
- #TODO delete it when fuel support the configuration
- if [[ "$INSTALLER_TYPE" == "fuel" ]] ; then
- if ! ($NEED_TO_RESTORE_CEILOMETER || $NEED_TO_RESTORE_NOVA) ; then
- echo "Don't need to restore config"
- exit 0
- fi
-
- echo "restore the configuration..."
- cat > restore_conf.sh << 'END_TXT'
-#!/bin/bash
-if @NEED_TO_RESTORE_CEILOMETER@ ; then
- if [ -e /etc/ceilometer/event_pipeline.yaml ]; then
- if grep -q '^ *- notifier://?topic=alarm.all$' /etc/ceilometer/event_pipeline.yaml; then
- sed -i 's|- notifier://?topic=alarm.all|- notifier://|' /etc/ceilometer/event_pipeline.yaml
- service ceilometer-agent-notification restart
- fi
- else
- echo "ceilometer event_pipeline.yaml file does not exist"
- exit 1
- fi
-fi
-if @NEED_TO_RESTORE_NOVA@ ; then
- if [ -e /etc/nova/nova.conf ]; then
- if grep -q '^notification_driver=messaging$' /etc/nova/nova.conf; then
- sed -i -r 's/notification_driver=messaging/notification_driver=/g' /etc/nova/nova.conf
- service nova-api restart
- fi
- else
- echo "nova.conf file does not exist"
- exit 1
- fi
-fi
-exit 0
-END_TXT
- sed -i -e "s/@NEED_TO_RESTORE_CEILOMETER@/$NEED_TO_RESTORE_CEILOMETER/" restore_conf.sh
- sed -i -e "s/@NEED_TO_RESTORE_NOVA@/$NEED_TO_RESTORE_NOVA/" restore_conf.sh
- chmod +x restore_conf.sh
- for node in $CONTROLLER_IP;do
- scp $ssh_opts_cpu restore_conf.sh "root@$node:"
- ssh $ssh_opts_cpu "root@$node" './restore_conf.sh > restore_conf.log 2>&1 &'
- done
-
- echo "waiting service restart..."
- sleep 60
- fi
-}
-
get_compute_host_info() {
# get computer host info which VM boot in
COMPUTE_HOST=$(openstack $as_doctor_user server show $VM_NAME |
@@ -190,18 +46,18 @@ get_compute_host_info() {
compute_host_in_undercloud=${COMPUTE_HOST%%.*}
die_if_not_set $LINENO COMPUTE_HOST "Failed to get compute hostname"
- if [[ "$INSTALLER_TYPE" == "apex" ]] ; then
+ if is_installer apex; then
COMPUTE_USER=${COMPUTE_USER:-heat-admin}
COMPUTE_IP=$(sudo ssh $ssh_opts $INSTALLER_IP \
"source stackrc; \
nova show $compute_host_in_undercloud \
| awk '/ ctlplane network /{print \$5}'")
- elif [[ "$INSTALLER_TYPE" == "fuel" ]] ; then
+ elif is_installer fuel; then
COMPUTE_USER=${COMPUTE_USER:-root}
node_id=$(echo $compute_host_in_undercloud | cut -d "-" -f 2)
COMPUTE_IP=$(sshpass -p r00tme ssh 2>/dev/null $ssh_opts root@${INSTALLER_IP} \
"fuel node|awk -F '|' -v id=$node_id '{if (\$1 == id) print \$5}' |xargs")
- elif [[ "$INSTALLER_TYPE" == "local" ]] ; then
+ elif is_installer local; then
COMPUTE_USER=${COMPUTE_USER:-$(whoami)}
COMPUTE_IP=$(getent hosts "$COMPUTE_HOST" | awk '{ print $1 }')
fi
@@ -225,13 +81,13 @@ get_compute_host_info() {
get_consumer_ip() {
local get_consumer_command="ip route get $COMPUTE_IP | awk '/ src /{print \$NF}'"
- if [[ "$INSTALLER_TYPE" == "apex" ]] ; then
+ if is_installer apex; then
CONSUMER_IP=$(sudo ssh $ssh_opts root@$INSTALLER_IP \
"$get_consumer_command")
- elif [[ "$INSTALLER_TYPE" == "fuel" ]] ; then
+ elif is_installer fuel; then
CONSUMER_IP=$(sudo sshpass -p r00tme ssh $ssh_opts root@${INSTALLER_IP} \
"$get_consumer_command")
- elif [[ "$INSTALLER_TYPE" == "local" ]] ; then
+ elif is_installer local; then
CONSUMER_IP=`$get_consumer_command`
fi
echo "CONSUMER_IP=$CONSUMER_IP"
@@ -397,13 +253,13 @@ start_consumer() {
# NOTE(r-mibu): create tunnel to the controller nodes, so that we can
# avoid some network problems dpends on infra and installers.
# This tunnel will be terminated by stop_consumer() or after 10 mins passed.
- if [[ "$INSTALLER_TYPE" != "local" ]] ; then
- if [[ "$INSTALLER_TYPE" == "apex" ]] ; then
+ if ! is_installer local; then
+ if is_installer apex; then
CONTROLLER_IPS=$(sudo ssh $ssh_opts $INSTALLER_IP \
"source stackrc; \
nova list | grep ' overcloud-controller-[0-9] ' \
| sed -e 's/^.*ctlplane=//' -e 's/ *|\$//'")
- elif [[ "$INSTALLER_TYPE" == "fuel" ]] ; then
+ elif is_installer fuel; then
CONTROLLER_IPS=$(sshpass -p r00tme ssh 2>/dev/null $ssh_opts root@${INSTALLER_IP} \
"fuel node | grep controller | cut -d '|' -f 5|xargs")
fi
@@ -424,7 +280,7 @@ stop_consumer() {
print_log consumer.log
# NOTE(r-mibu): terminate tunnels to the controller nodes
- if [[ "$INSTALLER_TYPE" != "local" ]] ; then
+ if ! is_installer local; then
for ip in $CONTROLLER_IPS
do
forward_rule="-R $CONSUMER_PORT:localhost:$CONSUMER_PORT"
@@ -534,7 +390,7 @@ cleanup() {
openstack project delete "$DOCTOR_PROJECT"
openstack user delete "$DOCTOR_USER"
- restore_test_env
+ cleanup_installer
}
@@ -543,11 +399,9 @@ echo "Note: doctor/tests/run.sh has been executed."
trap cleanup EXIT
source $TOP_DIR/functions-common
+source $TOP_DIR/lib/installer
-echo "preparing test env..."
-get_installer_ip
-prepare_ssh_to_cloud
-prepare_test_env
+setup_installer
echo "preparing VM image..."
download_image