<div dir="ltr"><div><br>There were several problems with the keystoneclient stable/juno branch that have been or are in the process of being fixed since its creation. Hopefully this note will be useful to other projects that create stable branches for their libraries.<br><br><br>1) Unit tests didn't pass with earlier packages<br><br>The supported versions of several of the packages in requirements.txt in the stable branch are in the process of being capped[0], so that the tests are now running with older versions of the packages. Since we don't normally test with the older packages we didn't know that the keystoneclient unit tests don't actually pass with the old version of the package. This is fixed by correcting the tests to work with the older versions of the packages.[1][2]<br><br>[0] <a href="https://review.openstack.org/#/c/172220/">https://review.openstack.org/#/c/172220/</a><br>[1] <a href="https://review.openstack.org/#/c/172655/">https://review.openstack.org/#/c/172655/</a><br>[2] <a href="https://review.openstack.org/#/c/172256/">https://review.openstack.org/#/c/172256/</a><br><br>It would be great if we were testing with the minimum versions of the packages that we say we support somehow since that would have caught this.<br><br><br>2) Incorrect cap in requirements.txt<br><br>python-keystoneclient in stable/juno was capped at <=1.1.0, and 1.1.0 is the version tagged for the stable branch. When you create a review in stable/juno it installs python-keystoneclient and now the system has got a version like 1.1.0.post1, which is >1.1.0, so now python-keystoneclient doesn't match the requirements and swift-proxy fails to start (swift-proxy is very good at catching this problem for whatever reason). The cap should have been <1.2.0 so that we can propose patches and also make fix releases (1.1.1, 1.1.2, etc.).[3]<br><br>[3] <a href="https://review.openstack.org/#/c/172718/">https://review.openstack.org/#/c/172718/</a><br><br>I tried to recap all of the clients but that didn't pass Jenkins, probably because one or more clients didn't use semver correctly and have requirements updates in a micro release.[4]<br><br>[4] <a href="https://review.openstack.org/#/c/172719/">https://review.openstack.org/#/c/172719/</a><br><br><br>3) Unsupported functional tests<br><br>We added support for functional tests (tox -e functional) in K, but Jenkins was configured to run the functional job on all branches and it fails when the tox target doesn't exist. The fix was to exclude the current stable/ branches for keystoneclient.[5]<br><br>[5] <a href="https://review.openstack.org/#/c/172658/">https://review.openstack.org/#/c/172658/</a><br><br><br>4) Tempest -juno job?<br><br>For some reason keystoneclient has 2 tempest-neutron jobs: gate-tempest-dsvm-neutron-src-python-keystoneclient and ...-keystoneclient-juno , and the -juno job is failing in stable/juno. It didn't make sense to me that we needed to run both in python-keystoneclient stable/juno. I was told that we didn't need the -juno one anymore on any branch since we have a stable/juno branch, so that job is removed.[6]<br><br>[6] <a href="https://review.openstack.org/#/c/172662/">https://review.openstack.org/#/c/172662/</a><br><br><br>Hopefully with these changes the python-keystoneclient stable/juno branch will be working.<br><br></div>- Brant<br><br></div>