- hosts: all
  roles:
    # the role is inherited from openstack/devstack project
    - run-devstack
  tasks:
    - name: Ensure tox (system-wide)
      shell: |
        python3 -m pip install "tox{{ ensure_tox_version }}"
      args:
        executable: /bin/bash
      become: true
      when:
        - ensure_tox_version is defined

- hosts: tempest
  vars:
    devstack_base_dir: "/opt/stack"
    test_demo_user: "{{ test_demo is defined }}"
  tasks:
    # setup-tempest-* and acl-devstack-files roles are inherited from
    # openstack/tempest project
    - name: Setup Tempest Run Directory
      include_role:
        name: setup-tempest-run-dir

    - name: Setup Tempest Data Directory
      include_role:
        name: setup-tempest-data-dir

    - name: ACL devstack files
      include_role:
        name: acl-devstack-files

    - name: Edit clouds.yaml file
      include_role:
        name: tempestconf-workaround-auth-url

    - name: Generate tempest configuration file
      include_role:
        name: generate-tempestconf-file
      vars:
        create_accounts_file: True
        source_credentials_commands: "export HOST_IP={{ ansible_default_ipv4.address }}; source {{ devstack_base_dir }}/devstack/openrc {{ user }} {{ user }}"

    - name: Generate tempest configuration file based on cloud credentials
      include_role:
        name: generate-tempestconf-file-cloud

    # run-tempest role is inherited from openstack/tempest project
    - name: Run Tempest Tests
      include_role:
        name: run-tempest
      when:
        - plugins_paths is not defined
        - branch is not defined or (branch is defined and branch not in ["stable/victoria"])

    - name: Run Tempest Tests Tempest version <= 26.0.0
      include_role:
        name: run-tempest-26
      when:
        - plugins_paths is not defined
        - branch is defined
        - branch in ["stable/victoria"]

    - when: plugins_paths is defined
      block:
        - name: Install tempest plugins
          include_role:
            name: install-plugins

        - name: Setup Tempest Run Directory
          include_role:
            name: setup-tempest-run-dir

        - name: Run Tempest Tests including plugins
          include_role:
            name: run-tempest
          vars:
            tox_envlist: "all"
            tempest_test_regex: "{{ test_regex|join('|') }}"
            tempest_exclude_regex: "{{ exclude_regex|join('|') }}"
