CTC2 candidate 1 (Release for 8.10/9.5)

- Improve set_systemd_services_states logging
- [IPU 7 -> 8] Fix detection of bootable device on RAID
- Fix detection of valid sshd config with internal-sftp subsystem in Leapp
- Handle a false positive GPG check error when TargetUserSpaceInfo is missing
- Fix failing "update-ca-trust" command caused by missing util-linux package
- Improve report when a system is unsupported
- Fix handling of versions in RHUI configuration for ELS and SAP upgrades
- Add missing RHUI GCP config info for RHEL for SAP

- Resolves: RHEL-33902, RHEL-30573, RHEL-43978, RHEL-39046, RHEL-39047, RHEL-39049
This commit is contained in:
Toshio Kuratomi 2024-07-24 18:26:32 -07:00
parent b4aed63dad
commit d9029cec24
44 changed files with 15272 additions and 1 deletions

View File

@ -0,0 +1,61 @@
From 281b59832182679e8a8dc609b6b433673bcd1d39 Mon Sep 17 00:00:00 2001
From: Matej Matuska <mmatuska@redhat.com>
Date: Tue, 28 May 2024 14:49:12 +0200
Subject: [PATCH 50/92] packit: Enable 8.10to9.5 tests
---
.packit.yaml | 41 +++++++++++++++++++++++++++++++++++++++++
1 file changed, 41 insertions(+)
diff --git a/.packit.yaml b/.packit.yaml
index dc9b9431..dd97c6ee 100644
--- a/.packit.yaml
+++ b/.packit.yaml
@@ -552,3 +552,44 @@ jobs:
TARGET_RELEASE: "9.4"
RHSM_REPOS: "rhel-8-for-x86_64-appstream-beta-rpms,rhel-8-for-x86_64-baseos-beta-rpms"
LEAPPDATA_BRANCH: "upstream"
+
+
+# Tests: 8.10 -> 9.5
+- &sanity-810to95
+ <<: *sanity-abstract-8to9
+ trigger: pull_request
+ identifier: sanity-8.10to9.5
+ env:
+ SOURCE_RELEASE: "8.10"
+ TARGET_RELEASE: "9.5"
+ RHSM_REPOS: "rhel-8-for-x86_64-appstream-beta-rpms,rhel-8-for-x86_64-baseos-beta-rpms"
+ LEAPPDATA_BRANCH: "upstream"
+
+# On-demand minimal beaker tests
+- &beaker-minimal-810to95
+ <<: *beaker-minimal-8to9-abstract-ondemand
+ trigger: pull_request
+ labels:
+ - beaker-minimal
+ - beaker-minimal-8.10to9.5
+ - 8.10to9.5
+ identifier: sanity-8.10to9.5-beaker-minimal-ondemand
+ env:
+ SOURCE_RELEASE: "8.10"
+ TARGET_RELEASE: "9.5"
+ LEAPPDATA_BRANCH: "upstream"
+
+# On-demand kernel-rt tests
+- &kernel-rt-810to95
+ <<: *kernel-rt-abstract-8to9-ondemand
+ trigger: pull_request
+ labels:
+ - kernel-rt
+ - kernel-rt-8.10to9.5
+ - 8.10to9.5
+ identifier: sanity-8.10to9.5-kernel-rt-ondemand
+ env:
+ SOURCE_RELEASE: "8.10"
+ TARGET_RELEASE: "9.5"
+ RHSM_REPOS: "rhel-8-for-x86_64-appstream-beta-rpms,rhel-8-for-x86_64-baseos-beta-rpms"
+ LEAPPDATA_BRANCH: "upstream"
--
2.42.0

View File

