167 lines
5.5 KiB
INI
Raw Normal View History

[tox]
minversion = 3.18.0
# python runtimes: https://governance.openstack.org/tc/reference/runtimes/ussuri.html
envlist = functional-py39,py39,pep8
skip_missing_interpreters = true
[testenv]
setenv =
# NOTE(hemanthm): The environment variable "OS_TEST_DBAPI_ADMIN_CONNECTION"
# must be set to force oslo.db tests to use a file-based sqlite database
# instead of the default in-memory database, which doesn't work well with
# alembic migrations. The file-based database pointed by the environment
# variable itself is not used for testing. Neither is it ever created. Oslo.db
# creates another file-based database for testing purposes and deletes it as a
# part of its test clean-up. Think of setting this environment variable as a
# clue for oslo.db to use file-based database.
OS_TEST_DBAPI_ADMIN_CONNECTION=sqlite:////tmp/placeholder-never-created-nor-used.db
# TODO(stephenfin): Remove once we bump our upper-constraint to SQLAlchemy 2.0
SQLALCHEMY_WARN_20=1
usedevelop = True
install_command = python -m pip install -c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master} {opts} {packages}
deps = -r{toxinidir}/test-requirements.txt
-r{toxinidir}/requirements.txt
commands =
find . -type f -name "*.pyc" -delete
stestr run --slowest {posargs}
allowlist_externals = bash
find
rm
passenv =
*_proxy
*_PROXY
[testenv:functional]
setenv =
TEST_PATH = ./glance/tests/functional
# TODO(stephenfin): Remove once we bump our upper-constraint to SQLAlchemy 2.0
SQLALCHEMY_WARN_20=1
commands = stestr run {posargs}
[testenv:functional-py{38,39,310,311,312}]
setenv = {[testenv:functional]setenv}
commands = {[testenv:functional]commands}
[testenv:functional-py38-rbac]
setenv =
{[testenv:functional]setenv}
OS_GLANCE_TEST_RBAC_DEFAULTS = True
commands = {[testenv:functional]commands}
[testenv:functional-py39-rbac]
setenv =
{[testenv:functional]setenv}
OS_GLANCE_TEST_RBAC_DEFAULTS = True
commands = {[testenv:functional]commands}
Move policy defaults into code Instead of a default policy.json file, policy defaults are now defined in code. An operator need not supply policy.json data except to the extent they want to override the defaults. Currently an empty policy.json is still shipped because it is expected by devstack, but this can be removed later. A sample policy.yaml file can be generated using the genpolicy tox environment. This partly fulfils the requirements of the policy in code goal[1]. However, because policies don't map 1:1 with APIs, it will not be possible to fully document the policies until changes are made in how policies are applied as proposed in https://review.opendev.org/528021 Due to the fact that existing policy files may rely on a rule named "default" to specifiy policies not explicitly listed in the policy.json file, all policies that are not admin-only by default now default to "rule:default", so that the "default" rule will continue to apply to those policies that are not listed in policy.json. To ensure that this yields the expected policy in a standard policy-in-code config file, the default value of the "default" rule is now the empty string "". This is a change; between the Queens release and now the default was set to "role:admin" to match the value specified in the default policy.json file. An installation relying on both the "default" rule for some policies and the default value of the default rule may end up with a more permissive policy after upgrading. It's likely that no such policies exist in the wild, because prior to the Queens release the default value for the "default" rule was "@" (allow all requests), so anybody relying on this rule will surely have specified it explicitly in their policy.json. Policies whose default is "role:admin" no longer use the "default" rule. Therefore existing policy.json files that rely on the "default" rule for those policies, and who have specified a value for the "default" rule that is more permissive, will result in a more restrictive policy after upgrading. It is unlikely that any of these policies exist in the wild either. [1] https://governance.openstack.org/tc/goals/selected/queens/policy-in-code.html Change-Id: I8d1ccf5844078cc0b1652fb1130794daf07cedbc
2019-11-06 15:26:58 +08:00
[testenv:genpolicy]
commands =
oslopolicy-sample-generator --config-file=etc/glance-policy-generator.conf
[testenv:pep8]
commands =
flake8 {posargs}
doc8 {posargs}
Enabling separated sample config file generation As a common approach most projects used now and Oslo preferred, this change enabled sample configuration file generation mechanism for each Glance services. This change, as an enhancement, allows generating separated sample configuration files for each Glance major services, e.g.: etc/glance-api.conf.sample etc/glance-cache.conf.sample etc/glance-manage.conf.sample etc/glance-registry.conf.sample etc/glance-scrubber.conf.sample It is different than I94d486d6686815c45705a7a9b00fb26062e1eb63 which only supports generating an unified sample configuration file to including all Glance available options. This mechanism not only can help auditing by packager, milestone maintainer or developer as a function (testenv) of tox, but also those separated configuration files could make deployment be easy. And it helps keeping sample configuration files be update with code change. The change added "genconfigs" function as a tox testenv (-egenconfigs), and it dependes on oslo-config-generator function of oslo.config. The change doesn't introduce those sample files Glance repo, so next step is to investigate if we can generate them in gate automatically when a change was merged. Related-Change-Id: I15686708fc9460948a58cfea3d18dae40ba1fda9 Related-Change-Id: Iae31856d5886ee78786972d80c7c103c3460a2b3 Related-Change-Id: I76043b08e2872867e5af2a5ac902e4d092fda5c8 Closes-Bug: #1300546 Closes-Bug: #1361963 Change-Id: Ibe03a3fe80b96ca32acb1a6bea7e38e6075951bb Signed-off-by: Zhi Yan Liu <zhiyanl@cn.ibm.com>
2014-03-27 17:39:14 +08:00
[testenv:genconfig]
commands =
oslo-config-generator --config-file etc/oslo-config-generator/glance-api.conf
oslo-config-generator --config-file etc/oslo-config-generator/glance-scrubber.conf
oslo-config-generator --config-file etc/oslo-config-generator/glance-cache.conf
oslo-config-generator --config-file etc/oslo-config-generator/glance-manage.conf
oslo-config-generator --config-file etc/oslo-config-generator/glance-image-import.conf
Enabling separated sample config file generation As a common approach most projects used now and Oslo preferred, this change enabled sample configuration file generation mechanism for each Glance services. This change, as an enhancement, allows generating separated sample configuration files for each Glance major services, e.g.: etc/glance-api.conf.sample etc/glance-cache.conf.sample etc/glance-manage.conf.sample etc/glance-registry.conf.sample etc/glance-scrubber.conf.sample It is different than I94d486d6686815c45705a7a9b00fb26062e1eb63 which only supports generating an unified sample configuration file to including all Glance available options. This mechanism not only can help auditing by packager, milestone maintainer or developer as a function (testenv) of tox, but also those separated configuration files could make deployment be easy. And it helps keeping sample configuration files be update with code change. The change added "genconfigs" function as a tox testenv (-egenconfigs), and it dependes on oslo-config-generator function of oslo.config. The change doesn't introduce those sample files Glance repo, so next step is to investigate if we can generate them in gate automatically when a change was merged. Related-Change-Id: I15686708fc9460948a58cfea3d18dae40ba1fda9 Related-Change-Id: Iae31856d5886ee78786972d80c7c103c3460a2b3 Related-Change-Id: I76043b08e2872867e5af2a5ac902e4d092fda5c8 Closes-Bug: #1300546 Closes-Bug: #1361963 Change-Id: Ibe03a3fe80b96ca32acb1a6bea7e38e6075951bb Signed-off-by: Zhi Yan Liu <zhiyanl@cn.ibm.com>
2014-03-27 17:39:14 +08:00
[testenv:api-ref]
# This environment is called from CI scripts to test and publish
# the API Ref to docs.openstack.org.
deps =
-r{toxinidir}/doc/requirements.txt
commands =
rm -rf api-ref/build
sphinx-build -W -b html -d api-ref/build/doctrees api-ref/source api-ref/build/html
[testenv:bindep]
# Do not install any requirements. We want this to be fast and work even if
# system dependencies are missing, since it's used to tell you what system
# dependencies are missing! This also means that bindep must be installed
# separately, outside of the requirements files, and develop mode disabled
# explicitly to avoid unnecessarily installing the checked-out repo too (this
# further relies on "tox.skipsdist = True" above).
deps = bindep
commands = bindep test
usedevelop = False
[doc8]
ignore-path = .venv,.git,.tox,.eggs,*glance/locale*,*lib/python*,glance.egg*,api-ref/build,doc/build,doc/source/contributor/api,doc/test
[flake8]
# TODO(dmllr): Analyze or fix the warnings blacklisted below
# E402 module level import not at top of file
# E711 comparison to None should be 'if cond is not None:'
# E712 comparison to True should be 'if cond is True:' or 'if cond:'
# H404 multi line docstring should start with a summary
# H405 multi line docstring summary not separated with an empty line
# W503 line break before binary operator - conflicting guidance
# W504 line break after binary operator - conflicting guidance
ignore = E402,E711,E712,H404,H405,W503,W504
enable-extensions = H904
exclude = .venv,.git,.tox,dist,doc,etc,*glance/locale*,*lib/python*,*egg,build
per-file-ignores = glance/tests/functional/__init__.py:E501
[hacking]
import_exceptions = glance.i18n
[flake8:local-plugins]
extension =
G316 = checks:assert_true_instance
G317 = checks:assert_equal_type
G318 = checks:assert_equal_none
G319 = checks:no_translate_debug_logs
G327 = checks:check_no_contextlib_nested
G328 = checks:dict_constructor_with_list_copy
G330 = checks:no_log_warn
paths = ./glance/hacking
[testenv:docs]
deps =
-r{toxinidir}/doc/requirements.txt
commands =
rm -fr doc/build
rm -fr doc/source/contributor/api
sphinx-build -W -b html doc/source doc/build/html
whereto doc/source/_extra/.htaccess doc/test/redirect-tests.txt
[testenv:venv]
deps =
{[testenv]deps}
-r{toxinidir}/doc/requirements.txt
commands = {posargs}
[testenv:releasenotes]
deps =
-r{toxinidir}/doc/requirements.txt
commands =
sphinx-build -a -E -W -d releasenotes/build/doctrees -b html releasenotes/source releasenotes/build/html
[testenv:cover]
setenv =
PYTHON=coverage run --source glance --parallel-mode
commands =
stestr run {posargs}
coverage combine
coverage html -d cover
coverage xml -o cover/coverage.xml
[testenv:debug]
# this will use whatever the system python3 is
commands =
oslo_debug_helper {posargs}
[testenv:debug-py38]
commands =
oslo_debug_helper {posargs}
[testenv:debug-py39]
commands =
oslo_debug_helper {posargs}