--- # Copyright 2014, Rackspace US, Inc. # Copyright 2018, Red Hat, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. - name: Create tempest directories file: path: "{{ item.path }}" state: directory owner: "{{ item.owner | default(omit) }}" group: "{{ item.group | default(omit) }}" mode: "{{ item.mode | default('0755') }}" with_items: - path: "{{ tempest_log_dir | realpath }}" owner: root - path: "{{ tempest_image_dir }}" - path: "{{ tempest_workspace }}" - path: "/etc/tempest" owner: root group: root - name: Copy tempest config config_template: src: "tempest.conf.j2" dest: "/etc/tempest/tempest.conf" owner: "root" group: "root" mode: "0644" config_overrides: "{{ _tempest_tempest_conf_overrides_gathered }}" config_type: "ini" register: copy_tempest_config when: not tempest_use_tempestconf | bool - name: Move over workspace when config is updated shell: | set -e if [ -d {{ tempest_venv_bin }} ]; then . {{ tempest_venv_bin }}/activate else exit 0 fi if tempest workspace list | grep ' workspace '; then # Get a backup suffix export CURDATE=$(date +"%d%^b%g_%H%M%S%Z") # Get the dirname for 'workspace' directly from the tempest workspace list WSPATH=$(dirname $(tempest workspace list | awk '{if($2 == "workspace"){print $4}}')) # Rename the workspace tempest workspace rename --old-name workspace --new-name workspace_${CURDATE} # A workspace move only changes the config. The move happens manually. if [ -d "${WSPATH}/workspace" ] then mv ${WSPATH}/workspace ${WSPATH}/workspace_${CURDATE} tempest workspace move --name workspace_${CURDATE} --path ${WSPATH}/workspace_${CURDATE}/ fi exit 3 fi args: executable: /bin/bash register: tempest_move_workspace changed_when: tempest_move_workspace.rc == 3 failed_when: - tempest_move_workspace.rc != 0 - tempest_move_workspace.rc != 3 when: - not tempest_use_tempestconf | bool - copy_tempest_config is changed tags: # don't trigger ANSIBLE0016 - skip_ansible_lint - name: Initialise tempest workspace shell: | set -e if [ ! -d {{ tempest_workspace }}/etc ]; then if [ -d {{ tempest_venv_bin }} ]; then . {{ tempest_venv_bin }}/activate fi # (guilhermesp) We are adding this conditional here to avoid # breakage when we are upgrade from rocky to stein as the workspace # path has been change between these two releases if tempest workspace list | grep ' workspace '; then # Init not working on existing entry. Renme old workspace instead and init new. export CURDATE=$(date +"%d%^b%g_%H%M%S%Z") WSPATH=$(dirname $(tempest workspace list | awk '{if($2 == "workspace"){print $4}}')) tempest workspace rename --old-name workspace --new-name workspace_${CURDATE} mv ${WSPATH}/workspace ${WSPATH}/workspace_${CURDATE} tempest workspace move --name workspace_${CURDATE} --path ${WSPATH}/workspace_${CURDATE}/ tempest init ${CURWORKSPACE} else tempest init --name workspace {{ tempest_workspace }} exit 3 fi fi args: executable: /bin/bash register: tempest_init_workspace changed_when: tempest_init_workspace.rc == 3 failed_when: - tempest_init_workspace.rc != 0 - tempest_init_workspace.rc != 3 tags: # don't trigger ANSIBLE0013 - skip_ansible_lint - name: Importing tempestconf tasks import_tasks: tempestconf.yml when: tempest_use_tempestconf | bool tags: - tempest-config - tempestconf - name: List installed tempest plugins shell: | set -e if [ -d {{ tempest_venv_bin }} ]; then . {{ tempest_venv_bin }}/activate fi tempest list-plugins changed_when: false args: executable: /bin/bash when: "debug | bool" - name: List tempest tests shell: | set -e if [ -d {{ tempest_venv_bin }} ]; then . {{ tempest_venv_bin }}/activate fi tempest run -l args: chdir: "{{ tempest_workspace }}" executable: /bin/bash when: "debug | bool" changed_when: false - name: Generate tempest test include list copy: content: | {% for item in (_tempest_test_includelist + tempest_test_extra_test) | unique | sort %} {% if item %} {{ item }} {% endif %} {% endfor %} dest: "{{ tempest_includelist_file_path }}" mode: "0644" when: - _tempest_test_includelist | length > 0 # Tests to NOT execute: # This sets up a list of tests to skip, which can even include those included in the includelist. - name: Generate tempest test exclude list copy: content: | {% for item in _tempest_test_excludelist %} {% if item.test is defined %} {{ item.test }} {% else %} {{ item }} {% endif %} {% endfor %} dest: "{{ tempest_excludelist_file_path }}" mode: "0644" when: - _tempest_test_excludelist | length > 0 - name: Remove tempest test exclude list when there are no exclusions file: path: "{{ tempest_excludelist_file_path }}" state: absent when: - _tempest_test_excludelist | length == 0 - name: Drop test_accounts_file copy: content: "{{ tempest_test_accounts }}" dest: "{{ tempest_test_accounts_file_path }}" mode: "0644" when: - tempest_test_accounts | length > 0