Files
openstack-ansible-os_tempest/defaults/main.yml
Jonathan Rosser 242203bafa Allow include/exclude lists to be defined in many variables
Previously the os_tempest role had a single variable for
defining the include and exclude lists in order to select the
tempest tests to run.

This works for simple scenarios, where a single service
is deployed and the tests for that service are enabled through
the necessary variables set in user_variables. This approach is
used in openstack-ansible CI / AIO.

More complicated scenarios such as magnum+barbican+octavia, would
create several user_variables files each with conflicting settings
for the test settings. It is possible in this scenario for there to
be no valid tempest tests to run and tempest to fail immediately.

This patch adds the possibility to have many variables defining
the include/exclude lists which have names using a common prefix.
Any variable names matching the prefix are gathered and combined
with the original role default to make extending the test lists
easy to do in an incremental/distibuted way in the ansible variables
instead of having to maintain a single point defining all necessary
tests.

Change-Id: Ie3a9a7be849171af042567ba8a152e5df5d2cb53
2023-08-17 11:20:14 +00:00

398 lines
17 KiB
YAML

---
# Copyright 2014, Rackspace US, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
## 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: "{{ service_install_method | default('source') }}"
tempest_venv_python_executable: "{{ openstack_venv_python_executable | default(_tempest_venv_python_executable) | default('python3') }}"
# Set the package install state for distribution and pip packages
# # Options are 'present' and 'latest'
tempest_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_facts['python']['executable']))
}}
# Toggle whether tempest actually executes
tempest_run: no
# Toggle whether tempest cleanup executes prior and after regular tempest run
tempest_cleanup: no
# if tempest_cleanup_dry_run is set to true, tempest cleanup will log all found
# leftover resources to a dry_run.json file, none resources will be deleted
# tempest_cleanup_dry_run: no
# Credential Provider Mechanisms
# If tempest_test_accounts is not an empty string, then use_dynamic_credentials will be turned off
tempest_test_accounts: ""
tempest_test_accounts_file_path: "{{ tempest_workspace }}/etc/tempest_accounts.yaml"
# tempest_create_isolated_networks has an effect only when use_dynamic_credentials is enabled
tempest_create_isolated_networks: true
# tempest_fixed_network_name does not have an effect when dynamic credentials are used together with tempest_create_isolated_networks
tempest_fixed_network_name: public
# Tempest Resources
# Toggle whether default resources are implemented
tempest_default_role_resources: yes
tempest_public_net_create: true
tempest_private_net_create: false
tempest_router_create: false
tempest_images_create: true
tempest_flavors_create: true
tempest_projects_create: "{{ tempest_public_net_create or tempest_private_net_create or tempest_router_create }}"
# Define 0 (serial) or more to use a non default concurrency
# tempest_run_concurrency:
# Define the worker file to be used by tempest
# This worker file is parsed to stestr to manually schedule tempest tests
# tempest_test_worker_file_path:
# We comment `tempest_git_repo` so that we do 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:
- "--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
# Extra plugins can be defined in ``tempest_extra_plugins``.
# tempest_extra_plugins:
# - name: custom-tempest-plugin
# repo: https://opendev.org/openstack/custom-tempest-plugin
# branch: master
# install: true
tempest_extra_plugins: []
tempest_plugins: "{{ (_tempest_plugins + tempest_extra_plugins) | selectattr('install', 'equalto', true) }}"
tempest_plugin_barbican_git_repo: https://opendev.org/openstack/barbican-tempest-plugin
tempest_plugin_barbican_git_install_branch: master
tempest_plugin_cinder_git_repo: https://opendev.org/openstack/cinder-tempest-plugin
tempest_plugin_cinder_git_install_branch: master
tempest_plugin_cloudkitty_git_repo: https://opendev.org/openstack/cloudkitty-tempest-plugin
tempest_plugin_cloudkitty_git_install_branch: master
tempest_plugin_designate_git_repo: https://opendev.org/openstack/designate-tempest-plugin
tempest_plugin_designate_git_install_branch: master
tempest_plugin_glance_git_repo: https://opendev.org/openstack/glance-tempest-plugin
tempest_plugin_glance_git_install_branch: master
tempest_plugin_heat_git_repo: https://opendev.org/openstack/heat-tempest-plugin
tempest_plugin_heat_git_install_branch: master
tempest_plugin_ironic_git_repo: https://opendev.org/openstack/ironic-tempest-plugin
tempest_plugin_ironic_git_install_branch: master
tempest_plugin_keystone_git_repo: https://opendev.org/openstack/keystone-tempest-plugin
tempest_plugin_keystone_git_install_branch: master
tempest_plugin_magnum_git_repo: https://opendev.org/openstack/magnum-tempest-plugin
tempest_plugin_magnum_git_install_branch: master
tempest_plugin_manila_git_repo: https://opendev.org/openstack/manila-tempest-plugin
tempest_plugin_manila_git_install_branch: master
tempest_plugin_murano_git_repo: https://opendev.org/openstack/murano-tempest-plugin
tempest_plugin_murano_git_install_branch: master
tempest_plugin_neutron_git_repo: https://opendev.org/openstack/neutron-tempest-plugin
tempest_plugin_neutron_git_install_branch: master
tempest_plugin_novajoin_git_repo: https://opendev.org/x/novajoin-tempest-plugin
tempest_plugin_novajoin_git_install_branch: master
tempest_plugin_octavia_git_repo: https://opendev.org/openstack/octavia-tempest-plugin
tempest_plugin_octavia_git_install_branch: master
tempest_plugin_senlin_git_repo: https://opendev.org/openstack/senlin-tempest-plugin
tempest_plugin_senlin_git_install_branch: master
tempest_plugin_sahara_git_repo: https://opendev.org/openstack/sahara-tests
tempest_plugin_sahara_git_install_branch: master
tempest_plugin_telemetry_git_repo: https://opendev.org/openstack/telemetry-tempest-plugin
tempest_plugin_telemetry_git_install_branch: master
tempest_plugin_trove_git_repo: https://opendev.org/openstack/trove-tempest-plugin
tempest_plugin_trove_git_install_branch: master
tempest_plugin_zaqar_git_repo: https://opendev.org/openstack/zaqar-tempest-plugin
tempest_plugin_zaqar_git_install_branch: master
tempest_plugin_zun_git_repo: https://opendev.org/openstack/zun-tempest-plugin
tempest_plugin_zun_git_install_branch: master
# tempest_workspace where tempest can be runned
tempest_workspace: "{{ ansible_facts['env']['HOME'] }}/workspace"
# The location where the test include/exclude lists will be placed
tempest_includelist_file_path: "{{ tempest_workspace }}/etc/tempest_includelist.txt"
tempest_excludelist_file_path: "{{ tempest_workspace }}/etc/tempest_excludelist.txt"
# Variable prefixes that will be dynamically gathered to create the include/exclude list
tempest_test_search_includelist_pattern: 'tempest_test_includelist_'
tempest_test_search_excludelist_pattern: 'tempest_test_excludelist_'
# 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 includelist which tempest executes.
tempest_test_includelist: []
# Extra test to be executed
tempest_test_extra_test: []
# Tests being skipped by os_tempest
# Example:
# tempest_test_excludelist:
# - 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_excludelist:
# - 'tempest.scenario.test.minimum_basic'
tempest_test_excludelist: []
# 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
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:
# 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_image_ssh_user: cirros
tempest_compute_run_ssh: True
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_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_gnocchi: "{{ groups['gnocchi_all'] is defined and groups['gnocchi_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_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
tempest_service_available_octavia: "{{ groups['octavia_all'] is defined and groups['octavia_all'] | length > 0 }}"
tempest_service_available_panko: "{{ groups['panko_all'] is defined and groups['panko_all'] | length > 0 }}"
tempest_service_available_sahara: "{{ groups['sahara_all'] is defined and groups['sahara_all'] | length > 0 }}"
tempest_service_available_senlin: "{{ groups['senlin_all'] is defined and groups['senlin_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_trove: "{{ groups['trove_all'] is defined and groups['trove_all'] | length > 0 }}"
tempest_service_available_whitebox: False
tempest_service_available_whitebox_neutron: False
tempest_service_available_zaqar: "{{ groups['zaqar_all'] is defined and groups['zaqar_all'] | length > 0 }}"
tempest_service_available_zun: "{{ groups['zun_all'] is defined and groups['zun_all'] | length > 0 }}"
# Var for setting ssl verification
tempest_keystone_interface_insecure: "{{ (keystone_service_internaluri_insecure | default(false)) | bool }}"
tempest_pip_packages:
- "{{
(tempest_git_repo is defined) | ternary(
'git+' ~ (tempest_git_repo | default('https://opendev.org/openstack/tempest.git')) ~ '@' ~ tempest_git_install_branch ~ '#egg=tempest',
'tempest')
}}"
- cmd2
- ddt
- junitxml
- lxml
- nose
- python-cinderclient
- python-glanceclient
- python-heatclient
- python-keystoneclient
- python-manilaclient
- python-memcached
- python-neutronclient
- python-novaclient
- python-openstackclient
- python-senlinclient
- python-saharaclient
- python-subunit
- python-swiftclient
- python-troveclient
- 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_facts['architecture']] }}"
# The location where images are downloaded to
tempest_image_dir: "{{ lookup('env', 'HOME') }}/tempest-images"
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:
- "tempest"
## 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"
# The default endpoint type to use by tempest
tempest_endpoint_type: "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_tag: "{{ venv_tag | default('untagged') }}"
tempest_tempestconf_venv_bin: "/openstack/venvs/tempestconf-{{ tempest_tempestconf_venv_tag }}/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/openinfra/python-tempestconf
tempest_tempestconf_git_install_branch: master
tempest_tempestconf_git_constraints:
- "--constraint {{ tempest_upper_constraints_url }}"
tempest_tempestconf_pip_packages:
- "{{
(tempest_tempestconf_git_repo is defined) | ternary(
'git+' ~ (tempest_tempestconf_git_repo | default(
'https://opendev.org/openinfra/python-tempestconf')
) ~ '@' ~ tempest_tempestconf_git_install_branch ~ '#egg=python_tempestconf',
'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_tempestconf_profile_overrides }}"
tempest_tempestconf_profile_extras: {}
tempest_tempestconf_profile_overrides: "{{ tempest_tempest_conf_overrides }}"
# Stackviz tarball url
stackviz_pip_install_args: "{{ pip_install_options | default('--isolated') }}"
stackviz_tarball: "https://tarballs.opendev.org/openstack/stackviz/dist/stackviz-latest.tar.gz"
stackviz_venv_tag: "{{ venv_tag | default('untagged') }}"
stackviz_venv_bin: "/openstack/venvs/stackviz-{{ stackviz_venv_tag }}/bin"
tempest_run_stackviz: true