Update prepare-functest role for k8s and fix fetching xci.env 77/55477/5
authorFatih Degirmenci <fdegir@gmail.com>
Wed, 11 Apr 2018 21:32:11 +0000 (23:32 +0200)
committerFatih Degirmenci <fdegir@gmail.com>
Thu, 12 Apr 2018 09:13:30 +0000 (11:13 +0200)
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>
xci/installer/kubespray/playbooks/configure-opnfvhost.yml
xci/playbooks/roles/prepare-functest/tasks/main.yml
xci/playbooks/roles/prepare-functest/templates/env.j2
xci/playbooks/roles/prepare-functest/templates/run-functest.sh.j2

index f4a0602..d9c5ae6 100644 (file)
     - name: Configure SSL certificates
       include_tasks: "{{ xci_path }}/xci/playbooks/manage-ssl-certs.yml"
 
+    - name: fetch xci environment
+      copy:
+        src: "{{ xci_path }}/.cache/xci.env"
+        dest: /root/xci.env
+
     - name: Manage SSH keys
       include_tasks: "{{ xci_path }}/xci/playbooks/manage-ssh-keys.yml"
index ad578bf..c29baca 100644 (file)
    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:
index af271ac..d9a3bf3 100644 (file)
@@ -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 %}
index f7e78ac..0f97c3b 100644 (file)
@@ -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 %}
+