Remove py2 testing, jobs

Change tox.ini so that all jobs are python3, and add explicit
unit/functional testenvs for the two ussuri python runtimes
(3.6 and 3.7).

Remove py2 jobs from .zuul.yaml and redefine the periodic "tips"
jobs so that they are testing with the ussuri python runtimes.
Added nodeset: ubuntu-bionic to the abstract base jobs so that
py3.7 is available.

Co-authored-by: Ghanshyam Mann <gmann@ghanshyammann.com>
Co-authored-by: Brian Rosmaita <rosmaita.fossdev@gmail.com>

Closes-bug: #1853693
Change-Id: I15467c34fc8466fa1724c5401dc879ae77c1922d
This commit is contained in:
Brian Rosmaita
2019-11-22 10:11:52 -05:00
parent 0c6dd98d01
commit 40bd312410
3 changed files with 89 additions and 81 deletions

View File

@@ -32,6 +32,8 @@
name: glance-tox-oslo-tips-base name: glance-tox-oslo-tips-base
parent: tox parent: tox
abstract: true abstract: true
nodeset: ubuntu-bionic
timeout: 2400
description: Abstract job for Glance vs. oslo libraries description: Abstract job for Glance vs. oslo libraries
# NOTE(rosmaita): we only need functional test jobs, oslo is # NOTE(rosmaita): we only need functional test jobs, oslo is
# already running periodic jobs using our unit tests. Those # already running periodic jobs using our unit tests. Those
@@ -58,12 +60,13 @@
- name: openstack/taskflow - name: openstack/taskflow
- job: - job:
name: glance-tox-functional-oslo-tips name: glance-tox-functional-py37-oslo-tips
parent: glance-tox-oslo-tips-base parent: glance-tox-oslo-tips-base
description: | description: |
Glance py27 functional tests vs. oslo libraries masters Glance py37 functional tests vs. oslo libraries masters
vars: vars:
tox_envlist: functional python_version: 3.7
tox_envlist: functional-py37
- job: - job:
name: glance-tox-functional-py36-oslo-tips name: glance-tox-functional-py36-oslo-tips
@@ -71,12 +74,15 @@
description: | description: |
Glance py36 functional tests vs. oslo libraries masters Glance py36 functional tests vs. oslo libraries masters
vars: vars:
python_version: 3.6
tox_envlist: functional-py36 tox_envlist: functional-py36
- job: - job:
name: glance-tox-keystone-tips-base name: glance-tox-keystone-tips-base
parent: tox parent: tox
abstract: true abstract: true
nodeset: ubuntu-bionic
timeout: 2400
description: Abstract job for Glance vs. keystone description: Abstract job for Glance vs. keystone
required-projects: required-projects:
- name: openstack/keystoneauth - name: openstack/keystoneauth
@@ -84,12 +90,13 @@
- name: openstack/python-keystoneclient - name: openstack/python-keystoneclient
- job: - job:
name: glance-tox-py27-keystone-tips name: glance-tox-py37-keystone-tips
parent: glance-tox-keystone-tips-base parent: glance-tox-keystone-tips-base
description: | description: |
Glance py27 unit tests vs. keystone masters Glance py37 unit tests vs. keystone masters
vars: vars:
tox_envlist: py27 python_version: 3.7
tox_envlist: py37
- job: - job:
name: glance-tox-py36-keystone-tips name: glance-tox-py36-keystone-tips
@@ -97,15 +104,17 @@
description: | description: |
Glance py36 unit tests vs. keystone masters Glance py36 unit tests vs. keystone masters
vars: vars:
python_version: 3.6
tox_envlist: py36 tox_envlist: py36
- job: - job:
name: glance-tox-functional-keystone-tips name: glance-tox-functional-py37-keystone-tips
parent: glance-tox-keystone-tips-base parent: glance-tox-keystone-tips-base
description: | description: |
Glance py27 functional tests vs. keystone masters Glance py37 functional tests vs. keystone masters
vars: vars:
tox_envlist: functional python_version: 3.7
tox_envlist: functional-py37
- job: - job:
name: glance-tox-functional-py36-keystone-tips name: glance-tox-functional-py36-keystone-tips
@@ -113,23 +122,27 @@
description: | description: |
Glance py36 functional tests vs. keystone masters Glance py36 functional tests vs. keystone masters
vars: vars:
python_version: 3.6
tox_envlist: functional-py36 tox_envlist: functional-py36
- job: - job:
name: glance-tox-glance_store-tips-base name: glance-tox-glance_store-tips-base
parent: tox parent: tox
abstract: true abstract: true
nodeset: ubuntu-bionic
timeout: 2400
description: Abstract job for Glance vs. glance_store description: Abstract job for Glance vs. glance_store
required-projects: required-projects:
- name: openstack/glance_store - name: openstack/glance_store
- job: - job:
name: glance-tox-py27-glance_store-tips name: glance-tox-py37-glance_store-tips
parent: glance-tox-glance_store-tips-base parent: glance-tox-glance_store-tips-base
description: | description: |
Glance py27 unit tests vs. glance_store master Glance py37 unit tests vs. glance_store master
vars: vars:
tox_envlist: py27 python_version: 3.7
tox_envlist: py37
- job: - job:
name: glance-tox-py36-glance_store-tips name: glance-tox-py36-glance_store-tips
@@ -137,15 +150,17 @@
description: | description: |
Glance py36 unit tests vs. glance_store master Glance py36 unit tests vs. glance_store master
vars: vars:
python_version: 3.6
tox_envlist: py36 tox_envlist: py36
- job: - job:
name: glance-tox-functional-glance_store-tips name: glance-tox-functional-py37-glance_store-tips
parent: glance-tox-glance_store-tips-base parent: glance-tox-glance_store-tips-base
description: | description: |
Glance py27 functional tests vs. glance_store master Glance py37 functional tests vs. glance_store master
vars: vars:
tox_envlist: functional python_version: 3.7
tox_envlist: functional-py37
- job: - job:
name: glance-tox-functional-py36-glance_store-tips name: glance-tox-functional-py36-glance_store-tips
@@ -153,12 +168,15 @@
description: | description: |
Glance py36 functional tests vs. glance_store master Glance py36 functional tests vs. glance_store master
vars: vars:
python_version: 3.6
tox_envlist: functional-py36 tox_envlist: functional-py36
- job: - job:
name: glance-tox-cursive-tips-base name: glance-tox-cursive-tips-base
parent: tox parent: tox
abstract: true abstract: true
nodeset: ubuntu-bionic
timeout: 2400
description: Abstract job for Glance vs. cursive and related libs description: Abstract job for Glance vs. cursive and related libs
required-projects: required-projects:
- name: x/cursive - name: x/cursive
@@ -166,12 +184,13 @@
- name: openstack/castellan - name: openstack/castellan
- job: - job:
name: glance-tox-py27-cursive-tips name: glance-tox-py37-cursive-tips
parent: glance-tox-cursive-tips-base parent: glance-tox-cursive-tips-base
description: | description: |
Glance py27 unit tests vs. cursive (and related libs) master Glance py37 unit tests vs. cursive (and related libs) master
vars: vars:
tox_envlist: py27 python_version: 3.7
tox_envlist: py37
- job: - job:
name: glance-tox-py36-cursive-tips name: glance-tox-py36-cursive-tips
@@ -179,15 +198,17 @@
description: | description: |
Glance py36 unit tests vs. cursive (and related libs) master Glance py36 unit tests vs. cursive (and related libs) master
vars: vars:
python_version: 3.6
tox_envlist: py36 tox_envlist: py36
- job: - job:
name: glance-tox-functional-cursive-tips name: glance-tox-functional-py37-cursive-tips
parent: glance-tox-cursive-tips-base parent: glance-tox-cursive-tips-base
description: | description: |
Glance py27 functional tests vs. cursive (and related libs) master Glance py37 functional tests vs. cursive (and related libs) master
vars: vars:
tox_envlist: functional python_version: 3.7
tox_envlist: functional-py37
- job: - job:
name: glance-tox-functional-py36-cursive-tips name: glance-tox-functional-py36-cursive-tips
@@ -195,22 +216,21 @@
description: | description: |
Glance py36 functional tests vs. cursive (and related libs) master Glance py36 functional tests vs. cursive (and related libs) master
vars: vars:
python_version: 3.6
tox_envlist: functional-py36 tox_envlist: functional-py36
- project: - project:
templates: templates:
- check-requirements - check-requirements
- integrated-gate
- integrated-gate-storage - integrated-gate-storage
- openstack-lower-constraints-jobs - openstack-lower-constraints-jobs
- openstack-python-jobs - openstack-python3-ussuri-jobs
- openstack-python3-train-jobs
- periodic-stable-jobs - periodic-stable-jobs
- publish-openstack-docs-pti - publish-openstack-docs-pti
- release-notes-jobs-python3 - release-notes-jobs-python3
check: check:
jobs: jobs:
- openstack-tox-functional - openstack-tox-functional-py36
- openstack-tox-functional-py37 - openstack-tox-functional-py37
- glance-code-constants-check - glance-code-constants-check
- devstack-plugin-ceph-tempest: - devstack-plugin-ceph-tempest:
@@ -230,8 +250,6 @@
- ^tools/.*$ - ^tools/.*$
- ^tox.ini$ - ^tox.ini$
- ^\.zuul\.yaml$ - ^\.zuul\.yaml$
- tempest-full:
irrelevant-files: *tempest-irrelevant-files
- tempest-integrated-storage: - tempest-integrated-storage:
irrelevant-files: *tempest-irrelevant-files irrelevant-files: *tempest-irrelevant-files
- grenade-py3: - grenade-py3:
@@ -239,19 +257,17 @@
gate: gate:
jobs: jobs:
- openstack-tox-functional - openstack-tox-functional-py36
- openstack-tox-functional-py37 - openstack-tox-functional-py37
- tempest-full:
irrelevant-files: *tempest-irrelevant-files
- tempest-integrated-storage: - tempest-integrated-storage:
irrelevant-files: *tempest-irrelevant-files irrelevant-files: *tempest-irrelevant-files
- grenade-py3: - grenade-py3:
irrelevant-files: *tempest-irrelevant-files irrelevant-files: *tempest-irrelevant-files
experimental: experimental:
jobs: jobs:
- glance-tox-py27-glance_store-tips - glance-tox-py37-glance_store-tips
- glance-tox-py36-glance_store-tips - glance-tox-py36-glance_store-tips
- glance-tox-functional-glance_store-tips - glance-tox-functional-py37-glance_store-tips
- glance-tox-functional-py36-glance_store-tips - glance-tox-functional-py36-glance_store-tips
- barbican-simple-crypto-devstack-tempest - barbican-simple-crypto-devstack-tempest
- glance-dsvm-grenade-multinode - glance-dsvm-grenade-multinode
@@ -275,31 +291,31 @@
# to define these jobs in the openstack/project-config repo. # to define these jobs in the openstack/project-config repo.
# That would make us less agile in adjusting these tests, so we # That would make us less agile in adjusting these tests, so we
# aren't doing that either. # aren't doing that either.
- glance-tox-functional-oslo-tips: - glance-tox-functional-py37-oslo-tips:
branches: master branches: master
- glance-tox-functional-py36-oslo-tips: - glance-tox-functional-py36-oslo-tips:
branches: master branches: master
- glance-tox-py27-keystone-tips: - glance-tox-py37-keystone-tips:
branches: master branches: master
- glance-tox-py36-keystone-tips: - glance-tox-py36-keystone-tips:
branches: master branches: master
- glance-tox-functional-keystone-tips: - glance-tox-functional-py37-keystone-tips:
branches: master branches: master
- glance-tox-functional-py36-keystone-tips: - glance-tox-functional-py36-keystone-tips:
branches: master branches: master
- glance-tox-py27-glance_store-tips: - glance-tox-py37-glance_store-tips:
branches: master branches: master
- glance-tox-py36-glance_store-tips: - glance-tox-py36-glance_store-tips:
branches: master branches: master
- glance-tox-functional-glance_store-tips: - glance-tox-functional-py37-glance_store-tips:
branches: master branches: master
- glance-tox-functional-py36-glance_store-tips: - glance-tox-functional-py36-glance_store-tips:
branches: master branches: master
- glance-tox-py27-cursive-tips: - glance-tox-py37-cursive-tips:
branches: master branches: master
- glance-tox-py36-cursive-tips: - glance-tox-py36-cursive-tips:
branches: master branches: master
- glance-tox-functional-cursive-tips: - glance-tox-functional-py37-cursive-tips:
branches: master branches: master
- glance-tox-functional-py36-cursive-tips: - glance-tox-functional-py36-cursive-tips:
branches: master branches: master

