# 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
  environment:
    # This enviroment variable is used by the optional tempest-gabbi
    # job provided by the gabbi-tempest plugin. It can be safely ignored
    # if that plugin is not being used.
    GABBI_TEMPEST_PATH: "{{ gabbi_tempest_path | default('') }}"
  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: 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)

    - name: Run Tempest
      include_role:
        name: run-tempest

    - 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
