From 21ed95f9b67e15a5c4820b35d239afa6fef0d1fa Mon Sep 17 00:00:00 2001 From: Elod Illes Date: Mon, 9 Dec 2024 12:47:49 +0100 Subject: [PATCH] [CI] Use compatible version of heat-tempest-plugin This is a combination of five patch to fix the gate: 1. Use compatible version of heat-tempest-plugin heat-tempest-plugin dropped py38 support, hence it cannot be installed from recent master, so we need to override the checkout to the version that still supports py38 and compatible to the actual branch. This is needed both for the grenade job and the functional job, because these are using the heat-tempest-plugin. 2. Try archive path to download Fedora image This is a temporal workaround to allow downloading Fedora 37 image which was moved to the archive path. 3. Remove reference to devstack-gate devstack-gate was deprecated in xena and is being retired now[1]. 4. [stable-only] Cap setuptools <71.0.0 py39 jobs (on ubuntu-focal) started to fail due to recent virtualenv release (20.26.4) on Yoga (which bundles setuptools), because we have 'packaging==21.3' in this branch that is not compatible with newer setuptools [2]. setuptools is bundled in virtualenv, so it has to be capped via the virtualenv package. tox also needed to be capped (<4) as gate uses tox 3.28.0, but with capping virtualenv we pull in latest tox as well, which would cause other errors. 5. Set functional jobs as non-voting heat-functional jobs try to install python-zaqarclient (via zaqar project) from master branch, but on master the client dropped py38 support, hence the jobs fail. This patch sets it non-voting as a quick workaround until a final fix arrives. [1] https://review.opendev.org/c/openstack/governance/+/919629 [2] https://github.com/pypa/setuptools/issues/4483 Changes: .zuul.yaml NOTE(elod.illes): change in .zuul.yaml is to adapt the patch to the current branch ('-last' needs to be used). Change-Id: I9b1702749976a2cea42a24130e5fec2931b75ce1 (cherry picked from commit a806b400cf5766f1e675798e501aa32416dc0939) (cherry picked from commit ae6225890e5e604bd8ed71a5964838a690229f45) (cherry picked from commit 4fd9953a55c15e1d6d0bfb8f648d03d9e368fc3b) (cherry picked from commit 81a8b93254842150db98b5fc1388188d67e223f0) (cherry picked from commit 665ccfc2626f88b422d1c0db07d63556f208a908) (cherry picked from commit c18b344591c8f2cdb9555c1a8753c7f1bda5fed1) (cherry picked from commit dcf7403635db6675eec36740739432715df091ee) --- .zuul.yaml | 25 ++++++++++++++++++------- devstack/lib/heat | 7 +++++-- tox.ini | 6 ++++++ 3 files changed, 29 insertions(+), 9 deletions(-) diff --git a/.zuul.yaml b/.zuul.yaml index 8ec2315a0e..5c17a19e9f 100644 --- a/.zuul.yaml +++ b/.zuul.yaml @@ -10,11 +10,11 @@ - zuul: opendev.org/openstack/devstack - zuul: opendev.org/openstack/tempest required-projects: - - openstack/devstack-gate - openstack/barbican - openstack/heat - openstack/heat-templates - - openstack/heat-tempest-plugin + - name: opendev.org/openstack/heat-tempest-plugin + override-checkout: yoga-last - openstack/octavia - openstack/neutron - openstack/oslo.messaging @@ -139,7 +139,8 @@ voting: false required-projects: - opendev.org/openstack/heat - - opendev.org/openstack/heat-tempest-plugin + - name: opendev.org/openstack/heat-tempest-plugin + override-checkout: yoga-last - opendev.org/openstack/python-heatclient vars: grenade_devstack_localrc: @@ -197,10 +198,20 @@ check: jobs: - grenade-heat-multinode - - heat-functional - - heat-functional-legacy + # NOTE(elod.illes): functional jobs are failing due to + # python-zaqarclient dropped py38 support and even on + # this old branch the client is installed from master + # as a quick workaround this is now set as non-voting + - heat-functional: + voting: false + - heat-functional-legacy: + voting: false gate: jobs: - grenade-heat-multinode - - heat-functional - - heat-functional-legacy + # NOTE(elod.illes): functional jobs are failing due to + # python-zaqarclient dropped py38 support and even on + # this old branch the client is installed from master + # as a quick workaround this is now removed from gate + # - heat-functional + # - heat-functional-legacy diff --git a/devstack/lib/heat b/devstack/lib/heat index 4e76fe4a26..bf6ecc0b40 100644 --- a/devstack/lib/heat +++ b/devstack/lib/heat @@ -478,11 +478,14 @@ function configure_tempest_for_heat { source /etc/ci/mirror_info.sh fi HEAT_TEST_FEDORA_IMAGE_UPSTREAM=https://download.fedoraproject.org/pub/fedora/linux + HEAT_TEST_FEDORA_IMAGE_UPSTREAM_ARCHIVE=https://download.fedoraproject.org/pub/archive/fedora/linux/ HEAT_TEST_FEDORA_IMAGE_PATH=releases/37/Cloud/x86_64/images/Fedora-Cloud-Base-37-1.7.x86_64.qcow2 - if curl --output /dev/null --silent --head --fail "${NODEPOOL_FEDORA_MIRROR}/${HEAT_TEST_FEDORA_IMAGE_PATH}"; then + if curl --location --output /dev/null --silent --head --fail "${NODEPOOL_FEDORA_MIRROR}/${HEAT_TEST_FEDORA_IMAGE_PATH}"; then export HEAT_TEST_FEDORA_IMAGE="${NODEPOOL_FEDORA_MIRROR}/${HEAT_TEST_FEDORA_IMAGE_PATH}" - else + elif curl --location --output /dev/null --silent --head --fail "${HEAT_TEST_FEDORA_IMAGE_UPSTREAM}/${HEAT_TEST_FEDORA_IMAGE_PATH}"; then export HEAT_TEST_FEDORA_IMAGE="${HEAT_TEST_FEDORA_IMAGE_UPSTREAM}/${HEAT_TEST_FEDORA_IMAGE_PATH}" + else + export HEAT_TEST_FEDORA_IMAGE="${HEAT_TEST_FEDORA_IMAGE_UPSTREAM_ARCHIVE}/${HEAT_TEST_FEDORA_IMAGE_PATH}" fi TOKEN=$(openstack token issue -c id -f value) local image_exists=$( openstack image list | grep "Fedora-Cloud-Base-37-1.7.x86_64" ) diff --git a/tox.ini b/tox.ini index b70f48a982..382a98e1b5 100644 --- a/tox.ini +++ b/tox.ini @@ -3,6 +3,12 @@ envlist = py36,py37,py38,pep8 ignore_basepython_conflict = True minversion = 3.1.0 skipsdist = True +# Cap setuptools via virtualenv to prevent compatibility issue with yoga +# branch's upper constraint of 'packaging' package (21.3). +requires = + virtualenv<20.26.4 + tox<4 + setuptools<71.0.0 [testenv] basepython = python3