Default variables

## Verbosity Options
debug: False

stestr_executable: "{{ _stestr_executable | default('stestr') }}"

# Install openstack tempest
# set the tempest_install_method to source or distro
# on choosing source it will install from git or venv
# on choosing distro it will install based on distribution
tempest_install_method: "source"
tempest_venv_python_executable: "{{ openstack_venv_python_executable | default(_tempest_venv_python_executable) | default('python2') }}"
tempest_install_pip_executable: "{{ (tempest_venv_python_executable == 'python2') | ternary('pip', 'pip3') }}"

# Set the package install state for distribution and pip packages
# # Options are 'present' and 'latest'
tempest_package_state: "latest"
tempest_pip_package_state: "latest"

# Set the host which will execute the shade modules
# for the service setup. The host must already have
# clouds.yaml properly configured.
tempest_service_setup_host: "{{ openstack_service_setup_host | default('localhost') }}"
tempest_service_setup_host_python_interpreter: "{{ openstack_service_setup_host_python_interpreter | default((tempest_service_setup_host == 'localhost') | ternary(ansible_playbook_python, ansible_python['executable'])) }}"

# Toggle whether tempest actually executes
tempest_run: no
# Define 0 (serial) or more to use a non default concurrency
#tempest_run_concurrency:

# We comment `tempest_git_repo` so that the repo_build role does not attempt to
# build the wheel from this repo/branch. Instead, we want tempest to get built
# from the stable release defined in global requirements.
#tempest_git_repo: https://opendev.org/openstack/tempest
tempest_git_install_branch: master
tempest_upper_constraints_url: "{{ requirements_git_url | default('https://releases.openstack.org/constraints/upper/' ~ requirements_git_install_branch | default('master')) }}"
tempest_git_constraints:
  - "{{ (tempest_git_repo is defined) | ternary('git+' ~ (tempest_git_repo | default('https://opendev.org/openstack/tempest.git')) ~ '@' ~ tempest_git_install_branch ~ '#egg=tempest', '') }}"
  - "--constraint {{ tempest_upper_constraints_url }}"

tempest_pip_install_args: "{{ pip_install_options | default('') }}"

# Name of the virtual env to deploy into
tempest_venv_tag: "{{ venv_tag | default('untagged') }}"
tempest_venv_bin: "/openstack/venvs/tempest-{{ tempest_venv_tag }}/bin"

# The location where the tempest logs will be placed
tempest_log_dir: "/var/log/tempest"

## Tempest Plugins
# By default, the following tempest plugins are installed.
# Override ``tempest_plugins`` variable with your own plugins, depending
# on your installation.
# The structure of each item of the list is the following:
#   - name: designate-tempest-plugin                                     #name of the plugin
#     repo: https://opendev.org/openstack/designate-tempest-plugin #for installing the plugin from sources
#     branch: master                                                     #for installing the plugin from sources
#   - name: ironic-tempest-plugin
#     package: ironic                                                    #for installing the plugin from packages
tempest_plugins: "{{ _tempest_plugins.values() | sum(start=[]) | selectattr('install', 'equalto', true) | list }}"

# tempest_workspace where tempest can be runned
tempest_workspace: "{{ ansible_env.HOME }}/workspace"

# The location where the test whitelist/blacklist will be placed
tempest_test_whitelist_file_path: "{{ tempest_workspace }}/etc/tempest_whitelist.txt"
tempest_test_blacklist_file_path: "{{ tempest_workspace }}/etc/tempest_blacklist.txt"

