Bug 2264920

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: egolov, lpramuk, osousa, rlavi
Target Milestone: 6.12.5Keywords: Triaged
Target Release: Unused   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: ansible-collection-redhat-satellite-3.7.0-5 Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: 2264353 Environment:
Last Closed: 2024-04-22 18:51:34 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:32:41 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 5 Lukas Pramuk 2024-03-11 12:48:50 UTC
VERIFIED.

@Satellite 6.12.5.3 Snap2
ansible-collection-redhat-satellite-3.7.0-5.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-8.10.0-updates-20240311.60 candidate repo)

# dnf repolist
...
repo id                                                                           repo name
AppStream                                                                         AppStream
BaseOS                                                                            BaseOS
Satellite_Engineering_Satellite_6_12_Composes_Satellite_6_12_RHEL8                Satellite 6.12 RHEL8
Satellite_Engineering_Satellite_6_12_Composes_Satellite_Maintenance_6_12_RHEL8    Satellite Maintenance 6.12 RHEL8

# satellite-maintain upgrade run --target-version 6.12.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 inplace 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]: [defaults]collections_paths option, does not fit var 
naming standard, use the singular form 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 *********************************************************************
sat.example.com : ok=6    changed=1    unreachable=0    failed=0    skipped=8    rescued=0    ignored=0
Exit status: 0

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

# hammer config-report list --search host=$(hostname),applied=1
---|----------------------------|---------------------|---------|---------|-----------|--------|------------------|---------|--------
ID | HOST                       | LAST REPORT         | ORIGIN  | APPLIED | RESTARTED | FAILED | RESTART FAILURES | SKIPPED | PENDING
---|----------------------------|---------------------|---------|---------|-----------|--------|------------------|---------|--------
1  | sat.example.com            | 2024/03/11 12:19:45 | Ansible | 1       | 0         | 0      | 0                | 8       | 0      
---|----------------------------|---------------------|---------|---------|-----------|--------|------------------|---------|--------

>>> Ansible callback plugin successfully reports to Satellite

Comment 10 errata-xmlrpc 2024-04-22 18:51:34 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 (Satellite 6.12.5.3 Async 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/RHBA-2024:1958