Short summary:
- A new RPM katello-release will be created in the Foreman repo
- katello-release will obsolete katello-repos
- katello-release will conflict with foreman-release
Background
Today we have a foreman-release
RPM (like https://yum.theforeman.org/releases/latest/el8/x86_64/foreman-release.rpm) containing the GPG key and yum’s foreman.repo
and foreman-plugins.repo
. Then there’s a katello-repos
RPM (like https://yum.theforeman.org/katello/4.5/katello/el8/x86_64/katello-repos-latest.rpm) which depends on foreman-release
(without a version) and adds katello.repo
.
Additionally, there’s also a foreman-client-release
which is for the foreman-client
repository.
The Foreman repositories follow Foreman’s version number (like /releases/3.3 and /plugins/3.3) while Katello repos use Katello’s version number (like /katello/4.5).
The user is required to find the right combination to install. A mismatch can’t work. This adds a burden on users.
Introducing a new katello-release RPM package
The new RPM package will contain all the needed .repo
files. This means users can’t mismatch anymore.
To reduce maintenance efforts, it is proposed that it becomes a subpackage of foreman-release
. There we already have all the needed files, removing the need to duplicate them. It is painful to publish a subpackage from to a different repository, so it is easier if we publish the package in the Foreman repository, just like we publish foreman-installer-katello
there already.
It should obsolete katello-repos
with a version constraint that depends on the branch. For example, katello-release-3.4.0
(which brings Katello 4.6) should obsolete katello-repos < 4.7
.
On a technical level foreman-release
and katello-release
should conflict with each other. This does mean migration for existing katello users can be harder. An obsoletes on older foreman-release
versions may result in existing foreman users getting the katello release file instead. The upgrade instructions can suggest dnf install --allowerasing
which means DNF can do the swap for the user. The alternative is an explicit removal. This should be verified in practice.
Additionally, we have code to maintain the foreman-release.rpm
symlink (which points to the latest version). This should be enhanced to also deal with katello-release
. The code for that is here:
Considerations
This does not change the structure on yum.theforeman.org. Changing that takes more time and introducing a new katello-release
RPM is a quick win. Additionally, if the repositories do change in the future, this change makes it easier because the installation instructions won’t change.
Users syncing the repositories themselves (for offline access or otherwise) still need to match up versions. For them this is no solution. However, they can read the files in katello-release
so see which repositories they need to sync.
Timeline
Due to priorities we will only start this work after Foreman 3.4 has been branched. This means it will be unlikely to land in RC1, but it can be included in RC2. If this works well, it can even be introduced in stable branches, but initially that’s considered out of scope.