Cperf: Enable csit live migration
[releng.git] / jjb / cperf / cperf-robot-netvirt-csit.sh
index 3fb4323..c30f10a 100755 (executable)
@@ -4,6 +4,11 @@ set -o errexit
 set -o nounset
 set -o pipefail
 
+if [[ ! -z ${SKIP_CSIT+x} && "$SKIP_CSIT" == "True" ]]; then
+  echo "Skipping csit run"
+  exit 0
+fi
+
 if [ "$OS_VERSION" == 'master' ]; then
   FULL_OS_VER='master'
 else
@@ -11,7 +16,7 @@ else
 fi
 
 if [ "$ODL_BRANCH" == 'master' ]; then
-  ODL_STREAM='flourine'
+  ODL_STREAM='neon'
 else
   ODL_STREAM=${ODL_BRANCH#"stable/"}
 fi
@@ -33,6 +38,17 @@ NUM_COMPUTE_NODES=$(python ${REL_PATH}/parse-node-yaml.py num_nodes --node-type
 echo "Number of Control nodes found: ${NUM_CONTROL_NODES}"
 echo "Number of Compute nodes found: ${NUM_COMPUTE_NODES}"
 
+# Only 1 combo or ctrl node is specified, even for OS HA deployments
+# Currently supported combinations are:
+# 0cmb-1ctl-2cmp
+# 1cmb-0ctl-0cmp
+# 1cmb-0ctl-1cmp
+if [ "$NUM_COMPUTE_NODES" -eq 0 ]; then
+  OPENSTACK_TOPO="1cmb-0ctl-0cmp"
+else
+  OPENSTACK_TOPO="0cmb-1ctl-2cmp"
+fi
+
 idx=1
 EXTRA_ROBOT_ARGS=""
 for idx in `seq 1 $NUM_CONTROL_NODES`; do
@@ -43,11 +59,16 @@ for idx in `seq 1 $NUM_CONTROL_NODES`; do
                       -v HA_PROXY_${idx}_IP:${SDN_CONTROLLER_IP}"
 done
 
-idx=1
-for idx in `seq 1 $NUM_COMPUTE_NODES`; do
-  COMPUTE_IP=$(python ${REL_PATH}/parse-node-yaml.py get_value -k address --node-type compute --node-number ${idx} --file $NODE_FILE_PATH)
-  EXTRA_ROBOT_ARGS+=" -v OS_COMPUTE_${idx}_IP:${COMPUTE_IP}"
-done
+# In all-in-one these Compute IPs still need to be passed to robot
+if [ "$NUM_COMPUTE_NODES" -eq 0 ]; then
+  EXTRA_ROBOT_ARGS+=" -v OS_COMPUTE_1_IP:'' -v OS_COMPUTE_2_IP:''"
+else
+  idx=1
+  for idx in `seq 1 $NUM_COMPUTE_NODES`; do
+    COMPUTE_IP=$(python ${REL_PATH}/parse-node-yaml.py get_value -k address --node-type compute --node-number ${idx} --file $NODE_FILE_PATH)
+    EXTRA_ROBOT_ARGS+=" -v OS_COMPUTE_${idx}_IP:${COMPUTE_IP}"
+  done
+fi
 
 CONTROLLER_1_IP=$(python ${REL_PATH}/parse-node-yaml.py get_value -k address --node-number 1 --file $NODE_FILE_PATH)
 
@@ -58,25 +79,25 @@ if [ "$ODL_CONTAINERIZED" == 'false' ]; then
                       -v NODE_STOP_COMMAND:'sudo systemctl stop opendaylight_api' \
                       -v NODE_FREEZE_COMMAND:'sudo systemctl stop opendaylight_api' "
 else
-  EXTRA_ROBOT_ARGS+=" -v NODE_KARAF_COUNT_COMMAND:\"sudo docker exec opendaylight_api /bin/bash -c 'ps axf | \
-                                grep org.apache.karaf | grep -v grep | wc -l' || echo 0\" \
-                      -v NODE_START_COMMAND:\"sudo docker start opendaylight_api\" \
-                      -v NODE_KILL_COMMAND:\"sudo docker stop opendaylight_api\" \
-                      -v NODE_STOP_COMMAND:\"sudo docker stop opendaylight_api\" \
-                      -v NODE_FREEZE_COMMAND:\"sudo docker stop opendaylight_api\" "
+  EXTRA_ROBOT_ARGS+=" -v NODE_KARAF_COUNT_COMMAND:'sudo docker ps | grep opendaylight_api | wc -l || echo 0' \
+                      -v NODE_START_COMMAND:'sudo docker start opendaylight_api' \
+                      -v NODE_KILL_COMMAND:'sudo docker stop opendaylight_api' \
+                      -v NODE_STOP_COMMAND:'sudo docker stop opendaylight_api' \
+                      -v NODE_FREEZE_COMMAND:'sudo docker stop opendaylight_api' "
 fi
 
 # FIXME(trozet) remove this once it is fixed in csit
 # Upload glance image into openstack
 wget -O ${WORKSPACE}/cirros-0.3.5-x86_64-disk.img http://download.cirros-cloud.net/0.3.5/cirros-0.3.5-x86_64-disk.img
 export ANSIBLE_HOST_KEY_CHECKING=False
-ansible-playbook -i ${CONTROLLER_1_IP}, -u heat-admin --key-file ${WORKSPACE}/id_rsa ${REL_PATH}/cirros-upload.yaml.ansible -vvv
+ansible-playbook -i ${CONTROLLER_1_IP}, -u heat-admin --key-file ${WORKSPACE}/id_rsa ${REL_PATH}/cirros-upload.yaml.ansible --ssh-extra-args='-o StrictHostKeyChecking=no  -o UserKnownHostsFile=/dev/null' -vvv
 
 LOGS_LOCATION=/tmp/robot_results
 
 robot_cmd="pybot \
   --removekeywords wuks \
   --xunit robotxunit.xml \
+  --name 'CSIT' \
   -e exclude \
   -d $LOGS_LOCATION \
   -v BUNDLEFOLDER:/opt/opendaylight \
@@ -85,6 +106,11 @@ robot_cmd="pybot \
   -v DEFAULT_LINUX_PROMPT_STRICT:]\$ \
   -v DEFAULT_USER:heat-admin \
   -v DEVSTACK_DEPLOY_PATH:/tmp \
+  -v EXTERNAL_GATEWAY:$CONTROLLER_1_IP \
+  -v EXTERNAL_PNF:$CONTROLLER_1_IP \
+  -v EXTERNAL_SUBNET:192.0.2.0/24 \
+  -v EXTERNAL_SUBNET_ALLOCATION_POOL:start=192.0.2.100,end=192.0.2.200 \
+  -v EXTERNAL_INTERNET_ADDR:$CONTROLLER_1_IP  \
   -v HA_PROXY_IP:$SDN_CONTROLLER_IP \
   -v NUM_ODL_SYSTEM:$NUM_CONTROL_NODES \
   -v NUM_OS_SYSTEM:$(($NUM_CONTROL_NODES + $NUM_COMPUTE_NODES)) \
@@ -94,7 +120,7 @@ robot_cmd="pybot \
   -v ODL_SYSTEM_IP:$CONTROLLER_1_IP \
   -v OS_CONTROL_NODE_IP:$CONTROLLER_1_IP \
   -v OPENSTACK_BRANCH:$FULL_OS_VER \
-  -v OPENSTACK_TOPO:"0cmb-1ctl-2cmp" \
+  -v OPENSTACK_TOPO:$OPENSTACK_TOPO \
   -v OS_USER:heat-admin \
   -v ODL_ENABLE_L3_FWD:yes \
   -v ODL_SYSTEM_USER:heat-admin \
@@ -115,9 +141,33 @@ robot_cmd="pybot \
   $EXTRA_ROBOT_ARGS \
   -v of_port:6653 "
 
-suites="/home/opnfv/repos/odl_test/csit/suites/openstack/connectivity/l2.robot \
-        /home/opnfv/repos/odl_test/csit/suites/openstack/connectivity/l3.robot \
-        /home/opnfv/repos/odl_test/csit/suites/openstack/connectivity/external_network.robot"
+SUITE_HOME='/home/opnfv/repos/odl_test/csit/suites'
+
+# Disabled suites
+#
+# ${SUITE_HOME}/netvirt/vpnservice/vpn_basic_ipv6.robot
+# This suite fails with an error indicating the connection was closed
+# to the overcloud control node:
+# https://build.opnfv.org/ci/job/cperf-apex-csit-master/104/consoleFull
+#
+# Minimize HA CSIT as it does not pass all suites
+if [ "$NUM_CONTROL_NODES" -eq 3 ]; then
+  suites="${SUITE_HOME}/openstack/connectivity/l2.robot \
+          ${SUITE_HOME}/openstack/connectivity/l3.robot"
+else
+  suites="${SUITE_HOME}/openstack/connectivity/l2.robot \
+          ${SUITE_HOME}/openstack/connectivity/l3.robot \
+          ${SUITE_HOME}/openstack/connectivity/live_migration.robot \
+          ${SUITE_HOME}/openstack/connectivity/external_network.robot \
+          ${SUITE_HOME}/openstack/connectivity/security_group.robot \
+          ${SUITE_HOME}/openstack/securitygroup/neutron_security_group.robot \
+          ${SUITE_HOME}/openstack/securitygroup/security_group_l3bcast.robot \
+          ${SUITE_HOME}/netvirt/vpnservice/vpn_basic.robot \
+          ${SUITE_HOME}/netvirt/elan/elan.robot \
+          ${SUITE_HOME}/netvirt/vpnservice/arp_learning.robot \
+          ${SUITE_HOME}/netvirt/l2l3_gatewaymac_arp.robot \
+          ${SUITE_HOME}/integration/Create_JVM_Plots.robot"
+fi
 
 echo "Robot command set: ${robot_cmd}"
 echo "Running robot..."
@@ -128,4 +178,8 @@ docker run -i --net=host \
   opnfv/cperf:$DOCKER_TAG \
   /bin/bash -c "source /tmp/overcloudrc; mkdir -p \$HOME/.ssh; cp /tmp/id_rsa \$HOME/.ssh; \
   cd /home/opnfv/repos/odl_test/ && git pull origin master; \
+  pip install odltools; \
   ${robot_cmd} ${suites};"
+
+echo "Running post CSIT clean"
+ansible-playbook -i ${CONTROLLER_1_IP}, -u heat-admin --key-file ${WORKSPACE}/id_rsa ${REL_PATH}/csit-clean.yaml.ansible --ssh-extra-args='-o StrictHostKeyChecking=no  -o UserKnownHostsFile=/dev/null' -vvv