# Tests to execute:
# This sets up a list of tests to execute based on what's deployed in the environment.
# The list gets added to the whitelist which tempest executes.
tempest_test_whitelist:
  - "{{ (ansible_pkg_mgr == 'apt' and tempest_install_method == 'distro') |
         ternary('(?!.*\\.test_list_all_implied_roles)', '') ~ 'tempest.api.identity.admin.v3' }}"
  - "tempest.api.identity.v3"
  - "{{ (tempest_service_available_ceilometer | bool) | ternary('tempest.api.telemetry', '') }}"
  - "{{ (tempest_service_available_heat | bool) | ternary('tempest.api.orchestration.stacks.test_non_empty_stack', '') }}"
  # TODO(odyssey4me):
  # Once the issue with this test is worked out, re-enable it.
  #- "{{ (tempest_service_available_nova | bool) | ternary('tempest.scenario.test_minimum_basic', '') }}"
  - "{{ (tempest_service_available_nova | bool) | ternary('tempest.scenario.test_server_basic_ops', '') }}"
  - "{{ (tempest_service_available_swift | bool) | ternary('tempest.scenario.test_object_storage_basic_ops', '') }}"
  - "{{ (tempest_volume_multi_backend_enabled | bool) | ternary('tempest.api.volume.admin.test_multi_backend', '') }}"
  # TODO(evrardjp): Bring this back when upstream is fixed
  # (revert of https://github.com/openstack/cinder/commit/737c50b4ea54e2e63d6e3fe8a73d22b393df4205)
  #  - "{{ (tempest_volume_backup_enabled | bool) | ternary('tempest.api.volume.admin.test_volumes_backup', '') }}"

# Tests being skipped by os_tempest
# Example:
# tempest_test_blacklist:
#   - test: tempest.scenario.test.minimum_basic
#     reason: This test is failing
#     lp: 'https://bugs.launchpad.net/openstack-ansible/+bug/123456'
#     bz: 'https://bugzilla.redhat.com/show_bug.cgi?id=123456'
# OR
# tempest_test_blacklist:
#   - 'tempest.scenario.test.minimum_basic'
tempest_test_blacklist: []

# Toggle fatal deprecations
tempest_fatal_deprecations: False

# Private network configuration
# Currently supports 2 types
# vlan - will need to make sure your seg id and subnet cidr are correct
# vxlan - default, can change subnet cidr and seg id

# This needs to coincide with tempest_network_tenant_network_cidr and
# tempest_network_tenant_network_mask_bits below
tempest_private_net_name: "private"
tempest_private_subnet_name: "private-subnet"
tempest_private_subnet_cidr: "192.168.74.0/28"
tempest_private_net_provider_type: "vxlan"
tempest_private_net_seg_id: 1
# If you choose vlan as private network provider type, you must set a physical
# name for it
# tempest_private_net_physical_name: "private"

# Public network configuration
# Currently supports 2 types
# Flat - default
# Vlan - make sure you override seg id, cidr, provider and physical
tempest_public_net_name: "public"
tempest_public_subnet_name: "public-subnet"
tempest_public_subnet_cidr: "10.1.13.0/24"
# Neutron default gateway to first ip of subnet, usually .1
# tempest_public_subnet_gateway_ip:
tempest_public_net_provider_type: "flat"
# TODO(chkumar246):
# The use of _type is to provide backwards compatibility for
# overrides in S and can be removed in T.
tempest_public_net_physical_name: "{{ tempest_public_net_physical_type | default('flat') }}"
tempest_public_net_seg_id: ""
tempest_public_router_external: "True"
# Example allocation range:
# tempest_public_subnet_allocation_pools: "10.1.13.150-10.1.13.200"
tempest_public_subnet_allocation_pools: ""

tempest_compute_ssh_user: cirros
tempest_compute_image_ssh_user: cirros
tempest_compute_run_ssh: True
tempest_compute_console_output_enabled: True
tempest_compute_resize_enabled: True
tempest_compute_snapshot_enabled: True
tempest_compute_change_password: False
tempest_network_tenant_network_cidr: "192.168.74.0/24"
tempest_network_tenant_network_mask_bits: 28
tempest_network_ping_gateway: False

tempest_dashboard_url: "https://{{ external_lb_vip_address | default('127.0.0.1') }}/"

# var for setting tempest_service_available_{sevice_name} vars
# Example:
# tempest_services:
#   - cinder
#   - aodh
# It will set tempest_service_available_aodh and
# tempest_service_available_cinder to true.
tempest_services: []

