Bug #34444
closedModule streams enabled by default are gone when CV starts using filters
Description
Clone from bugzilla https://bugzilla.redhat.com/show_bug.cgi?id=2050100
Description of problem:
-----------------------
Module streams are not working as expected in Red Hat Satellite 6.10.2-1. On a RHEL 8 content host registered to Red Hat Satellite 6.10.2-1, module streams that should be enabled by default aren't. User has to enable them manually on the content host. For example by running:
~~~
# yum module enable python36:3.6 ruby:2.5
~~~
Otherwise, errors like this one are encountered:
~~
Execution of '/usr/bin/dnf -d 0 -e 1 -y list python36' returned 1: Error: No matching Packages to list
[...]
change from 'purged' to 'present' failed: Execution of '/usr/bin/dnf -d 0 -e 1 -y install rubygem-foreman_scap_client' returned 1: Error:
Problem: package rubygem-foreman_scap_client-0.5.0-1.el8sat.noarch requires ruby(release), but none of the providers can be installed
- cannot install the best candidate for the job
- package ruby-libs-2.5.3-104.module+el8.0.0+3250+4b7d6d43.i686 is filtered out by modular filtering
- package ruby-libs-2.5.5-105.module+el8.1.0+3656+f80bfa1d.i686 is filtered out by modular filtering
- package ruby-libs-2.7.4-137.module+el8.4.0+12025+f744ca41.x86_64 is filtered out by modular filtering
- package ruby-libs-2.5.5-106.module+el8.3.0+7153+c6f6daa5.i686 is filtered out by modular filtering
- package ruby-libs-2.5.5-106.module+el8.3.0+7153+c6f6daa5.x86_64 is filtered out by modular filtering
- package ruby-libs-2.7.1-133.module+el8.3.0+7192+4e3a532a.i686 is filtered out by modular filtering
- package ruby-libs-2.5.9-107.module+el8.4.0+10822+fe4fffb1.x86_64 is filtered out by modular filtering
- package ruby-libs-2.5.3-104.module+el8.0.0+3250+4b7d6d43.x86_64 is filtered out by modular filtering
- package ruby-libs-2.7.3-136.module+el8.4.0+10728+4c884998.x86_64 is filtered out by modular filtering
- package ruby-libs-2.6.3-106.module+el8.1.0+3653+beb38eb0.i686 is filtered out by modular filtering
- package ruby-libs-2.5.9-107.module+el8.4.0+10822+fe4fffb1.i686 is filtered out by modular filtering
- package ruby-libs-2.6.7-107.module+el8.4.0+10830+bbd85cce.x86_64 is filtered out by modular filtering
- package ruby-libs-2.7.4-137.module+el8.4.0+12025+f744ca41.i686 is filtered out by modular filtering
- package ruby-libs-2.7.1-133.module+el8.3.0+7192+4e3a532a.x86_64 is filtered out by modular filtering
- package ruby-libs-2.6.3-106.module+el8.1.0+3653+beb38eb0.x86_64 is filtered out by modular filtering
- package ruby-libs-2.5.5-105.module+el8.1.0+3656+f80bfa1d.x86_64 is filtered out by modular filtering
- package ruby-libs-3.0.2-140.module+el8.5.0+12856+0c654ebc.i686 is filtered out by modular filtering
- package ruby-libs-2.6.7-107.module+el8.4.0+10830+bbd85cce.i686 is filtered out by modular filtering
- package ruby-libs-2.5.3-103.module+el8+2671+ebcc7ee0.x86_64 is filtered out by modular filtering
- package ruby-libs-2.7.3-136.module+el8.4.0+10728+4c884998.i686 is filtered out by modular filtering
- package ruby-libs-2.5.3-103.module+el8+2671+ebcc7ee0.i686 is filtered out by modular filtering
- package ruby-libs-3.0.2-140.module+el8.5.0+12856+0c654ebc.x86_64 is filtered out by modular filtering
~~
How reproducible:
-----------------
Always with CVs that has a filter to include errata by date.
Actual results:
---------------
Module streams, that should be enabled by default on a RHEL 8 content host, are disabled and need to be enabled manually.
Expected results:
-----------------
Module streams, that should be enabled by default on a RHEL 8 content host, are enabled without the need for manual intervention.
Additional info:
-----------------
It appear that Satellite 6.9 has the copy :module_default units but I don't see any in Satellite 6.10 in "copy_content_for_source", "copy_units" and "additional_content_hrefs" methods
- Satellite 6.9
def copy_contents(destination_repo, filters: nil,
solve_dependencies: false,
rpm_filenames: [])
...
[:srpm, :errata, :package_group, :package_environment,
:yum_repo_metadata_file, :distribution, :module_default, :drpm].each do |type|
tasks << smart_proxy.pulp_api.extensions.send(type).copy(repo.pulp_id, destination_repo.pulp_id)
end
Katello uses "copy_content_for_source" (in Katello::Pulp3::Repository::Yum) to copy contents for Pulp3. This method will copy everything (rpm, errata, modules, package group, yum metadata etc) but missed modulemd defaults.