summaryrefslogtreecommitdiffstats
path: root/xci/playbooks/roles/prepare-functest
diff options
context:
space:
mode:
authorFatih Degirmenci <fdegir@gmail.com>2018-04-11 23:32:11 +0200
committerFatih Degirmenci <fdegir@gmail.com>2018-04-12 11:13:30 +0200
commitbea090a9a959a13043789be229c11076cc56d40d (patch)
treee39c834db9445ea86a7540fb972cfbbc0e881f76 /xci/playbooks/roles/prepare-functest
parent21ad943989a6573c6fd74e479d286f2a43ce9ae6 (diff)
Update prepare-functest role for k8s and fix fetching xci.env
This change updates prepare-functest role for testing k8s scenarios using functest healthcheck. The changes include - update tasks to skip checking/creation of public gateway which is needed for OpenStack based scenarios - update run-functest.sh.j2 template and set the used docker image name based on FUNCTEST_SUITE_NAME that is going to be used - update run-functest.sh.j2 template and add commands needed to run tests using functest-kubernetes-${FUNCTEST_SUITE_NAME} docker image - update env.j2 to exclude setting the var EXTERNAL_NETWORK which is needed for OpenStack based scenarios Apart from updating the the prepare-functest role, a bug has also been fixed by adding the fetching of xci.env for installer kubespray. installer-type:kubespray deploy-scenario:k8-nosdn-nofeature Change-Id: Ia701db9748ea9509a2dc165341285fb189aa7266 Signed-off-by: Fatih Degirmenci <fdegir@gmail.com>
Diffstat (limited to 'xci/playbooks/roles/prepare-functest')
-rw-r--r--xci/playbooks/roles/prepare-functest/tasks/main.yml21
-rw-r--r--xci/playbooks/roles/prepare-functest/templates/env.j26
-rw-r--r--xci/playbooks/roles/prepare-functest/templates/run-functest.sh.j259
3 files changed, 61 insertions, 25 deletions
diff --git a/xci/playbooks/roles/prepare-functest/tasks/main.yml b/xci/playbooks/roles/prepare-functest/tasks/main.yml
index ad578bfd..c29baca9 100644
--- a/xci/playbooks/roles/prepare-functest/tasks/main.yml
+++ b/xci/playbooks/roles/prepare-functest/tasks/main.yml
@@ -26,16 +26,19 @@
state: present
extra_args: '-c https://raw.githubusercontent.com/openstack/requirements/{{ requirements_git_install_branch }}/upper-constraints.txt'
-- name: check if the gateway was already set
- shell: "ip a | grep {{ gateway_ip }}"
- register: gateway_ip_result
- ignore_errors: True
- changed_when: False
+- name: create public network gateway for functest
+ block:
+ - name: check if the gateway was already set
+ shell: "ip a | grep {{ gateway_ip }}"
+ register: gateway_ip_result
+ ignore_errors: True
+ changed_when: False
-- name: add public network gateway
- command: "ip addr add {{ gateway_ip_mask }} brd {{ broadcast_ip }} dev {{ gateway_interface }}"
- changed_when: False
- when: gateway_ip_result|failed
+ - name: add public network gateway
+ command: "ip addr add {{ gateway_ip_mask }} brd {{ broadcast_ip }} dev {{ gateway_interface }}"
+ changed_when: False
+ when: gateway_ip_result|failed
+ when: deploy_scenario is match("os-.*")
- name: prepare environment file for functest
template:
diff --git a/xci/playbooks/roles/prepare-functest/templates/env.j2 b/xci/playbooks/roles/prepare-functest/templates/env.j2
index af271ac7..d9a3bf32 100644
--- a/xci/playbooks/roles/prepare-functest/templates/env.j2
+++ b/xci/playbooks/roles/prepare-functest/templates/env.j2
@@ -1,5 +1,7 @@
INSTALLER_IP=192.168.122.2
-EXTERNAL_NETWORK={{ external_network }}
-CI_LOOP=daily
TEST_DB_URL=http://testresults.opnfv.org/test/api/v1/results
ENERGY_RECORDER_API_URL=http://energy.opnfv.fr/resources
+{# external network is only valid for OpenStack based scenarios #}
+{% if 'os-' in deploy_scenario %}
+EXTERNAL_NETWORK={{ external_network }}
+{% endif %}
diff --git a/xci/playbooks/roles/prepare-functest/templates/run-functest.sh.j2 b/xci/playbooks/roles/prepare-functest/templates/run-functest.sh.j2
index f7e78ac8..0f97c3b4 100644
--- a/xci/playbooks/roles/prepare-functest/templates/run-functest.sh.j2
+++ b/xci/playbooks/roles/prepare-functest/templates/run-functest.sh.j2
@@ -3,19 +3,8 @@
# 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)
-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 }}
-
-mkdir ~/results/
-mkdir ~/images && cd ~/images && wget -q http://download.cirros-cloud.net/0.4.0/cirros-0.4.0-x86_64-disk.img && cd ~
+# Create directory to store functest logs
+mkdir -p ~/results/
# Extract variables from xci.env file
if [[ -e /root/xci.env ]]; then
@@ -38,8 +27,50 @@ 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 }}
+
+mkdir ~/images && cd ~/images && wget -q http://download.cirros-cloud.net/0.4.0/cirros-0.4.0-x86_64-disk.img && cd ~
+
+# docker image to use will be different for healthcheck and smoke test
+DOCKER_IMAGE_NAME="opnfv/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 \
- opnfv/functest-healthcheck
+ $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 %}
+