summaryrefslogtreecommitdiffstats
path: root/xci/playbooks/roles/prepare-functest/templates/run-functest.sh.j2
blob: 6e62a3bb1dca15b503a4c29590a0764a6622054b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
#!/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 <scenario>-<flavor>. 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
if [[ "$FUNCTEST_SUITE_NAME" =~ "healthcheck" ]]; then
    mkdir ~/images && cd ~/images && wget -q http://download.cirros-cloud.net/0.4.0/cirros-0.4.0-x86_64-disk.img && cd ~
elif [[ "$FUNCTEST_SUITE_NAME" =~ "smoke" ]]; then
    mkdir -p images && wget -q -O- https://git.opnfv.org/functest/plain/functest/ci/download_images.sh | bash -s -- images && ls -1 images/*
else
    echo "Unsupported test suite for functest"
    exit 1
fi

# 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 %}