From 8b09f0ad06e5ae941fc497754cc5778fae9018de Mon Sep 17 00:00:00 2001 From: George Paraskevopoulos Date: Tue, 13 Dec 2016 11:27:36 +0200 Subject: Introduce setup_scripts directory JIRA: SFC-52 Move every setup script to a separate directory. Change-Id: I99ea937a04d7580c7e85220091fe0c32213c587e Signed-off-by: George Paraskevopoulos --- tests/functest/odl-sfc/compute_presetup_CI.bash | 27 ------- tests/functest/odl-sfc/delete.sh | 16 ---- tests/functest/odl-sfc/prepare_odl_sfc.py | 11 ++- tests/functest/odl-sfc/server_presetup_CI.bash | 13 ---- .../odl-sfc/setup_scripts/compute_presetup_CI.bash | 27 +++++++ tests/functest/odl-sfc/setup_scripts/delete.sh | 16 ++++ .../odl-sfc/setup_scripts/prepare_odl_sfc.py | 90 ++++++++++++++++++++++ .../odl-sfc/setup_scripts/server_presetup_CI.bash | 13 ++++ .../odl-sfc/setup_scripts/tacker_client_install.sh | 43 +++++++++++ 9 files changed, 194 insertions(+), 62 deletions(-) delete mode 100755 tests/functest/odl-sfc/compute_presetup_CI.bash delete mode 100755 tests/functest/odl-sfc/delete.sh delete mode 100755 tests/functest/odl-sfc/server_presetup_CI.bash create mode 100755 tests/functest/odl-sfc/setup_scripts/compute_presetup_CI.bash create mode 100755 tests/functest/odl-sfc/setup_scripts/delete.sh create mode 100755 tests/functest/odl-sfc/setup_scripts/prepare_odl_sfc.py create mode 100755 tests/functest/odl-sfc/setup_scripts/server_presetup_CI.bash create mode 100755 tests/functest/odl-sfc/setup_scripts/tacker_client_install.sh diff --git a/tests/functest/odl-sfc/compute_presetup_CI.bash b/tests/functest/odl-sfc/compute_presetup_CI.bash deleted file mode 100755 index 36148aa1..00000000 --- a/tests/functest/odl-sfc/compute_presetup_CI.bash +++ /dev/null @@ -1,27 +0,0 @@ -#!/bin/bash - -# This script must be use with vxlan-gpe + nsh. Once we have eth + nsh support -# in ODL, we will not need it anymore - -set -e -ssh_options='-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no' -BASEDIR=`dirname $0` -INSTALLER_IP=${INSTALLER_IP:-10.20.0.2} - -pushd $BASEDIR -#ip=`sshpass -p r00tme ssh $ssh_options root@${INSTALLER_IP} 'fuel node'|grep compute|\ -#awk '{print $10}' | head -1` - -ip=$1 -echo $ip -#sshpass -p r00tme scp $ssh_options correct_classifier.bash ${INSTALLER_IP}:/root -#sshpass -p r00tme ssh $ssh_options root@${INSTALLER_IP} 'scp correct_classifier.bash '"$ip"':/root' - -sshpass -p r00tme ssh $ssh_options root@${INSTALLER_IP} 'ssh root@'"$ip"' ifconfig br-int up' -output=$(sshpass -p r00tme ssh $ssh_options root@${INSTALLER_IP} 'ssh root@'"$ip"' ip route | \ -cut -d" " -f1 | grep 11.0.0.0' ; exit 0) - -if [ -z "$output" ]; then -sshpass -p r00tme ssh $ssh_options root@${INSTALLER_IP} 'ssh root@'"$ip"' ip route add 11.0.0.0/24 \ -dev br-int' -fi diff --git a/tests/functest/odl-sfc/delete.sh b/tests/functest/odl-sfc/delete.sh deleted file mode 100755 index 3da36148..00000000 --- a/tests/functest/odl-sfc/delete.sh +++ /dev/null @@ -1,16 +0,0 @@ -source ${repos_dir}/sfc/tests/functest/odl-sfc/tackerc -tacker sfc-classifier-delete red_http -tacker sfc-classifier-delete blue_ssh -tacker sfc-classifier-delete red_ssh -tacker sfc-classifier-delete blue_http -tacker sfc-delete red -tacker sfc-delete blue -tacker vnf-delete testVNF1 -tacker vnf-delete testVNF2 -tacker vnfd-delete test-vnfd1 -tacker vnfd-delete test-vnfd2 -openstack stack delete sfc --y -openstack stack delete sfc_test1 --y -openstack stack delete sfc_test2 --y -nova delete client -nova delete server diff --git a/tests/functest/odl-sfc/prepare_odl_sfc.py b/tests/functest/odl-sfc/prepare_odl_sfc.py index cdfc1dc8..c3162cba 100755 --- a/tests/functest/odl-sfc/prepare_odl_sfc.py +++ b/tests/functest/odl-sfc/prepare_odl_sfc.py @@ -29,10 +29,10 @@ except: os.environ['ODL_SFC_LOG'] = "/home/opnfv/functest/results/odl-sfc.log" os.environ['ODL_SFC_DIR'] = os.path.join(SFC_REPO_DIR, "tests/functest/odl-sfc") +SETUP_SCRIPTS_DIR = os.path.join(os.environ['ODL_SFC_DIR'], 'setup_scripts') -command = os.environ['ODL_SFC_DIR'] + ("/server_presetup_CI.bash | " - "tee -a ${ODL_SFC_LOG} " - "1>/dev/null 2>&1") +command = SETUP_SCRIPTS_DIR + ("/server_presetup_CI.bash | " + "tee -a ${ODL_SFC_LOG} 1>/dev/null 2>&1") output = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE) @@ -67,9 +67,8 @@ except: output = stdout.readlines() for ip in output: - command = os.environ['ODL_SFC_DIR'] + ("/compute_presetup_CI.bash " - "" + ip.rstrip() + "| tee -a " - "${ODL_SFC_LOG} 1>/dev/null 2>&1") + command = SETUP_SCRIPTS_DIR + ("/compute_presetup_CI.bash " + ip.rstrip() + + "| tee -a ${ODL_SFC_LOG} 1>/dev/null 2>&1") output = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE) diff --git a/tests/functest/odl-sfc/server_presetup_CI.bash b/tests/functest/odl-sfc/server_presetup_CI.bash deleted file mode 100755 index 240353f5..00000000 --- a/tests/functest/odl-sfc/server_presetup_CI.bash +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/bash -set -e -ssh_options='-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no' -BASEDIR=`dirname $0` -INSTALLER_IP=${INSTALLER_IP:-10.20.0.2} - -pushd $BASEDIR -ip=$(sshpass -p r00tme ssh $ssh_options root@${INSTALLER_IP} 'fuel node'|grep controller|awk '{print $10}' | head -1) -echo $ip - -sshpass -p r00tme scp $ssh_options delete.sh ${INSTALLER_IP}:/root -sshpass -p r00tme ssh $ssh_options root@${INSTALLER_IP} 'scp '"$ip"':/root/tackerc .' -sshpass -p r00tme scp $ssh_options ${INSTALLER_IP}:/root/tackerc $BASEDIR diff --git a/tests/functest/odl-sfc/setup_scripts/compute_presetup_CI.bash b/tests/functest/odl-sfc/setup_scripts/compute_presetup_CI.bash new file mode 100755 index 00000000..36148aa1 --- /dev/null +++ b/tests/functest/odl-sfc/setup_scripts/compute_presetup_CI.bash @@ -0,0 +1,27 @@ +#!/bin/bash + +# This script must be use with vxlan-gpe + nsh. Once we have eth + nsh support +# in ODL, we will not need it anymore + +set -e +ssh_options='-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no' +BASEDIR=`dirname $0` +INSTALLER_IP=${INSTALLER_IP:-10.20.0.2} + +pushd $BASEDIR +#ip=`sshpass -p r00tme ssh $ssh_options root@${INSTALLER_IP} 'fuel node'|grep compute|\ +#awk '{print $10}' | head -1` + +ip=$1 +echo $ip +#sshpass -p r00tme scp $ssh_options correct_classifier.bash ${INSTALLER_IP}:/root +#sshpass -p r00tme ssh $ssh_options root@${INSTALLER_IP} 'scp correct_classifier.bash '"$ip"':/root' + +sshpass -p r00tme ssh $ssh_options root@${INSTALLER_IP} 'ssh root@'"$ip"' ifconfig br-int up' +output=$(sshpass -p r00tme ssh $ssh_options root@${INSTALLER_IP} 'ssh root@'"$ip"' ip route | \ +cut -d" " -f1 | grep 11.0.0.0' ; exit 0) + +if [ -z "$output" ]; then +sshpass -p r00tme ssh $ssh_options root@${INSTALLER_IP} 'ssh root@'"$ip"' ip route add 11.0.0.0/24 \ +dev br-int' +fi diff --git a/tests/functest/odl-sfc/setup_scripts/delete.sh b/tests/functest/odl-sfc/setup_scripts/delete.sh new file mode 100755 index 00000000..3da36148 --- /dev/null +++ b/tests/functest/odl-sfc/setup_scripts/delete.sh @@ -0,0 +1,16 @@ +source ${repos_dir}/sfc/tests/functest/odl-sfc/tackerc +tacker sfc-classifier-delete red_http +tacker sfc-classifier-delete blue_ssh +tacker sfc-classifier-delete red_ssh +tacker sfc-classifier-delete blue_http +tacker sfc-delete red +tacker sfc-delete blue +tacker vnf-delete testVNF1 +tacker vnf-delete testVNF2 +tacker vnfd-delete test-vnfd1 +tacker vnfd-delete test-vnfd2 +openstack stack delete sfc --y +openstack stack delete sfc_test1 --y +openstack stack delete sfc_test2 --y +nova delete client +nova delete server diff --git a/tests/functest/odl-sfc/setup_scripts/prepare_odl_sfc.py b/tests/functest/odl-sfc/setup_scripts/prepare_odl_sfc.py new file mode 100755 index 00000000..c3162cba --- /dev/null +++ b/tests/functest/odl-sfc/setup_scripts/prepare_odl_sfc.py @@ -0,0 +1,90 @@ +# +# Author: George Paraskevopoulos (geopar@intracom-telecom.com) +# Manuel Buil (manuel.buil@ericsson.com) +# Prepares the controller and the compute nodes for the odl-sfc testcase +# +# +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +# + +import os +import sys +import subprocess +import paramiko +import functest.utils.functest_logger as ft_logger + +logger = ft_logger.Logger("ODL_SFC").getLogger() + +SFC_REPO_DIR = "/home/opnfv/repos/sfc" + +try: + INSTALLER_IP = os.environ['INSTALLER_IP'] +except: + logger.debug("INSTALLER_IP does not exist. We create 10.20.0.2") + INSTALLER_IP = "10.20.0.2" + +os.environ['ODL_SFC_LOG'] = "/home/opnfv/functest/results/odl-sfc.log" +os.environ['ODL_SFC_DIR'] = os.path.join(SFC_REPO_DIR, + "tests/functest/odl-sfc") +SETUP_SCRIPTS_DIR = os.path.join(os.environ['ODL_SFC_DIR'], 'setup_scripts') + +command = SETUP_SCRIPTS_DIR + ("/server_presetup_CI.bash | " + "tee -a ${ODL_SFC_LOG} 1>/dev/null 2>&1") + +output = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE) + +# This code is for debugging purposes +# for line in iter(output.stdout.readline, ''): +# i = line.rstrip() +# print(i) + +# Make sure the process is finished before checking the returncode +if not output.poll(): + output.wait() + +# Get return value +if output.returncode: + print("The presetup of the server did not work") + sys.exit(output.returncode) + +logger.info("The presetup of the server worked ") + +ssh_options = "-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" +ssh = paramiko.SSHClient() +ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) + +try: + ssh.connect(INSTALLER_IP, username="root", + password="r00tme", timeout=2) + command = "fuel node | grep compute | awk '{print $10}'" + logger.info("Executing ssh to collect the compute IPs") + (stdin, stdout, stderr) = ssh.exec_command(command) +except: + logger.debug("Something went wrong in the ssh to collect the computes IP") + +output = stdout.readlines() +for ip in output: + command = SETUP_SCRIPTS_DIR + ("/compute_presetup_CI.bash " + ip.rstrip() + + "| tee -a ${ODL_SFC_LOG} 1>/dev/null 2>&1") + + output = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE) + +# This code is for debugging purposes +# for line in iter(output.stdout.readline, ''): +# print(line) +# sys.stdout.flush() + + output.stdout.close() + + if not (output.poll()): + output.wait() + + # Get return value + if output.returncode: + print("The compute config did not work on compute %s" % ip) + sys.exit(output.returncode) + +sys.exit(0) diff --git a/tests/functest/odl-sfc/setup_scripts/server_presetup_CI.bash b/tests/functest/odl-sfc/setup_scripts/server_presetup_CI.bash new file mode 100755 index 00000000..240353f5 --- /dev/null +++ b/tests/functest/odl-sfc/setup_scripts/server_presetup_CI.bash @@ -0,0 +1,13 @@ +#!/bin/bash +set -e +ssh_options='-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no' +BASEDIR=`dirname $0` +INSTALLER_IP=${INSTALLER_IP:-10.20.0.2} + +pushd $BASEDIR +ip=$(sshpass -p r00tme ssh $ssh_options root@${INSTALLER_IP} 'fuel node'|grep controller|awk '{print $10}' | head -1) +echo $ip + +sshpass -p r00tme scp $ssh_options delete.sh ${INSTALLER_IP}:/root +sshpass -p r00tme ssh $ssh_options root@${INSTALLER_IP} 'scp '"$ip"':/root/tackerc .' +sshpass -p r00tme scp $ssh_options ${INSTALLER_IP}:/root/tackerc $BASEDIR diff --git a/tests/functest/odl-sfc/setup_scripts/tacker_client_install.sh b/tests/functest/odl-sfc/setup_scripts/tacker_client_install.sh new file mode 100755 index 00000000..adb9a44b --- /dev/null +++ b/tests/functest/odl-sfc/setup_scripts/tacker_client_install.sh @@ -0,0 +1,43 @@ +MYDIR=$(dirname $(readlink -f "$0")) +CLIENT=$(echo python-python-tackerclient_*_all.deb) +CLIREPO="tacker-client" + +# Function checks whether a python egg is available, if not, installs +function chkPPkg() { + PKG="$1" + IPPACK=$(python - <<'____EOF' +import pip +from os.path import join +for package in pip.get_installed_distributions(): + print(package.location) + print(join(package.location, *package._get_metadata("top_level.txt"))) +____EOF +) + echo "$IPPACK" | grep -q "$PKG" + if [ $? -ne 0 ];then + pip install "$PKG" + fi +} + +function envSetup() { + apt-get install -y python-all debhelper fakeroot + #pip install --upgrade python-keystoneclient==1.7.4 + chkPPkg stdeb +} + +# Function installs python-tackerclient from github +function deployTackerClient() { + cd $MYDIR + git clone -b 'SFC_refactor' https://github.com/trozet/python-tackerclient.git $CLIREPO + cd $CLIREPO + python setup.py --command-packages=stdeb.command bdist_deb + cd "deb_dist" + CLIENT=$(echo python-python-tackerclient_*_all.deb) + cp $CLIENT $MYDIR + dpkg -i "${MYDIR}/${CLIENT}" + apt-get -f -y install + dpkg -i "${MYDIR}/${CLIENT}" +} + +envSetup +deployTackerClient -- cgit 1.2.3-korg