diff --git a/Pipfile b/Pipfile index 973705cce..0a8998b8a 100644 --- a/Pipfile +++ b/Pipfile @@ -14,4 +14,4 @@ tempest = "*" [dev-packages] [requires] -python_version = "3.7" +python_version = "3.8" diff --git a/README.rst b/README.rst index 4e722f73d..c26d42535 100644 --- a/README.rst +++ b/README.rst @@ -27,24 +27,19 @@ Project Requirements Tobiko Python framework is being automatically tested with below Python versions: -- Python 3.6 - Python 3.8 - Python 3.9 - Python 3.10 (new) and below Linux distributions: -- CentOS 7 / RHEL 7 (with Python 3.6) -- CentOS 8 / RHEL 8 (with Python 3.6) -- CentOS 9 / RHEL 8 (with Python 3.9) (new) -- Fedora 34 (with Python 3.9) -- Fedora 35 (with Python 3.10) +- CentOS 9 / RHEL 8 (with Python 3.9) - Ubuntu Focal (with Python 3.8) +- Ubuntu Jammy (with Python 3.10) Tobiko has also been tested for development purposes with below OSes: - OSX (with Python 3.6 to 3.10) -- Ubuntu Bionic (with Python 3.6) The Tobiko Python framework is being used to implement test cases. As Tobiko can be executed on nodes that are not part of the cloud to test against, this diff --git a/bindep.txt b/bindep.txt index 813d83dbd..78ebb884d 100644 --- a/bindep.txt +++ b/bindep.txt @@ -12,11 +12,9 @@ libguestfs-tools-c [platform:redhat] make [platform:redhat] openssl-devel [platform:redhat] podman [platform:redhat] -python-docutils [platform:rhel-7] -python-docutils [platform:centos-7] python3 [platform:redhat] -python3-devel [platform:redhat !platform:rhel-7] -python3-docutils [platform:redhat !platform:rhel-7 !platform:centos-7] +python3-devel [platform:redhat] +python3-docutils [platform:redhat] python3-libselinux [platform:redhat !platform:rhel-9] python3-setuptools [platform:redhat] python3-wheel [platform:redhat !platform:rhel-9] diff --git a/doc/source/contributor/contributor.rst b/doc/source/contributor/contributor.rst index d11c59679..e4286794f 100644 --- a/doc/source/contributor/contributor.rst +++ b/doc/source/contributor/contributor.rst @@ -47,7 +47,7 @@ For instance on RedHat Linux / Fedora:: sudo dnf install -y git python3 which -Check your Python 3 version is 3.6 or greater:: +Check your Python 3 version is 3.8 or greater:: python3 --version diff --git a/infrared_plugin/roles/tobiko-ir-run/tasks/main.yaml b/infrared_plugin/roles/tobiko-ir-run/tasks/main.yaml index 15ca2e296..389e82ed1 100644 --- a/infrared_plugin/roles/tobiko-ir-run/tasks/main.yaml +++ b/infrared_plugin/roles/tobiko-ir-run/tasks/main.yaml @@ -1,14 +1,4 @@ --- -- block: - - include_role: - name: tobiko-fixup-stuff - # this role was added only since Tobiko version 0.5.0 - #ignore nonexistent roles - rescue: - - name: Print when errors - ansible.builtin.debug: - msg: 'I caught an import error, skipping this role' - - block: - include_role: name=tobiko-ir-jenkins when: "(lookup('env','JENKINS_URL') | length) > 0" diff --git a/releasenotes/notes/drop-py36-py37-support-e90a696923eb3eaf.yaml b/releasenotes/notes/drop-py36-py37-support-e90a696923eb3eaf.yaml new file mode 100644 index 000000000..ec0c16847 --- /dev/null +++ b/releasenotes/notes/drop-py36-py37-support-e90a696923eb3eaf.yaml @@ -0,0 +1,5 @@ +--- +deprecations: + - | + Support for Python versions 3.6 and 3.7 was dropped. The minimum supported + version is now Python 3.8. diff --git a/roles/tests/Vagrantfile b/roles/tests/Vagrantfile index 8962aa98b..b76029706 100644 --- a/roles/tests/Vagrantfile +++ b/roles/tests/Vagrantfile @@ -12,7 +12,7 @@ MEMORY = ENV.fetch("VM_SIZE", "4096").to_i # Every Vagrant development environment requires a box. You can search for # boxes at https://vagrantcloud.com/search. -BOX = ENV.fetch("VM_BOX", "centos/stream8") +BOX = ENV.fetch("VM_BOX", "centos/stream9") TEST_DIR = File.dirname(__FILE__) diff --git a/roles/tobiko-compile-python/Vagrantfile b/roles/tobiko-compile-python/Vagrantfile index 8d4cc3274..03c66e85d 100644 --- a/roles/tobiko-compile-python/Vagrantfile +++ b/roles/tobiko-compile-python/Vagrantfile @@ -12,7 +12,7 @@ MEMORY = 512 # Every Vagrant development environment requires a box. You can search for # boxes at https://vagrantcloud.com/search. -BOX = "generic/centos7" +BOX = "generic/centos9" TOX_INI_DIR = '../..' diff --git a/roles/tobiko-compile-python/defaults/main.yaml b/roles/tobiko-compile-python/defaults/main.yaml index 5bf4aca1a..5aaf35578 100644 --- a/roles/tobiko-compile-python/defaults/main.yaml +++ b/roles/tobiko-compile-python/defaults/main.yaml @@ -2,8 +2,8 @@ setup_python: true setup_pip: true -python_release: "3.7.7" -python_version: "3.7" +python_release: "3.9.16" +python_version: "3.9" python_command: "python3" python_name: "Python-{{ python_release }}" python_prefix: "/usr/local" diff --git a/roles/tobiko-ensure-python3/vars/py3-CentOS-7.yaml b/roles/tobiko-ensure-python3/vars/py3-CentOS-7.yaml deleted file mode 100644 index 0088a1b7b..000000000 --- a/roles/tobiko-ensure-python3/vars/py3-CentOS-7.yaml +++ /dev/null @@ -1,9 +0,0 @@ ---- - -python_packages: - python3: - - python3 - - python3-devel - python3.6: - - python36 - - python36-devel diff --git a/roles/tobiko-ensure-python3/vars/py3-Fedora-31.yaml b/roles/tobiko-ensure-python3/vars/py3-Fedora-31.yaml deleted file mode 100644 index 5d802ea0b..000000000 --- a/roles/tobiko-ensure-python3/vars/py3-Fedora-31.yaml +++ /dev/null @@ -1,9 +0,0 @@ ---- - -python_packages: - python3: - - python3 - - python3-devel - python3.7: - - python3 - - python3-devel diff --git a/roles/tobiko-ensure-python3/vars/py3-RedHat-7.yaml b/roles/tobiko-ensure-python3/vars/py3-RedHat-7.yaml deleted file mode 100644 index a130e5a22..000000000 --- a/roles/tobiko-ensure-python3/vars/py3-RedHat-7.yaml +++ /dev/null @@ -1,12 +0,0 @@ ---- - -enable_yum_repos: - - rhel-7-server-optional-rpms - -python_packages: - python3: - - python3 - - python3-devel - python3.6: - - python36 - - python36-devel diff --git a/roles/tobiko-ensure-python3/vars/py3-RedHat.yaml b/roles/tobiko-ensure-python3/vars/py3-RedHat.yaml index 0088a1b7b..6471b91e8 100644 --- a/roles/tobiko-ensure-python3/vars/py3-RedHat.yaml +++ b/roles/tobiko-ensure-python3/vars/py3-RedHat.yaml @@ -4,6 +4,3 @@ python_packages: python3: - python3 - python3-devel - python3.6: - - python36 - - python36-devel diff --git a/roles/tobiko-ensure-python3/vars/py3-Ubuntu-18.04.yaml b/roles/tobiko-ensure-python3/vars/py3-Ubuntu-18.04.yaml index 0a5f09491..ffdfc5039 100644 --- a/roles/tobiko-ensure-python3/vars/py3-Ubuntu-18.04.yaml +++ b/roles/tobiko-ensure-python3/vars/py3-Ubuntu-18.04.yaml @@ -4,6 +4,3 @@ python_packages: python3: - python3 - python3-pip - python3.6: - - python3.6 - - python3.6-pip diff --git a/roles/tobiko-ensure-python3/vars/rhosp-RedHat-7.yaml b/roles/tobiko-ensure-python3/vars/rhosp-RedHat-7.yaml deleted file mode 100644 index 8b2768cee..000000000 --- a/roles/tobiko-ensure-python3/vars/rhosp-RedHat-7.yaml +++ /dev/null @@ -1,12 +0,0 @@ ---- - -enable_yum_repos: - - 'rhelosp-rhel-*-server-opt*' - -python_packages: - python3: - - python3 - - python3-devel - python3.6: - - python36 - - python36-devel diff --git a/roles/tobiko-fixup-stuff/tasks/centos.yaml b/roles/tobiko-fixup-stuff/tasks/centos.yaml deleted file mode 100644 index a8ed0f9d1..000000000 --- a/roles/tobiko-fixup-stuff/tasks/centos.yaml +++ /dev/null @@ -1,9 +0,0 @@ ---- - -# https://bugzilla.redhat.com/show_bug.cgi?id=2037807 -- name: Workaround CentOS 8-stream iputils and systemd Bug#2037807 - become: true - shell: > - sysctl -w net.ipv4.ping_group_range='0 2147483647' - when: - - ansible_distribution_version == '8' diff --git a/roles/tobiko-fixup-stuff/tasks/main.yaml b/roles/tobiko-fixup-stuff/tasks/main.yaml deleted file mode 100644 index 1ea40a518..000000000 --- a/roles/tobiko-fixup-stuff/tasks/main.yaml +++ /dev/null @@ -1,5 +0,0 @@ ---- - -- name: "Run CentOS fix-up tasks" - include_tasks: centos.yaml - when: ansible_distribution == 'CentOS' diff --git a/roles/tobiko-run/vars/test-workflow-unit.yaml b/roles/tobiko-run/vars/test-workflow-unit.yaml index 0a0c89223..49a96fd9e 100644 --- a/roles/tobiko-run/vars/test-workflow-unit.yaml +++ b/roles/tobiko-run/vars/test-workflow-unit.yaml @@ -1,16 +1,4 @@ test_workflow_steps: - - tox_description: 'run unit tests using Python 3.6' - tox_envlist: py36 - python_version: '3.6' - bindep_profile: test py36 - test_flaky: true - - - tox_description: 'run unit tests using Python 3.7' - tox_envlist: py37 - python_version: '3.7' - bindep_profile: test py37 - test_flaky: true - - tox_description: 'run unit tests using Python 3.8' tox_envlist: py38 python_version: '3.8' diff --git a/setup.cfg b/setup.cfg index 21ba63939..8627dea0d 100644 --- a/setup.cfg +++ b/setup.cfg @@ -6,7 +6,7 @@ description_file = author = OpenStack author_email = openstack-discuss@lists.openstack.org home_page = https://tobiko.readthedocs.io/ -python_requires = >=3.6 +python_requires = >=3.8 classifier = Environment :: OpenStack Intended Audience :: Information Technology @@ -14,8 +14,6 @@ classifier = License :: OSI Approved :: Apache Software License Operating System :: POSIX :: Linux Programming Language :: Python :: 3 - Programming Language :: Python :: 3.6 - Programming Language :: Python :: 3.7 Programming Language :: Python :: 3.8 Programming Language :: Python :: 3.9 Programming Language :: Python :: 3.10 diff --git a/upper-constraints.txt b/upper-constraints.txt index c50863a3c..55fe06a8f 100644 --- a/upper-constraints.txt +++ b/upper-constraints.txt @@ -1,5 +1,4 @@ abclient===0.2.3 -actdiag===2.0.0;python_version=='3.6' actdiag===3.0.0;python_version=='3.8' alabaster===0.7.12 alembic===1.7.6 @@ -13,11 +12,8 @@ api-object-schema===2.0.0 appdirs===1.4.4 APScheduler===3.9.0.post1 arrow===1.2.2 -asgiref===3.4.1;python_version=='3.6' asgiref===3.5.0;python_version=='3.8' -async-generator===1.10;python_version=='3.6' attrs===21.4.0 -autobahn===21.2.1;python_version=='3.6' autobahn===22.2.2;python_version=='3.8' automaton===2.5.0 autopage===0.5.0 @@ -28,13 +24,10 @@ bcrypt===3.2.0 beautifulsoup4===4.10.0 betamax===0.8.1 bitmath===1.3.3.1 -blockdiag===2.0.1;python_version=='3.6' blockdiag===3.0.0;python_version=='3.8' boto===2.49.0 boto3===1.21.7 botocore===1.24.7 -cached-property===1.5.2;python_version=='3.6' -cachetools===4.2.4;python_version=='3.6' cachetools===5.0.0;python_version=='3.8' cachez===0.1.2 capacity===1.3.14 @@ -57,17 +50,14 @@ construct===2.10.68 contextvars===2.4 cotyledon===1.7.3 CouchDB===1.2 -coverage===6.2;python_version=='3.6' coverage===6.3.2;python_version=='3.8' croniter===1.3.4 cryptography===36.0.1 cursive===0.2.2 daiquiri===3.0.1 -dataclasses===0.8;python_version=='3.6' DateTimeRange===1.2.0 ddt===1.4.4 debtcollector===2.5.0 -decorator===4.4.2;python_version=='3.6' decorator===5.1.1;python_version=='3.8' defusedxml===0.7.1 Deprecated===1.2.13 @@ -81,7 +71,6 @@ distro===1.7.0 Django===3.2.12 django-appconf===1.0.5 django-compressor===2.4.1 -django-debreach===2.0.1;python_version=='3.6' django-debreach===2.1.0;python_version=='3.8' django-formtools===2.3 django-nose===1.4.7 @@ -107,23 +96,19 @@ execnet===1.9.0 extras===1.0.0 falcon===3.0.1 fasteners===0.17.3 -filelock===3.4.1;python_version=='3.6' filelock===3.6.0;python_version=='3.8' fixtures===3.0.0 Flask===2.0.3 Flask-RESTful===0.3.9 flux===1.3.5 freezegun===1.1.0 -funcparserlib===0.3.6;python_version=='3.6' funcparserlib===1.0.0a0;python_version=='3.8' future===0.18.2 -futures===3.0.5;python_version=='3.6' futurist===2.4.0 gabbi===2.4.0 geomet===0.2.1.post1 gitdb===4.0.9 gitdb2===4.0.2 -GitPython===3.1.18;python_version=='3.6' GitPython===3.1.27;python_version=='3.8' glance-store===3.0.0 gnocchiclient===7.0.7 @@ -152,7 +137,6 @@ ifaddr===0.1.7 imagesize===1.3.0 immutables===0.16 importlib-metadata===4.11.1;python_version=='3.8' -importlib-metadata===4.8.3;python_version=='3.6' importlib-resources===5.2.3 infi.dtypes.iqn===0.4.0 infi.dtypes.wwn===0.1.1 @@ -161,9 +145,7 @@ influxdb===5.3.1 iniconfig===1.1.1 ironic-lib===5.2.0 iso8601===1.0.2 -itsdangerous===2.0.1;python_version=='3.6' itsdangerous===2.1.0;python_version=='3.8' -jaeger-client===4.6.1;python_version=='3.6' jaeger-client===4.8.0;python_version=='3.8' jeepney===0.7.1 Jinja2===3.0.3 @@ -177,11 +159,9 @@ jsonpointer===2.2 jsonschema===3.2.0 kafka-python===2.0.2 kazoo===2.8.0 -keyring===23.4.1;python_version=='3.6' keyring===23.5.0;python_version=='3.8' keystoneauth1===4.5.0 keystonemiddleware===9.4.0 -kombu===5.1.0;python_version=='3.6' kombu===5.2.3;python_version=='3.8' krb5===0.3.0 krest===1.3.2 @@ -197,7 +177,6 @@ logutils===0.3.5 lxml===4.8.0 Mako===1.1.6 marathon===0.13.0 -MarkupSafe===2.0.1;python_version=='3.6' MarkupSafe===2.1.0;python_version=='3.8' mbstrdecoder===1.1.0 metalsmith===1.6.2 @@ -219,7 +198,6 @@ ndg-httpsclient===0.5.1 netaddr===0.8.0 netifaces===0.11.0 netmiko===3.4.0 -networkx===2.5.1;python_version=='3.6' networkx===2.6.3;python_version=='3.8' neutron===20.1.0 neutron-lib===2.20.0 @@ -232,9 +210,7 @@ nosehtmloutput===0.0.7 nosexcover===1.0.11 ntc-templates===3.0.0 ntlm-auth===1.5.0 -numpy===1.19.5;python_version=='3.6' numpy===1.22.2;python_version=='3.8' -nwdiag===2.0.0;python_version=='3.6' nwdiag===3.0.0;python_version=='3.8' oauth2client===4.1.3 oauthlib===3.2.0 @@ -300,15 +276,11 @@ persist-queue===0.7.0 pexpect===4.8.0 pifpaf===3.1.5 pika===1.2.0 -Pillow===8.4.0;python_version=='3.6' Pillow===9.0.1;python_version=='3.8' -Pint===0.17;python_version=='3.6' Pint===0.18;python_version=='3.8' -platformdirs===2.4.0;python_version=='3.6' platformdirs===2.5.1;python_version=='3.8' pluggy===1.0.0 ply===3.11 -prettytable===2.5.0;python_version=='3.6' prettytable===3.1.1;python_version=='3.8' proboscis===1.2.6.0 prometheus-client===0.13.1 @@ -351,7 +323,6 @@ pyroute2.ipset===0.6.6 pyroute2.ndb===0.6.6 pyroute2.nftables===0.6.6 pyroute2.nslink===0.6.6 -pyrsistent===0.18.0;python_version=='3.6' pyrsistent===0.18.1;python_version=='3.8' pysaml2===7.1.1 pyScss===1.3.7 @@ -361,13 +332,10 @@ pysmi===0.3.4 pysnmp===4.4.12 pyspnego===0.5.0 pystache===0.6.0 -pytest===7.0.1;python_version=='3.6' -pytest===7.1.2;python_version>'3.6' -pytest-django===4.5.2;python_version=='3.6' +pytest===7.1.2 pytest-forked===1.4.0 pytest-html===3.1.1 -pytest-metadata===1.11.0;python_version=='3.6' -pytest-metadata===2.0.2;python_version>'3.6' +pytest-metadata===2.0.2 pytest-xdist===2.5.0 python-3parclient===4.2.12 python-barbicanclient===5.3.0 @@ -439,7 +407,6 @@ requests-oauthlib===1.3.1 requests-toolbelt===0.9.1 requests-unixsocket===0.3.0 requestsexceptions===1.4.0 -responses===0.17.0;python_version=='3.6' responses===0.18.0;python_version=='3.8' restructuredtext-lint===1.4.0 retrying===1.3.3 @@ -457,9 +424,7 @@ ryu===4.34 s3transfer===0.5.2 sadisplay===0.4.9 salt===3004 -scikit-learn===0.24.2;python_version=='3.6' scikit-learn===1.0.2;python_version=='3.8' -scipy===1.5.4;python_version=='3.6' scipy===1.8.0;python_version=='3.8' scp===0.14.4 scrypt===0.8.20 @@ -467,10 +432,8 @@ SecretStorage===3.3.1 selenium===3.141.0 semantic-version===2.9.0 sentinels===1.0.0 -seqdiag===2.0.0;python_version=='3.6' seqdiag===3.0.0;python_version=='3.8' setproctitle===1.2.2 -setuptools===59.6.0;python_version=='3.6' setuptools===60.9.3;python_version=='3.8' simplegeneric===0.8.1 simplejson===3.17.6 @@ -484,11 +447,9 @@ Sphinx===4.4.0 sphinx-feature-classification===1.1.0 sphinx-rtd-theme===1.0.0 sphinx-testing===1.0.1 -sphinxcontrib-actdiag===2.0.0;python_version=='3.6' sphinxcontrib-actdiag===3.0.0;python_version=='3.8' sphinxcontrib-apidoc===0.3.0 sphinxcontrib-applehelp===1.0.2 -sphinxcontrib-blockdiag===2.0.0;python_version=='3.6' sphinxcontrib-blockdiag===3.0.0;python_version=='3.8' sphinxcontrib-devhelp===1.0.2 sphinxcontrib-htmlhelp===2.0.0 @@ -499,7 +460,6 @@ sphinxcontrib-pecanwsme===0.10.0 sphinxcontrib-programoutput===0.17 sphinxcontrib-qthelp===1.0.3 sphinxcontrib-runcmd===0.2.0 -sphinxcontrib-seqdiag===2.0.0;python_version=='3.6' sphinxcontrib-seqdiag===3.0.0;python_version=='3.8' sphinxcontrib-serializinghtml===1.1.5 sphinxcontrib-svg2pdfconverter===1.2.0 @@ -542,7 +502,6 @@ threadpoolctl===3.1.0 thrift===0.15.0 tinyrpc===1.1.4 toml===0.10.2 -tomli===1.2.3;python_version=='3.6' tomli===2.0.1;python_version=='3.8' tooz===2.10.1 tornado===6.1 @@ -550,7 +509,6 @@ tosca-parser===2.5.1 traceback2===1.4.0 tripleo-common===16.3.0 txaio===22.2.1 -typed-ast===1.5.2;python_version=='3.6' typepy===1.3.0 types-cryptography===3.3.15 types-enum34===1.1.8 @@ -561,7 +519,6 @@ typing_extensions===4.1.1 tzdata===2021.5 tzlocal===4.1 uhashring===2.1 -ujson===4.3.0;python_version=='3.6' ujson===5.1.0;python_version=='3.8' unittest2===1.1.0 uritemplate===4.1.1 @@ -636,9 +593,7 @@ yamlloader===1.1.0 yappi===1.3.3 yaql===2.0.0 zake===0.2.2 -zeroconf===0.37.0;python_version=='3.6' zeroconf===0.38.3;python_version=='3.8' -zipp===3.6.0;python_version=='3.6' zipp===3.7.0;python_version=='3.8' zstd===1.5.1.0 zuul-sphinx===0.6.0 diff --git a/zuul.d/infrared.yaml b/zuul.d/infrared.yaml index 2526da093..b38a9fc2e 100644 --- a/zuul.d/infrared.yaml +++ b/zuul.d/infrared.yaml @@ -6,16 +6,12 @@ Infrared jobs intended to gate infrared Tobiko plugin changes check: jobs: - - tobiko-infrared-centos-7 - - tobiko-infrared-centos-8 - tobiko-infrared-centos-9 gate: jobs: - tobiko-infrared periodic: jobs: - - tobiko-infrared-centos-7 - - tobiko-infrared-centos-8 - tobiko-infrared-centos-9 - tobiko-infrared-ubuntu @@ -51,53 +47,13 @@ - ^tobiko/tests/scenario/ - ^tobiko/tests/faults/ - -- job: - name: tobiko-infrared-centos-7 - parent: tobiko-infrared - nodeset: tobiko-infrared-centos-7 - voting: true - description: | - Run test cases using tobiko infrared plugin on CentOS 7 - -- nodeset: - name: tobiko-infrared-centos-7 - nodes: - - name: primary - label: centos-7 - - name: secondary - label: centos-7 - groups: &NODESET_GROUPS - - name: undercloud - nodes: - - secondary - - -- job: - name: tobiko-infrared-centos-8 - parent: tobiko-infrared - nodeset: tobiko-infrared-centos-8 - voting: true - description: | - Run test cases using tobiko infrared plugin on CentOS 8 - -- nodeset: - name: tobiko-infrared-centos-8 - nodes: - - name: primary - label: centos-8-stream - - name: secondary - label: centos-8-stream - groups: *NODESET_GROUPS - - - job: name: tobiko-infrared-centos-9 parent: tobiko-infrared nodeset: tobiko-infrared-centos-9 voting: true description: | - Run test cases using tobiko infrared plugin on CentOS 8 + Run test cases using tobiko infrared plugin on CentOS 9 - nodeset: name: tobiko-infrared-centos-9 @@ -106,7 +62,10 @@ label: centos-9-stream - name: secondary label: centos-9-stream - groups: *NODESET_GROUPS + groups: &NODESET_GROUPS + - name: undercloud + nodes: + - secondary - job: diff --git a/zuul.d/project.yaml b/zuul.d/project.yaml index 1139e45c4..a8490a3b1 100644 --- a/zuul.d/project.yaml +++ b/zuul.d/project.yaml @@ -17,8 +17,6 @@ - devstack-tobiko-storage - docs-on-readthedocs - openstack-cover-jobs - - openstack-python3-yoga-jobs - - openstack-python3-yoga-jobs-arm64 - openstack-python3-zed-jobs - openstack-python3-zed-jobs-arm64 - publish-to-pypi