A new version of qpid-proton was released to EPEL 7. This required us to get a release of the qpid_proton gem at version 0.35.0 and then build tfm-rubygem-qpid_proton across all applicable Katello’s and release it.
However, there seems to be a bigger issue this time around:
I’m going to weigh in here, as a user/admin, not as a developer.
I’d suspect that from a long term maintainability perspective that updating gofer to Python 3 is the closest to an ideal solution. It’s probably more work in the short term. Python 2, though, is effectively dead, and efforts probably should be made to leave that environment. I’m not sure that’s it’s reasonable to ask the EPEL folks to maintain a specific package for this, and setting up your own build stack seems like effort that could be better spent elsewhere.
I also came to the conclusion that gofer is our only consumer of it. We already build it against Python 3 for EL8 so I’d expect it to work on EL7 as well. The only consumer of gofer is katello-host-tools. That only has minimal dependencies. However, it does have a lot of conditionals for various distros and versions.
My preference is pretty much the order you posted: first try to ask the maintainers for python-qpid-proton. It’d be the safest also for existing installations. If they don’t want to, I’d prefer change our stack to use Python 3.
From a user’s perspective, I’d agree that trying to convince EPEL maintainers to keep pulishing python2 versions of the package would be the best solution. We hit this problem last week when trying to update our old stack (Katello 3.15) to a current release. Assuming that we most likely are not the only folks stuck on an old version, fixing this for everyone on the Foreman/Katello side of things would mean that either a lot of old versions would need updating or that only some people get a fix for a problem everyone is facing.
As much as I dislike using EPEL will be actively unsupported on EL8, I am as much looking forward to not having my update procedure broken (again) due to EPEL maintainers deciding to release another breaking change.
On a side note: What are we actually still using gofer and qpid for? As far as I am aware and from what I found in the changelog, Katello’s internal communication has switched from qpid to Artemis with 3.16. Is it only katello-agent that still relies on qpid? If so, katello-agent has been deprecated since 3.15, so maybe this would be a good reason to let go sooner rather than later, since updates in EPEL broke the qpid stack multiple times over the last few years.
There is the need to have a solution using pull instead of push in some environments, so removal has to wait until the pull-based provider for REX is ready and then there will be one release offering both options for an easier upgrade, but I am also happy when it is gone!
You are both correct: gofer and qpid are needed for katello-agent. It is indeed also deprecated, but there is no pull replacement. For actively reachable machines (using SSH) it is indeed entirely possible to avoid the issue that is now left. If you need to pull (other than with a cronjob or similar tools) there’s nothing to replace it yet.
So Python2 is not supported in qpid-proton 0.35 (which I find totally understandable) and thus the build was disabled.
However, the qpid team operates a copr, which contains a 0.34 build that should also work with the 0.35 library. I’m currently running a CentOS7 pipeline with that copr enabled, but purely looking at the package metadata I tend to agree, this should work for us.
Now, waiting on the pipeline, I wonder how we should utilize and communicate this.
For our pipelines to work, it’d be sufficient to add the copr to the katello_repositories role we have, and stuff will turn green again.
But what about users? They’d need to enable that copr on every client system that is still using katello-agent. Is that “good enough” given katello-agent is technically deprecated?
It starts working once I do yum downgrade python36-qpid-proton-0.34.0-2.el7.x86_64 qpid-proton-c-0.34.0-2.el7.x86_64 https://yum.theforeman.org/katello/4.1/katello/el7/x86_64/tfm-rubygem-qpid_proton-0.34.0-3.el7.x86_64.rpm, but with 0.35 it seems Katello doesn’t talk to Qpid properly
Encountered this issue while updating 4.18, and was able to work around it by excluding the packages with yum update -x qpid-proton-c,qpid-dispatch-router
If we don’t use katello-agent (we use subscription-manager on RHEL), is there a way to just remove the support from the foreman/katello server so qpid is no longer needed?
Maybe its foreman-installer -S katello --foreman-proxy-content-enable-katello-agent false
This works well, but qpid-proton still can’t uninstall because of dependency on katello and tfm-rubygem-katello package. (Foreman 2.5.3)