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
398 lines
17 KiB
YAML
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
|