
Kayobe generates passwords.yml for Kolla Ansible, and can encrypt it using the vault password. Previously this was failing on Python 3 due to passing a string to file.write() which expects bytes. This change fixes the issue by encoding the password string passed to file.write(). This allows us to run the ansible role tests under Python 3. Change-Id: I33813f79984a46f1967ef3aee455dcfbe7eb93da Story: 2006574 Task: 39481
147 lines
4.3 KiB
INI
147 lines
4.3 KiB
INI
[tox]
|
|
minversion = 3.1
|
|
envlist = py3,pep8
|
|
skipsdist = True
|
|
ignore_basepython_conflict = True
|
|
|
|
[testenv]
|
|
basepython = python3
|
|
usedevelop = True
|
|
install_command = pip install {opts} {packages}
|
|
passenv =
|
|
HOME
|
|
whitelist_externals =
|
|
bash
|
|
rm
|
|
setenv =
|
|
VIRTUAL_ENV={envdir}
|
|
PYTHONWARNINGS=default::DeprecationWarning
|
|
OS_STDOUT_CAPTURE=1
|
|
OS_STDERR_CAPTURE=1
|
|
OS_TEST_TIMEOUT=60
|
|
deps =
|
|
-c{env:UPPER_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master}
|
|
-r{toxinidir}/requirements.txt
|
|
-r{toxinidir}/test-requirements.txt
|
|
commands = stestr run {posargs}
|
|
|
|
[testenv:pep8]
|
|
# sphinx8 needs the sphinx package which is required via doc/requirements.txt
|
|
deps =
|
|
-c{env:UPPER_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master}
|
|
-r{toxinidir}/requirements.txt
|
|
-r{toxinidir}/doc/requirements.txt
|
|
-r{toxinidir}/test-requirements.txt
|
|
commands =
|
|
{toxinidir}/tools/run-bashate.sh
|
|
flake8 {posargs} kayobe
|
|
# Check the *.rst files
|
|
# We use a thin wrapper around doc8 currently, which has support for sphinx
|
|
# directives.
|
|
{toxinidir}/tools/sphinx8 README.rst CONTRIBUTING.rst doc/source --ignore D001
|
|
yamllint etc/kayobe
|
|
|
|
[testenv:venv]
|
|
deps =
|
|
-c{env:UPPER_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master}
|
|
-r{toxinidir}/test-requirements.txt
|
|
-r{toxinidir}/doc/requirements.txt
|
|
commands = {posargs}
|
|
|
|
[testenv:ansible]
|
|
# Create the virtualenv with access to system site packages, as this is
|
|
# required to use the python and apt modules, which are not available via PyPI.
|
|
sitepackages = True
|
|
commands =
|
|
# Install ansible role dependencies from Galaxy.
|
|
{toxinidir}/tools/ansible-galaxy-retried.sh install \
|
|
-r {toxinidir}/requirements.yml \
|
|
-p {toxinidir}/ansible/roles
|
|
{toxinidir}/tools/test-ansible.sh {posargs}
|
|
|
|
[testenv:molecule]
|
|
deps =
|
|
-c{env:UPPER_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master}
|
|
-r{toxinidir}/test-requirements.txt
|
|
-r{toxinidir}/doc/requirements.txt
|
|
whitelist_externals =
|
|
bash
|
|
commands =
|
|
# Install ansible role dependencies from Galaxy.
|
|
{toxinidir}/tools/ansible-galaxy-retried.sh install \
|
|
-r {toxinidir}/requirements.yml \
|
|
-p {toxinidir}/ansible/roles
|
|
bash -c "source {envdir}/bin/activate && {toxinidir}/tools/test-molecule.sh {posargs}"
|
|
|
|
[testenv:alint]
|
|
commands = ansible-lint ansible/*.yaml
|
|
|
|
[testenv:ansible-syntax]
|
|
commands =
|
|
# Install ansible role dependencies from Galaxy.
|
|
{toxinidir}/tools/ansible-galaxy-retried.sh install \
|
|
-r {toxinidir}/requirements.yml \
|
|
-p {toxinidir}/ansible/roles
|
|
# Perform an Ansible syntax check. Skip some playbooks which require extra
|
|
# variables to be defined.
|
|
bash -c \
|
|
"ansible-playbook \
|
|
--connection=local \
|
|
--syntax-check \
|
|
--list-tasks \
|
|
$(find {toxinidir}/ansible \
|
|
-maxdepth 1 \
|
|
-name '*.yml' \
|
|
-not -name idrac-bootstrap-one.yml \
|
|
-not -name idrac-bootstrap.yml) \
|
|
{posargs}"
|
|
|
|
[testenv:cover]
|
|
setenv =
|
|
VIRTUAL_ENV={envdir}
|
|
PYTHON=coverage run --source kayobe --parallel-mode
|
|
commands =
|
|
coverage erase
|
|
stestr run {posargs}
|
|
coverage combine
|
|
coverage report
|
|
coverage html -d cover
|
|
coverage xml -o cover/coverage.xml
|
|
|
|
[testenv:docs]
|
|
deps =
|
|
-c{env:UPPER_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master}
|
|
-r{toxinidir}/requirements.txt
|
|
-r{toxinidir}/doc/requirements.txt
|
|
commands =
|
|
rm -rf doc/build/html
|
|
sphinx-build -W --keep-going -b html doc/source doc/build/html
|
|
|
|
[testenv:pdf-docs]
|
|
whitelist_externals = make
|
|
deps = {[testenv:docs]deps}
|
|
commands =
|
|
rm -rf doc/build/pdf
|
|
sphinx-build -W --keep-going -b latex doc/source doc/build/pdf
|
|
make -C doc/build/pdf
|
|
|
|
[testenv:debug]
|
|
commands = oslo_debug_helper {posargs}
|
|
|
|
[testenv:releasenotes]
|
|
deps =
|
|
-c{env:UPPER_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master}
|
|
-r{toxinidir}/requirements.txt
|
|
-r{toxinidir}/doc/requirements.txt
|
|
commands =
|
|
rm -rf releasenotes/build
|
|
sphinx-build -a -E -W -d releasenotes/build/doctrees --keep-going -b html releasenotes/source releasenotes/build/html
|
|
|
|
[flake8]
|
|
# E123, E125 skipped as they are invalid PEP-8.
|
|
|
|
show-source = True
|
|
ignore = E123,E125
|
|
builtins = _
|
|
exclude=.venv,.git,.tox,dist,doc,*lib/python*,*egg,build
|