# Changes that run through devstack-tempest are likely to have an impact on
# the devstack part of the job, so we keep devstack in the main play to
# avoid zuul retrying on legitimate failures.
- hosts: all
  roles:
    - orchestrate-devstack

# We run tests only on one node, regardless how many nodes are in the system
- hosts: tempest
  tasks:
    - 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: Set source and destination host
      include_role:
        name: set-src-dest-host
      when: tempest_set_src_dest_host is defined and tempest_set_src_dest_host | bool

    - name: Run tempest cleanup init-saved-state
      include_role:
        name: tempest-cleanup
      vars:
        init_saved_state: true
      when: (run_tempest_dry_cleanup is defined and run_tempest_dry_cleanup | bool) or
            (run_tempest_cleanup is defined and run_tempest_cleanup | bool) or
            (run_tempest_fail_if_leaked_resources is defined and run_tempest_fail_if_leaked_resources | bool) or
            (run_tempest_cleanup_prefix is defined and run_tempest_cleanup_prefix | bool)

    - name: Run Tempest version <= 26.0.0
      include_role:
        name: run-tempest-26
      when: (zuul.branch is defined and zuul.branch in ["stable/ocata", "stable/pike", "stable/queens", "stable/rocky", "stable/stein"]) or
            (zuul.override_checkout is defined and zuul.override_checkout in ["stable/ocata", "stable/pike", "stable/queens", "stable/rocky", "stable/stein"])

    - name: Run Tempest
      include_role:
        name: run-tempest
      when: (zuul.branch is defined and zuul.branch not in ["stable/ocata", "stable/pike", "stable/queens", "stable/rocky", "stable/stein"] and zuul.override_checkout is not defined) or
            (zuul.override_checkout is defined and zuul.override_checkout not in ["stable/ocata", "stable/pike", "stable/queens", "stable/rocky", "stable/stein"])

    - name: Run tempest cleanup dry-run
      include_role:
        name: tempest-cleanup
      vars:
        dry_run: true
      when: run_tempest_dry_cleanup is defined and run_tempest_dry_cleanup | bool

    - name: Run tempest cleanup
      include_role:
        name: tempest-cleanup
      when: run_tempest_cleanup is defined and run_tempest_cleanup | bool