View File

@@ -0,0 +1,6 @@
---
upgrade:
- |
Python 2.7 support has been dropped. Last release of Glance
to support py2.7 is OpenStack Train (Glance 19.x). The minimum
version of Python now supported by Glance is Python 3.6.

70
tox.ini
View File

@@ -1,10 +1,16 @@
[tox] [tox]
minversion = 2.3.1 minversion = 3.1.0
envlist = functional-py37,py37,py27,functional,pep8 # python runtimes: https://governance.openstack.org/tc/reference/runtimes/ussuri.html
envlist = functional-py37,py37,py36,pep8
skipsdist = True skipsdist = True
skip_missing_interpreters = true
# this allows tox to infer the base python from the environment name
# and override any basepython configured in this file
ignore_basepython_conflict=true
[testenv] [testenv]
# Set default python version # Set default python version
basepython = python3
setenv = setenv =
VIRTUAL_ENV={envdir} VIRTUAL_ENV={envdir}
PYTHONWARNINGS=default::DeprecationWarning PYTHONWARNINGS=default::DeprecationWarning
@@ -29,45 +35,32 @@ whitelist_externals = bash
rm rm
passenv = *_proxy *_PROXY passenv = *_proxy *_PROXY
[testenv:py27]
basepython = python2.7
commands = stestr run --slowest {posargs}
[testenv:py36] [testenv:py36]
basepython = python3.6
commands = stestr run --slowest {posargs} commands = stestr run --slowest {posargs}
[testenv:py37] [testenv:py37]
basepython = python3.7 commands = stestr run --slowest {posargs}
[testenv:py38]
commands = stestr run --slowest {posargs} commands = stestr run --slowest {posargs}
[testenv:functional] [testenv:functional]
basepython = python2.7 # this will use whatever the system python3 is
setenv = setenv =
TEST_PATH = ./glance/tests/functional TEST_PATH = ./glance/tests/functional
ignore_errors = True commands = stestr run {posargs}
commands =
stestr run {posargs}
[testenv:functional-py36] [testenv:functional-py36]
basepython = python3.6 setenv = {[testenv:functional]setenv}
setenv = commands = {[testenv:functional]commands}
TEST_PATH = ./glance/tests/functional
ignore_errors = True
whitelist_externals =
bash
commands =
stestr run {posargs}
[testenv:functional-py37] [testenv:functional-py37]
basepython = python3.7 setenv = {[testenv:functional]setenv}
setenv = commands = {[testenv:functional]commands}
TEST_PATH = ./glance/tests/functional
ignore_errors = True [testenv:functional-py38]
whitelist_externals = setenv = {[testenv:functional]setenv}
bash commands = {[testenv:functional]commands}
commands =
stestr run {posargs}
[testenv:gateonly] [testenv:gateonly]
# NOTE(rosmaita): these tests catch configuration problems for some code # NOTE(rosmaita): these tests catch configuration problems for some code
@@ -75,14 +68,12 @@ commands =
# so they don't affect local development # so they don't affect local development
# TODO(someone other than me): figure out how to make these changes either # TODO(someone other than me): figure out how to make these changes either
# automatic or unnecessary # automatic or unnecessary
basepython = python3
setenv = setenv =
TEST_PATH = ./glance/tests/gate TEST_PATH = ./glance/tests/gate
commands = commands =
stestr run {posargs} stestr run {posargs}
[testenv:pep8] [testenv:pep8]
basepython = python3
commands = commands =
flake8 {posargs} flake8 {posargs}
# Run security linter # Run security linter
@@ -91,7 +82,6 @@ commands =
doc8 {posargs} doc8 {posargs}
[testenv:genconfig] [testenv:genconfig]
basepython = python3
commands = commands =
oslo-config-generator --config-file etc/oslo-config-generator/glance-api.conf oslo-config-generator --config-file etc/oslo-config-generator/glance-api.conf
oslo-config-generator --config-file etc/oslo-config-generator/glance-registry.conf oslo-config-generator --config-file etc/oslo-config-generator/glance-registry.conf
@@ -101,7 +91,6 @@ commands =
oslo-config-generator --config-file etc/oslo-config-generator/glance-image-import.conf oslo-config-generator --config-file etc/oslo-config-generator/glance-image-import.conf
[testenv:api-ref] [testenv:api-ref]
basepython = python3
# This environment is called from CI scripts to test and publish # This environment is called from CI scripts to test and publish
# the API Ref to docs.openstack.org. # the API Ref to docs.openstack.org.
deps = deps =
@@ -112,7 +101,6 @@ commands =
sphinx-build -W -b html -d api-ref/build/doctrees api-ref/source api-ref/build/html sphinx-build -W -b html -d api-ref/build/doctrees api-ref/source api-ref/build/html
[testenv:bindep] [testenv:bindep]
basepython = python3
# Do not install any requirements. We want this to be fast and work even if # 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 # system dependencies are missing, since it's used to tell you what system
# dependencies are missing! This also means that bindep must be installed # dependencies are missing! This also means that bindep must be installed
@@ -140,7 +128,6 @@ local-check-factory = glance.hacking.checks.factory
import_exceptions = glance.i18n import_exceptions = glance.i18n
[testenv:docs] [testenv:docs]
basepython = python3
deps = deps =
-c{env:UPPER_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master} -c{env:UPPER_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master}
-r{toxinidir}/doc/requirements.txt -r{toxinidir}/doc/requirements.txt
@@ -150,11 +137,9 @@ commands =
whereto doc/source/_extra/.htaccess doc/test/redirect-tests.txt whereto doc/source/_extra/.htaccess doc/test/redirect-tests.txt
[testenv:venv] [testenv:venv]
basepython = python3
commands = {posargs} commands = {posargs}
[testenv:releasenotes] [testenv:releasenotes]
basepython = python3
deps = deps =
-c{env:UPPER_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master} -c{env:UPPER_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master}
-r{toxinidir}/doc/requirements.txt -r{toxinidir}/doc/requirements.txt
@@ -162,7 +147,6 @@ commands =
sphinx-build -a -E -W -d releasenotes/build/doctrees -b html releasenotes/source releasenotes/build/html sphinx-build -a -E -W -d releasenotes/build/doctrees -b html releasenotes/source releasenotes/build/html
[testenv:cover] [testenv:cover]
basepython = python3
setenv = setenv =
PYTHON=coverage run --source glance --parallel-mode PYTHON=coverage run --source glance --parallel-mode
commands = commands =
@@ -172,21 +156,23 @@ commands =
coverage xml -o cover/coverage.xml coverage xml -o cover/coverage.xml
[testenv:debug] [testenv:debug]
basepython = python3 # this will use whatever the system python3 is
commands = commands =
oslo_debug_helper {posargs} oslo_debug_helper {posargs}
[testenv:debug-py27] [testenv:debug-py36]
commands = commands =
oslo_debug_helper {posargs} oslo_debug_helper {posargs}
[testenv:debug-py35] [testenv:debug-py37]
basepython = python3.5 commands =
oslo_debug_helper {posargs}
[testenv:debug-py38]
commands = commands =
oslo_debug_helper {posargs} oslo_debug_helper {posargs}
[testenv:lower-constraints] [testenv:lower-constraints]
basepython = python3
deps = deps =
-c{toxinidir}/lower-constraints.txt -c{toxinidir}/lower-constraints.txt
-r{toxinidir}/test-requirements.txt -r{toxinidir}/test-requirements.txt