leapp-repository/0102-6-9-targetcontentresolver-operate-with-RepoMapDataHa.patch
Matej Matuska b31dbfa161 IPU 8.10 -> 9.9: CTC2 candidate 1
- Requires leapp-framework 6.6+
- Initial implementation of upgrades on systems with configured Software RAID
- Handle multipath device identification in upgrade environment
- Fix upgrade incorrectly resuming during SELinux relabeling
- Fix upgrades on systems with multiple LUKS devices
- Fix upgrades for systems with /boot/efi on a Software RAID
- Fix mount failures for FSTAB entries with the `nofail` option specified
- Fix AVC errors triggered by registration to insight-client during the upgrade
- Install the correct kernel for the source system kernel page size on ARM systems
- Inhibit the upgrade when network devices configured with ifcfg files could depend on NM
- Introduce rhui.obsolete_gpg_keys configuration option for the removal of obsoleted RPM GPG keys of RHUI Cloud providers
- LiveMode: Fix upgrade getting stuck when the `.leapp_upgrade_failed` file exists
- LiveMode: Fix system version determination in the upgrade environment on CentOS Stream
- Fix target system initramfs containing outdated configuration files in some circumstances
- Ensure SELinux is set to permissive mode during the upgrade even when enforcing=1 is set on the kernel cmdline
- Fix source and target distribution names in /etc/migration-results
- Fix upgrades with the RealTime kernel on CentOS Stream
- Detect misconfigured kernel & systemd API mountpoints in FSTAB
- Detect misconfigured /var/run on the source system
- Unify behaviour of upgrades on systems with enabled CRB repositories and explicitly required CRB repositories by user during the upgrade
- Drop the inconsistent report about the use of CRB (unsupported by Red Hat) repositories
- Fix upgrade crashing when dnf repofiles contain URL encoded characters

- Resolves: RHEL-3289, RHEL-17842, RHEL-36249, RHEL-56040, RHEL-56176, RHEL-60060, RHEL-76846, RHEL-104384, RHEL-145136, RHEL-148631, RHEL-162192, RHEL-185508
2026-06-29 13:26:50 +02:00

616 lines
29 KiB
Diff