tempest_service_available_aodh: "{{ groups['aodh_all'] is defined and groups['aodh_all'] | length > 0 }}"
tempest_service_available_barbican: "{{ groups['barbican_all'] is defined and groups['barbican_all'] | length > 0 }}"
tempest_service_available_ceilometer: "{{ groups['ceilometer_all'] is defined and groups['ceilometer_all'] | length > 0 }}"
tempest_service_available_cinder: "{{ groups['cinder_all'] is defined and groups['cinder_all'] | length > 0 }}"
tempest_service_available_cloudkitty: "{{ groups['cloudkitty_all'] is defined and groups['cloudkitty_all'] | length > 0 }}"
tempest_service_available_congress: "{{ groups['congress_all'] is defined and groups['congress_all'] | length > 0 }}"
tempest_service_available_designate: "{{ groups['designate_all'] is defined and groups['designate_all'] | length > 0 }}"
tempest_service_available_glance: "{{ groups['glance_all'] is defined and groups['glance_all'] | length > 0 }}"
tempest_service_available_heat: "{{ groups['heat_all'] is defined and groups['heat_all'] | length > 0 }}"
tempest_service_available_horizon: "{{ groups['horizon_all'] is defined and groups['horizon_all'] | length > 0 }}"
tempest_service_available_ironic: "{{ groups['ironic_all'] is defined and groups['ironic_all'] | length > 0 }}"
tempest_service_available_magnum: "{{ groups['magnum_all'] is defined and groups['magnum_all'] | length > 0 }}"
tempest_service_available_manila: "{{ groups['manila_all'] is defined and groups['manila_all'] | length > 0 }}"
tempest_service_available_mistral: "{{ groups['mistral_all'] is defined and groups['mistral_all'] | length > 0 }}"
tempest_service_available_murano: "{{ groups['murano_all'] is defined and groups['murano_all'] | length > 0 }}"
tempest_service_available_neutron: "{{ groups['neutron_all'] is defined and groups['neutron_all'] | length > 0 }}"
tempest_service_available_neutron_bgpvpn: "{{ (groups['neutron_all'] is defined) and (groups['neutron_all'] | length > 0) and ('bgpvpn' in neutron_plugin_base | default([])) }}"
tempest_service_available_neutron_fwaas: "{{ (groups['neutron_all'] is defined) and (groups['neutron_all'] | length > 0) and (('firewall' in neutron_plugin_base | default([])) or ('firewall_v2' in neutron_plugin_base | default([]))) }}"
tempest_service_available_neutron_vpnaas: "{{ (groups['neutron_all'] is defined) and (groups['neutron_all'] | length > 0) and ('vpnaas' in neutron_plugin_base | default([])) }}"
tempest_service_available_nova: "{{ groups['nova_all'] is defined and groups['nova_all'] | length > 0 }}"
tempest_service_available_novajoin: False
# NOTE(jrosser) The lxd tempest test currently fails because the nova-lxd tempest
# plugin attempts to contact the compute node LXD daemon unix socket directly,
# which cannot work from container to host or in a multinode test
#tempest_service_available_nova_lxd: "{{ groups['nova_all'] is defined and groups['nova_all'] | length > 0 and nova_virt_type | default('kvm') == 'lxd' }}"
tempest_service_available_nova_lxd: False

tempest_service_available_octavia: "{{ groups['octavia_all'] is defined and groups['octavia_all'] | length > 0 }}"
tempest_service_available_sahara: "{{ groups['sahara_all'] is defined and groups['sahara_all'] | length > 0 }}"
tempest_service_available_swift: "{{ (groups['swift_all'] is defined and groups['swift_all'] | length > 0) or (groups['ceph-rgw'] is defined and groups['ceph-rgw'] | length > 0) or (ceph_rgws is defined and ceph_rgws | length > 0) }}"
tempest_service_available_zaqar: "{{ groups['zaqar_all'] is defined and groups['zaqar_all'] | length > 0 }}"

tempest_image_api_v1_enabled: False
tempest_image_api_v2_enabled: True

tempest_swift_enabled: True
tempest_swift_container_sync: True
tempest_swift_object_versioning: True
tempest_swift_discoverable_apis:
  - bulk
  - object
  - container_quotas
  - container_sync
  - slo
  - tempurl

tempest_volume_backend_names: [ backend1, backend2 ]
tempest_volume_backup_enabled: False
tempest_volume_multi_backend_enabled: False

