On 2021-09-08 10:27:50 +0200 (+0200), Thomas Goirand wrote: [...]
Ok, so your recommendation is that, for each and every component that is marked release-independent, I should be checking the global requirements. I just wrote that this is unrealistic that a human does such a check.
I'm not saying that a human needs to check it, in fact that file is machine-readable (it's used as input to pip but it's quite trivial to parse). What I said is that it's what we have now, and probably the closest thing we have to what you're asking for. It's a list of what exact versions of dependencies we test the software with, nothing more. We effectively freeze and branch that list whenever a new coordinated release of OpenStack happens, and then only adjust it to reflect stable point releases of our cycle-based deliverables. Any independent release deliverables in there are still basically frozen, treated just like any other "external" dependency of OpenStack. If it helps, we also maintain a redirector service which routes URLs like https://releases.openstack.org/constraints/upper/wallaby to a raw download of the correct file. We also make sure the codename for the cycle currently in progress is supported, so that you can begin using it in preparation for the next coordinated release.
If you didn't know, in Debian, Michal Arbet (who co-maintains OpenStack with me together in Debian) wrote this: [...] Thanks to this page, anyone can know the status of OpenStack packaging on all the different branches we maintain. If you look at it right now, you'll notice that we're up-to-date, as we packaged all non-clients and all clients library, but we didn't package new versions of the puppet manifests yet (I'm waiting for the RCs to do that).
That's very cool!
If you click on the buster-victoria button, and look for Taskflow, you'll see that it's up-to-date. If you click on bullseye-xena, and search for Taskflow, you will ... find nothing! That's because taskflow doesn't appear in https://releases.openstack.org/xena/index.html since it is release-independent. As a result, I'm left with no other choice than being very careful and manually check the global-requirements. [...]
wget -qO- https://releases.openstack.org/constraints/upper/wallaby \ | grep -i ^taskflow= wget -qO- https://releases.openstack.org/constraints/upper/xena \ | grep -i ^taskflow= Its not ideal, no, but it's fairly straightforward (not that I would do it in shell script, but parsing that with the re module in Python's stdlib is trivial, or you could use something like the packaging.requirements parser from python3-packaging). As an aside, parsing HTML is very fiddly, you might consider directly consuming the structured data maintained in the openstack/releases repository as it's far easier to script (it's YAML). I believe the openstack_releases Python package even provides modules for parsing those. -- Jeremy Stanley