#!/bin/bash # Variables that we need to pass from XCI to functest XCI_ENV=(INSTALLER_TYPE XCI_FLAVOR OPENSTACK_OSA_VERSION CI_LOOP BUILD_TAG NODE_NAME FUNCTEST_MODE FUNCTEST_SUITE_NAME OPNFV_FUNCTEST_HEALTHCHECK_DOCKER_IMAGE_DIGEST) # Create directory to store functest logs mkdir -p ~/results/ # Extract variables from xci.env file if [[ -e /root/xci.env ]]; then for x in ${XCI_ENV[@]}; do grep "^${x}=" /root/xci.env >> /root/env done # Parse the XCI's DEPLOY_SCENARIO and XCI_FLAVOR variables and # set the functest container's DEPLOY_SCENARIO variable in the # following format -. But the XCI's mini flavor # is converted into noha. DEPLOY_SCENARIO=`grep -Po '(?<=DEPLOY_SCENARIO=).*' /root/xci.env` XCI_FLAVOR=`grep -Po '(?<=XCI_FLAVOR=).*' /root/xci.env` XCI_FLAVOR=${XCI_FLAVOR/mini/noha} echo "DEPLOY_SCENARIO=$DEPLOY_SCENARIO-$XCI_FLAVOR" >> /root/env fi # Dump the env file echo "------------------------------------------------------" echo "------------- functest environment file --------------" cat /root/env echo "------------------------------------------------------" # we need to ensure the necessary environment variables are sourced source /root/env {% if 'os-' in deploy_scenario %} {# stuff needed for OpenStack based scenarios #} source /root/openrc openstack --insecure network create --external \ --provider-physical-network flat \ --provider-network-type flat {{ external_network }} openstack --insecure subnet create --network {{ external_network }} \ --allocation-pool {{ allocation_pool }} \ --subnet-range {{ subnet_cidr }} --gateway {{ gateway_ip }} \ --no-dhcp {{ subnet_name }} # the needed images differ between the suites so avoid downloading unnecessary images echo "Downloading the images needed for functest-$FUNCTEST_SUITE_NAME" mkdir ~/images && cd ~/images if [[ "$FUNCTEST_SUITE_NAME" =~ "healthcheck" ]]; then wget -q http://download.cirros-cloud.net/0.4.0/cirros-0.4.0-x86_64-disk.img elif [[ "$FUNCTEST_SUITE_NAME" =~ "smoke" ]]; then wget -q http://download.cirros-cloud.net/0.4.0/cirros-0.4.0-x86_64-disk.img \ http://testresults.opnfv.org/functest/shaker-image.qcow2 \ https://cloud-images.ubuntu.com/releases/14.04/release/ubuntu-14.04-server-cloudimg-amd64-disk1.img else echo "Unsupported test suite for functest" exit 1 fi echo "------------------------------------------------------" ls -al . && cd ~ echo "------------------------------------------------------" # docker image to use will be different for healthcheck and smoke test DOCKER_IMAGE_NAME="ollivier/functest-${FUNCTEST_SUITE_NAME}" sudo docker run --env-file env \ -v $(pwd)/openrc:/home/opnfv/functest/conf/env_file \ -v $(pwd)/images:/home/opnfv/functest/images \ -v $(pwd)/results:/home/opnfv/functest/results \ ${DOCKER_IMAGE_NAME} {% else %} {# stuff needed for Kubernetes based scenarios #} # Create k8s.creds file for functest KUBE_MASTER_URL=$(grep -r server ~/.kube/config | awk '{print $2}') KUBE_MASTER_IP=$(echo $KUBE_MASTER_URL | awk -F "[:/]" '{print $4}') cat << EOF > ~/k8s.creds KUBERNETES_PROVIDER=local KUBE_MASTER_URL=$KUBE_MASTER_URL KUBE_MASTER_IP=$KUBE_MASTER_IP EOF # docker image to use will be different for healthcheck and smoke test DOCKER_IMAGE_NAME="opnfv/functest-kubernetes-${FUNCTEST_SUITE_NAME}" sudo docker run --env-file env \ -v $(pwd)/k8s.creds:/home/opnfv/functest/conf/env_file \ -v $(pwd)/.kube/config:/root/.kube/config \ -v $(pwd)/results:/home/opnfv/functest/results \ $DOCKER_IMAGE_NAME {% endif %}