From 92afad5981d84cec20359551209c50a5f6755cb9 Mon Sep 17 00:00:00 2001 From: Fatih Degirmenci Date: Fri, 31 Aug 2018 10:52:00 +0200 Subject: [PATCH] Rename functest-prepare role to prepare-tests This change renames functest prepare-tole to prepare tests and makes other adjustments to the role to move common test preparation steps to its own script so we can prepare for Functest and Yardstick at one go. Similar things are required to be prepared for running Functest and Yardstick such as - installed packages - external network creation - creation of run-functest.sh and run-yardstick scripts from templates - preparation of environment variables This change will fail verification until the changes below is submitted. https://gerrit.opnfv.org/gerrit/#/c/61645/ Change-Id: Id1020d3e61abd3f087863c06a132c5021339d655 Signed-off-by: Fatih Degirmenci --- .../{prepare-functest.yml => prepare-tests.yml} | 4 +- .../defaults/main.yml | 0 .../tasks/main.yml | 22 +++++++---- .../templates/env.j2 | 0 .../prepare-tests/templates/prepare-tests.sh.j2 | 46 ++++++++++++++++++++++ .../templates/run-functest.sh.j2 | 45 ++------------------- .../vars/main.yml | 4 +- 7 files changed, 67 insertions(+), 54 deletions(-) rename xci/playbooks/{prepare-functest.yml => prepare-tests.yml} (90%) rename xci/playbooks/roles/{prepare-functest => prepare-tests}/defaults/main.yml (100%) rename xci/playbooks/roles/{prepare-functest => prepare-tests}/tasks/main.yml (74%) rename xci/playbooks/roles/{prepare-functest => prepare-tests}/templates/env.j2 (100%) create mode 100644 xci/playbooks/roles/prepare-tests/templates/prepare-tests.sh.j2 rename xci/playbooks/roles/{prepare-functest => prepare-tests}/templates/run-functest.sh.j2 (54%) rename xci/playbooks/roles/{prepare-functest => prepare-tests}/vars/main.yml (74%) diff --git a/xci/playbooks/prepare-functest.yml b/xci/playbooks/prepare-tests.yml similarity index 90% rename from xci/playbooks/prepare-functest.yml rename to xci/playbooks/prepare-tests.yml index a4cb664b..1a1935aa 100644 --- a/xci/playbooks/prepare-functest.yml +++ b/xci/playbooks/prepare-tests.yml @@ -13,11 +13,11 @@ # See the License for the specific language governing permissions and # limitations under the License. -- name: Prepare the environment for functest +- name: Prepare the environment for testing hosts: opnfv user: root vars_files: - ../var/opnfv.yml - ../installer/osa/files/openstack_services.yml roles: - - role: "prepare-functest" + - role: "prepare-tests" diff --git a/xci/playbooks/roles/prepare-functest/defaults/main.yml b/xci/playbooks/roles/prepare-tests/defaults/main.yml similarity index 100% rename from xci/playbooks/roles/prepare-functest/defaults/main.yml rename to xci/playbooks/roles/prepare-tests/defaults/main.yml diff --git a/xci/playbooks/roles/prepare-functest/tasks/main.yml b/xci/playbooks/roles/prepare-tests/tasks/main.yml similarity index 74% rename from xci/playbooks/roles/prepare-functest/tasks/main.yml rename to xci/playbooks/roles/prepare-tests/tasks/main.yml index c29baca9..b75965df 100644 --- a/xci/playbooks/roles/prepare-functest/tasks/main.yml +++ b/xci/playbooks/roles/prepare-tests/tasks/main.yml @@ -8,25 +8,25 @@ # http://www.apache.org/licenses/LICENSE-2.0 ############################################################################## -- name: install functest required packages +- name: install required packages package: - name: "{{ functest_required_packages[ansible_pkg_mgr] }}" + name: "{{ required_packages[ansible_pkg_mgr] }}" state: present -# Docker is needed for functest +# Docker is needed for test frameworks - name: Ensure Docker service is started and enabled service: name: docker state: started enabled: yes -- name: install functest required pip packages +- name: install required pip packages pip: - name: "{{ functest_required_pip }}" + name: "{{ required_pip }}" state: present extra_args: '-c https://raw.githubusercontent.com/openstack/requirements/{{ requirements_git_install_branch }}/upper-constraints.txt' -- name: create public network gateway for functest +- name: create public network gateway for testing block: - name: check if the gateway was already set shell: "ip a | grep {{ gateway_ip }}" @@ -40,13 +40,19 @@ when: gateway_ip_result|failed when: deploy_scenario is match("os-.*") -- name: prepare environment file for functest +- name: prepare environment file for tests template: src: env.j2 dest: /root/env mode: 0755 -- name: prepare the script to create networks and run functest +- name: create the script to prepare for testing + template: + src: prepare-tests.sh.j2 + dest: /root/prepare-tests.sh + mode: 0755 + +- name: create the script to run functest template: src: run-functest.sh.j2 dest: /root/run-functest.sh diff --git a/xci/playbooks/roles/prepare-functest/templates/env.j2 b/xci/playbooks/roles/prepare-tests/templates/env.j2 similarity index 100% rename from xci/playbooks/roles/prepare-functest/templates/env.j2 rename to xci/playbooks/roles/prepare-tests/templates/env.j2 diff --git a/xci/playbooks/roles/prepare-tests/templates/prepare-tests.sh.j2 b/xci/playbooks/roles/prepare-tests/templates/prepare-tests.sh.j2 new file mode 100644 index 00000000..afc1cbbe --- /dev/null +++ b/xci/playbooks/roles/prepare-tests/templates/prepare-tests.sh.j2 @@ -0,0 +1,46 @@ +#!/bin/bash + +# Variables that we need to pass from XCI to testing +XCI_ENV=(INSTALLER_TYPE XCI_FLAVOR OPENSTACK_OSA_VERSION CI_LOOP BUILD_TAG NODE_NAME FUNCTEST_MODE FUNCTEST_SUITE_NAME) + +# 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 + +# 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 }} +{% else %} +{# stuff needed for Kubernetes based scenarios #} +# Create k8s.creds file for testing +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 +{% endif %} diff --git a/xci/playbooks/roles/prepare-functest/templates/run-functest.sh.j2 b/xci/playbooks/roles/prepare-tests/templates/run-functest.sh.j2 similarity index 54% rename from xci/playbooks/roles/prepare-functest/templates/run-functest.sh.j2 rename to xci/playbooks/roles/prepare-tests/templates/run-functest.sh.j2 index 5c6f0168..acd19d19 100644 --- a/xci/playbooks/roles/prepare-functest/templates/run-functest.sh.j2 +++ b/xci/playbooks/roles/prepare-tests/templates/run-functest.sh.j2 @@ -1,25 +1,7 @@ #!/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 +mkdir -p /root/functest-results/ # Dump the env file echo "------------------------------------------------------" @@ -32,17 +14,6 @@ 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 @@ -66,26 +37,16 @@ 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 \ + -v $(pwd)/functest-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 \ + -v $(pwd)/functest-results:/home/opnfv/functest/results \ $DOCKER_IMAGE_NAME {% endif %} - diff --git a/xci/playbooks/roles/prepare-functest/vars/main.yml b/xci/playbooks/roles/prepare-tests/vars/main.yml similarity index 74% rename from xci/playbooks/roles/prepare-functest/vars/main.yml rename to xci/playbooks/roles/prepare-tests/vars/main.yml index f076c033..83638466 100644 --- a/xci/playbooks/roles/prepare-functest/vars/main.yml +++ b/xci/playbooks/roles/prepare-tests/vars/main.yml @@ -1,5 +1,5 @@ --- -functest_required_packages: +required_packages: apt: - docker.io - wget @@ -13,5 +13,5 @@ functest_required_packages: - wget - xz -functest_required_pip: +required_pip: - docker-py -- 2.16.6