# NOTE(andreaf) The number of vcpus is not available on all systems.
# See https://github.com/ansible/ansible/issues/30688
# When not available, we fall back to ansible_processor_cores
- name: Get hw.logicalcpu from sysctl
  shell: sysctl hw.logicalcpu | cut -d' ' -f2
  register: sysctl_hw_logicalcpu
  when: ansible_processor_vcpus is not defined

- name: Number of cores
  set_fact:
    num_cores: "{{ansible_processor_vcpus|default(sysctl_hw_logicalcpu.stdout)}}"

- name: Set concurrency for cores == 3 or less
  set_fact:
    default_concurrency: "{{ num_cores }}"
  when: num_cores|int <= 3

- name: Limit max concurrency when more than 3 vcpus are available
  set_fact:
    default_concurrency: "{{ num_cores|int // 2 }}"
  when: num_cores|int > 3

- name: Override target branch
  set_fact:
    target_branch: "{{ zuul.override_checkout }}"
  when: zuul.override_checkout is defined

- name: Use stable branch upper-constraints till stable/ussuri
  set_fact:
    # TOX_CONSTRAINTS_FILE is new name, UPPER_CONSTRAINTS_FILE is old one, best to set both
    tempest_tox_environment: "{{ tempest_tox_environment | combine({'UPPER_CONSTRAINTS_FILE': stable_constraints_file}) | combine({'TOX_CONSTRAINTS_FILE': stable_constraints_file}) }}"
  when: target_branch in ["stable/ocata", "stable/pike", "stable/queens", "stable/rocky", "stable/stein", "stable/train", "stable/ussuri"]

- name: Use Configured upper-constraints for non-master Tempest
  set_fact:
    # TOX_CONSTRAINTS_FILE is new name, UPPER_CONSTRAINTS_FILE is old one, best to set both
    tempest_tox_environment: "{{ tempest_tox_environment | combine({'UPPER_CONSTRAINTS_FILE': devstack_localrc['TEMPEST_VENV_UPPER_CONSTRAINTS']}) | combine({'TOX_CONSTRAINTS_FILE': devstack_localrc['TEMPEST_VENV_UPPER_CONSTRAINTS']}) }}"
  when:
    - devstack_localrc is defined
    - "'TEMPEST_BRANCH' in devstack_localrc"
    - "'TEMPEST_VENV_UPPER_CONSTRAINTS' in devstack_localrc"
    - devstack_localrc['TEMPEST_BRANCH'] != 'master'
    - devstack_localrc['TEMPEST_VENV_UPPER_CONSTRAINTS'] != 'master'

- name: Set OS_TEST_TIMEOUT if requested
  set_fact:
    tempest_tox_environment: "{{ tempest_tox_environment | combine({'OS_TEST_TIMEOUT': tempest_test_timeout}) }}"
  when: tempest_test_timeout != ''

# TODO(kopecmartin) remove the following 'when block' after all consumers of
# the role have switched to tempest_test_exclude_list option, until then it's
# kept here for backward compatibility
- when:
    - tempest_test_blacklist is defined
  block:
    - name: Check for test blacklist file
      stat:
        path: "{{ tempest_test_blacklist }}"
      register:
        blacklist_stat

    - name: Build blacklist option
      set_fact:
        blacklist_option: "--blacklist-file={{ tempest_test_blacklist|quote }}"
      when: blacklist_stat.stat.exists

- when:
    - tempest_test_exclude_list is defined
  block:
    - name: Check for test exclude list file
      stat:
        path: "{{ tempest_test_exclude_list }}"
      register:
        exclude_list_stat

    - name: Build exclude list option
      set_fact:
        exclude_list_option: "--exclude-list={{ tempest_test_exclude_list|quote }}"
      when: exclude_list_stat.stat.exists

- name: Tempest 26.1.0 workaround to fallback exclude-list to blacklist
  # NOTE(gmann): stable/train|ussuri use Tempest 26.1.0 and with stestr 2.5.1/3.0.1
  # (beacause of upper constraints of stestr 2.5.1/3.0.1 in stable/train|ussuri)
  # which does not have new args exclude-list so let's fallback to old arg
  # if new arg is passed.
  set_fact:
    exclude_list_option: "--blacklist-file={{ tempest_test_exclude_list|quote }}"
  when:
    - tempest_test_exclude_list is defined
    - target_branch in ["stable/train", "stable/ussuri"]

# TODO(kopecmartin) remove this after all consumers of the role have switched
# to tempest_exclude_regex option, until then it's kept here for the backward
# compatibility
- name: Build exclude regex (old param)
  set_fact:
    tempest_test_exclude_regex: "--black-regex={{tempest_black_regex|quote}}"
  when:
    - tempest_black_regex is defined
    - tempest_exclude_regex is not defined

- name: Build exclude regex (new param)
  set_fact:
    tempest_test_exclude_regex: "--exclude-regex={{tempest_exclude_regex|quote}}"
  when:
    - tempest_black_regex is not defined
    - tempest_exclude_regex is defined
    - target_branch not in ["stable/train", "stable/ussuri"]

- name: Tempest 26.1.0 workaround to fallback exclude-regex to black-regex
  # NOTE(gmann): stable/train|ussuri use Tempest 26.1.0 and with stestr 2.5.1/3.0.1
  # (beacause of upper constraints of stestr 2.5.1/3.0.1 in stable/train|ussuri)
  # which does not have new args exclude-list so let's fallback to old arg
  # if new arg is passed.
  set_fact:
    tempest_test_exclude_regex: "--black-regex={{tempest_exclude_regex|quote}}"
  when:
    - tempest_black_regex is not defined
    - tempest_exclude_regex is defined
    - target_branch in ["stable/train", "stable/ussuri"]

- name: Run Tempest
  command: tox -e {{tox_envlist}} {{tox_extra_args}} -- {{tempest_test_regex|quote}} \
           {{blacklist_option|default('')}}  {{exclude_list_option|default('')}} \
            --concurrency={{tempest_concurrency|default(default_concurrency)}} \
           {{tempest_test_exclude_regex|default('')}}
  args:
    chdir: "{{devstack_base_dir}}/tempest"
  register: tempest_run_result
  become: true
  become_user: tempest
  environment: "{{ tempest_tox_environment }}"
