-
Bug
-
Resolution: Done-Errata
-
Undefined
-
6.13.0, 6.14.0, 6.15.0
Description of problem:
The foreman-protector plugin relies on specific sub-command executions by yum\dnf because of the way it is designed and works as expected when someone is trying to use dnf\yum to install\update packages on a satellite or capsule.
But if a user has dnf-automatic enabled and configured, Then dnf-automatic fails to load and use the foreman-protector plugin and proceeds with OS patching when OS updates were available.
How reproducible:
Always
Is this issue a regression from an earlier version:
No
Steps to Reproduce:
1. On a Satellite 6.14 or 6.15, configure dnf-automatic plugin
2. Set download_updates to yes and apply_updates to no in /etc/dnf/automatic.conf
3. Run the command `/usr/bin/dnf-automatic` manually instead for waiting for it to start as per schedule.
Actual behavior:
# /usr/bin/dnf-automatic Updating Subscription Management repositories. Traceback (most recent call last): File "/usr/lib/python3.6/site-packages/dnf/plugin.py", line 107, in _caller getattr(plugin, method)() File "/usr/lib/python3.6/site-packages/dnf-plugins/foreman-protector.py", line 54, in sack if self.cli is not None and self.cli.command._basecmd not in PROTECT_COMMANDS: AttributeError: 'NoneType' object has no attribute '_basecmd' The following updates were downloaded on 'satellite614.example.com': ============================================================================================================================== Package Arch Version Repository Size ============================================================================================================================== Installing: kernel x86_64 4.18.0-553.16.1.el8_10 rhel-8-for-x86_64-baseos-rpms 10 M kernel-core x86_64 4.18.0-553.16.1.el8_10 rhel-8-for-x86_64-baseos-rpms 43 M .. .. systemd-pam x86_64 239-82.el8_10.1 rhel-8-for-x86_64-baseos-rpms 513 k systemd-udev x86_64 239-82.el8_10.1 rhel-8-for-x86_64-baseos-rpms 1.6 M wget x86_64 1.19.5-12.el8_10 rhel-8-for-x86_64-appstream-rpms 734 k Transaction Summary ============================================================================================================================== Install 3 Packages Upgrade 80 Packages The downloaded packages were saved in cache until the next successful transaction. You can remove cached packages by executing 'dnf clean packages'.
Probably because of the way we define and evaluate the `PROTECT_COMMANDS` values
- grep PROTECT_COMMANDS /usr/lib/python3.6/site-packages/dnf-plugins/foreman-protector.py -A2
PROTECT_COMMANDS = ('install', 'downgrade', 'reinstall', 'distro-sync', 'swap', 'upgrade', 'upgrade-minimal')
class ForemanProtector(dnf.Plugin):
–
if self.cli is not None and self.cli.command._basecmd not in PROTECT_COMMANDS:
return
whitelist_and_obsoletes = self._add_obsoletes()
Expected behavior:
It should not throw any traceback and behave the same way as normal yum\dnf command does.
Business Impact / Additional info:
We don't mention anywhere about not using dnf-automatic on satellite or capsules and hence there's nothing blocking the users from configuring it who wants their OS to be up-to-date . But that often breaks satellite since no installer execution would be done.
- links to
-
RHBA-2024:140284 Important: Satellite 6.16.0 release