Multi-compute support and python refactoring 41/23241/1
authorManuel Buil <manuel.buil@ericsson.com>
Fri, 14 Oct 2016 08:40:22 +0000 (10:40 +0200)
committerJose Lausuch <jose.lausuch@ericsson.com>
Mon, 17 Oct 2016 16:03:04 +0000 (16:03 +0000)
We added support for multi-compute and changed one file from bash to python

Change-Id: Ife3d5a8e41936c044cfe88664187d81c18d96b93
Signed-off-by: Manuel Buil <manuel.buil@ericsson.com>
(cherry picked from commit 873250561e60238db973d64f0d3bb61cb844d4a6)

ci/exec_test.sh
testcases/features/sfc/compute_presetup_CI.bash
testcases/features/sfc/prepare_odl_sfc.py [new file with mode: 0755]

index ad1e563..6fdc426 100755 (executable)
@@ -161,7 +161,7 @@ function run_test(){
         "odl-sfc")
             ODL_SFC_DIR=${FUNCTEST_REPO_DIR}/testcases/features/sfc
             # pass FUNCTEST_REPO_DIR inside prepare_odl_sfc.bash
-            FUNCTEST_REPO_DIR=${FUNCTEST_REPO_DIR} bash ${ODL_SFC_DIR}/prepare_odl_sfc.bash || exit $?
+            FUNCTEST_REPO_DIR=${FUNCTEST_REPO_DIR} python ${ODL_SFC_DIR}/prepare_odl_sfc.py || exit $?
             source ${ODL_SFC_DIR}/tackerc
             python ${ODL_SFC_DIR}/sfc_colorado1.py $report
         ;;
index c776c2f..39276b4 100755 (executable)
@@ -9,9 +9,10 @@ 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=`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'
diff --git a/testcases/features/sfc/prepare_odl_sfc.py b/testcases/features/sfc/prepare_odl_sfc.py
new file mode 100755 (executable)
index 0000000..78f4d76
--- /dev/null
@@ -0,0 +1,96 @@
+#
+# 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()
+
+try:
+    FUNCTEST_REPO_DIR = os.environ['FUNCTEST_REPO_DIR']
+except:
+    logger.debug("FUNCTEST_REPO_DIR does not exist!!!!!")
+
+FUNCTEST_REPO_DIR = "/home/opnfv/repos/functest"
+
+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'] = FUNCTEST_REPO_DIR + "/testcases/features/sfc"
+
+command = os.environ['ODL_SFC_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 = os.environ['ODL_SFC_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)