Bug 2264918

Summary: Support Satellite Ansible Collection running on Python 3.12
Product: Red Hat Satellite Reporter: Odilon Sousa <osousa>
Component: InstallationAssignee: Odilon Sousa <osousa>
Status: CLOSED ERRATA QA Contact: Lukas Pramuk <lpramuk>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 6.15.0CC: lpramuk, osousa, rlavi
Target Milestone: 6.13.7Keywords: Triaged
Target Release: Unused   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: ansible-collection-redhat-satellite-3.9.0-3.el8sat Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: 2264353 Environment:
Last Closed: 2024-02-29 20:35:18 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:

Description Odilon Sousa 2024-02-19 16:29:39 UTC
+++ This bug was initially created as a clone of Bug #2264353 +++

Description of problem:
Ansible will start using Python 3.12 in EL8 when it's updated to 2.16.3-2[1]

We need to ensure our collection pulls in the right dependencies for that Python version, as otherwise things might break.

[1] https://kojihub.stream.centos.org/koji/buildinfo?buildID=50584

Version-Release number of selected component (if applicable):
Any supported Satellite versions on EL8

How reproducible:
100%

Steps to Reproduce:
1. install ansible-core 2.16.3-2 (or newer)
2. run an Ansible role via Satellite

Actual results:
Execution works, but there is no report in Satellite

Expected results:
report works as it did before

Additional info:
Previously: BZ#2170034
Upstream: https://github.com/theforeman/foreman-packaging/pull/10428

Comment 1 Lukas Pramuk 2024-02-27 16:49:14 UTC
VERIFIED.

@Satellite 6.13.7 Snap2
ansible-collection-redhat-satellite-3.9.0-3.el8sat.noarch

A) by this simple reproducer:

# rpm -qR ansible-collection-redhat-satellite | grep core
(ansible >= 2.9 or ansible-core)
(python3.11-pyyaml if (ansible-core >= 2.14.2-3 and ansible-core < 2.16.3-2))
(python3.11-requests if (ansible-core >= 2.14.2-3 and ansible-core < 2.16.3-2))
(python3.12-pyyaml if ansible-core >= 2.16.3-2)
(python3.12-requests if ansible-core >= 2.16.3-2)
(python38-pyyaml if ansible-core < 2.13)
(python38-requests if ansible-core < 2.13)
(python39-pyyaml if (ansible-core >= 2.13 and ansible-core < 2.14.2-3))
(python39-requests if (ansible-core >= 2.13 and ansible-core < 2.14.2-3))

# rpm -qR rubygem-smart_proxy_ansible | grep runner
ansible-runner >= 2

>>> requirements are RHEL8.10 ready


B) by running Satellite in-place upgrade of RHEL to RHEL-8.10 (using internal RHEL candidate repo)

# dnf repolist
...
repo id                                                                           repo name
AppStream                                                                         AppStream
BaseOS                                                                            BaseOS
Satellite_Engineering_Satellite_6_13_Composes_Satellite_6_13_RHEL8                Satellite 6.13 RHEL8
Satellite_Engineering_Satellite_6_13_Composes_Satellite_Maintenance_6_13_RHEL8    Satellite Maintenance 6.13 RHEL8

# satellite-maintain upgrade run --target-version 6.13.z -w repositories-setup,repositories-validate -y 
...
Update package(s) :                                                   [OK]
--------------------------------------------------------------------------------
Procedures::Installer::Upgrade:                                       [OK]
--------------------------------------------------------------------------------
Execute upgrade:run rake task:                                        [OK]
--------------------------------------------------------------------------------
...
--------------------------------------------------------------------------------
Upgrade finished.

>>> there are now no dependency issues on RHEL-8.10 as in-place upgrade to RHEL-8.10 is successful

C) by running Ansible REX at Satellite on RHEL-8.10

# 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]: ANSIBLE_COLLECTIONS_PATHS option, does not fit var 
naming standard, use the singular form ANSIBLE_COLLECTIONS_PATH instead. This 
feature will be removed from ansible-core in version 2.19. Deprecation warnings
 can be disabled by setting deprecation_warnings=False in ansible.cfg.
...

PLAY RECAP *********************************************************************
satellite.example.com : ok=6    changed=1    unreachable=0    failed=0    skipped=8    rescued=0    ignored=0
Exit status: 0

# hammer config-report list --search host=$(hostname),applied=1
---|------------------------------------------------|---------------------|---------|---------|-----------|--------|------------------|---------|--------
ID | HOST                                           | LAST REPORT         | ORIGIN  | APPLIED | RESTARTED | FAILED | RESTART FAILURES | SKIPPED | PENDING
---|------------------------------------------------|---------------------|---------|---------|-----------|--------|------------------|---------|--------
1  | satellite.example.com                          | 2024/02/27 11:51:20 | Ansible | 1       | 0         | 0      | 0                | 8       | 0      
---|------------------------------------------------|---------------------|---------|---------|-----------|--------|------------------|---------|--------

>>> REX action and namely 'redhat.satellite.foreman' callback finished successfully

Comment 7 errata-xmlrpc 2024-02-29 20:35:18 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 (Moderate: Red Hat Satellite 6 security and bug fix 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-2024:1061