Bug 2132999

Summary: Satellite can not be installed on RHEL 8.7
Product: Red Hat Satellite Reporter: Odilon Sousa <osousa>
Component: PackagingAssignee: satellite6-bugs <satellite6-bugs>
Status: CLOSED ERRATA QA Contact: Lukas Pramuk <lpramuk>
Severity: high Docs Contact:
Priority: high    
Version: 6.11.3CC: egolov, lvrtelov, mhulan, osousa, pcreech, rplevka
Target Milestone: 6.11.4Keywords: EasyFix, Triaged
Target Release: Unused   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: satellite-6.11.4-2,rubygem-smart_proxy_ansible-3.3.1-4,ansible-collection-redhat-satellite-3.6.0-3 Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: 2125585 Environment:
Last Closed: 2022-10-27 13:08:49 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Comment 3 Lukas Pramuk 2022-10-18 21:44:45 UTC
FailedQA.

@Satellite 6.11.4 Snap1
rubygem-smart_proxy_ansible-3.3.1-3.el8sat.noarch

by the following steps:

1) Install Satellite 6.11.4 on RHEL8.7 RC

2) Download a role by ansible-galaxy
# ansible-galaxy install -p /etc/ansible/roles adriagalin.motd

3) Import ansible roles and vars 
# hammer ansible roles import --proxy-id 1
# hammer ansible variables import --proxy-id 1

4) Assign the role to a host which is setup for REX
# curl -k https://$(hostname):9090/ssh/pubkey >> ~/.ssh/authorized_keys

5) Play the roles for the host and monitor the output
# jobid=$(hammer --csv host ansible-roles play --name $(hostname) | awk -F, 'NR>1{print$2}')
# hammer job-invocation output --id $jobid --host $(hostname)
...
[DEPRECATION WARNING]: [defaults]callback_whitelist option, normalizing names 
to new standard, use callbacks_enabled instead. This feature will be removed 
from ansible-core in version 2.15. Deprecation warnings can be disabled by 
setting deprecation_warnings=False in ansible.cfg.
ERROR! Unexpected Exception, this is probably a bug: No module named 'psutil'
to see the full traceback, use -vvv
Exit status: 250

>>> the rubygem rubygem-smart_proxy_ansible is missing conditional requires of python39-psutil when ansible-core 2.13 is installed 

Requires: (python39-psutil if ansible-core >= 2.13)

Comment 5 Lukas Pramuk 2022-10-19 13:57:58 UTC
FailedQA.

@Satellite 6.11.4 Snap2
rubygem-smart_proxy_ansible-3.3.1-4.el8sat.noarch

psutil requires is now ok, both python3.6 and python3.9 psutil is installed:

# rpm -qa *psutil*
python3-psutil-5.7.2-2.el8sat.x86_64
python39-psutil-5.8.0-4.module+el8.4.0+9822+20bf1249.x86_64

# rpm -qR rubygem-smart_proxy_ansible | grep psutil
(python38-psutil if ansible-core < 2.13)
(python39-psutil if ansible-core >= 2.13)


But there yet missing python39-requests for the callback:

# jobid=$(hammer --csv host ansible-roles play --name $(hostname) | awk -F, 'NR>1{print$2}')
[root@dhcp-3-73 ~]# hammer job-invocation output --id $jobid --host $(hostname)
[DEPRECATION WARNING]: [defaults]callback_whitelist option, normalizing names 
to new standard, use callbacks_enabled instead. This feature will be removed 
from ansible-core in version 2.15. Deprecation warnings can be disabled by 
setting deprecation_warnings=False in ansible.cfg.
[WARNING]: The `requests` python module is not installed Disabling the Foreman
callback plugin.
[WARNING]: Skipping callback 'redhat.satellite.foreman', unable to load due to:
name 'requests' is not defined

# rpm -qa *requests*
python3-requests-2.20.0-2.1.el8_1.noarch
python38-requests-2.26.0-3.el8pc.noarch

>>> we need that same conditional Requires trick considering both ansible-core 2.12, 2.13 and both pythons 3.8, 3.9 also for `requests` (not only `psutil`)

Comment 6 Lukas Pramuk 2022-10-19 14:01:17 UTC
The fix needs to go in ansible-collection-redhat-satellite rpm:

   (python38-requests if ansible-core) is needed by (installed) ansible-collection-redhat-satellite-3.6.0-1.el8sat.noarch

Comment 11 Lukas Pramuk 2022-10-21 13:29:02 UTC
VERIFIED.

@Satellite 6.11.4 Snap2
rubygem-smart_proxy_ansible-3.3.1-4.el8sat.noarch
ansible-collection-redhat-satellite-3.6.0-3.el8sat.noarch

by the manual reproducer described in comment#3:
...

5) Play the roles for the host and monitor the output
# jobid=$(hammer --csv host ansible-roles play --name $(hostname) | awk -F, 'NR>1{print$2}')
# hammer job-invocation output --id $jobid --host $(hostname)
[DEPRECATION WARNING]: [defaults]callback_whitelist option, normalizing names 
to new standard, use callbacks_enabled instead. This feature will be removed 
from ansible-core in version 2.15. Deprecation warnings can be disabled by 
setting deprecation_warnings=False in ansible.cfg.


PLAY [all] *********************************************************************
...
PLAY RECAP *********************************************************************
<host_fqdn> : ok=6    changed=1    unreachable=0    failed=0    skipped=8    rescued=0    ignored=0
Exit status: 0

>>> playing roles finished successfully 

# rpm -qR rubygem-smart_proxy_ansible ansible-collection-redhat-satellite | grep python3[89]
(python38-psutil if ansible-core < 2.13)
(python39-psutil if ansible-core >= 2.13)
(python38-pyyaml if ansible-core < 2.13)
(python38-requests if ansible-core < 2.13)
(python39-pyyaml if ansible-core >= 2.13)
(python39-requests if ansible-core >= 2.13)

>>> python requires are now sorted out to distinguish on python versions for each ansible-core version

Comment 16 errata-xmlrpc 2022-10-27 13:08:49 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory (Important: Satellite 6.11.4 Async Security Update), and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://access.redhat.com/errata/RHSA-2022:7242