@ -0,0 +1,41 @@
From 7ee37486990d36a710f1573845f21deab45ba2b6 Mon Sep 17 00:00:00 2001
From: Petr Stodulka <pstodulk@redhat.com>
Date: Tue, 14 May 2024 12:03:30 +0200
Subject: [PATCH 51/92] dnf-plugin-data: sort intput lists
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Previously to_install, to_remove, to_upgrade, ... lists have been
unsorted. Having these lists sorted is helpful when checking these
tasks manually (e.g. during investigations).
Co-authored-by: Michal Hečko <michal.sk.com@gmail.com>
---
repos/system_upgrade/common/libraries/dnfplugin.py | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/repos/system_upgrade/common/libraries/dnfplugin.py b/repos/system_upgrade/common/libraries/dnfplugin.py
index e59168ef..6f056a33 100644
--- a/repos/system_upgrade/common/libraries/dnfplugin.py
+++ b/repos/system_upgrade/common/libraries/dnfplugin.py
@@ -85,11 +85,11 @@ def build_plugin_data(target_repoids, debug, test, tasks, on_aws):
# get list of repo IDs of target repositories that should be used for upgrade
data = {
'pkgs_info': {
- 'local_rpms': [os.path.join('/installroot', pkg.lstrip('/')) for pkg in tasks.local_rpms],
- 'to_install': tasks.to_install,
- 'to_remove': tasks.to_remove,
- 'to_upgrade': tasks.to_upgrade,
- 'modules_to_enable': ['{}:{}'.format(m.name, m.stream) for m in tasks.modules_to_enable],
+ 'local_rpms': sorted(os.path.join('/installroot', pkg.lstrip('/')) for pkg in tasks.local_rpms),
+ 'to_install': sorted(tasks.to_install),
+ 'to_remove': sorted(tasks.to_remove),
+ 'to_upgrade': sorted(tasks.to_upgrade),
+ 'modules_to_enable': sorted(['{}:{}'.format(m.name, m.stream) for m in tasks.modules_to_enable]),
},
'dnf_conf': {
'allow_erasing': True,
--
2.42.0

View File

@ -0,0 +1,37 @@
From 76ac12560c4ea8223a59ec5a8233a86412dbf158 Mon Sep 17 00:00:00 2001
From: "jinkangkang.jkk" <jinkangkang.jkk@alibaba-inc.com>
Date: Mon, 3 Jun 2024 17:12:02 +0800
Subject: [PATCH 52/92] rhui setups support alibaba cloud
---
repos/system_upgrade/common/libraries/rhui.py | 14 +++++++++++++-
1 file changed, 13 insertions(+), 1 deletion(-)
diff --git a/repos/system_upgrade/common/libraries/rhui.py b/repos/system_upgrade/common/libraries/rhui.py
index 2dfb209c..ab6a27f8 100644
--- a/repos/system_upgrade/common/libraries/rhui.py
+++ b/repos/system_upgrade/common/libraries/rhui.py
@@ -290,7 +290,19 @@ RHUI_SETUPS = {
RHUIFamily(RHUIProvider.ALIBABA, client_files_folder='alibaba'): [
mk_rhui_setup(clients={'client-rhel7'}, os_version='7'),
mk_rhui_setup(clients={'aliyun_rhui_rhel8'}, leapp_pkg='leapp-rhui-alibaba',
- mandatory_files=[('leapp-alibaba.repo', YUM_REPOS_PATH)], os_version='8'),
+ mandatory_files=[('leapp-alibaba.repo', YUM_REPOS_PATH)],
+ optional_files=[
+ ('key.pem', RHUI_PKI_DIR),
+ ('content.crt', RHUI_PKI_PRODUCT_DIR)
+ ],
+ os_version='8'),
+ mk_rhui_setup(clients={'aliyun_rhui_rhel9'}, leapp_pkg='leapp-rhui-alibaba',
+ mandatory_files=[('leapp-alibaba.repo', YUM_REPOS_PATH)],
+ optional_files=[
+ ('key.pem', RHUI_PKI_DIR),
+ ('content.crt', RHUI_PKI_PRODUCT_DIR)
+ ],
+ os_version='9'),
]
}
--
2.42.0

View File

@ -0,0 +1,409 @@
From 986fa6f90f68a7d3e5d9173d8496dd222d5f7884 Mon Sep 17 00:00:00 2001
From: mhecko <mhecko@redhat.com>
Date: Thu, 23 May 2024 15:28:12 +0200
Subject: [PATCH 53/92] check_rhui: allow minor versions in the RHUI table
With RHEL8.10, different target RHUI clients have to be installed,
depending on the target minor version. The RHUI_SETUPS structure
used for navigating upgrades on RHUI and associated infrastructure
did not allow to setups based on their minor version. RHUI_SETUPS
is used to both determine what RHUI variant are we running on and what
is the target setup. Therefore, any solution would have to:
- ensure that when we are on RHEL8.10, we will look for correct client
(this point is fairly easy, and it would be sufficient to just declare
another setup description in RHUI_SETUPS)
- determine what target client to install depending on whether we are
targetting RHEL8.10 or, e.g., RHEL8.8
Introducing another setup to the map causes multiple target variants
to be eligible, and, thus, leapp would error due to not being able to
pick the target setup. Therefore, a solution has to include such
conflict resolution based on target minor version.
Given the above description of the solution space, this patch allows
specifying minor versions in the RHUI_SETUPS table used to resolve
conflicts when multiple target setups matching the major version are
eligable. Identification of the source and corresponding target RHUI
variant works by using the entry with the closest (younger) minor
version. For example, when 8.4 and 8.8 are suitable target setups (based
on the installed clients), 8.4 will be used when the upgrade taget is
8.6. The minor versions in the RHUI_SETUPS table, therefore, are
in a sense a "changelog" of leapp's RHUI knowledge. If the table
contains an entry A with version 8.0, and an entry B with version
8.8, this can be understood as:
Since 8.0, we know that the setups use this client and we need to do
these things to access target content. Since 8.8 onwards, we know
that we need to use a different client etc.
---
.../libraries/checkhybridimage.py | 3 +-
.../cloud/checkrhui/libraries/checkrhui.py | 165 ++++++++++++++----
.../tests/component_test_checkrhui.py | 48 +++++
repos/system_upgrade/common/libraries/rhui.py | 44 ++++-
4 files changed, 222 insertions(+), 38 deletions(-)
diff --git a/repos/system_upgrade/common/actors/cloud/checkhybridimage/libraries/checkhybridimage.py b/repos/system_upgrade/common/actors/cloud/checkhybridimage/libraries/checkhybridimage.py
index e2b7f5b2..a4eb6fa1 100644
--- a/repos/system_upgrade/common/actors/cloud/checkhybridimage/libraries/checkhybridimage.py
+++ b/repos/system_upgrade/common/actors/cloud/checkhybridimage/libraries/checkhybridimage.py
@@ -28,7 +28,8 @@ def is_azure_agent_installed():
agent_pkg = None
for setup in azure_setups:
- if setup.os_version == src_ver_major:
+ setup_major_ver = str(setup.os_version[0])
+ if setup_major_ver == src_ver_major:
agent_pkg = setup.extra_info.get('agent_pkg')
break
diff --git a/repos/system_upgrade/common/actors/cloud/checkrhui/libraries/checkrhui.py b/repos/system_upgrade/common/actors/cloud/checkrhui/libraries/checkrhui.py
index e1c158c7..3b217917 100644
--- a/repos/system_upgrade/common/actors/cloud/checkrhui/libraries/checkrhui.py
+++ b/repos/system_upgrade/common/actors/cloud/checkrhui/libraries/checkrhui.py
@@ -30,8 +30,98 @@ def into_set(pkgs):
return set(pkgs)
+def fmt_matching_rhui_setups(setups):
+ def fmt_matching_rhui_setup(matching_setup):
+ if isinstance(matching_setup, MatchingSetup):
+ return '(ver={os_ver}, variant={variant}, clients={clients})'.format(
+ os_ver=matching_setup.description.os_version,
+ variant=matching_setup.family,
+ clients=matching_setup.description.clients
+ )
+ # Just a RHUISetup
+ return '(ver={os_ver}, clients={clients})'.format(
+ os_ver=matching_setup.os_version,
+ clients=matching_setup.clients
+ )
+
+ return ', '.join(fmt_matching_rhui_setup(setup) for setup in setups)
+
+
+def select_chronologically_closest_setups(matching_setups, optimal_minor_ver, minor_ver_extractor, system_role):
+ if not matching_setups:
+ return None
+
+ # Select only setups that are chronologically closest
+ highest_minor_less_than_optimal = 0
+ for setup in matching_setups:
+ setup_minor = minor_ver_extractor(setup)
+
+ less_than_src_minor = (setup_minor <= optimal_minor_ver) if optimal_minor_ver else True
+ higher_than_previous = setup_minor > highest_minor_less_than_optimal
+ if less_than_src_minor and higher_than_previous:
+ highest_minor_less_than_optimal = setup_minor
+
+ msg = 'RHUI setups matching installed clients and %s major version: %s'
+ api.current_logger().debug(msg, system_role, fmt_matching_rhui_setups(matching_setups))
+
+ chronologically_closest_setups = [
+ setup for setup in matching_setups if minor_ver_extractor(setup) == highest_minor_less_than_optimal
+ ]
+ if chronologically_closest_setups:
+ matching_setups = chronologically_closest_setups
+ msg = 'Further narrowed matching setups based on their %s minor version: %s'
+ api.current_logger().debug(msg, system_role, fmt_matching_rhui_setups(matching_setups))
+ else:
+ newest_minor = max(matching_setups, key=minor_ver_extractor).os_version[1]
+ matching_setups = [setup for setup in matching_setups if minor_ver_extractor(setup) == newest_minor]
+ api.current_logger().warning(
+ 'The %s predates any of the setups that match the installed clients. Using newest matching: %s',
+ system_role,
+ fmt_matching_rhui_setups(matching_setups)
+ )
+ return matching_setups
+
+
+def error_due_to_ambiguous_source_setups(match0, match1):
+ msg = 'Could not identify the source RHUI setup (ambiguous setup)'
+
+ variant_detail_table = {
+ rhui.RHUIVariant.ORDINARY: '',
+ rhui.RHUIVariant.SAP: ' for SAP',
+ rhui.RHUIVariant.SAP_APPS: ' for SAP Applications',
+ rhui.RHUIVariant.SAP_HA: ' for SAP HA',
+ }
+
+ variant0_detail = variant_detail_table[match0.family.variant]
+ clients0 = ' '.join(match0.description.clients)
+
+ variant1_detail = variant_detail_table[match1.family.variant]
+ clients1 = ' '.join(match1.description.clients)
+
+ details = ('Leapp uses client-based identification of the used RHUI setup in order to determine what the '
+ 'target RHEL content should be. According to the installed RHUI clients the system should be '
+ 'RHEL {os_major}{variant0_detail} ({provider0}) (identified by clients {clients0}) but also '
+ 'RHEL {os_major}{variant1_detail} ({provider1}) (identified by clients {clients1}).')
+ details = details.format(os_major=version.get_source_major_version(),
+ variant0_detail=variant0_detail, clients0=clients0, provider0=match0.family.provider,
+ variant1_detail=variant1_detail, clients1=clients1, provider1=match1.family.provider)
+
+ raise StopActorExecutionError(message=msg, details={'details': details})
+
+
+def _get_canonical_version_tuple(version):
+ ver_fragments = version.split('.')
+ major = int(ver_fragments[0])
+ try:
+ minor = int(ver_fragments[1]) if len(ver_fragments) > 1 else None
+ except ValueError as error:
+ api.current_logger().debug('Failed to convert minor version into integer: %s', error)
+ minor = None # Unlikely, the code using this can handle None as minor
+ return (major, minor)
+
+
def find_rhui_setup_matching_src_system(installed_pkgs, rhui_map):
- src_ver = version.get_source_major_version()
+ src_major_ver, src_minor_ver = _get_canonical_version_tuple(version.get_source_version())
arch = api.current_actor().configuration.architecture
matching_setups = []
@@ -40,8 +130,9 @@ def find_rhui_setup_matching_src_system(installed_pkgs, rhui_map):
continue
for setup in family_setups:
- if setup.os_version != src_ver:
+ if setup.os_version[0] != src_major_ver:
continue
+
if setup.clients.issubset(installed_pkgs):
matching_setups.append(MatchingSetup(family=rhui_family, description=setup))
@@ -50,50 +141,54 @@ def find_rhui_setup_matching_src_system(installed_pkgs, rhui_map):
# In case that a RHUI variant uses a combination of clients identify the maximal client set
matching_setups_by_size = sorted(matching_setups, key=lambda match: -len(match.description.clients))
+ max_client_cnt = len(matching_setups_by_size[0].description.clients)
+ matching_setups = tuple(
+ setup for setup in matching_setups if len(setup.description.clients) == max_client_cnt
+ )
+ msg = 'Identified RHUI setups with the largest installed client sets: %s'
+ api.current_logger().debug(msg, fmt_matching_rhui_setups(matching_setups))
- match = matching_setups_by_size[0] # Matching setup with the highest number of clients
- if len(matching_setups) == 1:
- return match
+ if not matching_setups:
+ return None
- if len(matching_setups_by_size[0].description.clients) == len(matching_setups_by_size[1].description.clients):
- # Should not happen as no cloud providers use multi-client setups (at the moment)
- msg = 'Could not identify the source RHUI setup (ambiguous setup)'
+ # Since we allow minor versions in RHUI table, we might have multiple entries that are identified by the
+ # same clients. E.g.:
+ # RHEL8.4 with client X
+ # RHEL8.9 with client X (but with some modified setup info)
+ # If upgrading from 8.6, select 8.4. If upgrading from 8.10, select 8.9
+ matching_setups = select_chronologically_closest_setups(matching_setups,
+ src_minor_ver,
+ lambda setup: setup.description.os_version[1],
+ 'source')
- variant_detail_table = {
- rhui.RHUIVariant.ORDINARY: '',
- rhui.RHUIVariant.SAP: ' for SAP',
- rhui.RHUIVariant.SAP_APPS: ' for SAP Applications',
- rhui.RHUIVariant.SAP_HA: ' for SAP HA',
- }
+ # If we fail to identify chronologically proper setup, we always return a nonempty list
- match0 = matching_setups_by_size[0]
- variant0_detail = variant_detail_table[match0.family.variant]
- clients0 = ' '.join(match0.description.clients)
+ match = matching_setups[0] # Matching setup with the highest number of clients
+ if len(matching_setups) == 1:
+ return match
- match1 = matching_setups_by_size[1]
- variant1_detail = variant_detail_table[match1.family.variant]
- clients1 = ' '.join(match1.description.clients)
+ other_match = matching_setups[1]
+ error_due_to_ambiguous_source_setups(match, other_match)
+ return None # Unreachable
- details = ('Leapp uses client-based identification of the used RHUI setup in order to determine what the '
- 'target RHEL content should be. According to the installed RHUI clients the system should be '
- 'RHEL {os_major}{variant0_detail} ({provider0}) (identified by clients {clients0}) but also '
- 'RHEL {os_major}{variant1_detail} ({provider1}) (identified by clients {clients1}).')
- details = details.format(os_major=version.get_source_major_version(),
- variant0_detail=variant0_detail, clients0=clients0, provider0=match0.family.provider,
- variant1_detail=variant1_detail, clients1=clients1, provider1=match1.family.provider)
- raise StopActorExecutionError(message=msg, details={'details': details})
+def determine_target_setup_desc(cloud_map, rhui_family):
+ variant_setups = cloud_map[rhui_family]
- return match
+ target_major, target_minor = _get_canonical_version_tuple(version.get_target_version())
+ matching_setups = [setup for setup in variant_setups if setup.os_version[0] == target_major]
+ msg = 'Identified target RHUI setups matching target major: %s'
+ api.current_logger().debug(msg, fmt_matching_rhui_setups(matching_setups))
-def determine_target_setup_desc(cloud_map, rhui_family):
- variant_setups = cloud_map[rhui_family]
- target_major = version.get_target_major_version()
+ matching_setups = select_chronologically_closest_setups(matching_setups,
+ target_minor,
+ lambda setup: setup.os_version[1],
+ 'target')
+
+ if matching_setups:
+ return next(iter(matching_setups))
- for setup in variant_setups:
- if setup.os_version == target_major:
- return setup
return None
diff --git a/repos/system_upgrade/common/actors/cloud/checkrhui/tests/component_test_checkrhui.py b/repos/system_upgrade/common/actors/cloud/checkrhui/tests/component_test_checkrhui.py
index aa0089b6..27e70eea 100644
--- a/repos/system_upgrade/common/actors/cloud/checkrhui/tests/component_test_checkrhui.py
+++ b/repos/system_upgrade/common/actors/cloud/checkrhui/tests/component_test_checkrhui.py
@@ -326,3 +326,51 @@ def test_unknown_target_rhui_setup(monkeypatch, is_target_setup_known):
else:
with pytest.raises(StopActorExecutionError):
checkrhui_lib.process()
+
+
+@pytest.mark.parametrize(
+ ('setups', 'desired_minor', 'expected_setup'),
+ [
+ (
+ [
+ mk_rhui_setup(clients={'A'}, os_version='8.4', leapp_pkg='leapp-A'),
+ mk_rhui_setup(clients={'A'}, os_version='8.6', leapp_pkg='leapp-B'),
+ ],
+ 8,
+ mk_rhui_setup(clients={'A'}, os_version='8.6', leapp_pkg='leapp-B'),
+ ),
+ (
+ [
+ mk_rhui_setup(clients={'A'}, os_version='8.4', leapp_pkg='leapp-A'),
+ mk_rhui_setup(clients={'A'}, os_version='8.6', leapp_pkg='leapp-B'),
+ ],
+ 6,
+ mk_rhui_setup(clients={'A'}, os_version='8.6', leapp_pkg='leapp-B'),
+ ),
+ (
+ [
+ mk_rhui_setup(clients={'A'}, os_version='8.4', leapp_pkg='leapp-A'),
+ mk_rhui_setup(clients={'A'}, os_version='8.6', leapp_pkg='leapp-B'),
+ ],
+ 5,
+ mk_rhui_setup(clients={'A'}, os_version='8.4', leapp_pkg='leapp-A'),
+ ),
+ (
+ [
+ mk_rhui_setup(clients={'A'}, os_version='8.4', leapp_pkg='leapp-A'),
+ mk_rhui_setup(clients={'A'}, os_version='8.6', leapp_pkg='leapp-B'),
+ ],
+ 3,
+ mk_rhui_setup(clients={'A'}, os_version='8.6', leapp_pkg='leapp-B'),
+ )
+ ]
+)
+def test_select_chronologically_closest(monkeypatch, setups, desired_minor, expected_setup):
+ setups = checkrhui_lib.select_chronologically_closest_setups(setups,
+ desired_minor,
+ lambda setup: setup.os_version[1],
+ 'source')
+ assert len(setups) == 1
+ setup = setups[0]
+
+ assert setup == expected_setup
diff --git a/repos/system_upgrade/common/libraries/rhui.py b/repos/system_upgrade/common/libraries/rhui.py
index ab6a27f8..a0669ec4 100644
--- a/repos/system_upgrade/common/libraries/rhui.py
+++ b/repos/system_upgrade/common/libraries/rhui.py
@@ -101,8 +101,15 @@ class RHUIFamily(object):
def mk_rhui_setup(clients=None, leapp_pkg='', mandatory_files=None, optional_files=None,
- extra_info=None, os_version='7', arch=arch.ARCH_X86_64, content_channel=ContentChannel.GA,
+ extra_info=None, os_version='7.0', arch=arch.ARCH_X86_64, content_channel=ContentChannel.GA,
files_supporting_client_operation=None):
+
+ os_version_fragments = os_version.split('.')
+ if len(os_version_fragments) == 1:
+ os_version_tuple = (int(os_version), 0)
+ else:
+ os_version_tuple = (int(os_version_fragments[0]), int(os_version_fragments[1]))
+
clients = clients or set()
mandatory_files = mandatory_files or []
extra_info = extra_info or {}
@@ -115,7 +122,7 @@ def mk_rhui_setup(clients=None, leapp_pkg='', mandatory_files=None, optional_fil
return RHUISetup(clients=clients, leapp_pkg=leapp_pkg, mandatory_files=mandatory_files, arch=arch,
content_channel=content_channel, optional_files=optional_files, extra_info=extra_info,
- os_version=os_version, files_supporting_client_operation=files_supporting_client_operation)
+ os_version=os_version_tuple, files_supporting_client_operation=files_supporting_client_operation)
# This will be the new "cloud map". Essentially a directed graph with edges defined implicitly by OS versions +
@@ -186,6 +193,8 @@ RHUI_SETUPS = {
mandatory_files=[
('rhui-client-config-server-8-sap-bundle.crt', RHUI_PKI_PRODUCT_DIR),
('rhui-client-config-server-8-sap-bundle.key', RHUI_PKI_DIR),
+ ('content-rhel8-sap-bundle-e4s.crt', RHUI_PKI_PRODUCT_DIR),
+ ('content-rhel8-sap-bundle-e4s.key', RHUI_PKI_DIR),
(AWS_DNF_PLUGIN_NAME, DNF_PLUGIN_PATH_PY2),
('leapp-aws-sap-e4s.repo', YUM_REPOS_PATH)
],
@@ -195,6 +204,21 @@ RHUI_SETUPS = {
('cdn.redhat.com-chain.crt', RHUI_PKI_DIR),
('content-rhel8-sap.crt', RHUI_PKI_PRODUCT_DIR)
], os_version='8', content_channel=ContentChannel.E4S),
+ mk_rhui_setup(clients={'rh-amazon-rhui-client-sap-bundle'}, leapp_pkg='leapp-rhui-aws-sap-e4s',
+ mandatory_files=[
+ ('rhui-client-config-server-8-sap-bundle.crt', RHUI_PKI_PRODUCT_DIR),
+ ('rhui-client-config-server-8-sap-bundle.key', RHUI_PKI_DIR),
+ ('content-rhel8-sap-bundle.crt', RHUI_PKI_PRODUCT_DIR),
+ ('content-rhel8-sap-bundle.key', RHUI_PKI_DIR),
+ (AWS_DNF_PLUGIN_NAME, DNF_PLUGIN_PATH_PY2),
+ ('leapp-aws-sap.repo', YUM_REPOS_PATH)
+ ],
+ files_supporting_client_operation=[AWS_DNF_PLUGIN_NAME],
+ optional_files=[
+ ('content-rhel8-sap.key', RHUI_PKI_DIR),
+ ('cdn.redhat.com-chain.crt', RHUI_PKI_DIR),
+ ('content-rhel8-sap.crt', RHUI_PKI_PRODUCT_DIR)
+ ], os_version='8.10'),
mk_rhui_setup(clients={'rh-amazon-rhui-client-sap-bundle-e4s'}, leapp_pkg='leapp-rhui-aws-sap-e4s',
mandatory_files=[
('rhui-client-config-server-9-sap-bundle.crt', RHUI_PKI_PRODUCT_DIR),
@@ -237,6 +261,14 @@ RHUI_SETUPS = {
],
extra_info={'agent_pkg': 'WALinuxAgent'},
os_version='8', content_channel=ContentChannel.EUS),
+ mk_rhui_setup(clients={'rhui-azure-rhel8-base-sap-apps'}, leapp_pkg='leapp-rhui-azure-sap',
+ mandatory_files=[('leapp-azure-sap-apps.repo', YUM_REPOS_PATH)],
+ optional_files=[
+ ('key-sapapps.pem', RHUI_PKI_DIR),
+ ('content-sapapps.crt', RHUI_PKI_PRODUCT_DIR)
+ ],
+ extra_info={'agent_pkg': 'WALinuxAgent'},
+ os_version='8.10', content_channel=ContentChannel.GA),
mk_rhui_setup(clients={'rhui-azure-rhel9-sapapps'}, leapp_pkg='leapp-rhui-azure-sap',
mandatory_files=[('leapp-azure-sap-apps.repo', YUM_REPOS_PATH)],
optional_files=[
@@ -256,6 +288,14 @@ RHUI_SETUPS = {
],
extra_info={'agent_pkg': 'WALinuxAgent'},
os_version='8', content_channel=ContentChannel.E4S),
+ mk_rhui_setup(clients={'rhui-azure-rhel8-base-sap-ha'}, leapp_pkg='leapp-rhui-azure-sap',
+ mandatory_files=[('leapp-azure-sap-ha.repo', YUM_REPOS_PATH)],
+ optional_files=[
+ ('key-sap-ha.pem', RHUI_PKI_DIR),
+ ('content-sap-ha.crt', RHUI_PKI_PRODUCT_DIR)
+ ],
+ extra_info={'agent_pkg': 'WALinuxAgent'},
+ os_version='8.10'),
mk_rhui_setup(clients={'rhui-azure-rhel9-sap-ha'}, leapp_pkg='leapp-rhui-azure-sap',
mandatory_files=[('leapp-azure-sap-ha.repo', YUM_REPOS_PATH)],
optional_files=[
--
2.42.0

View File

@ -0,0 +1,68 @@
From 94224a42be57a6da1bd372580b5378b71f45a7f3 Mon Sep 17 00:00:00 2001
From: mhecko <mhecko@redhat.com>
Date: Tue, 28 May 2024 10:38:02 +0200
Subject: [PATCH 54/92] rhui(google): add RHEL7 ELS setup into RHUI_SETUPS
Add RHEL7 ELS setup into RHUI_SETUPS and modify repomapping
accordingly.
---
etc/leapp/files/repomap.json | 18 +++++++++++++++++-
repos/system_upgrade/common/libraries/rhui.py | 1 +
2 files changed, 18 insertions(+), 1 deletion(-)
diff --git a/etc/leapp/files/repomap.json b/etc/leapp/files/repomap.json
index 1ee6c56a..8a490b84 100644
--- a/etc/leapp/files/repomap.json
+++ b/etc/leapp/files/repomap.json
@@ -1,5 +1,5 @@
{
- "datetime": "202404091246Z",
+ "datetime": "202405281033Z",
"version_format": "1.2.1",
"mapping": [
{
@@ -414,6 +414,14 @@
"repo_type": "rpm",
"rhui": "google"
},
+ {
+ "major_version": "7",
+ "repoid": "rhui-rhel-7-server-els-rhui-rpms",
+ "arch": "x86_64",
+ "channel": "els",
+ "repo_type": "rpm",
+ "rhui": "google"
+ },
{
"major_version": "7",
"repoid": "rhui-rhel-7-server-rhui-eus-rpms",
@@ -618,6 +626,14 @@
"repo_type": "rpm",
"rhui": "google"
},
+ {
+ "major_version": "7",
+ "repoid": "rhui-rhel-7-server-els-optional-rhui-rpms",
+ "arch": "x86_64",
+ "channel": "els",
+ "repo_type": "rpm",
+ "rhui": "google"
+ },
{
"major_version": "7",
"repoid": "rhui-rhel-7-server-rhui-optional-rpms",
diff --git a/repos/system_upgrade/common/libraries/rhui.py b/repos/system_upgrade/common/libraries/rhui.py
index a0669ec4..8ae81537 100644
--- a/repos/system_upgrade/common/libraries/rhui.py
+++ b/repos/system_upgrade/common/libraries/rhui.py
@@ -307,6 +307,7 @@ RHUI_SETUPS = {
],
RHUIFamily(RHUIProvider.GOOGLE, client_files_folder='google'): [
mk_rhui_setup(clients={'google-rhui-client-rhel7'}, os_version='7'),
+ mk_rhui_setup(clients={'google-rhui-client-rhel7-els'}, os_version='7'),
mk_rhui_setup(clients={'google-rhui-client-rhel8'}, leapp_pkg='leapp-rhui-google',
mandatory_files=[('leapp-google.repo', YUM_REPOS_PATH)],
files_supporting_client_operation=['leapp-google.repo'],
--
2.42.0

View File

@ -0,0 +1,34 @@
From 40244434a0a9fcf3e368254d1de5737b6fd0cdef Mon Sep 17 00:00:00 2001
From: mhecko <mhecko@redhat.com>
Date: Wed, 29 May 2024 09:49:48 +0200
Subject: [PATCH 55/92] rhui(aws-arm): fix incorrect client names
---
repos/system_upgrade/common/libraries/rhui.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/repos/system_upgrade/common/libraries/rhui.py b/repos/system_upgrade/common/libraries/rhui.py
index 8ae81537..dc50bf45 100644
--- a/repos/system_upgrade/common/libraries/rhui.py
+++ b/repos/system_upgrade/common/libraries/rhui.py
@@ -161,7 +161,7 @@ RHUI_SETUPS = {
],
RHUIFamily(RHUIProvider.AWS, arch=arch.ARCH_ARM64, client_files_folder='aws'): [
mk_rhui_setup(clients={'rh-amazon-rhui-client-arm'}, optional_files=[], os_version='7', arch=arch.ARCH_ARM64),
- mk_rhui_setup(clients={'rh-amazon-rhui-client-arm'}, leapp_pkg='leapp-rhui-aws',
+ mk_rhui_setup(clients={'rh-amazon-rhui-client'}, leapp_pkg='leapp-rhui-aws',
mandatory_files=[
('rhui-client-config-server-8.crt', RHUI_PKI_PRODUCT_DIR),
('rhui-client-config-server-8.key', RHUI_PKI_DIR),
@@ -174,7 +174,7 @@ RHUI_SETUPS = {
('cdn.redhat.com-chain.crt', RHUI_PKI_DIR),
('content-rhel8.crt', RHUI_PKI_PRODUCT_DIR)
], os_version='8', arch=arch.ARCH_ARM64),
- mk_rhui_setup(clients={'rh-amazon-rhui-client-arm'}, leapp_pkg='leapp-rhui-aws',
+ mk_rhui_setup(clients={'rh-amazon-rhui-client'}, leapp_pkg='leapp-rhui-aws',
mandatory_files=[
('rhui-client-config-server-9.crt', RHUI_PKI_PRODUCT_DIR),
('rhui-client-config-server-9.key', RHUI_PKI_DIR),
--
2.42.0

View File

@ -0,0 +1,94 @@
From 6f20f5e83eb9ad9fb2ae76e2e499f9e36632b31e Mon Sep 17 00:00:00 2001
From: mhecko <mhecko@redhat.com>
Date: Thu, 30 May 2024 22:08:37 +0200
Subject: [PATCH 56/92] rhui(azure): hardcore client repoids changes for
RHEL8.10 SAP
---
.../libraries/setuptargetrepos.py | 27 ++++++++++++++++++-
repos/system_upgrade/common/libraries/rhui.py | 4 +--
2 files changed, 28 insertions(+), 3 deletions(-)
diff --git a/repos/system_upgrade/common/actors/setuptargetrepos/libraries/setuptargetrepos.py b/repos/system_upgrade/common/actors/setuptargetrepos/libraries/setuptargetrepos.py
index 2b14a29a..a6073aa3 100644
--- a/repos/system_upgrade/common/actors/setuptargetrepos/libraries/setuptargetrepos.py
+++ b/repos/system_upgrade/common/actors/setuptargetrepos/libraries/setuptargetrepos.py
@@ -1,6 +1,6 @@
from leapp.libraries.actor import setuptargetrepos_repomap
-from leapp.libraries.common.config.version import get_source_major_version
+from leapp.libraries.common.config.version import get_source_major_version, get_source_version, get_target_version
from leapp.libraries.stdlib import api
from leapp.models import (
CustomTargetRepository,
@@ -16,6 +16,11 @@ from leapp.models import (
UsedRepositories
)
+RHUI_CLIENT_REPOIDS_RHEL88_TO_RHEL810 = {
+ 'rhui-microsoft-azure-rhel8-sapapps': 'rhui-microsoft-azure-rhel8-base-sap-apps',
+ 'rhui-microsoft-azure-rhel8-sap-ha': 'rhui-microsoft-azure-rhel8-base-sap-ha',
+}
+
def _get_enabled_repoids():
"""
@@ -99,6 +104,16 @@ def process():
# can be used to upgrade installed packages.
repoids_to_map = enabled_repoids.union(repoids_from_installed_packages_with_mapping)
+ # RHEL8.10 use a different repoid for client repository, but the repomapping mechanism cannot distinguish these
+ # as it does not use minor versions. Therefore, we have to hardcode these changes.
+ if get_source_version() == '8.10':
+ for rhel88_rhui_client_repoid, rhel810_rhui_client_repoid in RHUI_CLIENT_REPOIDS_RHEL88_TO_RHEL810.items():
+ if rhel810_rhui_client_repoid in repoids_to_map:
+ # Replace RHEL8.10 rhui client repoids with RHEL8.8 repoids,
+ # so that they are mapped to target repoids correctly.
+ repoids_to_map.remove(rhel810_rhui_client_repoid)
+ repoids_to_map.add(rhel88_rhui_client_repoid)
+
# Set default repository channels for the repomap
# TODO(pstodulk): what about skip this completely and keep the default 'ga'..?
default_channels = setuptargetrepos_repomap.get_default_repository_channels(repomap, repoids_to_map)
@@ -138,6 +153,16 @@ def process():
continue
target_rhel_repoids.add(repo)
+ # On 8.10, some RHUI setups have different names than the one computed by repomapping.
+ # Although such situation could be avoided (having another client repo when a single
+ # repo can hold more than one RPM), we have to deal with it here. This is not a proper
+ # solution.
+ if get_target_version() == '8.10':
+ for pre_810_repoid, post_810_repoid in RHUI_CLIENT_REPOIDS_RHEL88_TO_RHEL810.items():
+ if pre_810_repoid in target_rhel_repoids:
+ target_rhel_repoids.remove(pre_810_repoid)
+ target_rhel_repoids.add(post_810_repoid)
+
# create the final lists and sort them (for easier testing)
rhel_repos = [RHELTargetRepository(repoid=repoid) for repoid in sorted(target_rhel_repoids)]
custom_repos = [repo for repo in custom_repos if repo.repoid not in excluded_repoids]
diff --git a/repos/system_upgrade/common/libraries/rhui.py b/repos/system_upgrade/common/libraries/rhui.py
index dc50bf45..28f1aeee 100644
--- a/repos/system_upgrade/common/libraries/rhui.py
+++ b/repos/system_upgrade/common/libraries/rhui.py
@@ -262,7 +262,7 @@ RHUI_SETUPS = {
extra_info={'agent_pkg': 'WALinuxAgent'},
os_version='8', content_channel=ContentChannel.EUS),
mk_rhui_setup(clients={'rhui-azure-rhel8-base-sap-apps'}, leapp_pkg='leapp-rhui-azure-sap',
- mandatory_files=[('leapp-azure-sap-apps.repo', YUM_REPOS_PATH)],
+ mandatory_files=[('leapp-azure-base-sap-apps.repo', YUM_REPOS_PATH)],
optional_files=[
('key-sapapps.pem', RHUI_PKI_DIR),
('content-sapapps.crt', RHUI_PKI_PRODUCT_DIR)
@@ -289,7 +289,7 @@ RHUI_SETUPS = {
extra_info={'agent_pkg': 'WALinuxAgent'},
os_version='8', content_channel=ContentChannel.E4S),
mk_rhui_setup(clients={'rhui-azure-rhel8-base-sap-ha'}, leapp_pkg='leapp-rhui-azure-sap',
- mandatory_files=[('leapp-azure-sap-ha.repo', YUM_REPOS_PATH)],
+ mandatory_files=[('leapp-azure-base-sap-ha.repo', YUM_REPOS_PATH)],
optional_files=[
('key-sap-ha.pem', RHUI_PKI_DIR),
('content-sap-ha.crt', RHUI_PKI_PRODUCT_DIR)
--
2.42.0

View File

@ -0,0 +1,26 @@
From f645c520a6bd7ce53e7db2e2a9f58f2554141695 Mon Sep 17 00:00:00 2001
From: mhecko <mhecko@redhat.com>
Date: Fri, 7 Jun 2024 10:42:01 +0200
Subject: [PATCH 57/92] fix rhui package collection
---
repos/system_upgrade/common/libraries/rhui.py | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/repos/system_upgrade/common/libraries/rhui.py b/repos/system_upgrade/common/libraries/rhui.py
index 28f1aeee..dbb3d71e 100644
--- a/repos/system_upgrade/common/libraries/rhui.py
+++ b/repos/system_upgrade/common/libraries/rhui.py
@@ -594,7 +594,8 @@ def get_all_known_rhui_pkgs_for_current_upg():
known_pkgs = set()
for setup_family in RHUI_SETUPS.values():
for setup in setup_family:
- if setup.os_version not in upg_major_versions:
+ setup_major = str(setup.os_version[0])
+ if setup_major not in upg_major_versions:
continue
known_pkgs.update(setup.clients)
known_pkgs.add(setup.leapp_pkg)
--
2.42.0

View File

@ -0,0 +1,187 @@
From f417bac7cbc489d713c2102af5a511762ab4c63c Mon Sep 17 00:00:00 2001
From: Martin Kluson <mkluson@redhat.com>
Date: Tue, 4 Jun 2024 15:26:30 +0200
Subject: [PATCH 58/92] .packit.yaml: update ENV variables
- Remove unused `RHSM_REPOS` and `LEAPPDATA_BRANCH`
- Update ENV variables for RHUI tests
- enable upgrade path to 8.10 on AWS
---
.packit.yaml | 50 +++++++++++---------------------------------------
1 file changed, 11 insertions(+), 39 deletions(-)
diff --git a/.packit.yaml b/.packit.yaml
index dd97c6ee..805eb2b5 100644
--- a/.packit.yaml
+++ b/.packit.yaml
@@ -201,10 +201,8 @@ jobs:
env:
SOURCE_RELEASE: "7.9"
TARGET_RELEASE: "8.8"
- RHUI: "aws"
- LEAPPDATA_BRANCH: "upstream"
LEAPP_NO_RHSM: "1"
- USE_CUSTOM_REPOS: rhui
+ RHUI_HYPERSCALER: aws
- &sanity-79to88
<<: *sanity-abstract-7to8
@@ -213,7 +211,6 @@ jobs:
env:
SOURCE_RELEASE: "7.9"
TARGET_RELEASE: "8.8"
- LEAPPDATA_BRANCH: "upstream"
- &beaker-minimal-79to88
<<: *beaker-minimal-7to8-abstract-ondemand
@@ -226,7 +223,6 @@ jobs:
env:
SOURCE_RELEASE: "7.9"
TARGET_RELEASE: "8.8"
- LEAPPDATA_BRANCH: "upstream"
- &kernel-rt-79to88
<<: *kernel-rt-abstract-7to8-ondemand
@@ -239,7 +235,6 @@ jobs:
env:
SOURCE_RELEASE: "7.9"
TARGET_RELEASE: "8.8"
- LEAPPDATA_BRANCH: "upstream"
# Tests: 7.9 -> 8.10
- &sanity-79to810
@@ -249,20 +244,15 @@ jobs:
env:
SOURCE_RELEASE: "7.9"
TARGET_RELEASE: "8.10"
- LEAPPDATA_BRANCH: "upstream"
-
-# NOTE(mkluson) RHEL 8.10 content is not publicly available (via RHUI)
-#- &sanity-79to810-aws
-# <<: *sanity-abstract-7to8-aws
-# trigger: pull_request
-# identifier: sanity-7.9to8.10-aws
-# env:
-# SOURCE_RELEASE: "7.9"
-# TARGET_RELEASE: "8.10"
-# RHUI: "aws"
-# LEAPPDATA_BRANCH: "upstream"
-# LEAPP_NO_RHSM: "1"
-# USE_CUSTOM_REPOS: rhui
+
+- &sanity-79to810-aws
+ <<: *sanity-abstract-7to8-aws
+ trigger: pull_request
+ identifier: sanity-7.9to8.10-aws
+ env:
+ SOURCE_RELEASE: "7.9"
+ TARGET_RELEASE: "8.10"
+ RHUI_HYPERSCALER: aws
- &beaker-minimal-79to810
<<: *beaker-minimal-7to8-abstract-ondemand
@@ -275,7 +265,6 @@ jobs:
env:
SOURCE_RELEASE: "7.9"
TARGET_RELEASE: "8.10"
- LEAPPDATA_BRANCH: "upstream"
- &kernel-rt-79to810
<<: *kernel-rt-abstract-7to8-ondemand
@@ -288,7 +277,6 @@ jobs:
env:
SOURCE_RELEASE: "7.9"
TARGET_RELEASE: "8.10"
- LEAPPDATA_BRANCH: "upstream"
# ###################################################################### #
@@ -420,7 +408,6 @@ jobs:
SOURCE_RELEASE: "8.8"
TARGET_RELEASE: "9.2"
RHSM_REPOS_EUS: "eus"
- LEAPPDATA_BRANCH: "upstream"
LEAPP_DEVEL_TARGET_RELEASE: "9.2"
- &sanity-88to92-aws
@@ -447,11 +434,8 @@ jobs:
env:
SOURCE_RELEASE: "8.8"
TARGET_RELEASE: "9.2"
- RHSM_REPOS: "rhel-8-for-x86_64-appstream-eus-rpms,rhel-8-for-x86_64-baseos-eus-rpms"
- RHUI: "aws"
- LEAPPDATA_BRANCH: "upstream"
LEAPP_NO_RHSM: "1"
- USE_CUSTOM_REPOS: rhui
+ RHUI_HYPERSCALER: aws
- &beaker-minimal-88to92
<<: *beaker-minimal-8to9-abstract-ondemand
@@ -480,7 +464,6 @@ jobs:
env:
SOURCE_RELEASE: "8.8"
TARGET_RELEASE: "9.2"
- LEAPPDATA_BRANCH: "upstream"
LEAPP_DEVEL_TARGET_RELEASE: "9.2"
- &kernel-rt-88to92
@@ -509,7 +492,6 @@ jobs:
env:
SOURCE_RELEASE: "8.8"
TARGET_RELEASE: "9.2"
- LEAPPDATA_BRANCH: "upstream"
LEAPP_DEVEL_TARGET_RELEASE: "9.2"
@@ -521,8 +503,6 @@ jobs:
env:
SOURCE_RELEASE: "8.10"
TARGET_RELEASE: "9.4"
- RHSM_REPOS: "rhel-8-for-x86_64-appstream-beta-rpms,rhel-8-for-x86_64-baseos-beta-rpms"
- LEAPPDATA_BRANCH: "upstream"
# On-demand minimal beaker tests
- &beaker-minimal-810to94
@@ -536,7 +516,6 @@ jobs:
env:
SOURCE_RELEASE: "8.10"
TARGET_RELEASE: "9.4"
- LEAPPDATA_BRANCH: "upstream"
# On-demand kernel-rt tests
- &kernel-rt-810to94
@@ -550,8 +529,6 @@ jobs:
env:
SOURCE_RELEASE: "8.10"
TARGET_RELEASE: "9.4"
- RHSM_REPOS: "rhel-8-for-x86_64-appstream-beta-rpms,rhel-8-for-x86_64-baseos-beta-rpms"
- LEAPPDATA_BRANCH: "upstream"
# Tests: 8.10 -> 9.5
@@ -562,8 +539,6 @@ jobs:
env:
SOURCE_RELEASE: "8.10"
TARGET_RELEASE: "9.5"
- RHSM_REPOS: "rhel-8-for-x86_64-appstream-beta-rpms,rhel-8-for-x86_64-baseos-beta-rpms"
- LEAPPDATA_BRANCH: "upstream"
# On-demand minimal beaker tests
- &beaker-minimal-810to95
@@ -577,7 +552,6 @@ jobs:
env:
SOURCE_RELEASE: "8.10"
TARGET_RELEASE: "9.5"
- LEAPPDATA_BRANCH: "upstream"
# On-demand kernel-rt tests
- &kernel-rt-810to95
@@ -591,5 +565,3 @@ jobs:
env:
SOURCE_RELEASE: "8.10"
TARGET_RELEASE: "9.5"
- RHSM_REPOS: "rhel-8-for-x86_64-appstream-beta-rpms,rhel-8-for-x86_64-baseos-beta-rpms"
- LEAPPDATA_BRANCH: "upstream"
--
2.42.0

View File

@ -0,0 +1,27 @@
From 84e63e6789c15ada85ec9bc615e545da1acf21b5 Mon Sep 17 00:00:00 2001
From: Martin Kluson <mkluson@redhat.com>
Date: Mon, 20 May 2024 12:57:32 +0200
Subject: [PATCH 59/92] .packit.yaml: adjust `post_install_script` for RHEL 7.9
Remove enabling repos step from .packit.yaml, it was moved to TF, where
it logically belongs to.
---
.packit.yaml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.packit.yaml b/.packit.yaml
index 805eb2b5..0b81a2f1 100644
--- a/.packit.yaml
+++ b/.packit.yaml
@@ -145,7 +145,7 @@ jobs:
distro: "rhel-7.9"
settings:
provisioning:
- post_install_script: "#!/bin/sh\nsudo sed -i s/.*ssh-rsa/ssh-rsa/ /root/.ssh/authorized_keys; yum-config-manager --enable rhel-7-server-rhui-optional-rpms"
+ post_install_script: "#!/bin/sh\nsudo sed -i s/.*ssh-rsa/ssh-rsa/ /root/.ssh/authorized_keys"
tags:
BusinessUnit: sst_upgrades@leapp_upstream_test
--
2.42.0

View File

@ -0,0 +1,500 @@
From d23fba228fe7110b8cbac59958f5b549bb5a8567 Mon Sep 17 00:00:00 2001
From: Manuel Moran <101399189+mm0ran@users.noreply.github.com>
Date: Thu, 6 Jun 2024 08:43:00 +0200
Subject: [PATCH 60/92] Additional .packit.yaml fixes
---
.packit.yaml | 253 +++++++++++++++++++++++++++++----------------------
1 file changed, 145 insertions(+), 108 deletions(-)
diff --git a/.packit.yaml b/.packit.yaml
index 0b81a2f1..81a0cabe 100644
--- a/.packit.yaml
+++ b/.packit.yaml
@@ -111,18 +111,6 @@ jobs:
distros: [RHEL-7.9-ZStream]
identifier: sanity-abstract-7to8
tmt_plan: ""
- tf_extra_params:
- test:
- tmt:
- plan_filter: 'tag:tier0 & enabled:true'
- environments:
- - tmt:
- context:
- distro: "rhel-7.9"
- settings:
- provisioning:
- tags:
- BusinessUnit: sst_upgrades@leapp_upstream_test
- &sanity-abstract-7to8-aws
<<: *sanity-abstract-7to8
@@ -135,19 +123,6 @@ jobs:
identifier: sanity-abstract-7to8-aws
# NOTE(ivasilev) Unfortunately to use yaml templates we need to rewrite the whole tf_extra_params dict
# to use plan_filter (can't just specify one section test.tmt.plan_filter, need to specify environments.* as well)
- tf_extra_params:
- test:
- tmt:
- plan_filter: 'tag:upgrade_happy_path & enabled:true'
- environments:
- - tmt:
- context:
- distro: "rhel-7.9"
- settings:
- provisioning:
- post_install_script: "#!/bin/sh\nsudo sed -i s/.*ssh-rsa/ssh-rsa/ /root/.ssh/authorized_keys"
- tags:
- BusinessUnit: sst_upgrades@leapp_upstream_test
# On-demand minimal beaker tests
- &beaker-minimal-7to8-abstract-ondemand
@@ -156,18 +131,6 @@ jobs:
labels:
- beaker-minimal
identifier: beaker-minimal-7to8-abstract-ondemand
- tf_extra_params:
- test:
- tmt:
- plan_filter: 'tag:partitioning & tag:7to8 & enabled:true'
- environments:
- - tmt:
- context:
- distro: "rhel-7.9"
- settings:
- provisioning:
- tags:
- BusinessUnit: sst_upgrades@leapp_upstream_test
# On-demand kernel-rt tests
- &kernel-rt-abstract-7to8-ondemand
@@ -175,39 +138,48 @@ jobs:
labels:
- kernel-rt
identifier: sanity-7to8-kernel-rt-abstract-ondemand
+
+# ###################################################################### #
+# ######################### Individual tests ########################### #
+# ###################################################################### #
+
+# Tests: 7.9 -> 8.8
+- &sanity-79to88-aws
+ <<: *sanity-abstract-7to8-aws
+ trigger: pull_request
+ identifier: sanity-7.9to8.8-aws
tf_extra_params:
test:
tmt:
- plan_filter: 'tag:kernel-rt & tag:7to8 & enabled:true'
+ plan_filter: 'tag:7to8 & tag:rhui-tier[0] & enabled:true'
environments:
- tmt:
context:
distro: "rhel-7.9"
+ distro_target: "rhel-8.8"
settings:
provisioning:
+ post_install_script: "#!/bin/sh\nsudo sed -i s/.*ssh-rsa/ssh-rsa/ /root/.ssh/authorized_keys"
tags:
BusinessUnit: sst_upgrades@leapp_upstream_test
-
-
-# ###################################################################### #
-# ######################### Individual tests ########################### #
-# ###################################################################### #
-
-# Tests: 7.9 -> 8.8
-- &sanity-79to88-aws
- <<: *sanity-abstract-7to8-aws
- trigger: pull_request
- identifier: sanity-7.9to8.8-aws
env:
SOURCE_RELEASE: "7.9"
TARGET_RELEASE: "8.8"
- LEAPP_NO_RHSM: "1"
RHUI_HYPERSCALER: aws
- &sanity-79to88
<<: *sanity-abstract-7to8
trigger: pull_request
identifier: sanity-7.9to8.8
+ tf_extra_params:
+ test:
+ tmt:
+ plan_filter: 'tag:7to8 & tag:tier0 & enabled:true'
+ environments:
+ - tmt:
+ context:
+ distro: "rhel-7.9"
+ distro_target: "rhel-8.8"
env:
SOURCE_RELEASE: "7.9"
TARGET_RELEASE: "8.8"
@@ -220,6 +192,15 @@ jobs:
- beaker-minimal-7.9to8.8
- 7.9to8.8
identifier: sanity-7.9to8.8-beaker-minimal-ondemand
+ tf_extra_params:
+ test:
+ tmt:
+ plan_filter: 'tag:7to8 & tag:partitioning & enabled:true'
+ environments:
+ - tmt:
+ context:
+ distro: "rhel-7.9"
+ distro_target: "rhel-8.8"
env:
SOURCE_RELEASE: "7.9"
TARGET_RELEASE: "8.8"
@@ -232,6 +213,15 @@ jobs:
- kernel-rt-7.9to8.8
- 7.9to8.8
identifier: sanity-7.9to8.8-kernel-rt-ondemand
+ tf_extra_params:
+ test:
+ tmt:
+ plan_filter: 'tag:7to8 & tag:kernel-rt & enabled:true'
+ environments:
+ - tmt:
+ context:
+ distro: "rhel-7.9"
+ distro_target: "rhel-8.8"
env:
SOURCE_RELEASE: "7.9"
TARGET_RELEASE: "8.8"
@@ -241,6 +231,15 @@ jobs:
<<: *sanity-abstract-7to8
trigger: pull_request
identifier: sanity-7.9to8.10
+ tf_extra_params:
+ test:
+ tmt:
+ plan_filter: 'tag:7to8 & tag:tier0 & enabled:true'
+ environments:
+ - tmt:
+ context:
+ distro: "rhel-7.9"
+ distro_target: "rhel-8.10"
env:
SOURCE_RELEASE: "7.9"
TARGET_RELEASE: "8.10"
@@ -249,6 +248,20 @@ jobs:
<<: *sanity-abstract-7to8-aws
trigger: pull_request
identifier: sanity-7.9to8.10-aws
+ tf_extra_params:
+ test:
+ tmt:
+ plan_filter: 'tag:7to8 & tag:rhui-tier[0] & enabled:true'
+ environments:
+ - tmt:
+ context:
+ distro: "rhel-7.9"
+ distro_target: "rhel-8.10"
+ settings:
+ provisioning:
+ post_install_script: "#!/bin/sh\nsudo sed -i s/.*ssh-rsa/ssh-rsa/ /root/.ssh/authorized_keys"
+ tags:
+ BusinessUnit: sst_upgrades@leapp_upstream_test
env:
SOURCE_RELEASE: "7.9"
TARGET_RELEASE: "8.10"
@@ -262,6 +275,15 @@ jobs:
- beaker-minimal-7.9to8.10
- 7.9to8.10
identifier: sanity-7.9to8.10-beaker-minimal-ondemand
+ tf_extra_params:
+ test:
+ tmt:
+ plan_filter: 'tag:7to8 & tag:partitioning & enabled:true'
+ environments:
+ - tmt:
+ context:
+ distro: "rhel-7.9"
+ distro_target: "rhel-8.10"
env:
SOURCE_RELEASE: "7.9"
TARGET_RELEASE: "8.10"
@@ -274,6 +296,15 @@ jobs:
- kernel-rt-7.9to8.10
- 7.9to8.10
identifier: sanity-7.9to8.10-kernel-rt-ondemand
+ tf_extra_params:
+ test:
+ tmt:
+ plan_filter: 'tag:7to8 & tag:kernel-rt & enabled:true'
+ environments:
+ - tmt:
+ context:
+ distro: "rhel-7.9"
+ distro_target: "rhel-8.10"
env:
SOURCE_RELEASE: "7.9"
TARGET_RELEASE: "8.10"
@@ -303,18 +334,6 @@ jobs:
epel-8-x86_64:
distros: [RHEL-8.10.0-Nightly]
identifier: sanity-abstract-8to9
- tf_extra_params:
- test:
- tmt:
- plan_filter: 'tag:tier0 & tag:8to9 & enabled:true'
- environments:
- - tmt:
- context:
- distro: "rhel-8.10"
- settings:
- provisioning:
- tags:
- BusinessUnit: sst_upgrades@leapp_upstream_test
- &sanity-abstract-8to9-aws
<<: *sanity-abstract-8to9
@@ -325,19 +344,6 @@ jobs:
epel-8-x86_64:
distros: [RHEL-8.10-rhui]
identifier: sanity-abstract-8to9-aws
- tf_extra_params:
- test:
- tmt:
- plan_filter: 'tag:upgrade_happy_path & enabled:true'
- environments:
- - tmt:
- context:
- distro: "rhel-8.10"
- settings:
- provisioning:
- post_install_script: "#!/bin/sh\nsudo sed -i s/.*ssh-rsa/ssh-rsa/ /root/.ssh/authorized_keys"
- tags:
- BusinessUnit: sst_upgrades@leapp_upstream_test
- &beaker-minimal-8to9-abstract-ondemand
<<: *sanity-abstract-8to9
@@ -348,37 +354,12 @@ jobs:
epel-8-x86_64:
distros: [RHEL-8.10.0-Nightly]
identifier: beaker-minimal-8to9-abstract-ondemand
- tf_extra_params:
- test:
- tmt:
- plan_filter: 'tag:partitioning & tag:8to9 & enabled:true'
- environments:
- - tmt:
- context:
- distro: "rhel-8.10"
- settings:
- provisioning:
- tags:
- BusinessUnit: sst_upgrades@leapp_upstream_test
- &kernel-rt-abstract-8to9-ondemand
<<: *beaker-minimal-8to9-abstract-ondemand
labels:
- kernel-rt
identifier: sanity-8to9-kernel-rt-abstract-ondemand
- tf_extra_params:
- test:
- tmt:
- plan_filter: 'tag:kernel-rt & tag:8to9 & enabled:true'
- environments:
- - tmt:
- context:
- distro: "rhel-8.10"
- settings:
- provisioning:
- tags:
- BusinessUnit: sst_upgrades@leapp_upstream_test
-
# ###################################################################### #
# ######################### Individual tests ########################### #
@@ -395,11 +376,12 @@ jobs:
tf_extra_params:
test:
tmt:
- plan_filter: 'tag:tier0 & tag:8to9 & enabled:true'
+ plan_filter: 'tag:8to9 & tag:tier0 & enabled:true'
environments:
- tmt:
context:
distro: "rhel-8.8"
+ distro_target: "rhel-9.2"
settings:
provisioning:
tags:
@@ -408,7 +390,6 @@ jobs:
SOURCE_RELEASE: "8.8"
TARGET_RELEASE: "9.2"
RHSM_REPOS_EUS: "eus"
- LEAPP_DEVEL_TARGET_RELEASE: "9.2"
- &sanity-88to92-aws
<<: *sanity-abstract-8to9-aws
@@ -421,11 +402,12 @@ jobs:
tf_extra_params:
test:
tmt:
- plan_filter: 'tag:upgrade_happy_path & enabled:true'
+ plan_filter: 'tag:8to9 & tag:rhui-tier[0] & enabled:true'
environments:
- tmt:
context:
distro: "rhel-8.8"
+ distro_target: "rhel-9.2"
settings:
provisioning:
post_install_script: "#!/bin/sh\nsudo sed -i s/.*ssh-rsa/ssh-rsa/ /root/.ssh/authorized_keys"
@@ -434,7 +416,6 @@ jobs:
env:
SOURCE_RELEASE: "8.8"
TARGET_RELEASE: "9.2"
- LEAPP_NO_RHSM: "1"
RHUI_HYPERSCALER: aws
- &beaker-minimal-88to92
@@ -451,11 +432,12 @@ jobs:
tf_extra_params:
test:
tmt:
- plan_filter: 'tag:partitioning & tag:8to9 & enabled:true'
+ plan_filter: 'tag:8to9 &tag:partitioning & enabled:true'
environments:
- tmt:
context:
distro: "rhel-8.8"
+ distro_target: "rhel-9.2"
settings:
provisioning:
post_install_script: "#!/bin/sh\nsudo sed -i s/.*ssh-rsa/ssh-rsa/ /root/.ssh/authorized_keys"
@@ -464,7 +446,7 @@ jobs:
env:
SOURCE_RELEASE: "8.8"
TARGET_RELEASE: "9.2"
- LEAPP_DEVEL_TARGET_RELEASE: "9.2"
+ RHSM_REPOS_EUS: "eus"
- &kernel-rt-88to92
<<: *kernel-rt-abstract-8to9-ondemand
@@ -480,11 +462,12 @@ jobs:
tf_extra_params:
test:
tmt:
- plan_filter: 'tag:kernel-rt & tag:8to9 & enabled:true'
+ plan_filter: 'tag:8to9 & tag:kernel-rt & enabled:true'
environments:
- tmt:
context:
distro: "rhel-8.8"
+ distro_target: "rhel-9.2"
settings:
provisioning:
tags:
@@ -492,7 +475,7 @@ jobs:
env:
SOURCE_RELEASE: "8.8"
TARGET_RELEASE: "9.2"
- LEAPP_DEVEL_TARGET_RELEASE: "9.2"
+ RHSM_REPOS_EUS: "eus"
# Tests: 8.10 -> 9.4
@@ -500,6 +483,15 @@ jobs:
<<: *sanity-abstract-8to9
trigger: pull_request
identifier: sanity-8.10to9.4
+ tf_extra_params:
+ test:
+ tmt:
+ plan_filter: 'tag:8to9 & tag:tier0 & enabled:true'
+ environments:
+ - tmt:
+ context:
+ distro: "rhel-8.10"
+ distro_target: "rhel-9.4"
env:
SOURCE_RELEASE: "8.10"
TARGET_RELEASE: "9.4"
@@ -513,6 +505,15 @@ jobs:
- beaker-minimal-8.10to9.4
- 8.10to9.4
identifier: sanity-8.10to9.4-beaker-minimal-ondemand
+ tf_extra_params:
+ test:
+ tmt:
+ plan_filter: 'tag:8to9 & tag:partitioning & enabled:true'
+ environments:
+ - tmt:
+ context:
+ distro: "rhel-8.10"
+ distro_target: "rhel-9.4"
env:
SOURCE_RELEASE: "8.10"
TARGET_RELEASE: "9.4"
@@ -526,6 +527,15 @@ jobs:
- kernel-rt-8.10to9.4
- 8.10to9.4
identifier: sanity-8.10to9.4-kernel-rt-ondemand
+ tf_extra_params:
+ test:
+ tmt:
+ plan_filter: 'tag:8to9 & tag:kernel-rt & enabled:true'
+ environments:
+ - tmt:
+ context:
+ distro: "rhel-8.10"
+ distro_target: "rhel-9.4"
env:
SOURCE_RELEASE: "8.10"
TARGET_RELEASE: "9.4"
@@ -536,6 +546,15 @@ jobs:
<<: *sanity-abstract-8to9
trigger: pull_request
identifier: sanity-8.10to9.5
+ tf_extra_params:
+ test:
+ tmt:
+ plan_filter: 'tag:8to9 & tag:tier0 & enabled:true'
+ environments:
+ - tmt:
+ context:
+ distro: "rhel-8.10"
+ distro_target: "rhel-9.5"
env:
SOURCE_RELEASE: "8.10"
TARGET_RELEASE: "9.5"
@@ -549,6 +568,15 @@ jobs:
- beaker-minimal-8.10to9.5
- 8.10to9.5
identifier: sanity-8.10to9.5-beaker-minimal-ondemand
+ tf_extra_params:
+ test:
+ tmt:
+ plan_filter: 'tag:8to9 & tag:partitioning & enabled:true'
+ environments:
+ - tmt:
+ context:
+ distro: "rhel-8.10"
+ distro_target: "rhel-9.5"
env:
SOURCE_RELEASE: "8.10"
TARGET_RELEASE: "9.5"
@@ -562,6 +590,15 @@ jobs:
- kernel-rt-8.10to9.5
- 8.10to9.5
identifier: sanity-8.10to9.5-kernel-rt-ondemand
+ tf_extra_params:
+ test:
+ tmt:
+ plan_filter: 'tag:8to9 & tag:kernel-rt & enabled:true'
+ environments:
+ - tmt:
+ context:
+ distro: "rhel-8.10"
+ distro_target: "rhel-9.5"
env:
SOURCE_RELEASE: "8.10"
TARGET_RELEASE: "9.5"
--
2.42.0

View File

@ -0,0 +1,167 @@
From 91f4e3b5d243f957f35d999ebd99ddf270125cb1 Mon Sep 17 00:00:00 2001
From: Manuel Moran <101399189+mm0ran@users.noreply.github.com>
Date: Fri, 7 Jun 2024 14:02:39 +0200
Subject: [PATCH 61/92] Add PR review changes
- Remove comment connected to deleted lines
- Add BusinessUnit to all environments
---
.packit.yaml | 51 ++++++++++++++++++++++++++++++++++++++++++++++++---
1 file changed, 48 insertions(+), 3 deletions(-)
diff --git a/.packit.yaml b/.packit.yaml
index 81a0cabe..a27806f2 100644
--- a/.packit.yaml
+++ b/.packit.yaml
@@ -121,8 +121,6 @@ jobs:
epel-7-x86_64:
distros: [RHEL-7.9-rhui]
identifier: sanity-abstract-7to8-aws
- # NOTE(ivasilev) Unfortunately to use yaml templates we need to rewrite the whole tf_extra_params dict
- # to use plan_filter (can't just specify one section test.tmt.plan_filter, need to specify environments.* as well)
# On-demand minimal beaker tests
- &beaker-minimal-7to8-abstract-ondemand
@@ -180,6 +178,10 @@ jobs:
context:
distro: "rhel-7.9"
distro_target: "rhel-8.8"
+ settings:
+ provisioning:
+ tags:
+ BusinessUnit: sst_upgrades@leapp_upstream_test
env:
SOURCE_RELEASE: "7.9"
TARGET_RELEASE: "8.8"
@@ -201,6 +203,10 @@ jobs:
context:
distro: "rhel-7.9"
distro_target: "rhel-8.8"
+ settings:
+ provisioning:
+ tags:
+ BusinessUnit: sst_upgrades@leapp_upstream_test
env:
SOURCE_RELEASE: "7.9"
TARGET_RELEASE: "8.8"
@@ -222,6 +228,10 @@ jobs:
context:
distro: "rhel-7.9"
distro_target: "rhel-8.8"
+ settings:
+ provisioning:
+ tags:
+ BusinessUnit: sst_upgrades@leapp_upstream_test
env:
SOURCE_RELEASE: "7.9"
TARGET_RELEASE: "8.8"
@@ -240,6 +250,10 @@ jobs:
context:
distro: "rhel-7.9"
distro_target: "rhel-8.10"
+ settings:
+ provisioning:
+ tags:
+ BusinessUnit: sst_upgrades@leapp_upstream_test
env:
SOURCE_RELEASE: "7.9"
TARGET_RELEASE: "8.10"
@@ -284,6 +298,10 @@ jobs:
context:
distro: "rhel-7.9"
distro_target: "rhel-8.10"
+ settings:
+ provisioning:
+ tags:
+ BusinessUnit: sst_upgrades@leapp_upstream_test
env:
SOURCE_RELEASE: "7.9"
TARGET_RELEASE: "8.10"
@@ -305,6 +323,10 @@ jobs:
context:
distro: "rhel-7.9"
distro_target: "rhel-8.10"
+ settings:
+ provisioning:
+ tags:
+ BusinessUnit: sst_upgrades@leapp_upstream_test
env:
SOURCE_RELEASE: "7.9"
TARGET_RELEASE: "8.10"
@@ -398,7 +420,6 @@ jobs:
epel-8-x86_64:
distros: [RHEL-8.8-rhui]
identifier: sanity-8.8to9.2-aws
- # NOTE(mkluson) Unfortunately to use yaml templates we need to rewrite the whole tf_extra_params dict
tf_extra_params:
test:
tmt:
@@ -492,6 +513,10 @@ jobs:
context:
distro: "rhel-8.10"
distro_target: "rhel-9.4"
+ settings:
+ provisioning:
+ tags:
+ BusinessUnit: sst_upgrades@leapp_upstream_test
env:
SOURCE_RELEASE: "8.10"
TARGET_RELEASE: "9.4"
@@ -514,6 +539,10 @@ jobs:
context:
distro: "rhel-8.10"
distro_target: "rhel-9.4"
+ settings:
+ provisioning:
+ tags:
+ BusinessUnit: sst_upgrades@leapp_upstream_test
env:
SOURCE_RELEASE: "8.10"
TARGET_RELEASE: "9.4"
@@ -536,6 +565,10 @@ jobs:
context:
distro: "rhel-8.10"
distro_target: "rhel-9.4"
+ settings:
+ provisioning:
+ tags:
+ BusinessUnit: sst_upgrades@leapp_upstream_test
env:
SOURCE_RELEASE: "8.10"
TARGET_RELEASE: "9.4"
@@ -555,6 +588,10 @@ jobs:
context:
distro: "rhel-8.10"
distro_target: "rhel-9.5"
+ settings:
+ provisioning:
+ tags:
+ BusinessUnit: sst_upgrades@leapp_upstream_test
env:
SOURCE_RELEASE: "8.10"
TARGET_RELEASE: "9.5"
@@ -577,6 +614,10 @@ jobs:
context:
distro: "rhel-8.10"
distro_target: "rhel-9.5"
+ settings:
+ provisioning:
+ tags:
+ BusinessUnit: sst_upgrades@leapp_upstream_test
env:
SOURCE_RELEASE: "8.10"
TARGET_RELEASE: "9.5"
@@ -599,6 +640,10 @@ jobs:
context:
distro: "rhel-8.10"
distro_target: "rhel-9.5"
+ settings:
+ provisioning:
+ tags:
+ BusinessUnit: sst_upgrades@leapp_upstream_test
env:
SOURCE_RELEASE: "8.10"
TARGET_RELEASE: "9.5"
--
2.42.0

View File

@ -0,0 +1,67 @@
From ba46700ed91381458fefe556fb68ca0d2d3b758c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michal=20He=C4=8Dko?= <michal.sk.com@gmail.com>
Date: Mon, 10 Jun 2024 22:30:39 +0200
Subject: [PATCH 62/92] rhui(gcp): add SAP RHEL 8.10 client (#1253)
* rhui(gcp): add SAP RHEL 8.10 client
Add a dedicated entry for SAP RHEL 8.10 on GCP due to the same reasons
as with other cloud providers - 8.10 is the last RHEL8 release, thus,
there are no content channels. A dedicated client is introduced,
providing SAP systems with GA content.
* Add spaces to message strings
---------
Co-authored-by: mhecko <mhecko@redhat.com>
Co-authored-by: Toshio Kuratomi <a.badger@gmail.com>
---
.../libraries/userspacegen.py | 15 ++++++++++++++-
repos/system_upgrade/common/libraries/rhui.py | 4 ++++
2 files changed, 18 insertions(+), 1 deletion(-)
diff --git a/repos/system_upgrade/common/actors/targetuserspacecreator/libraries/userspacegen.py b/repos/system_upgrade/common/actors/targetuserspacecreator/libraries/userspacegen.py
index dc93c9a0..6e8214dd 100644
--- a/repos/system_upgrade/common/actors/targetuserspacecreator/libraries/userspacegen.py
+++ b/repos/system_upgrade/common/actors/targetuserspacecreator/libraries/userspacegen.py
@@ -1220,7 +1220,20 @@ def setup_target_rhui_access_if_needed(context, indata):
_apply_rhui_access_postinstall_tasks(context, setup_info)
# Do a cleanup so there are not duplicit repoids
- files_owned_by_clients = _query_rpm_for_pkg_files(context, indata.rhui_info.target_client_pkg_names)
+ try:
+ files_owned_by_clients = _query_rpm_for_pkg_files(context, indata.rhui_info.target_client_pkg_names)
+ except CalledProcessError as err: # We failed to rpm -qf PKG, the PKG is most likely not installed
+ api.current_logger().critical('Failed to query files owned by target RHUI clients (clients=%s). This is caused'
+ ' by failing to install the target clients during the client-swap step.'
+ ' Full error: %s', indata.rhui_info.target_client_pkg_names, err)
+
+ target_major = get_target_major_version()
+ plural_suffix = 's' if len(indata.rhui_info.target_client_pkg_names) > 1 else ''
+ client_rpms = ', '.join(indata.rhui_info.target_client_pkg_names)
+ msg = ('Could not find the RHEL {target_major} RHUI client rpm{plural_suffix} ({client_rpms})'
+ ' in the cloud provider\'s client repository.')
+ raise StopActorExecutionError(msg.format(target_major=target_major, plural_suffix=plural_suffix,
+ client_rpms=client_rpms))
for copy_task in setup_info.preinstall_tasks.files_to_copy_into_overlay:
dest = get_copy_location_from_copy_in_task(context.base_dir, copy_task)
diff --git a/repos/system_upgrade/common/libraries/rhui.py b/repos/system_upgrade/common/libraries/rhui.py
index dbb3d71e..86f74084 100644
--- a/repos/system_upgrade/common/libraries/rhui.py
+++ b/repos/system_upgrade/common/libraries/rhui.py
@@ -323,6 +323,10 @@ RHUI_SETUPS = {
mandatory_files=[('leapp-google-sap.repo', YUM_REPOS_PATH)],
files_supporting_client_operation=['leapp-google-sap.repo'],
os_version='8', content_channel=ContentChannel.E4S),
+ mk_rhui_setup(clients={'google-rhui-client-rhel810-sap'}, leapp_pkg='leapp-rhui-google-sap',
+ mandatory_files=[('leapp-google-sap.repo', YUM_REPOS_PATH)],
+ files_supporting_client_operation=['leapp-google-sap.repo'],
+ os_version='8.10', content_channel=ContentChannel.GA),
mk_rhui_setup(clients={'google-rhui-client-rhel9-sap'}, leapp_pkg='leapp-rhui-google-sap',
mandatory_files=[('leapp-google-sap.repo', YUM_REPOS_PATH)],
files_supporting_client_operation=['leapp-google-sap.repo'],
--
2.42.0

View File

@ -0,0 +1,49 @@
From f3913f7b8ee11f5e67354bf18963f05269bb511c Mon Sep 17 00:00:00 2001
From: Petr Stodulka <pstodulk@redhat.com>
Date: Mon, 6 May 2024 09:33:34 +0200
Subject: [PATCH 63/92] PR welcome msg: update the msg to cover additional
Packit cmds
I found useful to be able to run just failed tests (when they crashed
due to infrastructure issues). Updating the welcome msg to provide
this info and little bit restructured original statement, to make
it more friendly for reading.
---
.github/workflows/pr-welcome-msg.yml | 17 +++++++++++------
1 file changed, 11 insertions(+), 6 deletions(-)
diff --git a/.github/workflows/pr-welcome-msg.yml b/.github/workflows/pr-welcome-msg.yml
index c6527da4..ff9414d2 100644
--- a/.github/workflows/pr-welcome-msg.yml
+++ b/.github/workflows/pr-welcome-msg.yml
@@ -21,16 +21,21 @@ jobs:
## **Thank you for contributing to the Leapp project!**
Please note that every PR needs to comply with the [Leapp Guidelines](https://leapp.readthedocs.io/en/latest/contributing.html#) and must pass all tests in order to be mergeable.
If you want to request a review or rebuild a package in copr, you can use following commands as a comment:
- - **review please @oamg/developers** to notify leapp developers of the review request
- - **/packit copr-build** to submit a public copr build using packit
+ - **`review please @oamg/developers`** to notify leapp developers of the review request
+ - **`/packit copr-build`** to submit a public copr build using packit
- Packit will automatically schedule regression tests for this PR's build and latest upstream leapp build. If you need a different version of leapp, e.g. from PR#42, use `/packit test oamg/leapp#42`
- Note that first time contributors cannot run tests automatically - they will be started by a reviewer.
+ Packit will automatically schedule regression tests for this PR's build and latest upstream leapp build.
+ However, here are additional useful commands for packit:
+ - **`/packit test`** to re-run manually the default tests
+ - **`/packit retest-failed`** to re-run failed tests manually
+ - **`/packit test oamg/leapp#42`** to run tests with leapp builds for the leapp PR#42 (default is latest upstream - master - build)
+
+ Note that first time contributors cannot run tests automatically - they need to be started by a reviewer.
It is possible to schedule specific on-demand tests as well. Currently 2 test sets are supported, `beaker-minimal` and `kernel-rt`, both can be used to be run on all upgrade paths or just a couple of specific ones.
To launch on-demand tests with packit:
- - **/packit test --labels kernel-rt** to schedule `kernel-rt` tests set for all upgrade paths
- - **/packit test --labels beaker-minimal-8.10to9.4,kernel-rt-8.10to9.4** to schedule `kernel-rt` and `beaker-minimal` test sets for 8.10->9.4 upgrade path
+ - **`/packit test --labels kernel-rt`** to schedule `kernel-rt` tests set for all upgrade paths
+ - **`/packit test --labels beaker-minimal-8.10to9.4,kernel-rt-8.10to9.4`** to schedule `kernel-rt` and `beaker-minimal` test sets for 8.10->9.4 upgrade path
See other labels for particular jobs defined in the `.packit.yaml` file.
--
2.42.0

View File

@ -0,0 +1,26 @@
From 4ba0ec3d51126cdff31b47f96312d7c6c0d138ad Mon Sep 17 00:00:00 2001
From: "Michal Reznik (mreznik)" <mreznik@redhat.com>
Date: Wed, 19 Jun 2024 15:59:01 +0200
Subject: [PATCH 64/92] Add RHEL 7 for SAP ELS to the RHUI config (#1254)
There is going to be a separate ELS RHUI client package for
RHEL 7 for SAP.
---
repos/system_upgrade/common/libraries/rhui.py | 1 +
1 file changed, 1 insertion(+)
diff --git a/repos/system_upgrade/common/libraries/rhui.py b/repos/system_upgrade/common/libraries/rhui.py
index 86f74084..b2b906c3 100644
--- a/repos/system_upgrade/common/libraries/rhui.py
+++ b/repos/system_upgrade/common/libraries/rhui.py
@@ -319,6 +319,7 @@ RHUI_SETUPS = {
],
RHUIFamily(RHUIProvider.GOOGLE, variant=RHUIVariant.SAP, client_files_folder='google-sap'): [
mk_rhui_setup(clients={'google-rhui-client-rhel79-sap'}, os_version='7', content_channel=ContentChannel.E4S),
+ mk_rhui_setup(clients={'google-rhui-client-rhel7-sap-els'}, os_version='7'),
mk_rhui_setup(clients={'google-rhui-client-rhel8-sap'}, leapp_pkg='leapp-rhui-google-sap',
mandatory_files=[('leapp-google-sap.repo', YUM_REPOS_PATH)],
files_supporting_client_operation=['leapp-google-sap.repo'],
--
2.42.0

View File

@ -0,0 +1,28 @@
From 82d2db8e803c2865c5aea1c0abef75a3dd8c5f1c Mon Sep 17 00:00:00 2001
From: Michal Reznik <mreznik@redhat.com>
Date: Fri, 21 Jun 2024 12:02:16 +0200
Subject: [PATCH 65/92] Revert "Add RHEL 7 for SAP ELS to the RHUI config
(#1254)"
This reverts commit 4ba0ec3d51126cdff31b47f96312d7c6c0d138ad.
It turned out this change is not needed at the end.
---
repos/system_upgrade/common/libraries/rhui.py | 1 -
1 file changed, 1 deletion(-)
diff --git a/repos/system_upgrade/common/libraries/rhui.py b/repos/system_upgrade/common/libraries/rhui.py
index b2b906c3..86f74084 100644
--- a/repos/system_upgrade/common/libraries/rhui.py
+++ b/repos/system_upgrade/common/libraries/rhui.py
@@ -319,7 +319,6 @@ RHUI_SETUPS = {
],
RHUIFamily(RHUIProvider.GOOGLE, variant=RHUIVariant.SAP, client_files_folder='google-sap'): [
mk_rhui_setup(clients={'google-rhui-client-rhel79-sap'}, os_version='7', content_channel=ContentChannel.E4S),
- mk_rhui_setup(clients={'google-rhui-client-rhel7-sap-els'}, os_version='7'),
mk_rhui_setup(clients={'google-rhui-client-rhel8-sap'}, leapp_pkg='leapp-rhui-google-sap',
mandatory_files=[('leapp-google-sap.repo', YUM_REPOS_PATH)],
files_supporting_client_operation=['leapp-google-sap.repo'],
--
2.42.0

View File

@ -0,0 +1,26 @@
From 0ef7402e1b517dbe58ee004735d995a8e4eab24f Mon Sep 17 00:00:00 2001
From: Matej Matuska <mmatuska@redhat.com>
Date: Mon, 1 Jul 2024 15:30:11 +0200
Subject: [PATCH 66/92] codespell: Use specific version instead of master
Let's not blindly use the master ref, use a specific version instead.
---
.github/workflows/codespell.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/codespell.yml b/.github/workflows/codespell.yml
index 002d3774..c2960928 100644
--- a/.github/workflows/codespell.yml
+++ b/.github/workflows/codespell.yml
@@ -15,7 +15,7 @@ jobs:
steps:
- uses: actions/checkout@v4
- - uses: codespell-project/actions-codespell@master
+ - uses: codespell-project/actions-codespell@v2
with:
ignore_words_list: ro,fo,couldn,repositor,zeor
skip: "./repos/system_upgrade/common/actors/storagescanner/tests/files/mounts,\
--
2.42.0

View File

@ -0,0 +1,37 @@
From 3d1ee5a63c40628cdd78617f429e036e0b8014ad Mon Sep 17 00:00:00 2001
From: Evgeni Golov <evgeni@golov.de>
Date: Fri, 26 Apr 2024 09:32:18 +0200
Subject: [PATCH 67/92] Demote "Attempted to both enable and disable" message
to warning
---
.../libraries/setsystemdservicesstate.py | 2 +-
.../tests/test_setsystemdservicesstate.py | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/repos/system_upgrade/common/actors/systemd/setsystemdservicesstates/libraries/setsystemdservicesstate.py b/repos/system_upgrade/common/actors/systemd/setsystemdservicesstates/libraries/setsystemdservicesstate.py
index 641605db..3f84f59f 100644
--- a/repos/system_upgrade/common/actors/systemd/setsystemdservicesstates/libraries/setsystemdservicesstate.py
+++ b/repos/system_upgrade/common/actors/systemd/setsystemdservicesstates/libraries/setsystemdservicesstate.py
@@ -13,7 +13,7 @@ def process():
intersection = services_to_enable.intersection(services_to_disable)
for service in intersection:
msg = 'Attempted to both enable and disable systemd service "{}", service will be disabled.'.format(service)
- api.current_logger().error(msg)
+ api.current_logger().warning(msg)
for service in services_to_enable:
try:
diff --git a/repos/system_upgrade/common/actors/systemd/setsystemdservicesstates/tests/test_setsystemdservicesstate.py b/repos/system_upgrade/common/actors/systemd/setsystemdservicesstates/tests/test_setsystemdservicesstate.py
index 14d07537..fa17a94c 100644
--- a/repos/system_upgrade/common/actors/systemd/setsystemdservicesstates/tests/test_setsystemdservicesstate.py
+++ b/repos/system_upgrade/common/actors/systemd/setsystemdservicesstates/tests/test_setsystemdservicesstate.py
@@ -94,4 +94,4 @@ def test_enable_disable_conflict_logged(monkeypatch):
expect_msg = ('Attempted to both enable and disable systemd service "hello.service",'
' service will be disabled.')
- assert expect_msg in api.current_logger.errmsg
+ assert expect_msg in api.current_logger.warnmsg
--
2.42.0

View File

@ -0,0 +1,25 @@
From 5feeba7b216ec34f9a201f034d2c8f8db1462e6a Mon Sep 17 00:00:00 2001
From: Evgeni Golov <evgeni@golov.de>
Date: Fri, 26 Apr 2024 09:33:48 +0200
Subject: [PATCH 68/92] Don't enable services that will be afterwards disabled
---
.../libraries/setsystemdservicesstate.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/repos/system_upgrade/common/actors/systemd/setsystemdservicesstates/libraries/setsystemdservicesstate.py b/repos/system_upgrade/common/actors/systemd/setsystemdservicesstates/libraries/setsystemdservicesstate.py
index 3f84f59f..8aeb5c2c 100644
--- a/repos/system_upgrade/common/actors/systemd/setsystemdservicesstates/libraries/setsystemdservicesstate.py
+++ b/repos/system_upgrade/common/actors/systemd/setsystemdservicesstates/libraries/setsystemdservicesstate.py
@@ -15,7 +15,7 @@ def process():
msg = 'Attempted to both enable and disable systemd service "{}", service will be disabled.'.format(service)
api.current_logger().warning(msg)
- for service in services_to_enable:
+ for service in services_to_enable - intersection:
try:
systemd.enable_unit(service)
except CalledProcessError:
--
2.42.0

View File

@ -0,0 +1,96 @@
From 9ec92806e5e4dde455b303dc86269998971b9b19 Mon Sep 17 00:00:00 2001
From: Anna Dupliak <adupliak@redhat.com>
Date: Fri, 12 Jul 2024 16:43:57 +0200
Subject: [PATCH 69/92] Use frozen branch for rhel7 downstream testing (#1263)
RHEL 7 is EOM and based on that another testing of IPU 7 -> 8 is used only to be able to discover a possible regression. As such, all integration tests for IPU 7 -> 8 should be executed from a frozen rhel7 branch. Updating packig configuration to address that.
---
.packit.yaml | 23 +++++++++++++++--------
1 file changed, 15 insertions(+), 8 deletions(-)
diff --git a/.packit.yaml b/.packit.yaml
index a27806f2..7c3799cf 100644
--- a/.packit.yaml
+++ b/.packit.yaml
@@ -88,7 +88,8 @@ jobs:
# NOTE: to see what envars, targets, .. can be set in tests, see
# the configuration of tests here:
-# https://gitlab.cee.redhat.com/oamg/leapp-tests/-/blob/main/config.yaml
+# 7toX path https://gitlab.cee.redhat.com/oamg/leapp-tests/-/blob/rhel7/config.yaml
+# >7tox path https://gitlab.cee.redhat.com/oamg/leapp-tests/-/blob/main/config.yaml
# Available only to RH Employees.
# ###################################################################### #
@@ -102,7 +103,7 @@ jobs:
job: tests
trigger: ignore
fmf_url: "https://gitlab.cee.redhat.com/oamg/leapp-tests"
- fmf_ref: "main"
+ fmf_ref: "rhel7"
use_internal_tf: True
labels:
- sanity
@@ -149,7 +150,7 @@ jobs:
tf_extra_params:
test:
tmt:
- plan_filter: 'tag:7to8 & tag:rhui-tier[0] & enabled:true'
+ plan_filter: 'tag:7to8 & tag:upgrade_happy_path & enabled:true'
environments:
- tmt:
context:
@@ -163,7 +164,10 @@ jobs:
env:
SOURCE_RELEASE: "7.9"
TARGET_RELEASE: "8.8"
- RHUI_HYPERSCALER: aws
+ RHUI: "aws"
+ LEAPPDATA_BRANCH: "upstream"
+ LEAPP_NO_RHSM: "1"
+ USE_CUSTOM_REPOS: rhui
- &sanity-79to88
<<: *sanity-abstract-7to8
@@ -172,7 +176,7 @@ jobs:
tf_extra_params:
test:
tmt:
- plan_filter: 'tag:7to8 & tag:tier0 & enabled:true'
+ plan_filter: 'tag:7to8 & tag:sanity & enabled:true'
environments:
- tmt:
context:
@@ -244,7 +248,7 @@ jobs:
tf_extra_params:
test:
tmt:
- plan_filter: 'tag:7to8 & tag:tier0 & enabled:true'
+ plan_filter: 'tag:7to8 & tag:sanity & enabled:true'
environments:
- tmt:
context:
@@ -265,7 +269,7 @@ jobs:
tf_extra_params:
test:
tmt:
- plan_filter: 'tag:7to8 & tag:rhui-tier[0] & enabled:true'
+ plan_filter: 'tag:7to8 & tag:upgrade_happy_path & enabled:true'
environments:
- tmt:
context:
@@ -279,7 +283,10 @@ jobs:
env:
SOURCE_RELEASE: "7.9"
TARGET_RELEASE: "8.10"
- RHUI_HYPERSCALER: aws
+ RHUI: "aws"
+ LEAPPDATA_BRANCH: "upstream"
+ LEAPP_NO_RHSM: "1"
+ USE_CUSTOM_REPOS: rhui
- &beaker-minimal-79to810
<<: *beaker-minimal-7to8-abstract-ondemand
--
2.42.0

View File

@ -0,0 +1,129 @@
From 7e5a5e7088695bcdd4b822b9a057de8cd221d19c Mon Sep 17 00:00:00 2001
From: Evgeni Golov <evgeni@golov.de>
Date: Mon, 27 May 2024 09:25:20 +0200
Subject: [PATCH 70/92] load obsoleted gpg keys from gpg-signatures.json
---
.../libraries/removeobsoleterpmgpgkeys.py | 16 ++++------------
.../tests/test_removeobsoleterpmgpgkeys.py | 5 +++++
.../files/distro/centos/gpg-signatures.json | 3 ++-
.../files/distro/rhel/gpg-signatures.json | 11 ++++++++++-
.../system_upgrade/common/libraries/distro.py | 18 ++++++++++++++++++
5 files changed, 39 insertions(+), 14 deletions(-)
create mode 100644 repos/system_upgrade/common/libraries/distro.py
diff --git a/repos/system_upgrade/common/actors/removeobsoletegpgkeys/libraries/removeobsoleterpmgpgkeys.py b/repos/system_upgrade/common/actors/removeobsoletegpgkeys/libraries/removeobsoleterpmgpgkeys.py
index 1cc5d64f..6e84c2e9 100644
--- a/repos/system_upgrade/common/actors/removeobsoletegpgkeys/libraries/removeobsoleterpmgpgkeys.py
+++ b/repos/system_upgrade/common/actors/removeobsoletegpgkeys/libraries/removeobsoleterpmgpgkeys.py
@@ -1,27 +1,19 @@
from leapp.libraries.common.config.version import get_target_major_version
+from leapp.libraries.common.distro import get_distribution_data
from leapp.libraries.common.rpms import has_package
from leapp.libraries.stdlib import api
from leapp.models import DNFWorkaround, InstalledRPM
-# maps target version to keys obsoleted in that version
-OBSOLETED_KEYS_MAP = {
- 7: [],
- 8: [
- "gpg-pubkey-2fa658e0-45700c69",
- "gpg-pubkey-37017186-45761324",
- "gpg-pubkey-db42a60e-37ea5438",
- ],
- 9: ["gpg-pubkey-d4082792-5b32db75"],
-}
-
def _get_obsolete_keys():
"""
Return keys obsoleted in target and previous versions
"""
+ distribution = api.current_actor().configuration.os_release.release_id
+ obsoleted_keys_map = get_distribution_data(distribution).get('obsoleted-keys', {})
keys = []
for version in range(7, int(get_target_major_version()) + 1):
- for key in OBSOLETED_KEYS_MAP[version]:
+ for key in obsoleted_keys_map[str(version)]:
name, version, release = key.rsplit("-", 2)
if has_package(InstalledRPM, name, version=version, release=release):
keys.append(key)
diff --git a/repos/system_upgrade/common/actors/removeobsoletegpgkeys/tests/test_removeobsoleterpmgpgkeys.py b/repos/system_upgrade/common/actors/removeobsoletegpgkeys/tests/test_removeobsoleterpmgpgkeys.py
index 1d487815..4d9a0e84 100644
--- a/repos/system_upgrade/common/actors/removeobsoletegpgkeys/tests/test_removeobsoleterpmgpgkeys.py
+++ b/repos/system_upgrade/common/actors/removeobsoletegpgkeys/tests/test_removeobsoleterpmgpgkeys.py
@@ -1,3 +1,5 @@
+import os
+
import pytest
from leapp.libraries.actor import removeobsoleterpmgpgkeys
@@ -67,6 +69,9 @@ def test_get_obsolete_keys(monkeypatch, version, expected):
),
)
+ cur_dir = os.path.dirname(os.path.abspath(__file__))
+ monkeypatch.setattr(api, 'get_common_folder_path', lambda folder: os.path.join(cur_dir, '../../../files/', folder))
+
keys = removeobsoleterpmgpgkeys._get_obsolete_keys()
assert set(keys) == set(expected)
diff --git a/repos/system_upgrade/common/files/distro/centos/gpg-signatures.json b/repos/system_upgrade/common/files/distro/centos/gpg-signatures.json
index cf7f819d..547b13e7 100644
--- a/repos/system_upgrade/common/files/distro/centos/gpg-signatures.json
+++ b/repos/system_upgrade/common/files/distro/centos/gpg-signatures.json
@@ -3,5 +3,6 @@
"24c6a8a7f4a80eb5",
"05b555b38483c65d",
"4eb84e71f2ee9d55"
- ]
+ ],
+ "obsoleted-keys": {}
}
diff --git a/repos/system_upgrade/common/files/distro/rhel/gpg-signatures.json b/repos/system_upgrade/common/files/distro/rhel/gpg-signatures.json
index 64d9ed12..0d40e001 100644
--- a/repos/system_upgrade/common/files/distro/rhel/gpg-signatures.json
+++ b/repos/system_upgrade/common/files/distro/rhel/gpg-signatures.json
@@ -5,5 +5,14 @@
"938a80caf21541eb",
"fd372689897da07a",
"45689c882fa658e0"
- ]
+ ],
+ "obsoleted-keys": {
+ "7": [],
+ "8": [
+ "gpg-pubkey-2fa658e0-45700c69",
+ "gpg-pubkey-37017186-45761324",
+ "gpg-pubkey-db42a60e-37ea5438"
+ ],
+ "9": ["gpg-pubkey-d4082792-5b32db75"]
+ }
}
diff --git a/repos/system_upgrade/common/libraries/distro.py b/repos/system_upgrade/common/libraries/distro.py
new file mode 100644
index 00000000..2ed5eacd
--- /dev/null
+++ b/repos/system_upgrade/common/libraries/distro.py
@@ -0,0 +1,18 @@
+import json
+import os
+
+from leapp.exceptions import StopActorExecutionError
+from leapp.libraries.stdlib import api
+
+
+def get_distribution_data(distribution):
+ distributions_path = api.get_common_folder_path('distro')
+
+ distribution_config = os.path.join(distributions_path, distribution, 'gpg-signatures.json')
+ if os.path.exists(distribution_config):
+ with open(distribution_config) as distro_config_file:
+ return json.load(distro_config_file)
+ else:
+ raise StopActorExecutionError(
+ 'Cannot find distribution signature configuration.',
+ details={'Problem': 'Distribution {} was not found in {}.'.format(distribution, distributions_path)})
--
2.42.0

View File

@ -0,0 +1,56 @@
From f822cb805ed9efd101fd212eb162544ab29c8fe9 Mon Sep 17 00:00:00 2001
From: Evgeni Golov <evgeni@golov.de>
Date: Mon, 27 May 2024 11:58:46 +0200
Subject: [PATCH 71/92] refactor distributionsignedrpmscanner to use common
distro helper
---
.../libraries/distributionsignedrpmscanner.py | 22 ++-----------------
1 file changed, 2 insertions(+), 20 deletions(-)
diff --git a/repos/system_upgrade/common/actors/distributionsignedrpmscanner/libraries/distributionsignedrpmscanner.py b/repos/system_upgrade/common/actors/distributionsignedrpmscanner/libraries/distributionsignedrpmscanner.py
index 7898453b..51d6eeb5 100644
--- a/repos/system_upgrade/common/actors/distributionsignedrpmscanner/libraries/distributionsignedrpmscanner.py
+++ b/repos/system_upgrade/common/actors/distributionsignedrpmscanner/libraries/distributionsignedrpmscanner.py
@@ -1,28 +1,10 @@
-import json
-import os
-
-from leapp.exceptions import StopActorExecutionError
from leapp.libraries.common import rhui
from leapp.libraries.common.config import get_env
+from leapp.libraries.common.distro import get_distribution_data
from leapp.libraries.stdlib import api
from leapp.models import DistributionSignedRPM, InstalledRedHatSignedRPM, InstalledRPM, InstalledUnsignedRPM
-def get_distribution_data(distribution):
- distributions_path = api.get_common_folder_path('distro')
-
- distribution_config = os.path.join(distributions_path, distribution, 'gpg-signatures.json')
- if os.path.exists(distribution_config):
- with open(distribution_config) as distro_config_file:
- distro_config_json = json.load(distro_config_file)
- distro_keys = distro_config_json.get('keys', [])
- else:
- raise StopActorExecutionError(
- 'Cannot find distribution signature configuration.',
- details={'Problem': 'Distribution {} was not found in {}.'.format(distribution, distributions_path)})
- return distro_keys
-
-
def is_distro_signed(pkg, distro_keys):
return any(key in pkg.pgpsig for key in distro_keys)
@@ -49,7 +31,7 @@ def is_exceptional(pkg, allowlist):
def process():
distribution = api.current_actor().configuration.os_release.release_id
- distro_keys = get_distribution_data(distribution)
+ distro_keys = get_distribution_data(distribution).get('keys', [])
all_signed = get_env('LEAPP_DEVEL_RPMS_ALL_SIGNED', '0') == '1'
rhui_pkgs = rhui.get_all_known_rhui_pkgs_for_current_upg()
--
2.42.0

View File

@ -0,0 +1,167 @@
From dafa6172d046dead08a497bd84283edf6206518f Mon Sep 17 00:00:00 2001
From: Petr Stodulka <pstodulk@redhat.com>
Date: Tue, 23 Jan 2024 10:37:56 +0100
Subject: [PATCH 72/92] IPU 9 -> 10: Initial preparation: upgrade paths and
leapp packages def
Introducing initial changes needed for IPU 9 -> 10 to prevent abouvious
crashes and inhibitors:
* Extend the list of supported source versions for the upgrade by el9
* Define upgrade paths for IPU 9 -> 10
* Add Python path for el 10 (py 3.12)
* Introducing el9toel10 repository
created .gitkeep files inside empty dirs
NOTE:
Enable upgrade from RHEL 9.4 & 9.5 to RHEL 10.0 for now. For the
experiment purposes. These will not be supported for the upgrade at all,
but to make testing and experimentations easier, allow it for now.
TODO:
* add RHEL 10 product certificates
* add RHEL 10 GPG keys
---
repos/system_upgrade/common/files/upgrade_paths.json | 8 ++++++--
.../common/libraries/config/version.py | 3 +++
repos/system_upgrade/common/libraries/dnfplugin.py | 1 +
repos/system_upgrade/common/libraries/rpms.py | 12 +++++++++---
repos/system_upgrade/el9toel10/.leapp/info | 1 +
repos/system_upgrade/el9toel10/.leapp/leapp.conf | 6 ++++++
repos/system_upgrade/el9toel10/actors/.gitkeep | 0
.../el9toel10/files/bundled-rpms/.gitkeep | 0
repos/system_upgrade/el9toel10/libraries/.gitkeep | 0
repos/system_upgrade/el9toel10/models/.gitkeep | 0
repos/system_upgrade/el9toel10/tools/.gitkeep | 0
11 files changed, 26 insertions(+), 5 deletions(-)
create mode 100644 repos/system_upgrade/el9toel10/.leapp/info
create mode 100644 repos/system_upgrade/el9toel10/.leapp/leapp.conf
create mode 100644 repos/system_upgrade/el9toel10/actors/.gitkeep
create mode 100644 repos/system_upgrade/el9toel10/files/bundled-rpms/.gitkeep
create mode 100644 repos/system_upgrade/el9toel10/libraries/.gitkeep
create mode 100644 repos/system_upgrade/el9toel10/models/.gitkeep
create mode 100644 repos/system_upgrade/el9toel10/tools/.gitkeep
diff --git a/repos/system_upgrade/common/files/upgrade_paths.json b/repos/system_upgrade/common/files/upgrade_paths.json
index 43bd049a..5399f148 100644
--- a/repos/system_upgrade/common/files/upgrade_paths.json
+++ b/repos/system_upgrade/common/files/upgrade_paths.json
@@ -3,14 +3,18 @@
"7.9": ["8.8", "8.10"],
"8.8": ["9.2"],
"8.10": ["9.4", "9.5"],
+ "9.6": ["10.0"],
"7": ["8.8", "8.10"],
- "8": ["9.2", "9.4", "9.5"]
+ "8": ["9.2", "9.4", "9.5"],
+ "9": ["10.0"]
},
"saphana": {
"7.9": ["8.10", "8.8"],
"7": ["8.10", "8.8"],
"8.8": ["9.2"],
"8.10": ["9.4"],
- "8": ["9.4", "9.2"]
+ "8": ["9.4", "9.2"],
+ "9.6": ["10.0"],
+ "9": ["10.0"]
}
}
diff --git a/repos/system_upgrade/common/libraries/config/version.py b/repos/system_upgrade/common/libraries/config/version.py
index fdfeface..152d9112 100644
--- a/repos/system_upgrade/common/libraries/config/version.py
+++ b/repos/system_upgrade/common/libraries/config/version.py
@@ -13,10 +13,13 @@ OP_MAP = {
'<=': operator.le
}
+# TODO(pstodulk): drop 9.4 & 9.5 before May 2025 release
+# These will not be supported fo IPU 9 -> 10
_SUPPORTED_VERSIONS = {
# Note: 'rhel-alt' is detected when on 'rhel' with kernel 4.x
'7': {'rhel': ['7.9'], 'rhel-alt': [], 'rhel-saphana': ['7.9']},
'8': {'rhel': ['8.8', '8.10'], 'rhel-saphana': ['8.8', '8.10']},
+ '9': {'rhel': ['9.4', '9.5', '9.6'], 'rhel-saphana': ['9.4', '9.6']},
}
diff --git a/repos/system_upgrade/common/libraries/dnfplugin.py b/repos/system_upgrade/common/libraries/dnfplugin.py
index 6f056a33..d09cb90a 100644
--- a/repos/system_upgrade/common/libraries/dnfplugin.py
+++ b/repos/system_upgrade/common/libraries/dnfplugin.py
@@ -21,6 +21,7 @@ class _DnfPluginPathStr(str):
_PATHS = {
"8": os.path.join('/lib/python3.6/site-packages/dnf-plugins', DNF_PLUGIN_NAME),
"9": os.path.join('/lib/python3.9/site-packages/dnf-plugins', DNF_PLUGIN_NAME),
+ "10": os.path.join('/lib/python3.12/site-packages/dnf-plugins', DNF_PLUGIN_NAME),
}
def __init__(self): # noqa: W0231; pylint: disable=super-init-not-called
diff --git a/repos/system_upgrade/common/libraries/rpms.py b/repos/system_upgrade/common/libraries/rpms.py
index 2890240f..dde4d2b6 100644
--- a/repos/system_upgrade/common/libraries/rpms.py
+++ b/repos/system_upgrade/common/libraries/rpms.py
@@ -22,18 +22,24 @@ _LEAPP_PACKAGES_MAP = {
LeappComponents.FRAMEWORK: {'7': {'pkgs': ['leapp', 'python2-leapp'],
'deps': ['leapp-deps']},
'8': {'pkgs': ['leapp', 'python3-leapp'],
+ 'deps': ['leapp-deps']},
+ '9': {'pkgs': ['leapp', 'python3-leapp'],
'deps': ['leapp-deps']}
},
LeappComponents.REPOSITORY: {'7': {'pkgs': ['leapp-upgrade-el7toel8'],
'deps': ['leapp-upgrade-el7toel8-deps']},
'8': {'pkgs': ['leapp-upgrade-el8toel9'],
- 'deps': ['leapp-upgrade-el8toel9-deps']}
+ 'deps': ['leapp-upgrade-el8toel9-deps']},
+ '9': {'pkgs': ['leapp-upgrade-el9toel10'],
+ 'deps': ['leapp-upgrade-el9toel10-deps']}
},
LeappComponents.COCKPIT: {'7': {'pkgs': ['cockpit-leapp']},
- '8': {'pkgs': ['cockpit-leapp']}
+ '8': {'pkgs': ['cockpit-leapp']},
+ '9': {'pkgs': ['cockpit-leapp']},
},
LeappComponents.TOOLS: {'7': {'pkgs': ['snactor']},
- '8': {'pkgs': ['snactor']}
+ '8': {'pkgs': ['snactor']},
+ '9': {'pkgs': ['snactor']}
}
}
diff --git a/repos/system_upgrade/el9toel10/.leapp/info b/repos/system_upgrade/el9toel10/.leapp/info
new file mode 100644
index 00000000..500087a8
--- /dev/null
+++ b/repos/system_upgrade/el9toel10/.leapp/info
@@ -0,0 +1 @@
+{"name": "system_upgrade_el9toel10", "id": "ba7ab214-d579-4e70-811e-7c30966d8d28", "messages": {}, "repos": ["efcf9016-f2d1-4609-9329-a298e6587b3c", "644900a5-c347-43a3-bfab-f448f46d9647"]}
diff --git a/repos/system_upgrade/el9toel10/.leapp/leapp.conf b/repos/system_upgrade/el9toel10/.leapp/leapp.conf
new file mode 100644
index 00000000..b4591347
--- /dev/null
+++ b/repos/system_upgrade/el9toel10/.leapp/leapp.conf
@@ -0,0 +1,6 @@
+
+[repositories]
+repo_path=${repository:root_dir}
+
+[database]
+path=${repository:state_dir}/leapp.db
diff --git a/repos/system_upgrade/el9toel10/actors/.gitkeep b/repos/system_upgrade/el9toel10/actors/.gitkeep
new file mode 100644
index 00000000..e69de29b
diff --git a/repos/system_upgrade/el9toel10/files/bundled-rpms/.gitkeep b/repos/system_upgrade/el9toel10/files/bundled-rpms/.gitkeep
new file mode 100644
index 00000000..e69de29b
diff --git a/repos/system_upgrade/el9toel10/libraries/.gitkeep b/repos/system_upgrade/el9toel10/libraries/.gitkeep
new file mode 100644
index 00000000..e69de29b
diff --git a/repos/system_upgrade/el9toel10/models/.gitkeep b/repos/system_upgrade/el9toel10/models/.gitkeep
new file mode 100644
index 00000000..e69de29b
diff --git a/repos/system_upgrade/el9toel10/tools/.gitkeep b/repos/system_upgrade/el9toel10/tools/.gitkeep
new file mode 100644
index 00000000..e69de29b
--
2.42.0

View File

@ -0,0 +1,199 @@
From 87012437ad29350c993deb110283702ca2959c30 Mon Sep 17 00:00:00 2001
From: Petr Stodulka <pstodulk@redhat.com>
Date: Tue, 2 Apr 2024 19:33:04 +0200
Subject: [PATCH 73/92] Packaging: Introduce EL 9 builds for IPU 9 -> 10
SPEC files has been updated and polished to be more friendly when
keeping suppoer for building in EL 7, 8, and 9. Also Makefile
contains some initial changes But keeping the full solution for a
separate commit.
Packit configuration has been updated to start building for
epel-9-x86_64 buildroot.
---
.packit.yaml | 3 ++
Makefile | 14 +++++--
packaging/leapp-repository.spec | 42 +++++++++++++------
.../other_specs/leapp-el7toel8-deps.spec | 6 ++-
4 files changed, 48 insertions(+), 17 deletions(-)
diff --git a/.packit.yaml b/.packit.yaml
index 7c3799cf..d91a47e5 100644
--- a/.packit.yaml
+++ b/.packit.yaml
@@ -34,6 +34,7 @@ jobs:
targets:
- epel-7-x86_64
- epel-8-x86_64
+ - epel-9-x86_64
actions:
create-archive:
- bash -c "rm -f packaging/deps-pkgs.tar.gz"
@@ -54,6 +55,7 @@ jobs:
targets:
- epel-7-x86_64
- epel-8-x86_64
+ - epel-9-x86_64
actions:
create-archive:
- bash -c "rm -f packaging/deps-pkgs.tar.gz"
@@ -73,6 +75,7 @@ jobs:
targets:
- epel-7-x86_64
- epel-8-x86_64
+ - epel-9-x86_64
actions:
create-archive:
- bash -c "rm -f packaging/deps-pkgs.tar.gz"
diff --git a/Makefile b/Makefile
index 0de2a86a..a62d0ccc 100644
--- a/Makefile
+++ b/Makefile
@@ -189,8 +189,9 @@ source: prepare
@git archive --prefix "$(PKGNAME)-$(VERSION)/" -o "packaging/sources/$(PKGNAME)-$(VERSION).tar.gz" HEAD
@echo "--- PREPARE DEPS PKGS ---"
mkdir -p packaging/tmp/
- @__TIMESTAMP=$(TIMESTAMP) $(MAKE) _build_subpkg
- @__TIMESTAMP=$(TIMESTAMP) $(MAKE) DIST_VERSION=$$(($(DIST_VERSION) + 1)) _build_subpkg
+ @__TIMESTAMP=$(TIMESTAMP) $(MAKE) DIST_VERSION=7 _build_subpkg
+ @__TIMESTAMP=$(TIMESTAMP) $(MAKE) DIST_VERSION=8 _build_subpkg
+ @__TIMESTAMP=$(TIMESTAMP) $(MAKE) DIST_VERSION=9 _build_subpkg
@tar -czf packaging/sources/deps-pkgs.tar.gz -C packaging/RPMS/noarch `ls -1 packaging/RPMS/noarch | grep -o "[^/]*rpm$$"`
@rm -f packaging/RPMS/noarch/*.rpm
@@ -389,11 +390,14 @@ _test_container_ipu:
el8toel9) \
export REPOSITORIES="common,el8toel9"; \
;; \
+ el9toel10) \
+ export REPOSITORIES="common,el9toel10"; \
+ ;; \
"") \
echo "TEST_CONT_IPU must be set"; exit 1; \
;; \
*) \
- echo "Only supported TEST_CONT_IPUs are el7toel8, el8toel9"; exit 1; \
+ echo "Only supported TEST_CONT_IPUs are el7toel8, el8toel9, el9toel10"; exit 1; \
;; \
esac && \
$(_CONTAINER_TOOL) exec -w /repocopy $$_CONT_NAME make clean && \
@@ -449,6 +453,10 @@ test_container:
;; \
python3.9) \
TEST_CONT_IPU=el8toel9 $(MAKE) _test_container_ipu; \
+ TEST_CONT_IPU=el9toel10 $(MAKE) _test_container_ipu; \
+ ;; \
+ python3.12) \
+ TEST_CONT_IPU=el9toel10 $(MAKE) _test_container_ipu; \
;; \
*) \
TEST_CONT_IPU=el8toel9 $(MAKE) _test_container_ipu; \
diff --git a/packaging/leapp-repository.spec b/packaging/leapp-repository.spec
index 7c3fe5c6..e813cf14 100644
--- a/packaging/leapp-repository.spec
+++ b/packaging/leapp-repository.spec
@@ -7,9 +7,19 @@
%if 0%{?rhel} == 7
%define leapp_python_sitelib %{python2_sitelib}
%define lpr_name leapp-upgrade-el7toel8
+ %define repo_shortname el7toel8
+ %define next_major_ver 8
%else
%define leapp_python_sitelib %{python3_sitelib}
- %define lpr_name leapp-upgrade-el8toel9
+ %if 0%{?rhel} == 8
+ %define lpr_name leapp-upgrade-el8toel9
+ %define repo_shortname el8toel9
+ %define next_major_ver 9
+ %else
+ %define lpr_name leapp-upgrade-el9toel10
+ %define repo_shortname el9toel10
+ %define next_major_ver 10
+ %endif
# This drops autogenerated deps on
# - /usr/libexec/platform-python (rhel-8 buildroot)
@@ -84,14 +94,24 @@ Obsoletes: leapp-repository-sos-plugin <= 0.9.0
Conflicts: leapp-upgrade-el8toel9
%else
-######### RHEL 8 ############
+######### RHEL 8+ (and newer) ############
BuildRequires: python3-devel
Requires: python3-leapp
+# NOTE(pstodulk): else if / elif has been implemented quite late. as we still
+# want to build on RHEL 7 too, go in the old way. Ref:
+# https://github.com/rpm-software-management/rpm/issues/311
+%if 0%{?rhel} == 8
+######### RHEL 8 ############
+
# Same as the conflict above - we want to be sure our packages are untouched
# during the whole IPU process
Conflicts: leapp-upgrade-el7toel8
-
+Conflicts: leapp-upgrade-el9toel10
+%else
+######### RHEL 9 ############
+Conflicts: leapp-upgrade-el8toel9
+%endif
%endif
# IMPORTANT: every time the requirements are changed, increment number by one
@@ -210,11 +230,7 @@ Requires: python3-gobject-base
%build
-%if 0%{?rhel} == 7
-cp -a leapp*deps*el8.noarch.rpm repos/system_upgrade/el7toel8/files/bundled-rpms/
-%else
-cp -a leapp*deps*el9.noarch.rpm repos/system_upgrade/el8toel9/files/bundled-rpms/
-%endif
+cp -a leapp*deps*el%{next_major_ver}.noarch.rpm repos/system_upgrade/%{repo_shortname}/files/bundled-rpms/
%install
@@ -222,6 +238,7 @@ install -m 0755 -d %{buildroot}%{custom_repositorydir}
install -m 0755 -d %{buildroot}%{repositorydir}
cp -r repos/* %{buildroot}%{repositorydir}/
install -m 0755 -d %{buildroot}%{_sysconfdir}/leapp/repos.d/
+# NOTE(pstodulk): drop transaction dir and its content if replaced by config files before RHEL 10
install -m 0755 -d %{buildroot}%{_sysconfdir}/leapp/transaction/
install -m 0755 -d %{buildroot}%{_sysconfdir}/leapp/files/
install -m 0644 etc/leapp/transaction/* %{buildroot}%{_sysconfdir}/leapp/transaction
@@ -234,11 +251,10 @@ rm -rf %{buildroot}%{leapp_python_sitelib}/leapp/cli/commands/tests
# Remove irrelevant repositories - We don't want to ship them for the particular
# RHEL version
-%if 0%{?rhel} == 7
-rm -rf %{buildroot}%{repositorydir}/system_upgrade/el8toel9
-%else
-rm -rf %{buildroot}%{repositorydir}/system_upgrade/el7toel8
-%endif
+for i in el7toel8 el8toel9 el9toel10;
+do
+ [ "$i" != "%{repo_shortname}" ] && rm -rf %{buildroot}%{repositorydir}/system_upgrade/$i
+done
# remove component/unit tests, Makefiles, ... stuff that related to testing only
rm -rf %{buildroot}%{repositorydir}/common/actors/testactor
diff --git a/packaging/other_specs/leapp-el7toel8-deps.spec b/packaging/other_specs/leapp-el7toel8-deps.spec
index c4e0dd90..d9e94faa 100644
--- a/packaging/other_specs/leapp-el7toel8-deps.spec
+++ b/packaging/other_specs/leapp-el7toel8-deps.spec
@@ -5,7 +5,11 @@
%if 0%{?rhel} == 8
%define lpr_name_src leapp-upgrade-el7toel8-deps
%else
- %define lpr_name_src leapp-upgrade-el8toel9-deps
+ %if 0%{?rhel} == 9
+ %define lpr_name_src leapp-upgrade-el8toel9-deps
+ %else
+ %define lpr_name_src leapp-upgrade-el9toel10-deps
+ %endif
%endif
--
2.42.0

View File

@ -0,0 +1,159 @@
From 953bfb1868595a6100522bfd92f4ea4c47e6be1b Mon Sep 17 00:00:00 2001
From: Matej Matuska <mmatuska@redhat.com>
Date: Mon, 24 Jun 2024 17:00:09 +0200
Subject: [PATCH 74/92] Add RHEL9 container for building and testing
Adding RHEL 9 containers so we can start to test & build packages
in RHEL 9 environemnt.
Since `python3-virtualenv` package is not available in the RHEL 9 UBI,
a workaround is introduced `make install-deps-fedora`, which is used by
the testing containers. If not able to install the package, `pip install
virtualenv` is used as a fallback as this is working in the image.
The relatively recent Python version used in the container means there
is also a relative recent Pylint verision, which introduces 2+ new
checks.
---
Makefile | 31 +++++++++++++++++------
utils/container-builds/Containerfile.ubi9 | 10 ++++++++
utils/container-tests/Containerfile.rhel9 | 18 +++++++++++++
3 files changed, 51 insertions(+), 8 deletions(-)
create mode 100644 utils/container-builds/Containerfile.ubi9
create mode 100644 utils/container-tests/Containerfile.rhel9
diff --git a/Makefile b/Makefile
index a62d0ccc..5b2bc4d2 100644
--- a/Makefile
+++ b/Makefile
@@ -111,7 +111,7 @@ help:
@echo " packaging"
@echo " srpm create the SRPM"
@echo " build_container create the RPM in container"
- @echo " - set BUILD_CONTAINER to el7 or el8"
+ @echo " - set BUILD_CONTAINER to el7, el8 or el9"
@echo " - don't run more than one build at the same time"
@echo " since containers operate on the same files!"
@echo " copr_build create the COPR build using the COPR TOKEN"
@@ -164,7 +164,7 @@ help:
@echo " PR=7 SUFFIX='my_additional_suffix' make <target>"
@echo " MR=6 COPR_CONFIG='path/to/the/config/copr/file' make <target>"
@echo " ACTOR=<actor> TEST_LIBS=y make test"
- @echo " BUILD_CONTAINER=rhel7 make build_container"
+ @echo " BUILD_CONTAINER=el7 make build_container"
@echo " TEST_CONTAINER=f34 make test_container"
@echo " CONTAINER_TOOL=docker TEST_CONTAINER=rhel7 make test_container_no_lint"
@echo ""
@@ -258,12 +258,15 @@ build_container:
el8) \
CONT_FILE="utils/container-builds/Containerfile.ubi8"; \
;; \
+ el9) \
+ CONT_FILE="utils/container-builds/Containerfile.ubi9"; \
+ ;; \
"") \
echo "BUILD_CONTAINER must be set"; \
exit 1; \
;; \
*) \
- echo "Available containers are el7, el8"; \
+ echo "Available containers are el7, el8, el9"; \
exit 1; \
;; \
esac && \
@@ -305,12 +308,20 @@ install-deps:
$(VENVNAME)/bin/pip install -I "git+https://github.com/oamg/leapp.git@refs/pull/$(REQ_LEAPP_PR)/head"; \
fi
$(_PYTHON_VENV) utils/install_actor_deps.py --actor=$(ACTOR) --repos="$(TEST_PATHS)"
+
install-deps-fedora:
@# Check the necessary rpms are installed for py3 (and py2 below)
- if ! rpm -q git findutils python3-virtualenv gcc; then \
- if ! dnf install -y git findutils python3-virtualenv gcc; then \
+ if ! rpm -q git findutils gcc; then \
+ if ! dnf install -y git findutils gcc; then \
echo 'Please install the following rpms via the command: ' \
- 'sudo dnf install -y git findutils python3-virtualenv gcc'; \
+ 'sudo dnf install -y git findutils gcc'; \
+ exit 1; \
+ fi; \
+ fi
+ if ! command -v virtualenv; then \
+ if ! (dnf install -y python3-virtualenv || pip install virtualenv); then \
+ echo 'Please install the following packages via the command: ' \
+ 'sudo dnf install -y python3-virtualenv or pip install virtualenv'; \
exit 1; \
fi; \
fi
@@ -432,6 +443,10 @@ test_container:
export CONT_FILE="utils/container-tests/Containerfile.rhel8"; \
export _VENV="python3.6"; \
;; \
+ rhel9) \
+ export CONT_FILE="utils/container-tests/Containerfile.rhel9"; \
+ export _VENV="python3.9"; \
+ ;; \
*) \
echo "Error: Available containers are: f34, rhel7, rhel8"; exit 1; \
;; \
@@ -481,7 +496,7 @@ test_container_all_no_lint:
# clean all testing and building containers and their images
clean_containers:
@for i in "leapp-repo-tests-f34" "leapp-repo-tests-rhel7" "leapp-repo-tests-rhel8" \
- "leapp-repo-build-el7" "leapp-repo-build-el8"; do \
+ "leapp-repo-tests-rhel9" "leapp-repo-build-el7" "leapp-repo-build-el8"; do \
$(_CONTAINER_TOOL) kill "$$i-cont" || :; \
$(_CONTAINER_TOOL) rm "$$i-cont" || :; \
$(_CONTAINER_TOOL) rmi "$$i" || :; \
@@ -492,7 +507,7 @@ fast_lint:
FILES_TO_LINT="$$(git diff --name-only $(MASTER_BRANCH) --diff-filter AMR | grep '\.py$$')"; \
if [[ -n "$$FILES_TO_LINT" ]]; then \
pylint -j 0 $$FILES_TO_LINT $(PYLINT_ARGS) && \
- flake8 $$FILES_TO_LINT $(FLAKE8_ARG); \
+ flake8 $$FILES_TO_LINT $(FLAKE8_ARGS); \
LINT_EXIT_CODE="$$?"; \
if [[ "$$LINT_EXIT_CODE" != "0" ]]; then \
exit $$LINT_EXIT_CODE; \
diff --git a/utils/container-builds/Containerfile.ubi9 b/utils/container-builds/Containerfile.ubi9
new file mode 100644
index 00000000..53567c08
--- /dev/null
+++ b/utils/container-builds/Containerfile.ubi9
@@ -0,0 +1,10 @@
+FROM registry.access.redhat.com/ubi9/ubi:latest
+
+VOLUME /repo
+
+RUN dnf update -y && \
+ dnf install -y python3-devel rpm-build make git
+
+WORKDIR /repo
+ENV DIST_VERSION 9
+ENTRYPOINT make _build_local
diff --git a/utils/container-tests/Containerfile.rhel9 b/utils/container-tests/Containerfile.rhel9
new file mode 100644
index 00000000..2261b2ad
--- /dev/null
+++ b/utils/container-tests/Containerfile.rhel9
@@ -0,0 +1,18 @@
+FROM registry.access.redhat.com/ubi9/ubi:latest
+
+VOLUME /repo
+
+RUN dnf update -y && \
+ dnf install -y python3-setuptools python3-pip make git rsync
+
+ENV PYTHON_VENV python3.9
+
+COPY . /repocopy
+
+WORKDIR /repocopy
+
+RUN rm -rf tut*
+
+RUN make clean && make install-deps-fedora
+
+WORKDIR /
--
2.42.0

View File

@ -0,0 +1,38 @@
From 14937bc95928fe72aae7b0735d455f82db5a4320 Mon Sep 17 00:00:00 2001
From: Petr Stodulka <pstodulk@redhat.com>
Date: Wed, 17 Jul 2024 23:49:32 +0200
Subject: [PATCH 75/92] tests: update pytest requirements to Py3.6+ compat
Currently we use frozen python modules due to compatibility with
python2. As we want to keep now still Py2 support due to RHEL 7
for a while, we do not want to simply use the newest versions of
current modules. However, with Python 3.12 we see it's really old
and some of old versions (like pytest) does not work as expected.
For that reason, adding conditional requirements for pytest. I chose
now to stick with pytest 6.2.5 which is compatible with Python3.6+
(due to RHEL 8).
Most likely we will need to revise other requirements too, but I focused
now just on obvious issues.
---
requirements.txt | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/requirements.txt b/requirements.txt
index ac6bf9b8..a1bb4725 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -5,7 +5,8 @@ isort
funcsigs==1.0.2
mock==2.0.0
pylint
-pytest==4.6.11
+pytest==4.6.11; python_version < '3.0'
+pytest==6.2.5; python_version >= '3.6'
pyudev==0.22.0
distro==1.5.0
ipaddress==1.0.23
--
2.42.0

View File

@ -0,0 +1,364 @@
From 3ab53e7698ee889c7ace8a034419b745aeeafa51 Mon Sep 17 00:00:00 2001
From: Petr Stodulka <pstodulk@redhat.com>
Date: Fri, 19 Apr 2024 15:08:48 +0200
Subject: [PATCH 76/92] IPU 9 -> 10: Add (FAKE) RHEL 10 certs and GPG keys
* Add RHEL 10.0 Beta product certificates
* Add FAKE RHEL 10.0 product certificates
* productions certificates for RHEL 10 has not been generated yet,
so adding faked certificates for now. In this part development
it's expected to test upgrades using internal custom repositories
only. Until the testing with RHSM certs are not needed yet.
But they will have to be updated for sure before the release.
* Add RHEL 10 (+Beta) RPM-GPG-KEY-redhat-release
* updated key from RHELBLD-15138 attached
* TODO: replace faked RHEL 10 product certificates by real ones when
available
Co-authored-by: Michal Reznik (mreznik) <mreznik@redhat.com>
Co-authored-by: Matej Matuska <mmatuska@redhat.com>
---
.../common/files/prod-certs/10.0/362.pem | 37 ++++++++++
.../common/files/prod-certs/10.0/363.pem | 37 ++++++++++
.../common/files/prod-certs/10.0/433.pem | 37 ++++++++++
.../common/files/prod-certs/10.0/479.pem | 35 ++++++++++
.../common/files/prod-certs/10.0/486.pem | 37 ++++++++++
.../rpm-gpg/10/RPM-GPG-KEY-redhat-release | 69 +++++++++++++++++++
.../rpm-gpg/10beta/RPM-GPG-KEY-redhat-release | 30 ++++++++
7 files changed, 282 insertions(+)
create mode 100644 repos/system_upgrade/common/files/prod-certs/10.0/362.pem
create mode 100644 repos/system_upgrade/common/files/prod-certs/10.0/363.pem
create mode 100644 repos/system_upgrade/common/files/prod-certs/10.0/433.pem
create mode 100644 repos/system_upgrade/common/files/prod-certs/10.0/479.pem
create mode 100644 repos/system_upgrade/common/files/prod-certs/10.0/486.pem
create mode 100644 repos/system_upgrade/common/files/rpm-gpg/10/RPM-GPG-KEY-redhat-release
create mode 100644 repos/system_upgrade/common/files/rpm-gpg/10beta/RPM-GPG-KEY-redhat-release
diff --git a/repos/system_upgrade/common/files/prod-certs/10.0/362.pem b/repos/system_upgrade/common/files/prod-certs/10.0/362.pem
new file mode 100644
index 00000000..1a794eff
--- /dev/null
+++ b/repos/system_upgrade/common/files/prod-certs/10.0/362.pem
@@ -0,0 +1,37 @@
+-----BEGIN CERTIFICATE-----
+MIIGeDCCBGCgAwIBAgIJALDxRLt/tVHqMA0GCSqGSIb3DQEBCwUAMIGuMQswCQYD
+VQQGEwJVUzEXMBUGA1UECAwOTm9ydGggQ2Fyb2xpbmExFjAUBgNVBAoMDVJlZCBI
+YXQsIEluYy4xGDAWBgNVBAsMD1JlZCBIYXQgTmV0d29yazEuMCwGA1UEAwwlUmVk
+IEhhdCBFbnRpdGxlbWVudCBQcm9kdWN0IEF1dGhvcml0eTEkMCIGCSqGSIb3DQEJ
+ARYVY2Etc3VwcG9ydEByZWRoYXQuY29tMB4XDTIzMDcxODA4MTkxNloXDTQzMDcx
+ODA4MTkxNlowRDFCMEAGA1UEAww5UmVkIEhhdCBQcm9kdWN0IElEIFsxYzVmYTgy
+Zi0wMTAwLTQ3OTQtODZkNC1iZDA2NmY3NDMzYzldMIICIjANBgkqhkiG9w0BAQEF
+AAOCAg8AMIICCgKCAgEAxj9J04z+Ezdyx1U33kFftLv0ntNS1BSeuhoZLDhs18yk
+sepG7hXXtHh2CMFfLZmTjAyL9i1XsxykQpVQdXTGpUF33C2qBQHB5glYs9+d781x
+8p8m8zFxbPcW82TIJXbgW3ErVh8vk5qCbG1cCAAHb+DWMq0EAyy1bl/JgAghYNGB
+RvKJObTdCrdpYh02KUqBLkSPZHvo6DUJFN37MXDpVeQq9VtqRjpKLLwuEfXb0Y7I
+5xEOrR3kYbOaBAWVt3mYZ1t0L/KfY2jVOdU5WFyyB9PhbMdLi1xE801j+GJrwcLa
+xmqvj4UaICRzcPATP86zVM1BBQa+lilkRQes5HyjZzZDiGYudnXhbqmLo/n0cuXo
+QBVVjhzRTMx71Eiiahmiw+U1vGqkHhQNxb13HtN1lcAhUCDrxxeMvrAjYdWpYlpI
+yW3NssPWt1YUHidMBSAJ4KctIf91dyE93aStlxwC/QnyFsZOmcEsBzVCnz9GmWMl
+1/6XzBS1yDUqByklx0TLH+z/sK9A+O2rZAy1mByCYwVxvbOZhnqGxAuToIS+A81v
+5hCjsCiOScVB+cil30YBu0cH85RZ0ILNkHdKdrLLWW4wjphK2nBn2g2i3+ztf+nQ
+ED2pQqZ/rhuW79jcyCZl9kXqe1wOdF0Cwah4N6/3LzIXEEKyEJxNqQwtNc2IVE8C
+AwEAAaOCAQAwgf0wCQYDVR0TBAIwADBIBgwrBgEEAZIICQGCagEEOAw2UmVkIEhh
+dCBFbnRlcnByaXNlIExpbnV4IGZvciBQb3dlciwgbGl0dGxlIGVuZGlhbiBCZXRh
+MBsGDCsGAQQBkggJAYJqAgQLDAkxMC4wIEJldGEwGQYMKwYBBAGSCAkBgmoDBAkM
+B3BwYzY0bGUwLgYMKwYBBAGSCAkBgmoEBB4MHHJoZWwtMTAscmhlbC0xMC1iZXRh
+LXBwYzY0bGUwHQYDVR0OBBYEFGHqILU1fK9nZDr/awjmEHjQzR+VMB8GA1UdIwQY
+MBaAFJb9uxxAQP9AhK2yHwsmwcNqb9Z8MA0GCSqGSIb3DQEBCwUAA4ICAQCOCuh5
+ogCBWizsby3kZwYvS5QvH2Ciz/NRxgpXcv5aP2YlQyGfwh7xRc/YvlRTKz70Wdor
+3xxo0A3ZbVBepQfKLwEKAO3vpMrDciKfwZI0pdbcny3+Nd56qm1Nq7gVO5H1m/cK
+r9Oa6YdSwWDEGhiyyEvpoHvcZMkR5KlV8rDnCoq7dIkp3Wcj6E6EFzyytlrWR9MT
+Q+4OVfMSjdyMNL7hTLECGqq+mICvtqX22yTL/gt1fcb4zLp41mjLT+Wza43LCRpx
+SJQbJiruUhkkqEyEloqFKtXLlBbELfzg/KYu0SK8OnGnqdTmp0pxBBM6lAlOzh++
+OjFCec0N5irdHltxdZ/KjLfcePPRn2Z0yPuyGKEBgbgYMDvCHskw3XoUiQ2TkoHO
+I76vz3szxQtjrvKhHXSTNoiUqwNEdZQBqAlTnr9vH0IeofM2Vopff6yzHRwNF/5w
+DFcCZ2k7ymV04GbRXyd8xi+Cg/Q6YjFiXE+X0e6kOAn1llwaQVh8fiphmU0D+N1S
+utZ3TIgA4IE4VL4+ezFBc81m+UtsO0tc6WbitdQn+Dsi0vnTPTvfHlCnhQcz8SiU
+VyBrnrItLTy8aIvlc69kap1KLdxetqn2qZZagKZphylT4YHGgfYTTkxZD5cCkxnh
+3y2cfONuGFHU6t2D90ccds2fgi0B1tz9jv74kw==
+-----END CERTIFICATE-----
diff --git a/repos/system_upgrade/common/files/prod-certs/10.0/363.pem b/repos/system_upgrade/common/files/prod-certs/10.0/363.pem
new file mode 100644
index 00000000..0d8b10fc
--- /dev/null
+++ b/repos/system_upgrade/common/files/prod-certs/10.0/363.pem
@@ -0,0 +1,37 @@
+-----BEGIN CERTIFICATE-----
+MIIGaTCCBFGgAwIBAgIJALDxRLt/tVHpMA0GCSqGSIb3DQEBCwUAMIGuMQswCQYD
+VQQGEwJVUzEXMBUGA1UECAwOTm9ydGggQ2Fyb2xpbmExFjAUBgNVBAoMDVJlZCBI
+YXQsIEluYy4xGDAWBgNVBAsMD1JlZCBIYXQgTmV0d29yazEuMCwGA1UEAwwlUmVk
+IEhhdCBFbnRpdGxlbWVudCBQcm9kdWN0IEF1dGhvcml0eTEkMCIGCSqGSIb3DQEJ
+ARYVY2Etc3VwcG9ydEByZWRoYXQuY29tMB4XDTIzMDcxODA4MTkxNloXDTQzMDcx
+ODA4MTkxNlowRDFCMEAGA1UEAww5UmVkIEhhdCBQcm9kdWN0IElEIFsyZjVjZTZi
+MC0wM2MxLTQ3OWYtYTlhNC00NjQzYmFkNmU4NmZdMIICIjANBgkqhkiG9w0BAQEF
+AAOCAg8AMIICCgKCAgEAxj9J04z+Ezdyx1U33kFftLv0ntNS1BSeuhoZLDhs18yk
+sepG7hXXtHh2CMFfLZmTjAyL9i1XsxykQpVQdXTGpUF33C2qBQHB5glYs9+d781x
+8p8m8zFxbPcW82TIJXbgW3ErVh8vk5qCbG1cCAAHb+DWMq0EAyy1bl/JgAghYNGB
+RvKJObTdCrdpYh02KUqBLkSPZHvo6DUJFN37MXDpVeQq9VtqRjpKLLwuEfXb0Y7I
+5xEOrR3kYbOaBAWVt3mYZ1t0L/KfY2jVOdU5WFyyB9PhbMdLi1xE801j+GJrwcLa
+xmqvj4UaICRzcPATP86zVM1BBQa+lilkRQes5HyjZzZDiGYudnXhbqmLo/n0cuXo
+QBVVjhzRTMx71Eiiahmiw+U1vGqkHhQNxb13HtN1lcAhUCDrxxeMvrAjYdWpYlpI
+yW3NssPWt1YUHidMBSAJ4KctIf91dyE93aStlxwC/QnyFsZOmcEsBzVCnz9GmWMl
+1/6XzBS1yDUqByklx0TLH+z/sK9A+O2rZAy1mByCYwVxvbOZhnqGxAuToIS+A81v
+5hCjsCiOScVB+cil30YBu0cH85RZ0ILNkHdKdrLLWW4wjphK2nBn2g2i3+ztf+nQ
+ED2pQqZ/rhuW79jcyCZl9kXqe1wOdF0Cwah4N6/3LzIXEEKyEJxNqQwtNc2IVE8C
+AwEAAaOB8jCB7zAJBgNVHRMEAjAAMDoGDCsGAQQBkggJAYJrAQQqDChSZWQgSGF0
+IEVudGVycHJpc2UgTGludXggZm9yIEFSTSA2NCBCZXRhMBsGDCsGAQQBkggJAYJr
+AgQLDAkxMC4wIEJldGEwGQYMKwYBBAGSCAkBgmsDBAkMB2FhcmNoNjQwLgYMKwYB
+BAGSCAkBgmsEBB4MHHJoZWwtMTAscmhlbC0xMC1iZXRhLWFhcmNoNjQwHQYDVR0O
+BBYEFGHqILU1fK9nZDr/awjmEHjQzR+VMB8GA1UdIwQYMBaAFJb9uxxAQP9AhK2y
+HwsmwcNqb9Z8MA0GCSqGSIb3DQEBCwUAA4ICAQCuV3lD4fHTaXiG1BF1vfjKm1w1
+Yv3LljlB3+F62liLEh8dZjTg4cahJ7YpkC3fGpqbHGs5u5to7SoW3MCfvEqmhAah
+QOTvMYGHwgeqLAG8mTYTnOScDsah8UkPzRl3BvZXgF6c3kIcFz6HGjVdzIvKF1A4
+di8EsWUlV5zf0muE7gEmG1AFq2j2IHXXGjBLhDlpRBlt9miJF6t0QNEd8C06x/yD
+t/dIUKDHgP2oLLW+nBWzzG3GtTjCeGJG/xHLkeVisRGUOUVP2infL+F6rQ3kk3/V
+xOCWzBwnLycKuRgaAcP4WZZnmgLkKcH/JQRqXCFHSP+lLpI3X8vHvlGe5KidwB4g
+xqRhWQwF4kOHC0eOJ96z7bZZyt5CcmUUBsDylt3/L2BFhbTackJCv6Axb+VhFYFg
+HKSixMzBpcSh3ZV+P8STvTBuQnVWIZwQrqWS9qRHS1JVEHa3BPPm1BsMnFKSFDwB
+ss20H+5D9FaJxx/kwmDxB37JhD5cw+La7ZVbQQzXNaJH2R/eBqxahdMFysNW0cXz
+yPCO5YKds/KYM+j6lzWMR2EKtsAhSAY5mqAPWPOQnZUJHO12pwP3WZ0K49KlWW4g
+6hMQvnqXgU2NtldmBwmlAAzscHOK5VA5RTzIGxW3hjY9jM5YhpKPssY2d84qdR/V
+3vL/tIdx1BihElHAQA==
+-----END CERTIFICATE-----
diff --git a/repos/system_upgrade/common/files/prod-certs/10.0/433.pem b/repos/system_upgrade/common/files/prod-certs/10.0/433.pem
new file mode 100644
index 00000000..b75e22c5
--- /dev/null
+++ b/repos/system_upgrade/common/files/prod-certs/10.0/433.pem
@@ -0,0 +1,37 @@
+-----BEGIN CERTIFICATE-----
+MIIGbDCCBFSgAwIBAgIJALDxRLt/tVHrMA0GCSqGSIb3DQEBCwUAMIGuMQswCQYD
+VQQGEwJVUzEXMBUGA1UECAwOTm9ydGggQ2Fyb2xpbmExFjAUBgNVBAoMDVJlZCBI
+YXQsIEluYy4xGDAWBgNVBAsMD1JlZCBIYXQgTmV0d29yazEuMCwGA1UEAwwlUmVk
+IEhhdCBFbnRpdGxlbWVudCBQcm9kdWN0IEF1dGhvcml0eTEkMCIGCSqGSIb3DQEJ
+ARYVY2Etc3VwcG9ydEByZWRoYXQuY29tMB4XDTIzMDcxODA4MTkxNloXDTQzMDcx
+ODA4MTkxNlowRDFCMEAGA1UEAww5UmVkIEhhdCBQcm9kdWN0IElEIFtlMjM1MjJj
+NC1lZjI0LTQ3YjgtYWQzNC1hNDhkYmVmNmIzMWZdMIICIjANBgkqhkiG9w0BAQEF
+AAOCAg8AMIICCgKCAgEAxj9J04z+Ezdyx1U33kFftLv0ntNS1BSeuhoZLDhs18yk
+sepG7hXXtHh2CMFfLZmTjAyL9i1XsxykQpVQdXTGpUF33C2qBQHB5glYs9+d781x
+8p8m8zFxbPcW82TIJXbgW3ErVh8vk5qCbG1cCAAHb+DWMq0EAyy1bl/JgAghYNGB
+RvKJObTdCrdpYh02KUqBLkSPZHvo6DUJFN37MXDpVeQq9VtqRjpKLLwuEfXb0Y7I
+5xEOrR3kYbOaBAWVt3mYZ1t0L/KfY2jVOdU5WFyyB9PhbMdLi1xE801j+GJrwcLa
+xmqvj4UaICRzcPATP86zVM1BBQa+lilkRQes5HyjZzZDiGYudnXhbqmLo/n0cuXo
+QBVVjhzRTMx71Eiiahmiw+U1vGqkHhQNxb13HtN1lcAhUCDrxxeMvrAjYdWpYlpI
+yW3NssPWt1YUHidMBSAJ4KctIf91dyE93aStlxwC/QnyFsZOmcEsBzVCnz9GmWMl
+1/6XzBS1yDUqByklx0TLH+z/sK9A+O2rZAy1mByCYwVxvbOZhnqGxAuToIS+A81v
+5hCjsCiOScVB+cil30YBu0cH85RZ0ILNkHdKdrLLWW4wjphK2nBn2g2i3+ztf+nQ
+ED2pQqZ/rhuW79jcyCZl9kXqe1wOdF0Cwah4N6/3LzIXEEKyEJxNqQwtNc2IVE8C
+AwEAAaOB9TCB8jAJBgNVHRMEAjAAMEEGDCsGAQQBkggJAYMxAQQxDC9SZWQgSGF0
+IEVudGVycHJpc2UgTGludXggZm9yIElCTSB6IFN5c3RlbXMgQmV0YTAbBgwrBgEE
+AZIICQGDMQIECwwJMTAuMCBCZXRhMBcGDCsGAQQBkggJAYMxAwQHDAVzMzkweDAs
+BgwrBgEEAZIICQGDMQQEHAwacmhlbC0xMCxyaGVsLTEwLWJldGEtczM5MHgwHQYD
+VR0OBBYEFGHqILU1fK9nZDr/awjmEHjQzR+VMB8GA1UdIwQYMBaAFJb9uxxAQP9A
+hK2yHwsmwcNqb9Z8MA0GCSqGSIb3DQEBCwUAA4ICAQAkusR2vZMDVNZ1RpiYgwFI
+/eweuntSHLYU3Lp2XtaoBgv4Nkoj9GrX5tMYCHSOr3ZgSQz7J9CByewXqOFvWZe+
+9ZbboJ0p+9OYRgP0S2F2QX3vaCyYZP9qkGSY49dKKmF+cpL5TkW+8lRRzEjjInQm
+gbv4Us4FR53WSOhqgsuxh8DPyIiJUQhy0KVQMQFkkaLA5v7jPv0BbHCprSfHjFXL
+8IyDwE5+OBWsdiIE+9NMHbFRjbi3O7NrZeglKis/OAk9gWvDWT4MnwLNBpFbaV9y
+99Likzu80buFRZoNahUtQNVSbOaygT3pNtRBFx7V9k0uwoqirWy+uXDWGOvtImhA
+zDPRoKsWqaTK0+ra6f7wk4Q5S5XrfBJWNjvHi0RScVLwdW8hhXp8LAkrQIPuUMky
+NHRl+PeS9d6Z/r217+87HIKZBez1GrnK3DQOb2niLX2o4K1T32KiHTY/1kvRdA5Z
+itPT50BTNEzVQsMEDDlQwOcCqAjhNvJEYhkKM705lfytFiN5Twp/5hAUj+tGx5z7
+KRPqnKwts/pGav2wRUpcSRtfQNIsn7XIB7qAEqnG9trG8MZN+iVggWJsu2IscJw+
+dgDcYo7kV0d6fqN8LE0RaLxg6/NfyvrI3nXSvE4E+fbvDVvNZTmpAmWFOgOYjOyw
+j5GU66xmQPJ//rMJZXW/Ug==
+-----END CERTIFICATE-----
diff --git a/repos/system_upgrade/common/files/prod-certs/10.0/479.pem b/repos/system_upgrade/common/files/prod-certs/10.0/479.pem
new file mode 100644
index 00000000..1ea1cd3d
--- /dev/null
+++ b/repos/system_upgrade/common/files/prod-certs/10.0/479.pem
@@ -0,0 +1,35 @@
+-----BEGIN CERTIFICATE-----
+MIIGFTCCA/2gAwIBAgIJALDxRLt/tVDQMA0GCSqGSIb3DQEBCwUAMIGuMQswCQYD
+VQQGEwJVUzEXMBUGA1UECAwOTm9ydGggQ2Fyb2xpbmExFjAUBgNVBAoMDVJlZCBI
+YXQsIEluYy4xGDAWBgNVBAsMD1JlZCBIYXQgTmV0d29yazEuMCwGA1UEAwwlUmVk
+IEhhdCBFbnRpdGxlbWVudCBQcm9kdWN0IEF1dGhvcml0eTEkMCIGCSqGSIb3DQEJ
+ARYVY2Etc3VwcG9ydEByZWRoYXQuY29tMB4XDTIzMDcxOTE2MzQwOFoXDTQzMDcx
+OTE2MzQwOFowRDFCMEAGA1UEAww5UmVkIEhhdCBQcm9kdWN0IElEIFsxZDg0ZDQ5
+Ny1jZmNmLTQxNjEtOTM0YS0zNzk2MDU4M2ZmZGZdMIICIjANBgkqhkiG9w0BAQEF
+AAOCAg8AMIICCgKCAgEAxj9J04z+Ezdyx1U33kFftLv0ntNS1BSeuhoZLDhs18yk
+sepG7hXXtHh2CMFfLZmTjAyL9i1XsxykQpVQdXTGpUF33C2qBQHB5glYs9+d781x
+8p8m8zFxbPcW82TIJXbgW3ErVh8vk5qCbG1cCAAHb+DWMq0EAyy1bl/JgAghYNGB
+RvKJObTdCrdpYh02KUqBLkSPZHvo6DUJFN37MXDpVeQq9VtqRjpKLLwuEfXb0Y7I
+5xEOrR3kYbOaBAWVt3mYZ1t0L/KfY2jVOdU5WFyyB9PhbMdLi1xE801j+GJrwcLa
+xmqvj4UaICRzcPATP86zVM1BBQa+lilkRQes5HyjZzZDiGYudnXhbqmLo/n0cuXo
+QBVVjhzRTMx71Eiiahmiw+U1vGqkHhQNxb13HtN1lcAhUCDrxxeMvrAjYdWpYlpI
+yW3NssPWt1YUHidMBSAJ4KctIf91dyE93aStlxwC/QnyFsZOmcEsBzVCnz9GmWMl
+1/6XzBS1yDUqByklx0TLH+z/sK9A+O2rZAy1mByCYwVxvbOZhnqGxAuToIS+A81v
+5hCjsCiOScVB+cil30YBu0cH85RZ0ILNkHdKdrLLWW4wjphK2nBn2g2i3+ztf+nQ
+ED2pQqZ/rhuW79jcyCZl9kXqe1wOdF0Cwah4N6/3LzIXEEKyEJxNqQwtNc2IVE8C
+AwEAAaOBnjCBmzAJBgNVHRMEAjAAMDUGDCsGAQQBkggJAYNfAQQlDCNSZWQgSGF0
+IEVudGVycHJpc2UgTGludXggZm9yIHg4Nl82NDAVBgwrBgEEAZIICQGDXwIEBQwD
+OS40MBgGDCsGAQQBkggJAYNfAwQIDAZ4ODZfNjQwJgYMKwYBBAGSCAkBg18EBBYM
+FHJoZWwtOSxyaGVsLTkteDg2XzY0MA0GCSqGSIb3DQEBCwUAA4ICAQCGUDPFBrLs
+sK/RITJothRhKhKNX3zu9TWRG0WKxszCx/y7c4yEfH1TV/yd7BNB2RubaoayWz8E
+TQjcRW8BnVu9JrlbdpWJm4eN+dOOpcESPilLnkz4Tr0WYDsT1/jk/uiorK4h21S0
+EwMicuSuEmm0OUEX0zj2X/IyveFRtpJpH/JktznCkvexysc1JRzqMCbal8GipRX9
+Xf7Oko6QiaUpu5GDLN2OXhizYHdR2f3l+Sn2cScsbi3fSVv+DLsnaz6J0kZ4U8q3
+lYk/ZYifJjG+/7cv3e+usixpmK/qYlpOvunUDnqOkDfUs4/4bZjH8e8CdqJk4YvU
+RRtLr7muXEJsaqF7lxAViXnKxT/z/+1kOgN/+Oyzjs4QDsk2HQpWHFgNYSSG9Mmz
+PUS8tk2T0j5sN55X7QRRl5c0oqrBU5XaWyL26QcfONYcR8dBaKawjxg8CI9KzsYY
+sb2jjS+fBkB1OI2c6z4OZRd+0N6FQ6gq++KiXOLFvi/QSFNi9Veb56c5tR2l6fBk
+0pSH06Gg2s0aQg20NdMIr+HaYsVdJRsE1FgQ2tlfFx9rGkcqhgwV3Za/abgtRb2o
+YVwps28DLm41DXf5DnXK+BXFHrtR/3YAZtga+R7OL/RvcF0kc2kudlxqd/8Y33uL
+nqnoATy31FTW4J4rEfanJTQgTpatZmbaLQ==
+-----END CERTIFICATE-----
diff --git a/repos/system_upgrade/common/files/prod-certs/10.0/486.pem b/repos/system_upgrade/common/files/prod-certs/10.0/486.pem
new file mode 100644
index 00000000..2be739ff
--- /dev/null
+++ b/repos/system_upgrade/common/files/prod-certs/10.0/486.pem
@@ -0,0 +1,37 @@
+-----BEGIN CERTIFICATE-----
+MIIGZzCCBE+gAwIBAgIJALDxRLt/tVHsMA0GCSqGSIb3DQEBCwUAMIGuMQswCQYD
+VQQGEwJVUzEXMBUGA1UECAwOTm9ydGggQ2Fyb2xpbmExFjAUBgNVBAoMDVJlZCBI
+YXQsIEluYy4xGDAWBgNVBAsMD1JlZCBIYXQgTmV0d29yazEuMCwGA1UEAwwlUmVk
+IEhhdCBFbnRpdGxlbWVudCBQcm9kdWN0IEF1dGhvcml0eTEkMCIGCSqGSIb3DQEJ
+ARYVY2Etc3VwcG9ydEByZWRoYXQuY29tMB4XDTIzMDcxODA4MTkxNloXDTQzMDcx
+ODA4MTkxNlowRDFCMEAGA1UEAww5UmVkIEhhdCBQcm9kdWN0IElEIFtjZDA5Nzdl
+Ni0xOWY4LTQ5YTUtODc0My0yODgyNjNhNjA0ZDVdMIICIjANBgkqhkiG9w0BAQEF
+AAOCAg8AMIICCgKCAgEAxj9J04z+Ezdyx1U33kFftLv0ntNS1BSeuhoZLDhs18yk
+sepG7hXXtHh2CMFfLZmTjAyL9i1XsxykQpVQdXTGpUF33C2qBQHB5glYs9+d781x
+8p8m8zFxbPcW82TIJXbgW3ErVh8vk5qCbG1cCAAHb+DWMq0EAyy1bl/JgAghYNGB
+RvKJObTdCrdpYh02KUqBLkSPZHvo6DUJFN37MXDpVeQq9VtqRjpKLLwuEfXb0Y7I
+5xEOrR3kYbOaBAWVt3mYZ1t0L/KfY2jVOdU5WFyyB9PhbMdLi1xE801j+GJrwcLa
+xmqvj4UaICRzcPATP86zVM1BBQa+lilkRQes5HyjZzZDiGYudnXhbqmLo/n0cuXo
+QBVVjhzRTMx71Eiiahmiw+U1vGqkHhQNxb13HtN1lcAhUCDrxxeMvrAjYdWpYlpI
+yW3NssPWt1YUHidMBSAJ4KctIf91dyE93aStlxwC/QnyFsZOmcEsBzVCnz9GmWMl
+1/6XzBS1yDUqByklx0TLH+z/sK9A+O2rZAy1mByCYwVxvbOZhnqGxAuToIS+A81v
+5hCjsCiOScVB+cil30YBu0cH85RZ0ILNkHdKdrLLWW4wjphK2nBn2g2i3+ztf+nQ
+ED2pQqZ/rhuW79jcyCZl9kXqe1wOdF0Cwah4N6/3LzIXEEKyEJxNqQwtNc2IVE8C
+AwEAAaOB8DCB7TAJBgNVHRMEAjAAMDoGDCsGAQQBkggJAYNmAQQqDChSZWQgSGF0
+IEVudGVycHJpc2UgTGludXggZm9yIHg4Nl82NCBCZXRhMBsGDCsGAQQBkggJAYNm
+AgQLDAkxMC4wIEJldGEwGAYMKwYBBAGSCAkBg2YDBAgMBng4Nl82NDAtBgwrBgEE
+AZIICQGDZgQEHQwbcmhlbC0xMCxyaGVsLTEwLWJldGEteDg2XzY0MB0GA1UdDgQW
+BBRh6iC1NXyvZ2Q6/2sI5hB40M0flTAfBgNVHSMEGDAWgBSW/bscQED/QIStsh8L
+JsHDam/WfDANBgkqhkiG9w0BAQsFAAOCAgEAHFD1uIi2AXILNB5JKwSJ5boz6/K7
+MpIqP5mSXPw9Cr4Ie9FiwlZuQIGPp6AUOb7RcDpLxZt9eNYrsQMmrXzo4qagIax/
+NGEYKOrqDxeH4T0r9wLnARxQg1mntXzGkO6kSKIRpiGJlsBXEPAX9k4WaqNlQScu
+QWjtTp6E3U3xZLb74TPS708ok+xSm1ZehPJZp53N8JQigtLxfOnv+7xQdBD78YOE
+ldPzznhoHP5iJeACRFC+b83asWDwQAEbPv7d4ZoLCfacOvkt28Hm+kXa9zBDqgBD
+nUv1wsZS2aPhWMDwnV9qC0UPCdIMbVNH9TjkBe2yoTsz/cmgCe/D85DZyBrZabV7
+U36dg0rdKqoR8hRnlfbuzdiNZmmdMAinI56t/U++yGiGYobxmftPOKt46zFpcA3W
+Zqdl1Qg2zPcWxyjHV4xF0vtiEIkj1xlm0u2fsp8xfdA1wzj3Cqyn4l8R08eGLUBQ
+G4GoKaaxTOjfETU4ASRr+32UJCfervM0PK8GqMgxvOc9Yw3snhJVbG4mMWrR+NVp
+7r6DpzfVO9Kfbrc1yLnCK56MxBQCIwh96RDPhHkaO/xPrD2xX6/A5+oMDWVzJW4N
+VIhz/i0eBqFX4QINkPLrmo/AHMBpfTBqaIV88pBFHhT5ZWws9kaad0axpBXV4BrT
+2LyAgMKD4NjUsM0=
+-----END CERTIFICATE-----
diff --git a/repos/system_upgrade/common/files/rpm-gpg/10/RPM-GPG-KEY-redhat-release b/repos/system_upgrade/common/files/rpm-gpg/10/RPM-GPG-KEY-redhat-release
new file mode 100644
index 00000000..a59198ea
--- /dev/null
+++ b/repos/system_upgrade/common/files/rpm-gpg/10/RPM-GPG-KEY-redhat-release
@@ -0,0 +1,69 @@
+The following public key can be used to verify RPM packages built and
+signed by Red Hat, Inc. This key is used for packages in Red Hat
+products shipped after November 2009, and for all updates to those
+products.
+
+Questions about this key should be sent to security@redhat.com.
+
+pub 4096R/FD431D51 2009-10-22
+ Key fingerprint = 567E 347A D004 4ADE 55BA 8A5F 199E 2F91 FD43 1D51
+uid Red Hat, Inc. (release key 2) <security@redhat.com>
+
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v2.0.22 (GNU/Linux)
+
+mQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF
+0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF
+0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c
+u7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh
+XGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H
+5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW
+9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj
+/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1
+PcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY
+HVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF
+buhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB
+tDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0
+LmNvbT6JAjYEEwEIACACGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAUCSuBJPAAK
+CRAZni+R/UMdUfIkD/9m3HWv07uJG26R3KBexTo2FFu3rmZs+m2nfW8R3dBX+k0o
+AOFpgJCsNgKwU81LOPrkMN19G0+Yn/ZTCDD7cIQ7dhYuDyEX97xh4une/EhnnRuh
+ASzR+1xYbj/HcYZIL9kbslgpebMn+AhxbUTQF/mziug3hLidR9Bzvygq0Q09E11c
+OZL4BU6J2HqxL+9m2F+tnLdfhL7MsAq9nbmWAOpkbGefc5SXBSq0sWfwoes3X3yD
+Q8B5Xqr9AxABU7oUB+wRqvY69ZCxi/BhuuJCUxY89ZmwXfkVxeHl1tYfROUwOnJO
+GYSbI/o41KBK4DkIiDcT7QqvqvCyudnxZdBjL2QU6OrIJvWmKs319qSF9m3mXRSt
+ZzWtB89Pj5LZ6cdtuHvW9GO4qSoBLmAfB313pGkbgi1DE6tqCLHlA0yQ8zv99OWV
+cMDGmS7tVTZqfX1xQJ0N3bNORQNtikJC3G+zBCJzIeZleeDlMDQcww00yWU1oE7/
+To2UmykMGc7o9iggFWR2g0PIcKsA/SXdRKWPqCHG2uKHBvdRTQGupdXQ1sbV+AHw
+ycyA/9H/mp/NUSNM2cqnBDcZ6GhlHt59zWtEveiuU5fpTbp4GVcFXbW8jStj8j8z
+1HI3cywZO8+YNPzqyx0JWsidXGkfzkPHyS4jTG84lfu2JG8m/nqLnRSeKpl20Q==
+=79bX
+-----END PGP PUBLIC KEY BLOCK-----
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+mQINBGIpIp4BEAC/o5e1WzLIsS6/JOQCs4XYATYTcf6B6ALzcP05G0W3uRpUQSrL
+FRKNrU8ZCelm/B+XSh2ljJNeklp2WLxYENDOsftDXGoyLr2hEkI5OyK267IHhFNJ
+g+BN+T5Cjh4ZiiWij6o9F7x2ZpxISE9M4iI80rwSv1KOnGSw5j2zD2EwoMjTVyVE
+/t3s5XJxnDclB7ZqL+cgjv0mWUY/4+b/OoRTkhq7b8QILuZp75Y64pkrndgakm1T
+8mAGXV02mEzpNj9DyAJdUqa11PIhMJMxxHOGHJ8CcHZ2NJL2e7yJf4orTj+cMhP5
+LzJcVlaXnQYu8Zkqa0V6J1Qdj8ZXL72QsmyicRYXAtK9Jm5pvBHuYU2m6Ja7dBEB
+Vkhe7lTKhAjkZC5ErPmANNS9kPdtXCOpwN1lOnmD2m04hks3kpH9OTX7RkTFUSws
+eARAfRID6RLfi59B9lmAbekecnsMIFMx7qR7ZKyQb3GOuZwNYOaYFevuxusSwCHv
+4FtLDIhk+Fge+EbPdEva+VLJeMOb02gC4V/cX/oFoPkxM1A5LHjkuAM+aFLAiIRd
+Np/tAPWk1k6yc+FqkcDqOttbP4ciiXb9JPtmzTCbJD8lgH0rGp8ufyMXC9x7/dqX
+TjsiGzyvlMnrkKB4GL4DqRFl8LAR02A3846DD8CAcaxoXggL2bJCU2rgUQARAQAB
+tDVSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5IDMpIDxzZWN1cml0eUByZWRo
+YXQuY29tPokCUgQTAQgAPBYhBH5GJCWMQGU11W1vE1BU5KRaY0CzBQJiKSKeAhsD
+BQsJCAcCAyICAQYVCgkICwIEFgIDAQIeBwIXgAAKCRBQVOSkWmNAsyBfEACuTN/X
+YR+QyzeRw0pXcTvMqzNE4DKKr97hSQEwZH1/v1PEPs5O3psuVUm2iam7bqYwG+ry
+EskAgMHi8AJmY0lioQD5/LTSLTrM8UyQnU3g17DHau1NHIFTGyaW4a7xviU4C2+k
+c6X0u1CPHI1U4Q8prpNcfLsldaNYlsVZtUtYSHKPAUcswXWliW7QYjZ5tMSbu8jR
+OMOc3mZuf0fcVFNu8+XSpN7qLhRNcPv+FCNmk/wkaQfH4Pv+jVsOgHqkV3aLqJeN
+kNUnpyEKYkNqo7mNfNVWOcl+Z1KKKwSkIi3vg8maC7rODsy6IX+Y96M93sqYDQom
+aaWue2gvw6thEoH4SaCrCL78mj2YFpeg1Oew4QwVcBnt68KOPfL9YyoOicNs4Vuu
+fb/vjU2ONPZAeepIKA8QxCETiryCcP43daqThvIgdbUIiWne3gae6eSj0EuUPoYe
+H5g2Lw0qdwbHIOxqp2kvN96Ii7s1DK3VyhMt/GSPCxRnDRJ8oQKJ2W/I1IT5VtiU
+zMjjq5JcYzRPzHDxfVzT9CLeU/0XQ+2OOUAiZKZ0dzSyyVn8xbpviT7iadvjlQX3
+CINaPB+d2Kxa6uFWh+ZYOLLAgZ9B8NKutUHpXN66YSfe79xFBSFWKkJ8cSIMk13/
+Ifs7ApKlKCCRDpwoDqx/sjIaj1cpOfLHYjnefg==
+=UZd/
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/repos/system_upgrade/common/files/rpm-gpg/10beta/RPM-GPG-KEY-redhat-release b/repos/system_upgrade/common/files/rpm-gpg/10beta/RPM-GPG-KEY-redhat-release
new file mode 100644
index 00000000..1f46baa1
--- /dev/null
+++ b/repos/system_upgrade/common/files/rpm-gpg/10beta/RPM-GPG-KEY-redhat-release
@@ -0,0 +1,30 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v1.2.6 (GNU/Linux)
+
+mQINBEmkAzABEAC2/c7bP1lHQ3XScxbIk0LQWe1YOiibQBRLwf8Si5PktgtuPibT
+kKpZjw8p4D+fM7jD1WUzUE0X7tXg2l/eUlMM4dw6XJAQ1AmEOtlwSg7rrMtTvM0A
+BEtI7Km6fC6sU6RtBMdcqD1cH/6dbsfh8muznVA7UlX+PRBHVzdWzj6y8h84dBjo
+gzcbYu9Hezqgj/lLzicqsSZPz9UdXiRTRAIhp8V30BD8uRaaa0KDDnD6IzJv3D9P
+xQWbFM4Z12GN9LyeZqmD7bpKzZmXG/3drvfXVisXaXp3M07t3NlBa3Dt8NFIKZ0D
+FRXBz5bvzxRVmdH6DtkDWXDPOt+Wdm1rZrCOrySFpBZQRpHw12eo1M1lirANIov7
+Z+V1Qh/aBxj5EUu32u9ZpjAPPNtQF6F/KjaoHHHmEQAuj4DLex4LY646Hv1rcv2i
+QFuCdvLKQGSiFBrfZH0j/IX3/0JXQlZzb3MuMFPxLXGAoAV9UP/Sw/WTmAuTzFVm
+G13UYFeMwrToOiqcX2VcK0aC1FCcTP2z4JW3PsWvU8rUDRUYfoXovc7eg4Vn5wHt
+0NBYsNhYiAAf320AUIHzQZYi38JgVwuJfFu43tJZE4Vig++RQq6tsEx9Ftz3EwRR
+fJ9z9mEvEiieZm+vbOvMvIuimFVPSCmLH+bI649K8eZlVRWsx3EXCVb0nQARAQAB
+tDBSZWQgSGF0LCBJbmMuIChiZXRhIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0LmNv
+bT6JAjYEEwECACAFAkpSM+cCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAKCRCT
+ioDK8hVB6/9tEAC0+KmzeKceXQ/GTUoU6jy9vtkFCFrmv+c7ol4XpdTt0QhqBOwy
+6m2mKWwmm8KfYfy0cADQ4y/EcoXl7FtFBwYmkCuEQGXhTDn9DvVjhooIq59LEMBQ
+OW879RwwzRIZ8ebbjMUjDPF5MfPQqP2LBu9N4KvXlZp4voykwuuaJ+cbsKZR6pZ6
+0RQKPHKP+NgUFC0fff7XY9cuOZZWFAeKRhLN2K7bnRHKxp+kELWb6R9ZfrYwZjWc
+MIPbTd1khE53L4NTfpWfAnJRtkPSDOKEGVlVLtLq4HEAxQt07kbslqISRWyXER3u
+QOJj64D1ZiIMz6t6uZ424VE4ry9rBR0Jz55cMMx5O/ni9x3xzFUgH8Su2yM0r3jE
+Rf24+tbOaPf7tebyx4OKe+JW95hNVstWUDyGbs6K9qGfI/pICuO1nMMFTo6GqzQ6
+DwLZvJ9QdXo7ujEtySZnfu42aycaQ9ZLC2DOCQCUBY350Hx6FLW3O546TAvpTfk0
+B6x+DV7mJQH7MGmRXQsE7TLBJKjq28Cn4tVp04PmybQyTxZdGA/8zY6pPl6xyVMH
+V68hSBKEVT/rlouOHuxfdmZva1DhVvUC6Xj7+iTMTVJUAq/4Uyn31P1OJmA2a0PT
+CAqWkbJSgKFccsjPoTbLyxhuMSNkEZFHvlZrSK9vnPzmfiRH0Orx3wYpMQ==
+=21pb
+-----END PGP PUBLIC KEY BLOCK-----
+
--
2.42.0

View File

@ -0,0 +1,68 @@
From da6f0248c97aed46d519d97d0f334fd7bd44f86e Mon Sep 17 00:00:00 2001
From: Michal Reznik <mreznik@redhat.com>
Date: Fri, 7 Jun 2024 10:20:35 +0200
Subject: [PATCH 77/92] Install util-linux into the target container
The util-linug RPM is not installed automatically as a dependency
when:
* upgrading 9 -> 10
* or when dnf is configured to: install_weak_deps=False
(affecting all upgrade paths)
Missing util-linux package leads to error due to missing `su` command
inside the container.
jira: https://issues.redhat.com/browse/RHEL-43978
---
.../actors/targetuserspacecreator/libraries/userspacegen.py | 2 +-
.../tests/unit_test_targetuserspacecreator.py | 2 +-
repos/system_upgrade/common/libraries/tests/test_rpms.py | 2 +-
repos/system_upgrade/el9toel10/actors/.gitkeep | 0
4 files changed, 3 insertions(+), 3 deletions(-)
delete mode 100644 repos/system_upgrade/el9toel10/actors/.gitkeep
diff --git a/repos/system_upgrade/common/actors/targetuserspacecreator/libraries/userspacegen.py b/repos/system_upgrade/common/actors/targetuserspacecreator/libraries/userspacegen.py
index 6e8214dd..4a61ccb4 100644
--- a/repos/system_upgrade/common/actors/targetuserspacecreator/libraries/userspacegen.py
+++ b/repos/system_upgrade/common/actors/targetuserspacecreator/libraries/userspacegen.py
@@ -89,7 +89,7 @@ class _InputData(object):
It doesn't consume TargetRepositories, which are consumed in the
own function.
"""
- self.packages = {'dnf', 'dnf-command(config-manager)'}
+ self.packages = {'dnf', 'dnf-command(config-manager)', 'util-linux'}
self.files = []
_cftuples = set()
diff --git a/repos/system_upgrade/common/actors/targetuserspacecreator/tests/unit_test_targetuserspacecreator.py b/repos/system_upgrade/common/actors/targetuserspacecreator/tests/unit_test_targetuserspacecreator.py
index 19b760a1..826ae06d 100644
--- a/repos/system_upgrade/common/actors/targetuserspacecreator/tests/unit_test_targetuserspacecreator.py
+++ b/repos/system_upgrade/common/actors/targetuserspacecreator/tests/unit_test_targetuserspacecreator.py
@@ -1001,7 +1001,7 @@ def test_consume_data(monkeypatch, raised, no_rhsm, testdata):
# do not write never into testdata inside the test !!
xfs = testdata.xfs
custom_repofiles = testdata.custom_repofiles
- _exp_pkgs = {'dnf', 'dnf-command(config-manager)'}
+ _exp_pkgs = {'dnf', 'dnf-command(config-manager)', 'util-linux'}
_exp_files = []
def _get_pkgs(msg):
diff --git a/repos/system_upgrade/common/libraries/tests/test_rpms.py b/repos/system_upgrade/common/libraries/tests/test_rpms.py
index 955ab05c..a527407d 100644
--- a/repos/system_upgrade/common/libraries/tests/test_rpms.py
+++ b/repos/system_upgrade/common/libraries/tests/test_rpms.py
@@ -61,7 +61,7 @@ def test_get_leapp_packages(major_version, component, result, monkeypatch):
r"component nosuchcomponent is unknown, available choices are \['cockpit', 'framework', 'repository', 'tools']")
),
('nosuchversion', "framework",
- (ValueError, r"major_version nosuchversion is unknown, available choices are \['7', '8']")),
+ (ValueError, r"major_version nosuchversion is unknown, available choices are \['7', '8', '9']")),
('nosuchversion', False,
(ValueError, r"At least one component must be specified when calling this function,"
r" available choices are \['cockpit', 'framework', 'repository', 'tools']")),
diff --git a/repos/system_upgrade/el9toel10/actors/.gitkeep b/repos/system_upgrade/el9toel10/actors/.gitkeep
deleted file mode 100644
index e69de29b..00000000
--
2.42.0

View File

@ -0,0 +1,38 @@
From b6e4f2b8b793b07b49b13d7d291dd03a27b049f7 Mon Sep 17 00:00:00 2001
From: Matej Matuska <mmatuska@redhat.com>
Date: Fri, 28 Jun 2024 20:33:22 +0200
Subject: [PATCH 78/92] Fix LEAPP_IPU_IN_PROGRESS (9to1 -> 9to10)
Implementation of processing versions inside commands/command_utils.py
has been bugy. One of function returned string instread of list
which led to the situation that only the first character has been
returned instead of the first chunk. This has been ok for releases
where major version is just one decimal. However since el 10 it has
been buggy and generated set envar:
LEAPP_IPU_IN_PROGRESS=9to1
instead of
LEAPP_IPU_IN_PROGRESS=9to10
Now it should be working correctly again.
jira: OAMG-11260
---
commands/command_utils.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/commands/command_utils.py b/commands/command_utils.py
index 338978dd..4f6f99eb 100644
--- a/commands/command_utils.py
+++ b/commands/command_utils.py
@@ -26,7 +26,7 @@ def check_version(version):
"""
if not re.match(VERSION_REGEX, version):
raise CommandError('Unexpected format of target version: {}'.format(version))
- return version.split('.')[0]
+ return version.split('.')
def get_major_version(version):
--
2.42.0

View File

@ -0,0 +1,37 @@
From 79775dac818a4a2328e19d861d549815c34d9210 Mon Sep 17 00:00:00 2001
From: Petr Stodulka <pstodulk@redhat.com>
Date: Mon, 15 Jul 2024 06:01:21 +0200
Subject: [PATCH 79/92] Add unit tests for config.version.get_major_version()
Based on the bug fixed in the previuos commit, we are rather adding
unit-tests for get_major_version() function in common libraries,
to prevent possible issues in future there too.
---
.../common/libraries/config/tests/test_version.py | 14 ++++++++++++++
1 file changed, 14 insertions(+)
diff --git a/repos/system_upgrade/common/libraries/config/tests/test_version.py b/repos/system_upgrade/common/libraries/config/tests/test_version.py
index 4ef7e506..303e4de5 100644
--- a/repos/system_upgrade/common/libraries/config/tests/test_version.py
+++ b/repos/system_upgrade/common/libraries/config/tests/test_version.py
@@ -121,3 +121,17 @@ def test_is_rhel_realtime(monkeypatch, result, kernel, release_id):
monkeypatch.setattr(api, 'current_actor', CurrentActorMocked(src_ver='7.9', kernel=kernel,
release_id=release_id))
assert version.is_rhel_realtime() == result
+
+
+@pytest.mark.parametrize('result,sys_version', [
+ ('7', '7.1.0'),
+ ('7', '7.9'),
+ ('7', '7'),
+ ('8', '8.10'),
+ ('10', '10.0'),
+ ('10', '10.10.0'),
+ ('10', '10.0'),
+ ('10', '10'),
+])
+def test_get_major_version(result, sys_version):
+ assert version.get_major_version(sys_version) == result
--
2.42.0

View File

@ -0,0 +1,504 @@
From a1f60899ea72f55ed878b6a5e307dda325d30e28 Mon Sep 17 00:00:00 2001
From: Petr Stodulka <pstodulk@redhat.com>
Date: Fri, 19 Apr 2024 15:22:18 +0200
Subject: [PATCH 80/92] Add artificial 9->10 repomaping data
Note that the data is artificial, meaning it's not generated through
repomapping generator and therefore not verified by it against the
source of truth. The assumption is that the repos will be similar to how
they are on RHEL 9 and are basically copied (redundant channels and rhui
repos are dropped).
---
etc/leapp/files/repomap.json | 469 +++++++++++++++++++++++++++++++++++
1 file changed, 469 insertions(+)
diff --git a/etc/leapp/files/repomap.json b/etc/leapp/files/repomap.json
index 8a490b84..58e6a023 100644
--- a/etc/leapp/files/repomap.json
+++ b/etc/leapp/files/repomap.json
@@ -233,6 +233,66 @@
]
}
]
+ },
+ {
+ "source_major_version": "9",
+ "target_major_version": "10",
+ "entries": [
+ {
+ "source": "rhel9-BaseOS",
+ "target": [
+ "rhel10-BaseOS"
+ ]
+ },
+ {
+ "source": "rhel9-AppStream",
+ "target": [
+ "rhel10-AppStream"
+ ]
+ },
+ {
+ "source": "rhel9-CRB",
+ "target": [
+ "rhel10-CRB"
+ ]
+ },
+ {
+ "source": "rhel9-Supplementary",
+ "target": [
+ "rhel10-Supplementary"
+ ]
+ },
+ {
+ "source": "rhel9-RT",
+ "target": [
+ "rhel10-RT"
+ ]
+ },
+ {
+ "source": "rhel9-NFV",
+ "target": [
+ "rhel10-NFV"
+ ]
+ },
+ {
+ "source": "rhel9-SAP-NetWeaver",
+ "target": [
+ "rhel10-SAP-NetWeaver"
+ ]
+ },
+ {
+ "source": "rhel9-SAP-Solutions",
+ "target": [
+ "rhel10-SAP-Solutions"
+ ]
+ },
+ {
+ "source": "rhel9-HighAvailability",
+ "target": [
+ "rhel10-HighAvailability"
+ ]
+ }
+ ]
}
],
"repositories": [
@@ -3999,6 +4059,415 @@
"rhui": "alibaba"
}
]
+ },
+ {
+ "pesid": "rhel10-BaseOS",
+ "entries": [
+ {
+ "major_version": "10",
+ "repoid": "rhel-10-for-aarch64-baseos-beta-rpms",
+ "arch": "aarch64",
+ "channel": "beta",
+ "repo_type": "rpm"
+ },
+ {
+ "major_version": "10",
+ "repoid": "rhel-10-for-aarch64-baseos-rpms",
+ "arch": "aarch64",
+ "channel": "ga",
+ "repo_type": "rpm"
+ },
+ {
+ "major_version": "10",
+ "repoid": "rhel-10-for-ppc64le-baseos-beta-rpms",
+ "arch": "ppc64le",
+ "channel": "beta",
+ "repo_type": "rpm"
+ },
+ {
+ "major_version": "10",
+ "repoid": "rhel-10-for-ppc64le-baseos-rpms",
+ "arch": "ppc64le",
+ "channel": "ga",
+ "repo_type": "rpm"
+ },
+ {
+ "major_version": "10",
+ "repoid": "rhel-10-for-s390x-baseos-beta-rpms",
+ "arch": "s390x",
+ "channel": "beta",
+ "repo_type": "rpm"
+ },
+ {
+ "major_version": "10",
+ "repoid": "rhel-10-for-s390x-baseos-rpms",
+ "arch": "s390x",
+ "channel": "ga",
+ "repo_type": "rpm"
+ },
+ {
+ "major_version": "10",
+ "repoid": "rhel-10-for-x86_64-baseos-beta-rpms",
+ "arch": "x86_64",
+ "channel": "beta",
+ "repo_type": "rpm"
+ },
+ {
+ "major_version": "10",
+ "repoid": "rhel-10-for-x86_64-baseos-rpms",
+ "arch": "x86_64",
+ "channel": "ga",
+ "repo_type": "rpm"
+ }
+ ]
+ },
+ {
+ "pesid": "rhel10-AppStream",
+ "entries": [
+ {
+ "major_version": "10",
+ "repoid": "rhel-10-for-aarch64-appstream-beta-rpms",
+ "arch": "aarch64",
+ "channel": "beta",
+ "repo_type": "rpm"
+ },
+ {
+ "major_version": "10",
+ "repoid": "rhel-10-for-aarch64-appstream-rpms",
+ "arch": "aarch64",
+ "channel": "ga",
+ "repo_type": "rpm"
+ },
+ {
+ "major_version": "10",
+ "repoid": "rhel-10-for-ppc64le-appstream-beta-rpms",
+ "arch": "ppc64le",
+ "channel": "beta",
+ "repo_type": "rpm"
+ },
+ {
+ "major_version": "10",
+ "repoid": "rhel-10-for-ppc64le-appstream-rpms",
+ "arch": "ppc64le",
+ "channel": "ga",
+ "repo_type": "rpm"
+ },
+ {
+ "major_version": "10",
+ "repoid": "rhel-10-for-s390x-appstream-beta-rpms",
+ "arch": "s390x",
+ "channel": "beta",
+ "repo_type": "rpm"
+ },
+ {
+ "major_version": "10",
+ "repoid": "rhel-10-for-s390x-appstream-rpms",
+ "arch": "s390x",
+ "channel": "ga",
+ "repo_type": "rpm"
+ },
+ {
+ "major_version": "10",
+ "repoid": "rhel-10-for-x86_64-appstream-beta-rpms",
+ "arch": "x86_64",
+ "channel": "beta",
+ "repo_type": "rpm"
+ },
+ {
+ "major_version": "10",
+ "repoid": "rhel-10-for-x86_64-appstream-rpms",
+ "arch": "x86_64",
+ "channel": "ga",
+ "repo_type": "rpm"
+ }
+ ]
+ },
+ {
+ "pesid": "rhel10-CRB",
+ "entries": [
+ {
+ "major_version": "10",
+ "repoid": "codeready-builder-beta-for-rhel-10-aarch64-rpms",
+ "arch": "aarch64",
+ "channel": "beta",
+ "repo_type": "rpm"
+ },
+ {
+ "major_version": "10",
+ "repoid": "codeready-builder-beta-for-rhel-10-ppc64le-rpms",
+ "arch": "ppc64le",
+ "channel": "beta",
+ "repo_type": "rpm"
+ },
+ {
+ "major_version": "10",
+ "repoid": "codeready-builder-beta-for-rhel-10-s390x-rpms",
+ "arch": "s390x",
+ "channel": "beta",
+ "repo_type": "rpm"
+ },
+ {
+ "major_version": "10",
+ "repoid": "codeready-builder-beta-for-rhel-10-x86_64-rpms",
+ "arch": "x86_64",
+ "channel": "beta",
+ "repo_type": "rpm"
+ },
+ {
+ "major_version": "10",
+ "repoid": "codeready-builder-for-rhel-10-aarch64-rpms",
+ "arch": "aarch64",
+ "channel": "ga",
+ "repo_type": "rpm"
+ },
+ {
+ "major_version": "10",
+ "repoid": "codeready-builder-for-rhel-10-ppc64le-rpms",
+ "arch": "ppc64le",
+ "channel": "ga",
+ "repo_type": "rpm"
+ },
+ {
+ "major_version": "10",
+ "repoid": "codeready-builder-for-rhel-10-s390x-rpms",
+ "arch": "s390x",
+ "channel": "ga",
+ "repo_type": "rpm"
+ },
+ {
+ "major_version": "10",
+ "repoid": "codeready-builder-for-rhel-10-x86_64-rpms",
+ "arch": "x86_64",
+ "channel": "ga",
+ "repo_type": "rpm"
+ }
+ ]
+ },
+ {
+ "pesid": "rhel10-Supplementary",
+ "entries": [
+ {
+ "major_version": "10",
+ "repoid": "rhel-10-for-aarch64-supplementary-beta-rpms",
+ "arch": "aarch64",
+ "channel": "beta",
+ "repo_type": "rpm"
+ },
+ {
+ "major_version": "10",
+ "repoid": "rhel-10-for-aarch64-supplementary-rpms",
+ "arch": "aarch64",
+ "channel": "ga",
+ "repo_type": "rpm"
+ },
+ {
+ "major_version": "10",
+ "repoid": "rhel-10-for-ppc64le-supplementary-beta-rpms",
+ "arch": "ppc64le",
+ "channel": "beta",
+ "repo_type": "rpm"
+ },
+ {
+ "major_version": "10",
+ "repoid": "rhel-10-for-ppc64le-supplementary-rpms",
+ "arch": "ppc64le",
+ "channel": "ga",
+ "repo_type": "rpm"
+ },
+ {
+ "major_version": "10",
+ "repoid": "rhel-10-for-s390x-supplementary-beta-rpms",
+ "arch": "s390x",
+ "channel": "beta",
+ "repo_type": "rpm"
+ },
+ {
+ "major_version": "10",
+ "repoid": "rhel-10-for-s390x-supplementary-rpms",
+ "arch": "s390x",
+ "channel": "ga",
+ "repo_type": "rpm"
+ },
+ {
+ "major_version": "10",
+ "repoid": "rhel-10-for-x86_64-supplementary-beta-rpms",
+ "arch": "x86_64",
+ "channel": "beta",
+ "repo_type": "rpm"
+ },
+ {
+ "major_version": "10",
+ "repoid": "rhel-10-for-x86_64-supplementary-rpms",
+ "arch": "x86_64",
+ "channel": "ga",
+ "repo_type": "rpm"
+ }
+ ]
+ },
+ {
+ "pesid": "rhel10-RT",
+ "entries": [
+ {
+ "major_version": "10",
+ "repoid": "rhel-10-for-x86_64-rt-beta-rpms",
+ "arch": "x86_64",
+ "channel": "beta",
+ "repo_type": "rpm"
+ },
+ {
+ "major_version": "10",
+ "repoid": "rhel-10-for-x86_64-rt-rpms",
+ "arch": "x86_64",
+ "channel": "ga",
+ "repo_type": "rpm"
+ }
+ ]
+ },
+ {
+ "pesid": "rhel10-NFV",
+ "entries": [
+ {
+ "major_version": "10",
+ "repoid": "rhel-10-for-x86_64-nfv-beta-rpms",
+ "arch": "x86_64",
+ "channel": "beta",
+ "repo_type": "rpm"
+ },
+ {
+ "major_version": "10",
+ "repoid": "rhel-10-for-x86_64-nfv-rpms",
+ "arch": "x86_64",
+ "channel": "ga",
+ "repo_type": "rpm"
+ }
+ ]
+ },
+ {
+ "pesid": "rhel10-SAP-NetWeaver",
+ "entries": [
+ {
+ "major_version": "10",
+ "repoid": "rhel-10-for-ppc64le-sap-netweaver-beta-rpms",
+ "arch": "ppc64le",
+ "channel": "beta",
+ "repo_type": "rpm"
+ },
+ {
+ "major_version": "10",
+ "repoid": "rhel-10-for-ppc64le-sap-netweaver-rpms",
+ "arch": "ppc64le",
+ "channel": "ga",
+ "repo_type": "rpm"
+ },
+ {
+ "major_version": "10",
+ "repoid": "rhel-10-for-s390x-sap-netweaver-beta-rpms",
+ "arch": "s390x",
+ "channel": "beta",
+ "repo_type": "rpm"
+ },
+ {
+ "major_version": "10",
+ "repoid": "rhel-10-for-s390x-sap-netweaver-rpms",
+ "arch": "s390x",
+ "channel": "ga",
+ "repo_type": "rpm"
+ },
+ {
+ "major_version": "10",
+ "repoid": "rhel-10-for-x86_64-sap-netweaver-beta-rpms",
+ "arch": "x86_64",
+ "channel": "beta",
+ "repo_type": "rpm"
+ },
+ {
+ "major_version": "10",
+ "repoid": "rhel-10-for-x86_64-sap-netweaver-rpms",
+ "arch": "x86_64",
+ "channel": "ga",
+ "repo_type": "rpm"
+ }
+ ]
+ },
+ {
+ "pesid": "rhel10-SAP-Solutions",
+ "entries": [
+ {
+ "major_version": "10",
+ "repoid": "rhel-10-for-ppc64le-sap-solutions-rpms",
+ "arch": "ppc64le",
+ "channel": "ga",
+ "repo_type": "rpm"
+ },
+ {
+ "major_version": "10",
+ "repoid": "rhel-10-for-x86_64-sap-solutions-rpms",
+ "arch": "x86_64",
+ "channel": "ga",
+ "repo_type": "rpm"
+ }
+ ]
+ },
+ {
+ "pesid": "rhel10-HighAvailability",
+ "entries": [
+ {
+ "major_version": "10",
+ "repoid": "rhel-10-for-aarch64-highavailability-beta-rpms",
+ "arch": "aarch64",
+ "channel": "beta",
+ "repo_type": "rpm"
+ },
+ {
+ "major_version": "10",
+ "repoid": "rhel-10-for-aarch64-highavailability-rpms",
+ "arch": "aarch64",
+ "channel": "ga",
+ "repo_type": "rpm"
+ },
+ {
+ "major_version": "10",
+ "repoid": "rhel-10-for-ppc64le-highavailability-beta-rpms",
+ "arch": "ppc64le",
+ "channel": "beta",
+ "repo_type": "rpm"
+ },
+ {
+ "major_version": "10",
+ "repoid": "rhel-10-for-ppc64le-highavailability-rpms",
+ "arch": "ppc64le",
+ "channel": "ga",
+ "repo_type": "rpm"
+ },
+ {
+ "major_version": "10",
+ "repoid": "rhel-10-for-s390x-highavailability-beta-rpms",
+ "arch": "s390x",
+ "channel": "beta",
+ "repo_type": "rpm"
+ },
+ {
+ "major_version": "10",
+ "repoid": "rhel-10-for-s390x-highavailability-rpms",
+ "arch": "s390x",
+ "channel": "ga",
+ "repo_type": "rpm"
+ },
+ {
+ "major_version": "10",
+ "repoid": "rhel-10-for-x86_64-highavailability-beta-rpms",
+ "arch": "x86_64",
+ "channel": "beta",
+ "repo_type": "rpm"
+ },
+ {
+ "major_version": "10",
+ "repoid": "rhel-10-for-x86_64-highavailability-rpms",
+ "arch": "x86_64",
+ "channel": "ga",
+ "repo_type": "rpm"
+ }
+ ]
}
],
"provided_data_streams": [
--
2.42.0

10254
0081-Update-PES-data.patch Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,56 @@
From 37388072ea221d9dd9dabc5504140c9a1caeed82 Mon Sep 17 00:00:00 2001
From: Petr Stodulka <pstodulk@redhat.com>
Date: Fri, 19 Apr 2024 15:31:26 +0200
Subject: [PATCH 82/92] IPU 9 -> 10: Specify default PESIDS for el10
---
.../peseventsscanner/libraries/peseventsscanner_repomap.py | 3 ++-
.../repositoriesblacklist/libraries/repositoriesblacklist.py | 3 ++-
.../setuptargetrepos/libraries/setuptargetrepos_repomap.py | 3 ++-
3 files changed, 6 insertions(+), 3 deletions(-)
diff --git a/repos/system_upgrade/common/actors/peseventsscanner/libraries/peseventsscanner_repomap.py b/repos/system_upgrade/common/actors/peseventsscanner/libraries/peseventsscanner_repomap.py
index 64e1346b..c2976ddf 100644
--- a/repos/system_upgrade/common/actors/peseventsscanner/libraries/peseventsscanner_repomap.py
+++ b/repos/system_upgrade/common/actors/peseventsscanner/libraries/peseventsscanner_repomap.py
@@ -5,7 +5,8 @@ from leapp.libraries.stdlib import api
DEFAULT_PESID = {
'7': 'rhel7-base',
'8': 'rhel8-BaseOS',
- '9': 'rhel9-BaseOS'
+ '9': 'rhel9-BaseOS',
+ '10': 'rhel10-BaseOS'
}
diff --git a/repos/system_upgrade/common/actors/repositoriesblacklist/libraries/repositoriesblacklist.py b/repos/system_upgrade/common/actors/repositoriesblacklist/libraries/repositoriesblacklist.py
index b5275610..e22fbee0 100644
--- a/repos/system_upgrade/common/actors/repositoriesblacklist/libraries/repositoriesblacklist.py
+++ b/repos/system_upgrade/common/actors/repositoriesblacklist/libraries/repositoriesblacklist.py
@@ -8,7 +8,8 @@ from leapp.models import CustomTargetRepository, RepositoriesBlacklisted, Reposi
UNSUPPORTED_PESIDS = {
"7": "rhel7-optional",
"8": "rhel8-CRB",
- "9": "rhel9-CRB"
+ "9": "rhel9-CRB",
+ "10": "rhel10-CRB"
}
diff --git a/repos/system_upgrade/common/actors/setuptargetrepos/libraries/setuptargetrepos_repomap.py b/repos/system_upgrade/common/actors/setuptargetrepos/libraries/setuptargetrepos_repomap.py
index 64e1346b..c2976ddf 100644
--- a/repos/system_upgrade/common/actors/setuptargetrepos/libraries/setuptargetrepos_repomap.py
+++ b/repos/system_upgrade/common/actors/setuptargetrepos/libraries/setuptargetrepos_repomap.py
@@ -5,7 +5,8 @@ from leapp.libraries.stdlib import api
DEFAULT_PESID = {
'7': 'rhel7-base',
'8': 'rhel8-BaseOS',
- '9': 'rhel9-BaseOS'
+ '9': 'rhel9-BaseOS',
+ '10': 'rhel10-BaseOS'
}
--
2.42.0

View File

@ -0,0 +1,29 @@
From 60f500e59bb92fa80a032f663ee889624fa4a95d Mon Sep 17 00:00:00 2001
From: Michal Reznik <mreznik@redhat.com>
Date: Thu, 6 Jun 2024 18:17:29 +0200
Subject: [PATCH 83/92] Skip "directory-hash" files
They are not owned by any package and can dynamically grow to
a huge amount of files causing hitting open files limit
---
.../actors/targetuserspacecreator/libraries/userspacegen.py | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/repos/system_upgrade/common/actors/targetuserspacecreator/libraries/userspacegen.py b/repos/system_upgrade/common/actors/targetuserspacecreator/libraries/userspacegen.py
index 4a61ccb4..7d9c4d64 100644
--- a/repos/system_upgrade/common/actors/targetuserspacecreator/libraries/userspacegen.py
+++ b/repos/system_upgrade/common/actors/targetuserspacecreator/libraries/userspacegen.py
@@ -313,6 +313,10 @@ def _get_files_owned_by_rpms(context, dirpath, pkgs=None, recursive=False):
for root, _, files in os.walk(searchdir):
for filename in files:
relpath = os.path.relpath(os.path.join(root, filename), searchdir)
+ # "directory-hash" files are not owned by any package and can dynamically
+ # grow to a huge amount of files causing hitting open files limit
+ if 'directory-hash' in relpath:
+ continue
file_list.append(relpath)
else:
file_list = os.listdir(searchdir)
--
2.42.0

View File

@ -0,0 +1,120 @@
From 10bda0186b680b56fc6b32ac8fcd099c37f4189c Mon Sep 17 00:00:00 2001
From: Michal Reznik <mreznik@redhat.com>
Date: Sat, 20 Apr 2024 10:46:43 +0200
Subject: [PATCH 84/92] IPU 9 -> 10: Migrate & rebuild RPM DB
The RPM DB has been moved from /var/lib/rpm to /usr/lib/sysimage/rpm
in RHEL 10. Apply the change and create symlink in the original
path to the new one as expected.
Also rebuild the RPM DB to ensure it's compatible with the new RPM
version. Previously the RPM DB was being rebuilt during IPU 8 -> 9.
However after discussion with RPM SMEs it has been decided that this
is actually very reasonable to do always. So applying for any upgrade
path but IPU 7 -> 8 (let's do not change this one so much when it's
kind of finished).
Co-authored-by: Matej Matuska <mmatuska@redhat.com>
---
.../common/libraries/dnfplugin.py | 4 +--
.../el9toel10/actors/migraterpmdb/actor.py | 30 +++++++++++++++++++
.../migraterpmdb/tests/test_migraterpmdb.py | 11 +++++++
repos/system_upgrade/el9toel10/tools/.gitkeep | 0
.../el9toel10/tools/migraterpmdb | 4 +++
5 files changed, 47 insertions(+), 2 deletions(-)
create mode 100644 repos/system_upgrade/el9toel10/actors/migraterpmdb/actor.py
create mode 100644 repos/system_upgrade/el9toel10/actors/migraterpmdb/tests/test_migraterpmdb.py
delete mode 100644 repos/system_upgrade/el9toel10/tools/.gitkeep
create mode 100755 repos/system_upgrade/el9toel10/tools/migraterpmdb
diff --git a/repos/system_upgrade/common/libraries/dnfplugin.py b/repos/system_upgrade/common/libraries/dnfplugin.py
index d09cb90a..4f0c3a99 100644
--- a/repos/system_upgrade/common/libraries/dnfplugin.py
+++ b/repos/system_upgrade/common/libraries/dnfplugin.py
@@ -357,7 +357,7 @@ def install_initramdisk_requirements(packages, target_userspace_info, used_repos
mount_binds = ['/:/installroot']
with _prepare_transaction(used_repos=used_repos, target_userspace_info=target_userspace_info,
binds=mount_binds) as (context, target_repoids, _unused):
- if get_target_major_version() == '9':
+ if int(get_target_major_version()) >= 9:
_rebuild_rpm_db(context)
repos_opt = [['--enablerepo', repo] for repo in target_repoids]
repos_opt = list(itertools.chain(*repos_opt))
@@ -446,7 +446,7 @@ def perform_transaction_install(target_userspace_info, storage_info, used_repos,
# set like that, however seatbelt is a good thing.
dnfconfig.exclude_leapp_rpms(context, disable_plugins)
- if get_target_major_version() == '9':
+ if int(get_target_major_version()) >= 9:
_rebuild_rpm_db(context, root='/installroot')
_transaction(
context=context, stage='upgrade', target_repoids=target_repoids, plugin_info=plugin_info,
diff --git a/repos/system_upgrade/el9toel10/actors/migraterpmdb/actor.py b/repos/system_upgrade/el9toel10/actors/migraterpmdb/actor.py
new file mode 100644
index 00000000..80adbeb3
--- /dev/null
+++ b/repos/system_upgrade/el9toel10/actors/migraterpmdb/actor.py
@@ -0,0 +1,30 @@
+from leapp.actors import Actor
+from leapp.models import DNFWorkaround
+from leapp.tags import FactsPhaseTag, IPUWorkflowTag
+
+
+class MigrateRPMDB(Actor):
+ """
+ Register a workaround to migrate RPM DB during the upgrade.
+
+ The RPM DB has been moved from /var/lib/rpm to /usr/lib/sysimage/rpm
+ in RHEL 10. So register "migraterpmdb" script to handle it during various
+ parts of the upgrade process. The script moves the dir and create symlink
+ /var/lib/rpm -> /usr/lib/sysimage/rpm.
+
+ Note that we realized we should also rebuild the RPM DB, however this is
+ handled already in common upgrade repository. So deal here just with paths.
+ """
+
+ name = 'migrate_rpm_db'
+ consumes = ()
+ produces = (DNFWorkaround,)
+ tags = (IPUWorkflowTag, FactsPhaseTag)
+
+ def process(self):
+ self.produce(
+ DNFWorkaround(
+ display_name="Migrate RPM DB",
+ script_path=self.get_tool_path("migraterpmdb"),
+ )
+ )
diff --git a/repos/system_upgrade/el9toel10/actors/migraterpmdb/tests/test_migraterpmdb.py b/repos/system_upgrade/el9toel10/actors/migraterpmdb/tests/test_migraterpmdb.py
new file mode 100644
index 00000000..c66ad68e
--- /dev/null
+++ b/repos/system_upgrade/el9toel10/actors/migraterpmdb/tests/test_migraterpmdb.py
@@ -0,0 +1,11 @@
+import os.path
+
+from leapp.models import DNFWorkaround
+
+
+def test_migraterpmdb(current_actor_context):
+ current_actor_context.run()
+ assert len(current_actor_context.consume(DNFWorkaround)) == 1
+ assert current_actor_context.consume(DNFWorkaround)[0].display_name == 'Migrate RPM DB'
+ assert os.path.basename(current_actor_context.consume(DNFWorkaround)[0].script_path) == 'migraterpmdb'
+ assert os.path.exists(current_actor_context.consume(DNFWorkaround)[0].script_path)
diff --git a/repos/system_upgrade/el9toel10/tools/.gitkeep b/repos/system_upgrade/el9toel10/tools/.gitkeep
deleted file mode 100644
index e69de29b..00000000
diff --git a/repos/system_upgrade/el9toel10/tools/migraterpmdb b/repos/system_upgrade/el9toel10/tools/migraterpmdb
new file mode 100755
index 00000000..16700645
--- /dev/null
+++ b/repos/system_upgrade/el9toel10/tools/migraterpmdb
@@ -0,0 +1,4 @@
+#!/usr/bin/bash
+
+mv /var/lib/rpm /usr/lib/sysimage/rpm
+ln -sfr /usr/lib/sysimage/rpm /var/lib/rpm
--
2.42.0

View File

@ -0,0 +1,26 @@
From ba58aa90fa500fcbf2d1ca362074192324201ff6 Mon Sep 17 00:00:00 2001
From: Matej Matuska <mmatuska@redhat.com>
Date: Thu, 27 Jun 2024 15:42:53 +0200
Subject: [PATCH 85/92] Define empty obsoleted RPM GPG keys for RHEL 10
No keys will be obosoleted, however it's expected to define the list.
---
.../common/files/distro/rhel/gpg-signatures.json | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/repos/system_upgrade/common/files/distro/rhel/gpg-signatures.json b/repos/system_upgrade/common/files/distro/rhel/gpg-signatures.json
index 0d40e001..8a5471a8 100644
--- a/repos/system_upgrade/common/files/distro/rhel/gpg-signatures.json
+++ b/repos/system_upgrade/common/files/distro/rhel/gpg-signatures.json
@@ -13,6 +13,7 @@
"gpg-pubkey-37017186-45761324",
"gpg-pubkey-db42a60e-37ea5438"
],
- "9": ["gpg-pubkey-d4082792-5b32db75"]
+ "9": ["gpg-pubkey-d4082792-5b32db75"],
+ "10": []
}
}
--
2.42.0

View File

@ -0,0 +1,66 @@
From 4778d9646f8ef333422e772c3222aad7f8a0449c Mon Sep 17 00:00:00 2001
From: Matej Matuska <mmatuska@redhat.com>
Date: Thu, 27 Jun 2024 16:18:31 +0200
Subject: [PATCH 86/92] Add 9to10 to GH unit test action
---
.github/workflows/unit-tests.yml | 19 +++++++++++++++----
utils/container-tests/Containerfile.ubi9 | 4 +++-
2 files changed, 18 insertions(+), 5 deletions(-)
diff --git a/.github/workflows/unit-tests.yml b/.github/workflows/unit-tests.yml
index e4b4d173..f73a61e9 100644
--- a/.github/workflows/unit-tests.yml
+++ b/.github/workflows/unit-tests.yml
@@ -15,18 +15,29 @@ jobs:
fail-fast: false
matrix:
scenarios:
+ # 9to10
+ - name: Run unit tests for el9toel10 and common repositories on python 3.12
+ python: python3.12
+ repos: 'el9toel10,common'
+ container: ubi9
+ - name: Run unit tests for el9toel10 and common repositories on python 3.9
+ python: python3.9
+ repos: 'el9toel10,common'
+ container: ubi9
+ # 8to9
- name: Run unit tests for el8toel9 and common repositories on python 3.9
python: python3.9
repos: 'el8toel9,common'
+ container: ubi9
+ - name: Run unit tests for el8toel9 and common repositories on python 3.6
+ python: python3.6
+ repos: 'el8toel9,common'
container: ubi8
+ # 7to8
- name: Run unit tests for el7toel8 and common repositories on python 3.6
python: python3.6
repos: 'el7toel8,common'
container: ubi8
- - name: Run unit tests for el8toel9 and common repositories on python 3.6
- python: python3.6
- repos: 'el8toel9,common'
- container: ubi8
- name: Run unit tests for el7toel8 and common repositories on python 2.7
python: python2.7
repos: 'el7toel8,common'
diff --git a/utils/container-tests/Containerfile.ubi9 b/utils/container-tests/Containerfile.ubi9
index 4460c748..1e616a99 100644
--- a/utils/container-tests/Containerfile.ubi9
+++ b/utils/container-tests/Containerfile.ubi9
@@ -3,7 +3,9 @@ FROM registry.access.redhat.com/ubi9/ubi:latest
VOLUME /payload
RUN dnf update -y && \
- dnf install python3-virtualenv python3-setuptools python3-pip make git -y
+ dnf install python3-setuptools python3-pip make git -y
+
+RUN pip install virtualenv
WORKDIR /payload
ENTRYPOINT make install-deps && make test
--
2.42.0

View File

@ -0,0 +1,173 @@
From 117644119f8c48fe5183aa309ad45a8ba9a4bf53 Mon Sep 17 00:00:00 2001
From: Matej Matuska <mmatuska@redhat.com>
Date: Fri, 28 Jun 2024 18:53:07 +0200
Subject: [PATCH 87/92] Fix or TODO some version specific actions in actors
---
.../common/actors/checkfips/actor.py | 5 ++++-
.../checksaphana/libraries/checksaphana.py | 11 +++++++++--
.../opensshpermitrootlogincheck/actor.py | 5 +++--
.../libraries/checkopensslconf.py | 9 ++++++---
.../libraries/repairsystemdsymlinks.py | 19 ++++++-------------
repos/system_upgrade/common/libraries/rhui.py | 1 +
6 files changed, 29 insertions(+), 21 deletions(-)
diff --git a/repos/system_upgrade/common/actors/checkfips/actor.py b/repos/system_upgrade/common/actors/checkfips/actor.py
index bd09b1b9..73408655 100644
--- a/repos/system_upgrade/common/actors/checkfips/actor.py
+++ b/repos/system_upgrade/common/actors/checkfips/actor.py
@@ -41,7 +41,7 @@ class CheckFips(Actor):
reporting.ExternalLink(url=fips_7to8_steps_docs_url,
title='Planning an upgrade from RHEL 7 to RHEL 8')
])
- else:
+ elif version.get_target_major_version() == '9':
# FIXME(mhecko): We include these files manually as they are not included automatically when the fips
# module is used due to a bug in dracut. This code should be removed, once the dracut bug is resolved.
# See https://bugzilla.redhat.com/show_bug.cgi?id=2176560
@@ -53,3 +53,6 @@ class CheckFips(Actor):
]
self.produce(UpgradeInitramfsTasks(include_files=fips_required_initramfs_files,
include_dracut_modules=[DracutModule(name='fips')]))
+ elif version.get_target_major_version() == '10':
+ # TODO(mmatuska): What to do with FIPS on 9to10? OAMG-11431
+ pass
diff --git a/repos/system_upgrade/common/actors/checksaphana/libraries/checksaphana.py b/repos/system_upgrade/common/actors/checksaphana/libraries/checksaphana.py
index 7cd83de8..498fb7a8 100644
--- a/repos/system_upgrade/common/actors/checksaphana/libraries/checksaphana.py
+++ b/repos/system_upgrade/common/actors/checksaphana/libraries/checksaphana.py
@@ -7,7 +7,8 @@ from leapp.models import SapHanaInfo
# Supported architectures for upgrades with SAP HANA to RHEL 'X'
SAP_HANA_SUPPORTER_ARCHS = {
'8': [architecture.ARCH_X86_64],
- '9': [architecture.ARCH_X86_64, architecture.ARCH_PPC64LE]
+ '9': [architecture.ARCH_X86_64, architecture.ARCH_PPC64LE],
+ '10': [architecture.ARCH_X86_64, architecture.ARCH_PPC64LE],
}
SAP_HANA_MINIMAL_MAJOR_VERSION = 2
@@ -186,6 +187,8 @@ def version2_check(info):
continue
if version.matches_target_version('> 8.6', '< 9.0') or version.matches_target_version('> 9.0'):
# if a target release is >=8.8 or >=9.2, the SAP HANA and RHEL versions compatibility is not checked
+ # TODO(mmatuska): We don't know whether the check will be skipped on RHEL 10 (9to10) yet,
+ # update the method accoridingly then
_report_skip_check()
return
# if a starget release is 8.6 or 9.0 we still check SAP HANA and RHEL versions compatibility
@@ -221,6 +224,7 @@ def platform_check():
Supported architectures:
- IPU 7 -> 8: x86_64
- IPU 8 -> 9: x86_64, ppc64le
+ - IPU 9 -> 10: x86_64, ppc64le
In case of the upgrade to a RHEL X version that is not supported for the
IPU yet, return False and do not report anything, as the upgrade to
@@ -243,7 +247,10 @@ def platform_check():
title='How to in-place upgrade SAP environments from RHEL 7 to RHEL 8'),
'9': reporting.ExternalLink(
url='https://red.ht/how-to-in-place-upgrade-sap-environments-from-rhel-8-to-rhel-9',
- title='How to in-place upgrade SAP environments from RHEL 8 to RHEL 9')
+ title='How to in-place upgrade SAP environments from RHEL 8 to RHEL 9'),
+ '10': reporting.ExternalLink(
+ url='https://red.ht/how-to-in-place-upgrade-sap-environments-from-rhel-9-to-rhel-10',
+ title='How to in-place upgrade SAP environments from RHEL 9 to RHEL 10'),
}
reporting.create_report([
diff --git a/repos/system_upgrade/common/actors/opensshpermitrootlogincheck/actor.py b/repos/system_upgrade/common/actors/opensshpermitrootlogincheck/actor.py
index 7a49622f..9c1a421c 100644
--- a/repos/system_upgrade/common/actors/opensshpermitrootlogincheck/actor.py
+++ b/repos/system_upgrade/common/actors/opensshpermitrootlogincheck/actor.py
@@ -50,9 +50,10 @@ class OpenSshPermitRootLoginCheck(Actor):
self.process7to8(config)
elif get_source_major_version() == '8':
self.process8to9(config)
+ elif int(get_source_major_version()) >= 9:
+ pass
else:
- api.current_logger().warning('Unknown source major version: {} (expecting 7 or 8)'
- .format(get_source_major_version()))
+ api.current_logger().warning('Unknown source major version: {}'.format(get_source_major_version()))
def process7to8(self, config):
# when the config was not modified, we can pass this check and let the
diff --git a/repos/system_upgrade/common/actors/openssl/checkopensslconf/libraries/checkopensslconf.py b/repos/system_upgrade/common/actors/openssl/checkopensslconf/libraries/checkopensslconf.py
index 06a30fa1..53e803b2 100644
--- a/repos/system_upgrade/common/actors/openssl/checkopensslconf/libraries/checkopensslconf.py
+++ b/repos/system_upgrade/common/actors/openssl/checkopensslconf/libraries/checkopensslconf.py
@@ -5,8 +5,11 @@ from leapp.libraries.stdlib import api
from leapp.models import DistributionSignedRPM, TrackedFilesInfoSource
DEFAULT_OPENSSL_CONF = '/etc/pki/tls/openssl.cnf'
-URL_8_CRYPTOPOLICIES = 'https://red.ht/rhel-8-system-wide-crypto-policies'
-URL_9_CRYPTOPOLICIES = 'https://red.ht/rhel-9-system-wide-crypto-policies'
+URL_CRYPTOPOLICIES = {
+ '8': 'https://red.ht/rhel-8-system-wide-crypto-policies',
+ '9': 'https://red.ht/rhel-9-system-wide-crypto-policies',
+ '10': 'https://red.ht/rhel-10-system-wide-crypto-policies', # TODO actually make the url
+}
def check_ibmca():
@@ -70,7 +73,7 @@ def check_default_openssl():
if not _is_openssl_modified():
return
- crypto_url = URL_8_CRYPTOPOLICIES if version.get_target_major_version == '8' else URL_9_CRYPTOPOLICIES
+ crypto_url = URL_CRYPTOPOLICIES[version.get_target_major_version()]
# TODO(pstodulk): Needs in future some rewording, as OpenSSL engines are
# deprecated since "RHEL 8" and people should use OpenSSL providers instead.
diff --git a/repos/system_upgrade/common/actors/systemd/repairsystemdsymlinks/libraries/repairsystemdsymlinks.py b/repos/system_upgrade/common/actors/systemd/repairsystemdsymlinks/libraries/repairsystemdsymlinks.py
index 884b001e..3fcf4aa6 100644
--- a/repos/system_upgrade/common/actors/systemd/repairsystemdsymlinks/libraries/repairsystemdsymlinks.py
+++ b/repos/system_upgrade/common/actors/systemd/repairsystemdsymlinks/libraries/repairsystemdsymlinks.py
@@ -6,18 +6,11 @@ from leapp.libraries.common.config.version import get_target_major_version
from leapp.libraries.stdlib import api, CalledProcessError, run
from leapp.models import SystemdBrokenSymlinksSource, SystemdBrokenSymlinksTarget, SystemdServicesInfoSource
-_INSTALLATION_CHANGED_EL8 = ['rngd.service', 'sysstat.service']
-_INSTALLATION_CHANGED_EL9 = []
-
-
-def _get_installation_changed_units():
- version = get_target_major_version()
- if version == '8':
- return _INSTALLATION_CHANGED_EL8
- if version == '9':
- return _INSTALLATION_CHANGED_EL9
-
- return []
+_INSTALLATION_CHANGED = {
+ '8': ['rngd.service', 'sysstat.service'],
+ '9': [],
+ '10': [],
+}
def _service_enabled_source(service_info, name):
@@ -49,7 +42,7 @@ def _handle_newly_broken_symlinks(symlinks, service_info):
def _handle_bad_symlinks(service_files):
- install_changed_units = _get_installation_changed_units()
+ install_changed_units = _INSTALLATION_CHANGED[get_target_major_version()]
potentially_bad = [s for s in service_files if s.name in install_changed_units]
for unit_file in potentially_bad:
diff --git a/repos/system_upgrade/common/libraries/rhui.py b/repos/system_upgrade/common/libraries/rhui.py
index 86f74084..51694ac2 100644
--- a/repos/system_upgrade/common/libraries/rhui.py
+++ b/repos/system_upgrade/common/libraries/rhui.py
@@ -553,6 +553,7 @@ RHUI_CLOUD_MAP = {
}
+# TODO(mmatuska) deprecate or adjust for 9to10?
def get_upg_path():
"""
Get upgrade path in specific string format
--
2.42.0

View File

@ -0,0 +1,70 @@
From 3f7377b3667d9416ebe4769bd25e0b81d4717ff6 Mon Sep 17 00:00:00 2001
From: Matej Matuska <mmatuska@redhat.com>
Date: Thu, 11 Jul 2024 15:31:24 +0200
Subject: [PATCH 88/92] Replace deprecated shutil.rmtree onerror kwarg
The `onerror` argument of shutil.rmtree is deprecated and replaced by
`onexc` since Python 3.12. It accepts callback with the same arguments
except for the last one which is now a subclass of `BaseException`. Our
callback `libraries.utils.report_and_ignore_shutil_rmtree_error` is thus
modified accordingly.
---
.../system_upgrade/common/libraries/overlaygen.py | 8 +++++++-
repos/system_upgrade/common/libraries/utils.py | 15 +++++++++++----
2 files changed, 18 insertions(+), 5 deletions(-)
diff --git a/repos/system_upgrade/common/libraries/overlaygen.py b/repos/system_upgrade/common/libraries/overlaygen.py
index 1132cde1..c1ac9ad3 100644
--- a/repos/system_upgrade/common/libraries/overlaygen.py
+++ b/repos/system_upgrade/common/libraries/overlaygen.py
@@ -1,6 +1,7 @@
import contextlib
import os
import shutil
+import sys
from collections import namedtuple
from leapp.exceptions import StopActorExecutionError
@@ -343,7 +344,12 @@ def cleanup_scratch(scratch_dir, mounts_dir):
# NOTE(pstodulk): From time to time, it helps me with some experiments
return
api.current_logger().debug('Recursively removing scratch directory %s.', scratch_dir)
- shutil.rmtree(scratch_dir, onerror=utils.report_and_ignore_shutil_rmtree_error)
+ if sys.version_info >= (3, 12):
+ # NOTE(mmatuska): The pylint suppressions are required because of a bug in pylint:
+ # (https://github.com/pylint-dev/pylint/issues/9622)
+ shutil.rmtree(scratch_dir, onexc=utils.report_and_ignore_shutil_rmtree_error) # noqa: E501; pylint: disable=unexpected-keyword-arg
+ else:
+ shutil.rmtree(scratch_dir, onerror=utils.report_and_ignore_shutil_rmtree_error) # noqa: E501; pylint: disable=deprecated-argument
api.current_logger().debug('Recursively removed scratch directory %s.', scratch_dir)
diff --git a/repos/system_upgrade/common/libraries/utils.py b/repos/system_upgrade/common/libraries/utils.py
index 38b9bb1a..b7aa9c74 100644
--- a/repos/system_upgrade/common/libraries/utils.py
+++ b/repos/system_upgrade/common/libraries/utils.py
@@ -105,10 +105,17 @@ def report_and_ignore_shutil_rmtree_error(func, path, exc_info):
"""
Helper function for shutil.rmtree to only report errors but don't fail.
"""
- api.current_logger().warning(
- 'While trying to remove directories: %s failed at %s with an exception %s message: %s',
- func.__name__, path, exc_info[0].__name__, exc_info[1]
- )
+ # third parameter has changed in Python 3.12
+ if sys.version_info >= (3, 12):
+ api.current_logger().warning(
+ 'While trying to remove directories: %s failed at %s with an exception %s message: %s',
+ func.__name__, path, exc_info[0].__name__, exc_info[1]
+ )
+ else:
+ api.current_logger().warning(
+ 'While trying to remove directories: %s failed at %s with an exception %s message: %s',
+ func.__name__, path, type(exc_info).__name__, str(exc_info)
+ )
def call_with_oserror_handled(cmd):
--
2.42.0

View File

@ -0,0 +1,91 @@
From 236483d5478ce845726ee05b7ca3e080105cdb80 Mon Sep 17 00:00:00 2001
From: Petr Stodulka <pstodulk@redhat.com>
Date: Mon, 15 Jul 2024 23:01:03 +0200
Subject: [PATCH 89/92] UpgradeInitramfsGenerator: drop distutils dependency
Originally the actor used distutils.version.LooseVersion to detect
newest version of installed kernel package inside target userspace
container. But the distutils python module has become deprecated
and we should not use it anymore in Python 3.12+.
However, we do not expect to see multiple versions of kernel present
inside the target userspace container as the container is created
during the IPU process from scratch (always). Considering the presence
of multiple kernels to be sign of error, which could negatively affect
also additional actions later.
Updated the solution, raising an error if multiple kernels are detected
inside the container. As we expect one kernel only, no need to compare
versions of particular possible kernel packages.
Note there are now just these cases when this could happen:
* a third party package is required to be installed inside the
container
* an explicit requirement to install particular version of container
is made by a custom actor
---
.../libraries/upgradeinitramfsgenerator.py | 37 ++++++++++++-------
1 file changed, 24 insertions(+), 13 deletions(-)
diff --git a/repos/system_upgrade/common/actors/initramfs/upgradeinitramfsgenerator/libraries/upgradeinitramfsgenerator.py b/repos/system_upgrade/common/actors/initramfs/upgradeinitramfsgenerator/libraries/upgradeinitramfsgenerator.py
index 5a686a47..04fa061b 100644
--- a/repos/system_upgrade/common/actors/initramfs/upgradeinitramfsgenerator/libraries/upgradeinitramfsgenerator.py
+++ b/repos/system_upgrade/common/actors/initramfs/upgradeinitramfsgenerator/libraries/upgradeinitramfsgenerator.py
@@ -1,6 +1,5 @@
import os
import shutil
-from distutils.version import LooseVersion
from leapp.exceptions import StopActorExecutionError
from leapp.libraries.common import dnfplugin, mounting
@@ -30,23 +29,35 @@ def _get_target_kernel_version(context):
kernel_version = None
try:
- results = context.call(['rpm', '-qa', 'kernel-core'], split=True)
-
- versions = [ver.replace('kernel-core-', '') for ver in results['stdout']]
- api.current_logger().debug(
- 'Versions detected {versions}.'
- .format(versions=versions))
- sorted_versions = sorted(versions, key=LooseVersion, reverse=True)
- kernel_version = next(iter(sorted_versions), None)
+ # NOTE: Currently we install/use always kernel-core in the upgrade
+ # initramfs. We do not use currently any different kernel package
+ # in the container. Note this could change in future e.g. on aarch64
+ # for IPU 9 -> 10.
+ # TODO(pstodulk): Investigate situation on ARM systems. OAMG-11433
+ results = context.call(['rpm', '-qa', 'kernel-core'], split=True)['stdout']
except CalledProcessError:
raise StopActorExecutionError(
- 'Cannot get version of the installed kernel.',
- details={'Problem': 'Could not query the currently installed kernel through rmp.'})
+ 'Cannot get version of the installed kernel inside container.',
+ details={'Problem': 'Could not query the currently installed kernel inside container using rpm.'})
+
+ if len(results) > 1:
+ # this is should not happen. It's hypothetic situation, which alone it's
+ # already error. So skipping more sophisticated implementation.
+ # The container is always created during the upgrade and as that we expect
+ # always one-and-only kernel installed.
+ raise StopActorExecutionError(
+ 'Cannot get version of the installed kernel inside container.',
+ details={'Problem': 'Detected unexpectedly multiple kernels inside target userspace container.'}
+ )
+
+ # kernel version == version-release from package
+ kernel_version = '-'.join(results[0].rsplit("-", 2)[-2:])
+ api.current_logger().debug('Detected kernel version inside container: {}.'.format(kernel_version))
if not kernel_version:
raise StopActorExecutionError(
- 'Cannot get version of the installed kernel.',
- details={'Problem': 'A rpm query for the available kernels did not produce any results.'})
+ 'Cannot get version of the installed kernel inside container.',
+ details={'Problem': 'An rpm query for the available kernels did not produce any results.'})
return kernel_version
--
2.42.0

View File

@ -0,0 +1,82 @@
From 7cd469bab1e19f206f0f558fd89d9c4a6d9db07d Mon Sep 17 00:00:00 2001
From: Michael Scherer <misc@redhat.com>
Date: Wed, 3 Jul 2024 14:32:12 +0200
Subject: [PATCH 90/92] Fix detection when a bootable partition in on RAID
On my server, leapp preupgrade fail with the following error:
Traceback (most recent call last):
File "/usr/lib64/python2.7/multiprocessing/process.py", line 258, in _bootstrap
self.run()
File "/usr/lib64/python2.7/multiprocessing/process.py", line 114, in run
self._target(*self._args, **self._kwargs)
File "/usr/lib/python2.7/site-packages/leapp/repository/actor_definition.py", line 74, in _do_run
actor_instance.run(*args, **kwargs)
File "/usr/lib/python2.7/site-packages/leapp/actors/__init__.py", line 289, in run
self.process(*args)
File "/usr/share/leapp-repository/repositories/system_upgrade/el7toel8/actors/scangrubdevpartitionlayout/actor.py", line 18, in process
scan_layout_lib.scan_grub_device_partition_layout()
File "/usr/share/leapp-repository/repositories/system_upgrade/el7toel8/actors/scangrubdevpartitionlayout/libraries/scan_layout.py", line 91, in scan_grub_device_partition_layout
dev_info = get_partition_layout(device)
File "/usr/share/leapp-repository/repositories/system_upgrade/el7toel8/actors/scangrubdevpartitionlayout/libraries/scan_layout.py", line 79, in get_partition_layout
part_start = int(part_info[2]) if len(part_info) == len(part_all_attrs) else int(part_info[1])
ValueError: invalid literal for int() with base 10: '*'
This is caused by the following line:
/dev/sda1 * 2048 1026047 512000 fd Linux raid autodetect
I have my server on EL7 with / using a Linux RAID so len(part_info) != len(part_all_attrs), hence why
it try to convert '*' to int.
---
.../scangrubdevpartitionlayout/libraries/scan_layout.py | 3 +--
.../tests/test_scan_partition_layout.py | 5 +++--
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/repos/system_upgrade/el7toel8/actors/scangrubdevpartitionlayout/libraries/scan_layout.py b/repos/system_upgrade/el7toel8/actors/scangrubdevpartitionlayout/libraries/scan_layout.py
index f51bcda4..83d02656 100644
--- a/repos/system_upgrade/el7toel8/actors/scangrubdevpartitionlayout/libraries/scan_layout.py
+++ b/repos/system_upgrade/el7toel8/actors/scangrubdevpartitionlayout/libraries/scan_layout.py
@@ -64,7 +64,6 @@ def get_partition_layout(device):
if not line.startswith('Device'):
continue
- part_all_attrs = split_on_space_segments(line)
break
partitions = []
@@ -75,7 +74,7 @@ def get_partition_layout(device):
# If the partition is not bootable, the Boot column might be empty
part_device = part_info[0]
- part_start = int(part_info[2]) if len(part_info) == len(part_all_attrs) else int(part_info[1])
+ part_start = int(part_info[2]) if part_info[1] == '*' else int(part_info[1])
partitions.append(PartitionInfo(part_device=part_device, start_offset=part_start*unit))
return GRUBDevicePartitionLayout(device=device, partitions=partitions)
diff --git a/repos/system_upgrade/el7toel8/actors/scangrubdevpartitionlayout/tests/test_scan_partition_layout.py b/repos/system_upgrade/el7toel8/actors/scangrubdevpartitionlayout/tests/test_scan_partition_layout.py
index 54025379..743ca71f 100644
--- a/repos/system_upgrade/el7toel8/actors/scangrubdevpartitionlayout/tests/test_scan_partition_layout.py
+++ b/repos/system_upgrade/el7toel8/actors/scangrubdevpartitionlayout/tests/test_scan_partition_layout.py
@@ -31,7 +31,8 @@ Partition = namedtuple('Partition', ['name', 'start_offset'])
)
]
)
-def test_get_partition_layout(monkeypatch, devices):
+@pytest.mark.parametrize('fs', ('Linux', 'Linux raid autodetect'))
+def test_get_partition_layout(monkeypatch, devices, fs):
device_to_fdisk_output = {}
for device in devices:
fdisk_output = [
@@ -45,7 +46,7 @@ def test_get_partition_layout(monkeypatch, devices):
' Device Boot Start End Blocks Id System',
]
for part in device.partitions:
- part_line = '{0} * {1} 2099199 1048576 83 Linux'.format(part.name, part.start_offset)
+ part_line = '{0} * {1} 2099199 1048576 83 {2}'.format(part.name, part.start_offset, fs)
fdisk_output.append(part_line)
device_to_fdisk_output[device.name] = fdisk_output
--
2.42.0

View File

@ -0,0 +1,114 @@
From caff3acea4f74a134a9f2f5714c08c8bf7b596f5 Mon Sep 17 00:00:00 2001
From: Petr Stodulka <pstodulk@redhat.com>
Date: Thu, 4 Jul 2024 10:52:43 +0200
Subject: [PATCH 91/92] GPG check: do not raise an error when
TargetUserSpaceInfo is missing
Previously, if the upgrade has been inhibited during
TargetTransactionFactsCollectionPhase
usually because we could not create (for whatever reason) the target
userspace container, the actor checking rpm gpg keys failed with
the `Could not check for valid GPG keys` error. This has confused
many users as they couldn't know that this is impacted by the
problem described in an inhibitor that is below this error.
As it's for sure that the upgrade cannot continue when the target user
space container has not been created (the TargetUserSpaceInfo msg
is missing), we consider it safe to stop the gpg check here silently
just with a warning msg instead of raising the error - as this check
is important only in case we could actually upgrade.
All other possible raised errors are presereved.
jira: https://issues.redhat.com/browse/RHEL-30573
Signed-off-by: Petr Stodulka <pstodulk@redhat.com>
Signed-off-by: Jakub Jelen <jjelen@redhat.com>
---
.../libraries/missinggpgkey.py | 17 ++++++++++-------
.../tests/component_test_missinggpgkey.py | 9 +++++----
2 files changed, 15 insertions(+), 11 deletions(-)
diff --git a/repos/system_upgrade/common/actors/missinggpgkeysinhibitor/libraries/missinggpgkey.py b/repos/system_upgrade/common/actors/missinggpgkeysinhibitor/libraries/missinggpgkey.py
index 4b93e741..32e4527b 100644
--- a/repos/system_upgrade/common/actors/missinggpgkeysinhibitor/libraries/missinggpgkey.py
+++ b/repos/system_upgrade/common/actors/missinggpgkeysinhibitor/libraries/missinggpgkey.py
@@ -7,7 +7,7 @@ import tempfile
from six.moves import urllib
from leapp import reporting
-from leapp.exceptions import StopActorExecutionError
+from leapp.exceptions import StopActorExecution, StopActorExecutionError
from leapp.libraries.common.config.version import get_target_major_version
from leapp.libraries.common.gpg import get_gpg_fp_from_file, get_path_to_gpg_certs, is_nogpgcheck_set
from leapp.libraries.stdlib import api
@@ -61,6 +61,15 @@ def _get_abs_file_path(target_userspace, file_url):
def _consume_data():
+ try:
+ target_userspace = next(api.consume(TargetUserSpaceInfo))
+ except StopIteration:
+ api.current_logger().warning(
+ 'Missing TargetUserSpaceInfo data. The upgrade cannot continue'
+ ' without this data, so skipping any other actions.'
+ )
+ raise StopActorExecution()
+
try:
used_target_repos = next(api.consume(UsedTargetRepositories)).repos
except StopIteration:
@@ -83,12 +92,6 @@ def _consume_data():
raise StopActorExecutionError(
'Could not check for valid GPG keys', details={'details': 'No TrustedGpgKeys facts'}
)
- try:
- target_userspace = next(api.consume(TargetUserSpaceInfo))
- except StopIteration:
- raise StopActorExecutionError(
- 'Could not check for valid GPG keys', details={'details': 'No TargetUserSpaceInfo facts'}
- )
return used_target_repos, target_repos, trusted_gpg_keys, target_userspace
diff --git a/repos/system_upgrade/common/actors/missinggpgkeysinhibitor/tests/component_test_missinggpgkey.py b/repos/system_upgrade/common/actors/missinggpgkeysinhibitor/tests/component_test_missinggpgkey.py
index 6d3fa0b2..2cb142a0 100644
--- a/repos/system_upgrade/common/actors/missinggpgkeysinhibitor/tests/component_test_missinggpgkey.py
+++ b/repos/system_upgrade/common/actors/missinggpgkeysinhibitor/tests/component_test_missinggpgkey.py
@@ -2,7 +2,7 @@ import pytest
from six.moves.urllib.error import URLError
from leapp import reporting
-from leapp.exceptions import StopActorExecutionError
+from leapp.exceptions import StopActorExecution, StopActorExecutionError
from leapp.libraries.actor.missinggpgkey import process
from leapp.libraries.common.gpg import get_pubkeys_from_rpms
from leapp.libraries.common.testutils import create_report_mocked, CurrentActorMocked, logger_mocked, produce_mocked
@@ -191,12 +191,13 @@ def test_perform_missing_facts(monkeypatch, msgs):
monkeypatch.setattr(api, 'current_logger', logger_mocked())
# TODO: the gpg call should be mocked
- with pytest.raises(StopActorExecutionError):
+ with pytest.raises(StopActorExecution):
process()
# nothing produced
assert api.produce.called == 0
# not skipped by --nogpgcheck
- assert not api.current_logger.warnmsg
+ assert len(api.current_logger.warnmsg) == 1
+ assert "Missing TargetUserSpaceInfo data" in api.current_logger.warnmsg[0]
@suppress_deprecation(TMPTargetRepositoriesFacts)
@@ -280,7 +281,7 @@ def test_perform_missing_some_repo_facts(monkeypatch):
monkeypatch.setattr(reporting, 'create_report', create_report_mocked())
monkeypatch.setattr('leapp.libraries.common.gpg._gpg_show_keys', _gpg_show_keys_mocked)
- with pytest.raises(StopActorExecutionError):
+ with pytest.raises(StopActorExecution):
process()
assert api.produce.called == 0
assert reporting.create_report.called == 0
--
2.42.0

View File

@ -0,0 +1,327 @@
From 998b774d5f0fddf6b113da8102b64680c0ece43c Mon Sep 17 00:00:00 2001
From: Jakub Jelen <jjelen@redhat.com>
Date: Thu, 25 Apr 2024 17:16:32 +0200
Subject: [PATCH 92/92] OpenSSHConfigScanner: Include directive is supported
since RHEL 8.6
This issue could cause false positive reports when the user has the
configuration options such as "Subsystem sftp" defined in included file
only.
Resolves: RHEL-33902
Signed-off-by: Jakub Jelen <jjelen@redhat.com>
Co-Authored-By: Michal Hecko <mhecko@redhat.com>
do not use filesystem during tests
---
.../libraries/readopensshconfig.py | 61 ++++--
..._readopensshconfig_opensshconfigscanner.py | 180 +++++++++++++++++-
2 files changed, 229 insertions(+), 12 deletions(-)
diff --git a/repos/system_upgrade/common/actors/opensshconfigscanner/libraries/readopensshconfig.py b/repos/system_upgrade/common/actors/opensshconfigscanner/libraries/readopensshconfig.py
index e6cb9fcc..50e37092 100644
--- a/repos/system_upgrade/common/actors/opensshconfigscanner/libraries/readopensshconfig.py
+++ b/repos/system_upgrade/common/actors/opensshconfigscanner/libraries/readopensshconfig.py
@@ -1,5 +1,9 @@
import errno
+import glob
+import os
+import shlex
+from leapp.exceptions import StopActorExecutionError
from leapp.libraries.common.rpms import check_file_modification
from leapp.libraries.stdlib import api
from leapp.models import OpenSshConfig, OpenSshPermitRootLogin
@@ -12,14 +16,31 @@ def line_empty(line):
return len(line) == 0 or line.startswith('\n') or line.startswith('#')
-def parse_config(config):
- """Parse OpenSSH server configuration or the output of sshd test option."""
+def parse_config(config, base_config=None, current_cfg_depth=0):
+ """
+ Parse OpenSSH server configuration or the output of sshd test option.
- # RHEL7 defaults
- ret = OpenSshConfig(
- permit_root_login=[],
- deprecated_directives=[]
- )
+ :param Optional[OpenSshConfig] base_config: Base configuration that is extended with configuration options from
+ current file.
+
+ :param int current_cfg_depth: Internal counter for how many includes were already followed.
+ """
+
+ if current_cfg_depth > 16:
+ # This should really never happen as it would mean the SSH server won't
+ # start anyway on the old system.
+ error = 'Too many recursive includes while parsing sshd_config'
+ api.current_logger().error(error)
+ return None
+
+ ret = base_config
+ if ret is None:
+ # RHEL7 defaults
+ ret = OpenSshConfig(
+ permit_root_login=[],
+ deprecated_directives=[]
+ )
+ # TODO(Jakuje): Do we need different defaults for RHEL8?
in_match = None
for line in config:
@@ -68,8 +89,26 @@ def parse_config(config):
# here we need to record all remaining items as command and arguments
ret.subsystem_sftp = ' '.join(el[2:])
+ elif el[0].lower() == 'include':
+ # recursively parse the given file or files referenced by this option
+ # the option can have several space-separated filenames with glob wildcards
+ for pattern in shlex.split(' '.join(el[1:])):
+ if pattern[0] != '/' and pattern[0] != '~':
+ pattern = os.path.join('/etc/ssh/', pattern)
+ files_matching_include_pattern = glob.glob(pattern)
+ # OpenSSH sorts the files lexicographically
+ files_matching_include_pattern.sort()
+ for included_config_file in files_matching_include_pattern:
+ output = read_sshd_config(included_config_file)
+ if parse_config(output, base_config=ret, current_cfg_depth=current_cfg_depth + 1) is None:
+ raise StopActorExecutionError(
+ 'Failed to parse sshd configuration file',
+ details={'details': 'Too many recursive includes while parsing {}.'
+ .format(included_config_file)}
+ )
+
elif el[0].lower() in DEPRECATED_DIRECTIVES:
- # Filter out duplicit occurrences of the same deprecated directive
+ # Filter out duplicate occurrences of the same deprecated directive
if el[0].lower() not in ret.deprecated_directives:
# Use the directive in the form as found in config for user convenience
ret.deprecated_directives.append(el[0])
@@ -82,10 +121,10 @@ def produce_config(producer, config):
producer(config)
-def read_sshd_config():
+def read_sshd_config(config):
"""Read the actual sshd configuration file."""
try:
- with open(CONFIG, 'r') as fd:
+ with open(config, 'r') as fd:
return fd.readlines()
except IOError as err:
if err.errno != errno.ENOENT:
@@ -98,7 +137,7 @@ def scan_sshd(producer):
"""Parse sshd_config configuration file to create OpenSshConfig message."""
# direct access to configuration file
- output = read_sshd_config()
+ output = read_sshd_config(CONFIG)
config = parse_config(output)
# find out whether the file was modified from the one shipped in rpm
diff --git a/repos/system_upgrade/common/actors/opensshconfigscanner/tests/test_readopensshconfig_opensshconfigscanner.py b/repos/system_upgrade/common/actors/opensshconfigscanner/tests/test_readopensshconfig_opensshconfigscanner.py
index 68a9ec47..64c16f7f 100644
--- a/repos/system_upgrade/common/actors/opensshconfigscanner/tests/test_readopensshconfig_opensshconfigscanner.py
+++ b/repos/system_upgrade/common/actors/opensshconfigscanner/tests/test_readopensshconfig_opensshconfigscanner.py
@@ -1,3 +1,12 @@
+import glob
+import os
+import shutil
+import tempfile
+
+import pytest
+
+from leapp.exceptions import StopActorExecutionError
+from leapp.libraries.actor import readopensshconfig
from leapp.libraries.actor.readopensshconfig import line_empty, parse_config, produce_config
from leapp.models import OpenSshConfig, OpenSshPermitRootLogin
@@ -143,12 +152,181 @@ def test_parse_config_deprecated():
def test_parse_config_empty():
output = parse_config([])
assert isinstance(output, OpenSshConfig)
- assert isinstance(output, OpenSshConfig)
assert not output.permit_root_login
assert output.use_privilege_separation is None
assert output.protocol is None
+def test_parse_config_include(monkeypatch):
+ """ This already require some files to touch """
+
+ config_contents = {
+ '/etc/ssh/sshd_config': [
+ "Include /path/*.conf"
+ ],
+ '/path/my.conf': [
+ 'Subsystem sftp internal-sftp'
+ ],
+ '/path/another.conf': [
+ 'permitrootlogin no'
+ ]
+ }
+
+ primary_config_path = '/etc/ssh/sshd_config'
+ primary_config_contents = config_contents[primary_config_path]
+
+ def glob_mocked(pattern):
+ assert pattern == '/path/*.conf'
+ return ['/path/my.conf', '/path/another.conf']
+
+ def read_config_mocked(path):
+ return config_contents[path]
+
+ monkeypatch.setattr(glob, 'glob', glob_mocked)
+ monkeypatch.setattr(readopensshconfig, 'read_sshd_config', read_config_mocked)
+
+ output = parse_config(primary_config_contents)
+
+ assert isinstance(output, OpenSshConfig)
+ assert len(output.permit_root_login) == 1
+ assert output.permit_root_login[0].value == 'no'
+ assert output.permit_root_login[0].in_match is None
+ assert output.use_privilege_separation is None
+ assert output.protocol is None
+ assert output.subsystem_sftp == 'internal-sftp'
+
+
+def test_parse_config_include_recursive(monkeypatch):
+ """ The recursive include should gracefully fail """
+
+ config_contents = {
+ '/etc/ssh/sshd_config': [
+ "Include /path/*.conf"
+ ],
+ '/path/recursive.conf': [
+ "Include /path/*.conf"
+ ],
+ }
+
+ primary_config_path = '/etc/ssh/sshd_config'
+ primary_config_contents = config_contents[primary_config_path]
+
+ def glob_mocked(pattern):
+ assert pattern == '/path/*.conf'
+ return ['/path/recursive.conf']
+
+ def read_config_mocked(path):
+ return config_contents[path]
+
+ monkeypatch.setattr(glob, 'glob', glob_mocked)
+ monkeypatch.setattr(readopensshconfig, 'read_sshd_config', read_config_mocked)
+
+ with pytest.raises(StopActorExecutionError) as recursive_error:
+ parse_config(primary_config_contents)
+ assert 'Failed to parse sshd configuration file' in str(recursive_error)
+
+
+def test_parse_config_include_relative(monkeypatch):
+ """ When the include argument is relative path, it should point into the /etc/ssh/ """
+
+ config_contents = {
+ '/etc/ssh/sshd_config': [
+ "Include relative/*.conf"
+ ],
+ '/etc/ssh/relative/default.conf': [
+ 'Match address 192.168.1.42',
+ 'PermitRootLogin yes'
+ ],
+ '/etc/ssh/relative/other.conf': [
+ 'Match all',
+ 'PermitRootLogin prohibit-password'
+ ],
+ '/etc/ssh/relative/wrong.extension': [
+ "macs hmac-md5",
+ ],
+ }
+
+ primary_config_path = '/etc/ssh/sshd_config'
+ primary_config_contents = config_contents[primary_config_path]
+
+ def glob_mocked(pattern):
+ assert pattern == '/etc/ssh/relative/*.conf'
+ return ['/etc/ssh/relative/other.conf', '/etc/ssh/relative/default.conf']
+
+ def read_config_mocked(path):
+ return config_contents[path]
+
+ monkeypatch.setattr(glob, 'glob', glob_mocked)
+ monkeypatch.setattr(readopensshconfig, 'read_sshd_config', read_config_mocked)
+
+ output = parse_config(primary_config_contents)
+
+ assert isinstance(output, OpenSshConfig)
+ assert len(output.permit_root_login) == 2
+ assert output.permit_root_login[0].value == 'yes'
+ assert output.permit_root_login[0].in_match == ['address', '192.168.1.42']
+ assert output.permit_root_login[1].value == 'prohibit-password'
+ assert output.permit_root_login[1].in_match == ['all']
+ assert output.use_privilege_separation is None
+ assert output.ciphers is None
+ assert output.macs is None
+ assert output.protocol is None
+ assert output.subsystem_sftp is None
+
+
+def test_parse_config_include_complex(monkeypatch):
+ """ This already require some files to touch """
+
+ config_contents = {
+ '/etc/ssh/sshd_config': [
+ "Include /path/*.conf /other/path/*.conf \"/last/path with spaces/*.conf\" "
+ ],
+ '/path/my.conf': [
+ 'permitrootlogin prohibit-password'
+ ],
+ '/other/path/another.conf': [
+ 'ciphers aes128-ctr'
+ ],
+ '/last/path with spaces/filename with spaces.conf': [
+ 'subsystem sftp other-internal'
+ ]
+ }
+ glob_contents = {
+ '/path/*.conf': [
+ '/path/my.conf'
+ ],
+ '/other/path/*.conf': [
+ '/other/path/another.conf'
+ ],
+ '/last/path with spaces/*.conf': [
+ '/last/path with spaces/filename with spaces.conf'
+ ],
+ }
+
+ primary_config_path = '/etc/ssh/sshd_config'
+ primary_config_contents = config_contents[primary_config_path]
+
+ def glob_mocked(pattern):
+ return glob_contents[pattern]
+
+ def read_config_mocked(path):
+ return config_contents[path]
+
+ monkeypatch.setattr(glob, 'glob', glob_mocked)
+ monkeypatch.setattr(readopensshconfig, 'read_sshd_config', read_config_mocked)
+
+ output = parse_config(primary_config_contents)
+
+ assert isinstance(output, OpenSshConfig)
+ assert len(output.permit_root_login) == 1
+ assert output.permit_root_login[0].value == 'prohibit-password'
+ assert output.permit_root_login[0].in_match is None
+ assert output.use_privilege_separation is None
+ assert output.ciphers == "aes128-ctr"
+ assert output.protocol is None
+ assert output.subsystem_sftp == 'other-internal'
+
+
def test_produce_config():
output = []
--
2.42.0

View File

@ -42,7 +42,7 @@ py2_byte_compile "%1" "%2"}
Name: leapp-repository
Version: 0.20.0
Release: 4%{?dist}
Release: 5%{?dist}
Summary: Repositories for leapp
License: ASL 2.0
@ -106,6 +106,50 @@ Patch0047: 0047-fix-some-typos-spotted-by-codespell.patch
Patch0048: 0048-BZ-2283067-don-t-remove-Tomcat-during-Satellite-7to8.patch
Patch0049: 0049-Add-product-certs-and-target-for-9.5.patch
# CTC2
Patch0050: 0050-packit-Enable-8.10to9.5-tests.patch
Patch0051: 0051-dnf-plugin-data-sort-intput-lists.patch
Patch0052: 0052-rhui-setups-support-alibaba-cloud.patch
Patch0053: 0053-check_rhui-allow-minor-versions-in-the-RHUI-table.patch
Patch0054: 0054-rhui-google-add-RHEL7-ELS-setup-into-RHUI_SETUPS.patch
Patch0055: 0055-rhui-aws-arm-fix-incorrect-client-names.patch
Patch0056: 0056-rhui-azure-hardcore-client-repoids-changes-for-RHEL8.patch
Patch0057: 0057-fix-rhui-package-collection.patch
Patch0058: 0058-.packit.yaml-update-ENV-variables.patch
Patch0059: 0059-.packit.yaml-adjust-post_install_script-for-RHEL-7.9.patch
Patch0060: 0060-Additional-.packit.yaml-fixes.patch
Patch0061: 0061-Add-PR-review-changes.patch
Patch0062: 0062-rhui-gcp-add-SAP-RHEL-8.10-client-1253.patch
Patch0063: 0063-PR-welcome-msg-update-the-msg-to-cover-additional-Pa.patch
Patch0064: 0064-Add-RHEL-7-for-SAP-ELS-to-the-RHUI-config-1254.patch
Patch0065: 0065-Revert-Add-RHEL-7-for-SAP-ELS-to-the-RHUI-config-125.patch
Patch0066: 0066-codespell-Use-specific-version-instead-of-master.patch
Patch0067: 0067-Demote-Attempted-to-both-enable-and-disable-message-.patch
Patch0068: 0068-Don-t-enable-services-that-will-be-afterwards-disabl.patch
Patch0069: 0069-Use-frozen-branch-for-rhel7-downstream-testing-1263.patch
Patch0070: 0070-load-obsoleted-gpg-keys-from-gpg-signatures.json.patch
Patch0071: 0071-refactor-distributionsignedrpmscanner-to-use-common-.patch
Patch0072: 0072-IPU-9-10-Initial-preparation-upgrade-paths-and-leapp.patch
Patch0073: 0073-Packaging-Introduce-EL-9-builds-for-IPU-9-10.patch
Patch0074: 0074-Add-RHEL9-container-for-building-and-testing.patch
Patch0075: 0075-tests-update-pytest-requirements-to-Py3.6-compat.patch
Patch0076: 0076-IPU-9-10-Add-FAKE-RHEL-10-certs-and-GPG-keys.patch
Patch0077: 0077-Install-util-linux-into-the-target-container.patch
Patch0078: 0078-Fix-LEAPP_IPU_IN_PROGRESS-9to1-9to10.patch
Patch0079: 0079-Add-unit-tests-for-config.version.get_major_version.patch
Patch0080: 0080-Add-artificial-9-10-repomaping-data.patch
Patch0081: 0081-Update-PES-data.patch
Patch0082: 0082-IPU-9-10-Specify-default-PESIDS-for-el10.patch
Patch0083: 0083-Skip-directory-hash-files.patch
Patch0084: 0084-IPU-9-10-Migrate-rebuild-RPM-DB.patch
Patch0085: 0085-Define-empty-obsoleted-RPM-GPG-keys-for-RHEL-10.patch
Patch0086: 0086-Add-9to10-to-GH-unit-test-action.patch
Patch0087: 0087-Fix-or-TODO-some-version-specific-actions-in-actors.patch
Patch0088: 0088-Replace-deprecated-shutil.rmtree-onerror-kwarg.patch
Patch0089: 0089-UpgradeInitramfsGenerator-drop-distutils-dependency.patch
Patch0090: 0090-Fix-detection-when-a-bootable-partition-in-on-RAID.patch
Patch0091: 0091-GPG-check-do-not-raise-an-error-when-TargetUserSpace.patch
Patch0092: 0092-OpenSSHConfigScanner-Include-directive-is-supported-.patch
%description
%{summary}
@ -306,6 +350,49 @@ Requires: python3-gobject-base
%patch0047 -p1
%patch0048 -p1
%patch0049 -p1
%patch0050 -p1
%patch0051 -p1
%patch0052 -p1
%patch0053 -p1
%patch0054 -p1
%patch0055 -p1
%patch0056 -p1
%patch0057 -p1
%patch0058 -p1
%patch0059 -p1
%patch0060 -p1
%patch0061 -p1
%patch0062 -p1
%patch0063 -p1
%patch0064 -p1
%patch0065 -p1
%patch0066 -p1
%patch0067 -p1
%patch0068 -p1
%patch0069 -p1
%patch0070 -p1
%patch0071 -p1
%patch0072 -p1
%patch0073 -p1
%patch0074 -p1
%patch0075 -p1
%patch0076 -p1
%patch0077 -p1
%patch0078 -p1
%patch0079 -p1
%patch0080 -p1
%patch0081 -p1
%patch0082 -p1
%patch0083 -p1
%patch0084 -p1
%patch0085 -p1
%patch0086 -p1
%patch0087 -p1
%patch0088 -p1
%patch0089 -p1
%patch0090 -p1
%patch0091 -p1
%patch0092 -p1
%build
@ -383,6 +470,18 @@ done;
# no files here
%changelog
* Wed Jul 24 2024 Toshio Kuratomi <toshio@fedoraproject.org> - 0.20.0-5
- Improve set_systemd_services_states logging
- [IPU 7 -> 8] Fix detection of bootable device on RAID
- Fix detection of valid sshd config with internal-sftp subsystem in Leapp
- Handle a false positive GPG check error when TargetUserSpaceInfo is missing
- Fix failing "update-ca-trust" command caused by missing util-linux package
- Improve report when a system is unsupported
- Fix handling of versions in RHUI configuration for ELS and SAP upgrades
- Add missing RHUI GCP config info for RHEL for SAP
- Fix upgrade on aarch64 via RHUI on AWS
- Resolves: RHEL-33902, RHEL-38909, RHEL-30573, RHEL-43978, RHEL-39046, RHEL-39047, RHEL-39049
* Thu May 30 2024 Petr Stodulka <pstodulk@redhat.com> - 0.20.0-4
- Enable new upgrade path RHEL 8.10 -> 9.5
- Minor updates in reports