196 lines
6.1 KiB
Django/Jinja
196 lines
6.1 KiB
Django/Jinja
## Configure tempest
|
|
## -----------------
|
|
|
|
## * Clean up from any previous tempest run
|
|
## ::
|
|
|
|
# On doing tempest init workspace, it will create workspace directory
|
|
# as well as .workspace directory to store workspace information
|
|
# We need to delete .workspace directory otherwise tempest init failed
|
|
# to create tempest directory.
|
|
# We are doing this as sudo because tempest in containers create the files as
|
|
# root.
|
|
{% if tempest_format in ["venv", "packages"] %}
|
|
sudo rm -rf {{ working_dir }}/.tempest
|
|
sudo rm -rf {{ tempest_dir }}
|
|
{% endif %}
|
|
|
|
|
|
# Cloud Credentials
|
|
{% if tempest_os_cloud != '' %}
|
|
export OS_CLOUD={{ tempest_os_cloud }}
|
|
{% else %}
|
|
source {{ rc_file }}
|
|
{% endif %}
|
|
|
|
## Create Tempest resources
|
|
## ------------------------
|
|
## * For overcloud
|
|
|
|
{% if tempest_overcloud|bool or tempest_os_cloud != '' %}
|
|
|
|
## * Clean up network if it exists from previous run
|
|
## ::
|
|
|
|
{% include 'cleanup-network.sh.j2' %}
|
|
|
|
{% endif %}
|
|
|
|
## * Ensure creator and Member role is present
|
|
## * Member role is needed for Heat tests.
|
|
## * creator role is needed for Barbican for running volume encryption tests.
|
|
## ::
|
|
|
|
openstack role show Member > /dev/null || openstack role create Member
|
|
|
|
openstack role show creator > /dev/null || openstack role create creator
|
|
|
|
## Install openstack-tempest
|
|
## -------------------------
|
|
## * Using git
|
|
## ::
|
|
|
|
{% if tempest_format == "venv" %}
|
|
# Create .venv in tempest_git directory with --system-site-packages to access tempest plugins
|
|
virtualenv --system-site-packages {{ working_dir }}/tempest_git/.venv
|
|
{{ working_dir }}/tempest_git/tools/with_venv.sh pip install -U pip
|
|
{{ working_dir }}/tempest_git/tools/with_venv.sh pip install -U setuptools
|
|
{{ working_dir }}/tempest_git/tools/with_venv.sh pip install {{ working_dir }}/tempest_git junitxml
|
|
# Install tempest plugins in tempest .venv
|
|
{% for tempest_plugin in (tempest_plugins_git|default([])) %}
|
|
{{ working_dir }}/tempest_git/tools/with_venv.sh pip install {{ working_dir }}/{{ tempest_plugin.replace('.git', '').split('/')[-1] }}
|
|
{% endfor %}
|
|
|
|
# Install python-tempestconf
|
|
{% if release != 'newton'%}
|
|
{{ working_dir }}/tempest_git/tools/with_venv.sh pip install {{ working_dir }}/tempestconf_git
|
|
{% endif %}
|
|
{% endif %}
|
|
|
|
{% if tempest_format == "container" %}
|
|
export RCFILE="{{ rc_file }}"
|
|
cat <<'EOF' > {{ working_dir }}/tempest_container.sh
|
|
# Set the exit status for the command
|
|
set -e
|
|
|
|
# Get the list of tempest/-plugins rpms installed within a tempest container
|
|
# It will be useful for debugging and making sure at what commit
|
|
# tempest/tempest plugins rpms are installed in the same.
|
|
|
|
rpm -qa | grep tempest
|
|
|
|
# Remove the existing tempest workspace
|
|
if [ -d {{ tempest_dir }}/etc ]; then
|
|
tempest workspace remove --name {{ tempest_dir | basename }} --rmdir
|
|
fi
|
|
{% endif %}
|
|
|
|
## Create Tempest Workspace
|
|
## ------------------------
|
|
## ::
|
|
|
|
|
|
# Create Tempest directory
|
|
|
|
mkdir {{ tempest_dir }}
|
|
|
|
# Create Tempest workspace
|
|
pushd {{ tempest_dir }}
|
|
{{ tempest_init }}
|
|
popd
|
|
|
|
## Generate tempest configuration using python-tempestconf
|
|
## -------------------------------------------------------
|
|
## ::
|
|
export TEMPESTCONF="{{ tempestconf }}"
|
|
|
|
{% if tempest_format == 'container' %}
|
|
source {{ rc_file_container }}
|
|
{% elif tempest_os_cloud == '' %}
|
|
source {{ rc_file }}
|
|
{% endif %}
|
|
|
|
{% if tempest_overcloud|bool or tempest_os_cloud != '' %}
|
|
# Get public net id
|
|
|
|
{% if release == 'newton' %}
|
|
public_net_id=$(neutron net-show {{ public_net_name }} -f value -c id)
|
|
{% else %}
|
|
public_net_id=$(openstack network show {{ public_net_name }} -f value -c id)
|
|
{% endif %}
|
|
region_name=${OS_REGION_NAME:-'regionOne'}
|
|
{% endif %}
|
|
|
|
{% if not tempest_overcloud|bool %}
|
|
# query the endpoint if not set (e.g. clouds.yaml)
|
|
export OS_AUTH_URL=${OS_AUTH_URL:-$(openstack endpoint list --service=identity --interface=public -c URL -f value)}
|
|
{% if release not in ['newton', 'ocata'] %}
|
|
# set the itentity api version if not set (e.g. clouds.yaml)
|
|
export OS_IDENTITY_API_VERSION=${OS_IDENTITY_API_VERSION:-3}
|
|
# OS_AUTH_URL does not contains identity api version in stackrc from
|
|
# Pike onwards.
|
|
export OS_AUTH_URL="$OS_AUTH_URL/v$OS_IDENTITY_API_VERSION"
|
|
{% elif release == 'pike' %}
|
|
# Use Identity version v2.0 for pike
|
|
export OS_AUTH_URL="$OS_AUTH_URL/v2.0"
|
|
{% endif %}
|
|
{% endif %}
|
|
# Generate Tempest Config file using python-tempestconf
|
|
# Notice aodh_plugin will be set to False if telemetry service is disabled
|
|
cd {{ tempest_dir }}
|
|
$TEMPESTCONF --out etc/tempest.conf \
|
|
{% if tempest_overcloud|bool %}
|
|
--deployer-input {{ tempest_data }}/{{ tempest_deployer_input_file }} \
|
|
--network-id $public_net_id \
|
|
{% endif %}
|
|
{% if tempest_os_cloud != '' %}
|
|
--os-cloud {{ tempest_os_cloud }} \
|
|
--network-id $public_net_id \
|
|
{% endif %}
|
|
--image {{ tempest_test_image_path }} \
|
|
--debug \
|
|
{% if tempest_conf_removal and tempest_overcloud|bool %}
|
|
{% for key, value in tempest_conf_removal.items() %}
|
|
--remove {{ key }}={{ value }} \
|
|
{% endfor %}
|
|
{% endif %}
|
|
--create \
|
|
{% if tempest_format == 'container' %}
|
|
DEFAULT.log_dir {{ tempest_log_dir }} \
|
|
DEFAULT.log_file {{ tempest_log_file }} \
|
|
{% endif %}
|
|
{% if tempest_os_cloud != '' %}
|
|
identity.region $region_name \
|
|
{% endif %}
|
|
{% if release in ['newton', 'ocata', 'pike'] %}
|
|
identity.uri $OS_AUTH_URL \
|
|
identity.admin_password $OS_PASSWORD \
|
|
identity.admin_username $OS_USERNAME \
|
|
identity.disable_ssl_certificate_validation true \
|
|
compute.allow_tenant_isolation true \
|
|
scenario.img_file {{ tempest_test_image_name }} \
|
|
{% else %}
|
|
auth.use_dynamic_credentials true \
|
|
auth.tempest_roles Member \
|
|
network-feature-enabled.port_security true \
|
|
{% endif %}
|
|
{% if release in ['newton', 'ocata', 'pike', 'queens'] %}
|
|
compute-feature-enabled.attach_encrypted_volume False \
|
|
compute-feature-enabled.console_output true \
|
|
{% endif %}
|
|
network.tenant_network_cidr {{ tenant_network_cidr }} \
|
|
compute.build_timeout 500 \
|
|
network.build_timeout 500 \
|
|
volume.build_timeout 500 \
|
|
{% if 'disable-telemetry.yaml' in telemetry_args|default('') %}
|
|
service_available.aodh_plugin False \
|
|
{% endif %}
|
|
{% if tempest_extra_config %}
|
|
{% for key, value in tempest_extra_config.items() %}
|
|
{{ key }} {{ value }} \
|
|
{% endfor %}
|
|
{% endif %}
|
|
orchestration.stack_owner_role Member
|
|
|
|
### --stop_docs
|