- Requires leapp-framework 6.6+ - Initial implementation of upgrades on systems with configured Software RAID - Include multipath related configuration in the upgrade environment - Fix upgrades on systems with multiple LUKS devices - Fix upgrades for systems with /boot/efi on a Software RAID - Fix upgrade crashing when dnf repofiles contain URL encoded characters - Fix mount failures for FSTAB entries with the `nofail` option specified - Fix upgrade incorrectly resuming during SELinux relabeling - Fix AVC SELinux warnings - 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 - Inhibit the upgrade when network devices configured with ifcfg files could depend on NM - 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 - Install the correct kernel for the source system kernel page size on ARM systems - Introduce rhui.obsolete_gpg_keys configuration option for the removal of obsoleted RPM GPG keys of RHUI Cloud providers - 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 - Check and migrate the multipath configuration when possible - Fix unwanted suspend mode after 15min of inactivity after the upgrade on systems with graphical environment - Resolves: RHEL-111860, RHEL-115867, RHEL-121205, RHEL-147438, RHEL-148697, RHEL-151509, RHEL-154369, RHEL-154370, RHEL-156580, RHEL-161560, RHEL-161684, RHEL-174874
616 lines
29 KiB
Diff
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/105] [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
|
|
|