# Var for setting ssl verification
tempest_keystone_interface_insecure: "{{ (keystone_service_internaluri_insecure | default(false)) | bool }}"

tempest_main_group: tempest_all

tempest_pip_packages:
  - cmd2<0.9.0 # >=0.9.0 is python3 only
  - ddt
  - junitxml
  - lxml
  - nose
  - python-ceilometerclient
  - python-cinderclient
  - python-glanceclient
  - python-heatclient
  - python-keystoneclient
  - python-manilaclient
  - python-memcached
  - python-neutronclient
  - python-novaclient
  - python-openstackclient
  - python-saharaclient
  - python-subunit
  - python-swiftclient
  - tempest
  - testscenarios
  - os-testr

# The list of images for tempest to download for the current architecture, as defined
# in this role vars/main.yml file
# To override this list, use a list of the form
# tempest_images:
#   - url: ...         where to download from (required)
#     checksum: ...    checksum to validate downloaded file, format: <algorithm>:<checksum> (optional)
#     format: ...      format to use when uploading to glance (required)
#     name: ...        name to use when uploading to glance (optional)
#     properties:      a dict of custom properties to attach to the image in glance (optional)
#       <property>: <value>
tempest_images: "{{ tempest_images_map[ansible_architecture] }}"

# The location where images are downloaded to
tempest_image_dir: "{{ lookup('env', 'HOME') }}/tempest-images"

tempest_enable_instance_password: True

tempest_flavors:
  - name: tempest1
    id: 201
    ram: 256
    disk: 1
    vcpus: 1
  - name: tempest2
    id: 202
    ram: 512
    disk: 1
    vcpus: 1

# The projects for tempest to use
tempest_projects:
  - "demo"
  - "alt_demo"

# The users for tempest to use
tempest_users:
  - name: "demo"
  - name: "alt_demo"

# The keystone roles for tempest to use
tempest_roles: []

# This variable is used by the repo_build process to determine
# which host group to check for members of before building the
# pip packages required by this role. The value is picked up
# by the py_pkgs lookup.
tempest_role_project_group: utility_all

## Tunable overrides
tempest_tempest_conf_overrides: {}

## The name of cloud from clouds.yaml
tempest_cloud_name: "default"

## The name of domain from clouds.yaml
tempest_domain_name: "default"

## The name of interface from clouds.yaml
tempest_interface_name: "internal"

# python-tempestconf variables
# The tempest_use_tempestconf by default is set to false, set to true if you
# want to generate the tempest.conf file with this tool, instead of
# tempest.conf from the template
tempest_use_tempestconf: false
tempest_tempestconf_venv_bin: "/openstack/venvs/tempestconf/bin"

# We comment out `tempest_tempestconf_git_repo` so that the repo_build role does not attempt to
# build the wheel from this repo/branch. Instead, we want python-tempestconf to get built
# from the stable release defined in global requirements.
# tempest_tempestconf_git_repo: https://opendev.org/openstack/python-tempestconf
tempest_tempestconf_git_install_branch: master
tempest_tempestconf_git_constraints:
  - "{{ (tempest_tempestconf_git_repo is defined) | ternary('git+' ~ (tempest_tempestconf_git_repo | default('https://opendev.org/openstack/python-tempestconf')) ~ '@' ~ tempest_tempestconf_git_install_branch ~ '#egg=python_tempestconf', '') }}"
  - "--constraint {{ tempest_upper_constraints_url }}"
tempest_tempestconf_pip_packages:
  - python-tempestconf
tempest_tempestconf_profile:
  debug: true
  create: true
  os-cloud: "{{ tempest_cloud_name }}"
  out: "{{ tempest_workspace }}/etc/tempest.conf"
  network-id: "{{ tempest_neutron_public_network_id }}"
  overrides: "{{ tempest_tempest_conf_overrides | default('omit') }}"

# Stackviz tarball url
stackviz_pip_install_args: "{{ pip_install_options | default('--isolated') }}"
stackviz_tarball: "https://tarballs.openstack.org/package-stackviz-element/stackviz-latest.tar.gz"
stackviz_venv_bin: "/openstack/venvs/stackviz/bin"
tempest_run_stackviz: true