openstack-charmers / zaza-openstack-tests

OpenStack Charms Functional Test Library for Zaza
Apache License 2.0
7 stars 77 forks source link

any CI that uses openstack-tox-py36 will fail #1165

Open zhhuabj opened 10 months ago

zhhuabj commented 10 months ago

platformdirs>=3 was introduced into openstacksdk by the fix b34de32a5 [1], it only exists in openstack sdk master branch.

but python-ironicclient is using openstacksdk>=0.18.0, charm-nova-cloud-controller will call zaza.openstack then call python-ioricclient, and python3.6 doesn't have platformdirs>=3, so any releases using openstack-tox-py36 like U, V, W, X will throw the following exception.

ERROR: Could not find a version that satisfies the requirement platformdirs>=3 (from openstacksdk>=0.18.0->python-ironicclient->zaza.openstack->-r /home/zuul/src/opendev.org/openstack/charm-nova-cloud-controller/test-requirements.txt (line 37)) (from versions: 2.0.0a1, 2.0.0a2, 2.0.0a3, 2.0.0, 2.0.2, 2.1.0, 2.2.0, 2.3.0, 2.4.0) ERROR: No matching distribution found for platformdirs>=3 (from openstacksdk>=0.18.0->python-ironicclient->zaza.openstack->-r /home/zuul/src/opendev.org/openstack/charm-nova-cloud-controller/test-requirements.txt (line 37))

You can see lot of CI failure from this page [2], all failed CIs are using openstack-tox-py36

[1] https://github.com/openstack/openstacksdk/blob/master/requirements.txt [2] https://review.opendev.org/q/topic:bug%252F2021550

ajkavanagh commented 10 months ago

So, a couple of interesting things here.

  1. Only ussuri needs to test against py36, to support bionic-ussuri. victoria, wallaby, xena+ are focal only (py38).
  2. We can pin openstacksdk < 2.0 to stop this issue. It probably needs pinning for everything < master as 2.0 'only' came out on Oct 19, which is after the bobcat/2023.2 release.
  3. We should actually be quite strict and pin aggressively using pip-compile. However, I expect that that will come with a world of pain as we'll have incompatible pinning through the libraries (especially zaza vs zaza-openstack-tests). Thus pinning for zaza and zaza-openstack-tests will need to be done in concert.