From d28e4c283de9ac3e6f172c900f58f91e7cbb66d1 Mon Sep 17 00:00:00 2001
From: Petr Stodulka <pstodulk@redhat.com>
Date: Sun, 7 Jun 2026 01:31:39 +0200
Subject: [PATCH 102/108] [6/9] targetcontentresolver: operate with
RepoMapDataHandler
Originally various libraries required RepositoriesMapping message
in the input parameters. Then some of them just initialized
RepoMapDataHandler (which requires to consume RHUIInfo message)
and in case of the `repositoriesblocklist` library it even duplicated
functionality implemented in the handler.
The handler is now initialized inside the orchestrator and all other
libraries accept just the handler as the input parameter. This leads
to another deduplication and simplification of the codebase.
Unit tests adjusted with assistance of AI.
Jira: RHEL-115867
Assisted-by: Claude Code (Opus 4.6)
Signed-off-by: Petr Stodulka <pstodulk@redhat.com>
---
.../libraries/pes_events_scanner.py | 27 +++++------
.../libraries/repositoriesblocklist.py | 47 +++++++++----------
.../libraries/setuptargetrepos.py | 14 ++----
.../libraries/targetcontentresolver.py | 24 ++++++++--
.../tests/test_pes_event_scanner.py | 5 +-
.../tests/test_repositoriesblocklist.py | 41 ++++++++++++----
.../tests/test_setuptargetrepos.py | 23 +++++----
.../tests/test_targetcontentresolver.py | 20 ++++----
8 files changed, 116 insertions(+), 85 deletions(-)
diff --git a/repos/system_upgrade/common/actors/targetcontentresolver/libraries/pes_events_scanner.py b/repos/system_upgrade/common/actors/targetcontentresolver/libraries/pes_events_scanner.py
index cbc99adf..96f26a59 100644
--- a/repos/system_upgrade/common/actors/targetcontentresolver/libraries/pes_events_scanner.py
+++ b/repos/system_upgrade/common/actors/targetcontentresolver/libraries/pes_events_scanner.py
@@ -17,7 +17,6 @@ from leapp.models import (
PESIDRepositoryEntry,
PESRpmTransactionTasks,
RepositoriesFacts,
- RHUIInfo,
RpmTransactionTasks
)
@@ -112,6 +111,7 @@ def get_relevant_releases(events):
def _get_enabled_modules():
+ # TODO(pstodulk): take a look
enabled_modules_msgs = api.consume(EnabledModules)
enabled_modules_msg = next(enabled_modules_msgs, None)
if list(enabled_modules_msgs):
@@ -357,22 +357,20 @@ def get_enabled_repoids():
return enabled_repoids
-def get_pesid_to_repoid_map(target_pesids, repositories_map_msg, enabled_repoids):
+def get_pesid_to_repoid_map(target_pesids, repomap_handler, enabled_repoids):
"""
Get a dictionary mapping all PESID repositories to their corresponding repoid.
:param target_pesids: The set of target PES IDs needed to be mapped
- :param repositories_map_msg: RepositoriesMapping message.
+ :param repomap_handler: Operator to work with the repositories mapping data
+ :type repomap_handler: repomap_calc.RepoMapDataHandler
:return: Dictionary mapping the target_pesids to their corresponding repoid
"""
- rhui_info = next(api.consume(RHUIInfo), None)
- cloud_provider = rhui_info.provider if rhui_info else ''
-
- repomap_handler = repomap_calc.RepoMapDataHandler(repositories_map_msg, cloud_provider=cloud_provider)
-
# NOTE: We have to calculate expected target repositories like in the setuptargetrepos actor.
# It's planned to handle this in different a way in future...
-
+ # TODO(pstodulk): ?? hmm..what about moving it to the orchestrator?
+ # TODO(pstodulk): what about returning requests just for PESIDS? Setuptargetrepo
+ # lib will pick the right one for us later.
default_channels = repomap_calc.get_default_repository_channels(repomap_handler, enabled_repoids)
repomap_handler.set_default_channels(default_channels)
@@ -432,7 +430,7 @@ def get_pesid_to_repoid_map(target_pesids, repositories_map_msg, enabled_repoids
return repositories_mapping
-def replace_pesids_with_repoids_in_packages(packages, source_pkgs_repoids, repositories_map_msg, enabled_repoids):
+def replace_pesids_with_repoids_in_packages(packages, source_pkgs_repoids, repomap_handler, enabled_repoids):
"""Replace packages with PESID in their .repository field with ones that have repoid providing the package."""
# We want to map only PESIDs - if some package had no events, it will its repository set to source system repoid
packages_with_pesid = {pkg for pkg in packages if pkg.repository not in source_pkgs_repoids}
@@ -440,7 +438,7 @@ def replace_pesids_with_repoids_in_packages(packages, source_pkgs_repoids, repos
required_target_pesids = {pkg.repository for pkg in packages_with_pesid}
- pesid_to_target_repoid_map = get_pesid_to_repoid_map(required_target_pesids, repositories_map_msg, enabled_repoids)
+ pesid_to_target_repoid_map = get_pesid_to_repoid_map(required_target_pesids, repomap_handler, enabled_repoids)
packages_with_unknown_target_repoid = {
pkg
@@ -554,11 +552,12 @@ def include_instructions_from_transaction_configuration(rpm_tasks, transaction_c
modules_to_reset=modules_to_reset)
-def scan_pes_events(repositories_map_msg, blacklisted_repoids, enabled_repoids):
+def scan_pes_events(repomap_handler, blacklisted_repoids, enabled_repoids):
"""
Process PES events and compute RPM transaction tasks.
- :param repositories_map_msg: RepositoriesMapping message.
+ :param repomap_handler: Operator to work with the repositories mapping data
+ :type repomap_handler: repomap_calc.RepoMapDataHandler
:param blacklisted_repoids: Set of repoids to exclude from target packages. If None, an empty set is used.
:returns: Set of target repoids that need to be enabled, or None if no PES events are found.
:rtype: Optional[set]
@@ -588,7 +587,7 @@ def scan_pes_events(repositories_map_msg, blacklisted_repoids, enabled_repoids):
target_pkgs = replace_pesids_with_repoids_in_packages(
target_pkgs,
repoids_of_source_pkgs,
- repositories_map_msg,
+ repomap_handler,
enabled_repoids
)
diff --git a/repos/system_upgrade/common/actors/targetcontentresolver/libraries/repositoriesblocklist.py b/repos/system_upgrade/common/actors/targetcontentresolver/libraries/repositoriesblocklist.py
index e526bcbd..c77a1f13 100644
--- a/repos/system_upgrade/common/actors/targetcontentresolver/libraries/repositoriesblocklist.py
+++ b/repos/system_upgrade/common/actors/targetcontentresolver/libraries/repositoriesblocklist.py
@@ -32,44 +32,39 @@ def _report_excluded_repos(repos):
reporting.create_report(report)
-def _get_crb_repos(repo_mapping, major_version):
+def _get_crb_repos(repo_mapping, flag_source_os):
"""
- Return set of relevant CRB repoids for the specified major version
+ Return set of relevant CRB repoids for the source or target OS.
- Only CRB repositories for the current architecture and distribution are
- relevant.
-
- :param repo_mapping: RepositoriesMapping message.
- :type repo_mapping: RepositoriesMapping
- :param major_version: The OS major version.
- :type major_version: str
+ :param repo_mapping: Operator to work with the repositories mapping data
+ :type repo_mapping: repomap_calc.RepoMapDataHandler
+ :param flag_source_os: Set True for the source OS, False for the target OS.
+ :type flag_source_os: bool
:returns: A set of repoids with the specified pesid and major version.
:rtype: Set[str]
"""
- pesid = f'rhel{major_version}-CRB'
curr_arch = api.current_actor().configuration.architecture
- crb_repoids = set()
- for pesid_repo in repo_mapping.repositories:
- if pesid_repo.major_version != major_version or pesid_repo.arch != curr_arch:
- # irrelevant repository
- continue
- if pesid_repo.pesid == pesid and pesid_repo.major_version == major_version:
- crb_repoids.add(pesid_repo.repoid)
- return crb_repoids
+ if flag_source_os:
+ pesid = 'rhel{}-CRB'.format(get_source_major_version())
+ crb_repos = repo_mapping.get_source_pesid_repos(pesid)
+ else:
+ pesid = 'rhel{}-CRB'.format(get_target_major_version())
+ crb_repos = repo_mapping.get_target_pesid_repos(pesid)
+ return {repo.repoid for repo in crb_repos if repo.arch == curr_arch}
def _are_crb_repos_disabled(repo_mapping, enabled_repoids):
"""
Checks whether all CRB repositories are disabled.
- :param repo_mapping: RepositoriesMapping message.
- :type repo_mapping: RepositoriesMapping
+ :param repo_mapping: Operator to work with the repositories mapping data
+ :type repo_mapping: repomap_calc.RepoMapDataHandler
:param enabled_repoids: Set of repoids enabled on the source system.
:type enabled_repoids: Set[str]
:returns: False if any CRB repositories are enabled on the source system, True otherwise.
:rtype: bool
"""
- return enabled_repoids.isdisjoint(_get_crb_repos(repo_mapping, get_source_major_version()))
+ return enabled_repoids.isdisjoint(_get_crb_repos(repo_mapping, True))
def _calc_internal_blocklist(repo_mapping, external_tasks, enabled_repoids):
@@ -84,8 +79,8 @@ def _calc_internal_blocklist(repo_mapping, external_tasks, enabled_repoids):
Also report explicitly enabled and blocklisted CRB repositories, unless
CRB is already already enabled on the source system.
- :param repo_mapping: RepositoriesMapping message.
- :type repo_mapping: RepositoriesMapping
+ :param repo_mapping: Operator to work with the repositories mapping data
+ :type repo_mapping: repomap_calc.RepoMapDataHandler
:param external_tasks: External repositories tasks represented by object with following fields:
* ``to_enable`` - repositories that should be enabled
@@ -102,7 +97,7 @@ def _calc_internal_blocklist(repo_mapping, external_tasks, enabled_repoids):
# nothing to do - a CRB repo is enabled
return set()
- repos_to_exclude = _get_crb_repos(repo_mapping, get_target_major_version())
+ repos_to_exclude = _get_crb_repos(repo_mapping, False)
# Do not exclude repositories explicitly required by user for the upgrade
manually_enabled_repos = external_tasks.custom & repos_to_exclude
@@ -149,8 +144,8 @@ def compute_blocklist(repo_mapping, external_tasks, enabled_repoids):
the in-place upgrade purpose. Currently there is no explicit custom
configuration to disable a repo.
- :param repo_mapping: RepositoriesMapping message.
- :type repo_mapping: RepositoriesMapping
+ :param repo_mapping: Operator to work with the repositories mapping data
+ :type repo_mapping: repomap_calc.RepoMapDataHandler
:param external_tasks: External repositories tasks represented by object with following fields:
* ``to_enable`` - repositories that should be enabled
diff --git a/repos/system_upgrade/common/actors/targetcontentresolver/libraries/setuptargetrepos.py b/repos/system_upgrade/common/actors/targetcontentresolver/libraries/setuptargetrepos.py
index d6bfb91d..4f7ffd9f 100644
--- a/repos/system_upgrade/common/actors/targetcontentresolver/libraries/setuptargetrepos.py
+++ b/repos/system_upgrade/common/actors/targetcontentresolver/libraries/setuptargetrepos.py
@@ -8,7 +8,6 @@ from leapp.models import (
DistroTargetRepository,
InstalledRPM,
RHELTargetRepository,
- RHUIInfo,
SkippedRepositories,
TargetRepositories,
UsedRepositories
@@ -58,12 +57,13 @@ def _get_mapped_repoids(repomap, src_repoids):
@suppress_deprecation(RHELTargetRepository)
-def setup_target_repos(repositories_map_msg, pes_requested_repoids=None,
+def setup_target_repos(repomap_handler, pes_requested_repoids=None,
blacklisted_repoids=None, external_repoids_requests=None):
"""
Determine the final list of target repositories.
- :param repositories_map_msg: RepositoriesMapping message.
+ :param repomap_handler: Operator to work with the repositories mapping data
+ :type repomap_handler: repomap_calc.RepoMapDataHandler
:param pes_requested_repoids: Set of repoids derived from PES events that need to be enabled.
:param blacklisted_repoids: Set of repoids to exclude from target repos. If None, an empty set is used.
:param external_repoids_requests: Set of repoids requested by external actors (e.g. satellite_upgrade_facts).
@@ -75,14 +75,6 @@ def setup_target_repos(repositories_map_msg, pes_requested_repoids=None,
custom_repos = _get_custom_target_repos()
repoids_from_installed_packages = _get_repoids_from_installed_packages()
- # Setup repomap handler
- repo_mapping_msg = repositories_map_msg
-
- rhui_info = next(api.consume(RHUIInfo), None)
- cloud_provider = rhui_info.provider if rhui_info else ''
-
- repomap_handler = repomap_calc.RepoMapDataHandler(repo_mapping_msg, cloud_provider=cloud_provider)
-
# Filter set of repoids from installed packages so that it contains only repoids with mapping
repoids_from_installed_packages_with_mapping = _get_mapped_repoids(
repomap_handler, repoids_from_installed_packages
diff --git a/repos/system_upgrade/common/actors/targetcontentresolver/libraries/targetcontentresolver.py b/repos/system_upgrade/common/actors/targetcontentresolver/libraries/targetcontentresolver.py
index b66168e6..942a2680 100644
--- a/repos/system_upgrade/common/actors/targetcontentresolver/libraries/targetcontentresolver.py
+++ b/repos/system_upgrade/common/actors/targetcontentresolver/libraries/targetcontentresolver.py
@@ -2,9 +2,16 @@ from collections import namedtuple
from leapp.exceptions import StopActorExecutionError
from leapp.libraries.actor import pes_events_scanner, repositoriesblocklist, setuptargetrepos
+from leapp.libraries.actor.repomap_calc import RepoMapDataHandler
from leapp.libraries.actor.repomap_loader import load_repositories_mapping
from leapp.libraries.stdlib import api
-from leapp.models import CustomTargetRepository, RepositoriesBlacklisted, RepositoriesFacts, RepositoriesSetupTasks
+from leapp.models import (
+ CustomTargetRepository,
+ RepositoriesBlacklisted,
+ RepositoriesFacts,
+ RepositoriesSetupTasks,
+ RHUIInfo
+)
from leapp.utils.deprecation import suppress_deprecation
ExternalRepoSetupTasks = namedtuple('ExternalRepoSetupTasks', ('to_enable', 'to_block', 'custom'))
@@ -86,6 +93,13 @@ class InputData():
self.enabled_repoids.add(repo.repoid)
+def _init_repomap_handler():
+ repomap_msg = load_repositories_mapping()
+ rhui_info = next(api.consume(RHUIInfo), None)
+ cloud_provider = rhui_info.provider if rhui_info else ''
+ return RepoMapDataHandler(repomap_msg, cloud_provider=cloud_provider)
+
+
def process():
"""
Orchestrate the four stages of target content resolution.
@@ -108,20 +122,20 @@ def process():
configuration.
"""
indata = InputData()
- repositories_map_msg = load_repositories_mapping()
+ repomap_handler = _init_repomap_handler()
blocklisted_repoids = repositoriesblocklist.compute_blocklist(
- repositories_map_msg,
+ repomap_handler,
indata.external_tasks,
indata.enabled_repoids
)
pes_requested_repoids = pes_events_scanner.scan_pes_events(
- repositories_map_msg,
+ repomap_handler,
blocklisted_repoids,
indata.enabled_repoids
)
setuptargetrepos.setup_target_repos(
- repositories_map_msg,
+ repomap_handler,
pes_requested_repoids=pes_requested_repoids,
blacklisted_repoids=blocklisted_repoids,
external_repoids_requests=indata.external_tasks.to_enable,
diff --git a/repos/system_upgrade/common/actors/targetcontentresolver/tests/test_pes_event_scanner.py b/repos/system_upgrade/common/actors/targetcontentresolver/tests/test_pes_event_scanner.py
index a1f3a6e1..c6f16823 100644
--- a/repos/system_upgrade/common/actors/targetcontentresolver/tests/test_pes_event_scanner.py
+++ b/repos/system_upgrade/common/actors/targetcontentresolver/tests/test_pes_event_scanner.py
@@ -13,6 +13,7 @@ from leapp.libraries.actor.pes_events_scanner import (
reporting,
TransactionConfiguration
)
+from leapp.libraries.actor.repomap_calc import RepoMapDataHandler
from leapp.libraries.common.testutils import create_report_mocked, CurrentActorMocked, produce_mocked
from leapp.models import (
DistributionSignedRPM,
@@ -265,12 +266,14 @@ def test_actor_performs(monkeypatch):
),
)
+ repomap_handler = RepoMapDataHandler(repositories_mapping)
+
produced_messages = produce_mocked()
created_report = create_report_mocked()
monkeypatch.setattr(api, 'produce', produced_messages)
monkeypatch.setattr(reporting, 'create_report', created_report)
- pes_events_scanner.scan_pes_events(repositories_mapping, set(), {'rhel8-repo'})
+ pes_events_scanner.scan_pes_events(repomap_handler, set(), {'rhel8-repo'})
assert produced_messages.called
diff --git a/repos/system_upgrade/common/actors/targetcontentresolver/tests/test_repositoriesblocklist.py b/repos/system_upgrade/common/actors/targetcontentresolver/tests/test_repositoriesblocklist.py
index 843c8f74..5a2d1705 100644
--- a/repos/system_upgrade/common/actors/targetcontentresolver/tests/test_repositoriesblocklist.py
+++ b/repos/system_upgrade/common/actors/targetcontentresolver/tests/test_repositoriesblocklist.py
@@ -2,6 +2,7 @@ import pytest
from leapp import reporting
from leapp.libraries.actor import repositoriesblocklist
+from leapp.libraries.actor.repomap_calc import RepoMapDataHandler
from leapp.libraries.actor.targetcontentresolver import ExternalRepoSetupTasks
from leapp.libraries.common.testutils import create_report_mocked, CurrentActorMocked, produce_mocked
from leapp.libraries.stdlib import api
@@ -56,8 +57,9 @@ def test_crb_repos_blocked_when_no_crb_on_source(monkeypatch, repomap_opts_only)
))
monkeypatch.setattr(reporting, 'create_report', create_report_mocked())
+ handler = RepoMapDataHandler(repomap_opts_only)
result = repositoriesblocklist._calc_internal_blocklist(
- repomap_opts_only, _NO_TASKS, enabled_repoids={'rhel-8-server-rpms'}
+ handler, _NO_TASKS, enabled_repoids={'rhel-8-server-rpms'}
)
assert 'codeready-builder-for-rhel-9-x86_64-rpms' in result
@@ -74,8 +76,9 @@ def test_empty_result_when_no_crb_pesid_in_mapping(monkeypatch, repomap_opts_onl
))
monkeypatch.setattr(reporting, 'create_report', create_report_mocked())
+ handler = RepoMapDataHandler(repomap_opts_only)
result = repositoriesblocklist._calc_internal_blocklist(
- repomap_opts_only, _NO_TASKS, enabled_repoids=set()
+ handler, _NO_TASKS, enabled_repoids=set()
)
assert not result
@@ -90,8 +93,9 @@ def test_blocklist_generated_when_crb_disabled(monkeypatch, repomap_opts_only):
))
monkeypatch.setattr(reporting, 'create_report', create_report_mocked())
+ handler = RepoMapDataHandler(repomap_opts_only)
result = repositoriesblocklist._calc_internal_blocklist(
- repomap_opts_only, _NO_TASKS, enabled_repoids=set()
+ handler, _NO_TASKS, enabled_repoids=set()
)
assert result, 'A blocklist should get generated.'
@@ -109,8 +113,9 @@ def test_no_blocklist_when_crb_enabled_on_source(monkeypatch, repomap_opts_only)
arch='x86_64', src_ver='8.10', dst_ver='9.6', dst_distro='rhel'
))
+ handler = RepoMapDataHandler(repomap_opts_only)
result = repositoriesblocklist._calc_internal_blocklist(
- repomap_opts_only, _NO_TASKS,
+ handler, _NO_TASKS,
enabled_repoids={'codeready-builder-for-rhel-8-x86_64-rpms'}
)
@@ -198,8 +203,9 @@ def test_custom_enablerepo_effect(monkeypatch, repomap_opts_only,
to_enable=set(), to_block=set(), custom=custom_repoids
)
+ handler = RepoMapDataHandler(repomap_opts_only)
result = repositoriesblocklist._calc_internal_blocklist(
- repomap_opts_only, external_tasks, enabled_repoids=set()
+ handler, external_tasks, enabled_repoids=set()
)
if exp_report_title:
@@ -232,21 +238,38 @@ def test_get_crb_repos_filters_by_architecture(monkeypatch):
),
]
repo_mapping = RepositoriesMapping(mapping=[], repositories=repos)
+ handler = RepoMapDataHandler(repo_mapping)
- result = repositoriesblocklist._get_crb_repos(repo_mapping, '9')
+ result = repositoriesblocklist._get_crb_repos(handler, False)
assert result == {'crb-x86_64'}
-def test_no_report_for_non_rhel_distro(monkeypatch, repomap_opts_only):
+def test_no_report_for_non_rhel_distro(monkeypatch):
"""No exclusion report generated for non-RHEL distros, but repos are still excluded."""
monkeypatch.setattr(api, 'current_actor', CurrentActorMocked(
- arch='x86_64', src_ver='8.10', dst_ver='9.6', dst_distro='centos'
+ arch='x86_64', src_ver='8.10', dst_ver='9.6', src_distro='centos', dst_distro='centos'
))
monkeypatch.setattr(reporting, 'create_report', create_report_mocked())
+ centos_repomap = RepositoriesMapping(
+ mapping=[RepoMapEntry(source='rhel8-CRB', target=['rhel9-CRB'])],
+ repositories=[
+ PESIDRepositoryEntry(
+ pesid='rhel8-CRB', major_version='8',
+ repoid='codeready-builder-for-centos-8-x86_64-rpms',
+ rhui='', arch='x86_64', channel='ga', repo_type='rpm', distro='centos',
+ ),
+ PESIDRepositoryEntry(
+ pesid='rhel9-CRB', major_version='9',
+ repoid='codeready-builder-for-centos-9-x86_64-rpms',
+ rhui='', arch='x86_64', channel='ga', repo_type='rpm', distro='centos',
+ ),
+ ]
+ )
+ handler = RepoMapDataHandler(centos_repomap)
result = repositoriesblocklist._calc_internal_blocklist(
- repomap_opts_only, _NO_TASKS, enabled_repoids=set()
+ handler, _NO_TASKS, enabled_repoids=set()
)
assert result
diff --git a/repos/system_upgrade/common/actors/targetcontentresolver/tests/test_setuptargetrepos.py b/repos/system_upgrade/common/actors/targetcontentresolver/tests/test_setuptargetrepos.py
index 652bf30a..5192e65a 100644
--- a/repos/system_upgrade/common/actors/targetcontentresolver/tests/test_setuptargetrepos.py
+++ b/repos/system_upgrade/common/actors/targetcontentresolver/tests/test_setuptargetrepos.py
@@ -1,6 +1,7 @@
import pytest
from leapp.libraries.actor import setuptargetrepos
+from leapp.libraries.actor.repomap_calc import RepoMapDataHandler
from leapp.libraries.common.testutils import CurrentActorMocked, produce_mocked
from leapp.libraries.stdlib import api
from leapp.models import (
@@ -27,14 +28,13 @@ def test_minimal_execution(monkeypatch):
"""
Tests whether the actor does not fail if no messages except the RepositoriesMapping are provided.
"""
- msgs = [
- RepositoriesMapping(mapping=[], repositories=[])
- ]
+ repos_mapping = RepositoriesMapping(mapping=[], repositories=[])
+ msgs = [repos_mapping]
monkeypatch.setattr(api, 'current_actor', CurrentActorMocked(msgs=msgs))
monkeypatch.setattr(api, 'produce', produce_mocked())
- setuptargetrepos.setup_target_repos(msgs[0])
+ setuptargetrepos.setup_target_repos(RepoMapDataHandler(repos_mapping))
def test_custom_repos(monkeypatch):
@@ -62,7 +62,8 @@ def test_custom_repos(monkeypatch):
monkeypatch.setattr(api, 'current_actor', CurrentActorMocked(msgs=msgs))
monkeypatch.setattr(api, 'produce', produce_mocked())
- setuptargetrepos.setup_target_repos(repositories_mapping, blacklisted_repoids={'rhel-8-blacklisted-rpms'})
+ handler = RepoMapDataHandler(repositories_mapping)
+ setuptargetrepos.setup_target_repos(handler, blacklisted_repoids={'rhel-8-blacklisted-rpms'})
assert api.produce.called
@@ -82,8 +83,9 @@ def test_repositories_setup_tasks(monkeypatch):
monkeypatch.setattr(api, 'current_actor', CurrentActorMocked(msgs=msgs))
monkeypatch.setattr(api, 'produce', produce_mocked())
+ handler = RepoMapDataHandler(repositories_mapping)
setuptargetrepos.setup_target_repos(
- repositories_mapping,
+ handler,
blacklisted_repoids={'rhel-8-blacklisted-rpms'},
external_repoids_requests={'rhel-8-server-rpms', 'rhel-8-blacklisted-rpms'})
@@ -192,7 +194,8 @@ def test_repos_mapping_for_distro(monkeypatch, src_distro, dst_distro):
)
monkeypatch.setattr(api, 'produce', produce_mocked())
- setuptargetrepos.setup_target_repos(repomap, blacklisted_repoids={'{}-9-blacklisted-rpms'.format(dst_distro)})
+ handler = RepoMapDataHandler(repomap)
+ setuptargetrepos.setup_target_repos(handler, blacklisted_repoids={'{}-9-blacklisted-rpms'.format(dst_distro)})
assert api.produce.called
distro_repos = api.produce.model_instances[0].distro_repos
@@ -228,8 +231,9 @@ def test_pes_requested_repoids_added_to_target(monkeypatch):
monkeypatch.setattr(api, 'current_actor', CurrentActorMocked(msgs=msgs))
monkeypatch.setattr(api, 'produce', produce_mocked())
+ handler = RepoMapDataHandler(repositories_mapping)
setuptargetrepos.setup_target_repos(
- repositories_mapping,
+ handler,
pes_requested_repoids={'pes-repo-1', 'pes-repo-2', 'pes-blocked'},
blacklisted_repoids={'pes-blocked'},
)
@@ -255,8 +259,9 @@ def test_pes_and_external_repoids_combined(monkeypatch):
monkeypatch.setattr(api, 'current_actor', CurrentActorMocked(msgs=msgs))
monkeypatch.setattr(api, 'produce', produce_mocked())
+ handler = RepoMapDataHandler(repositories_mapping)
setuptargetrepos.setup_target_repos(
- repositories_mapping,
+ handler,
pes_requested_repoids={'pes-repo'},
blacklisted_repoids={'blocked-repo'},
external_repoids_requests={'ext-repo', 'blocked-repo'},
diff --git a/repos/system_upgrade/common/actors/targetcontentresolver/tests/test_targetcontentresolver.py b/repos/system_upgrade/common/actors/targetcontentresolver/tests/test_targetcontentresolver.py
index 970fd797..750f6f9e 100644
--- a/repos/system_upgrade/common/actors/targetcontentresolver/tests/test_targetcontentresolver.py
+++ b/repos/system_upgrade/common/actors/targetcontentresolver/tests/test_targetcontentresolver.py
@@ -23,7 +23,7 @@ def test_process_orchestration(monkeypatch):
"""
call_log = []
- fake_repo_map = object()
+ fake_repomap_handler = object()
fake_blocklist = frozenset({'blocked-repo'})
fake_external_tasks = ExternalRepoSetupTasks(
to_enable=frozenset({'ext-repo'}), to_block=frozenset(), custom=frozenset()
@@ -37,20 +37,20 @@ def test_process_orchestration(monkeypatch):
self.external_tasks = fake_external_tasks
self.enabled_repoids = fake_enabled_repoids
- def mock_load_repositories_mapping():
- call_log.append('load_repositories_mapping')
- return fake_repo_map
+ def mock_init_repomap_handler():
+ call_log.append('_init_repomap_handler')
+ return fake_repomap_handler
def mock_compute_blocklist(repo_mapping, external_tasks, enabled_repoids):
call_log.append('compute_blocklist')
- assert repo_mapping is fake_repo_map
+ assert repo_mapping is fake_repomap_handler
assert external_tasks is fake_external_tasks
assert enabled_repoids is fake_enabled_repoids
return fake_blocklist
def mock_scan_pes_events(repo_mapping, blacklisted_repoids, enabled_repoids):
call_log.append('scan_pes_events')
- assert repo_mapping is fake_repo_map
+ assert repo_mapping is fake_repomap_handler
assert blacklisted_repoids is fake_blocklist
assert enabled_repoids is fake_enabled_repoids
return fake_pes_repoids
@@ -58,7 +58,7 @@ def test_process_orchestration(monkeypatch):
def mock_setup_target_repos(repo_mapping, pes_requested_repoids=None,
blacklisted_repoids=None, external_repoids_requests=None):
call_log.append('setup_target_repos')
- assert repo_mapping is fake_repo_map
+ assert repo_mapping is fake_repomap_handler
assert pes_requested_repoids is fake_pes_repoids
assert blacklisted_repoids is fake_blocklist
assert external_repoids_requests is fake_external_tasks.to_enable
@@ -68,8 +68,8 @@ def test_process_orchestration(monkeypatch):
FakeInputData,
)
monkeypatch.setattr(
- 'leapp.libraries.actor.targetcontentresolver.load_repositories_mapping',
- mock_load_repositories_mapping,
+ 'leapp.libraries.actor.targetcontentresolver._init_repomap_handler',
+ mock_init_repomap_handler,
)
monkeypatch.setattr(
'leapp.libraries.actor.targetcontentresolver.repositoriesblocklist.compute_blocklist',
@@ -88,7 +88,7 @@ def test_process_orchestration(monkeypatch):
assert call_log == [
'InputData',
- 'load_repositories_mapping',
+ '_init_repomap_handler',
'compute_blocklist',
'scan_pes_events',
'setup_target_repos',
--
2.54.0