Rebase to new upstream 0.21.0
- Updated leapp data files. - Inhibit the upgrade to RHEL 9.5 on ARM architecture due to incompatibility between the RHEL 8 bootloader and RHEL 9.5 kernel. - Introduce experimental upgrades in 'live' mode for the testing. - Resolves: RHEL-27847, RHEL-52993, RHEL-45280, RHEL-49748, RHEL-52186
This commit is contained in:
parent
d9029cec24
commit
1827cee327
5
.gitignore
vendored
5
.gitignore
vendored
@ -1,5 +1,2 @@
|
||||
SOURCES/deps-pkgs-9.tar.gz
|
||||
SOURCES/leapp-repository-0.18.0.tar.gz
|
||||
/deps-pkgs-9.tar.gz
|
||||
/deps-pkgs-10.tar.gz
|
||||
/leapp-repository-0.20.0.tar.gz
|
||||
/leapp-repository-0.21.0.tar.gz
|
||||
|
@ -1,251 +0,0 @@
|
||||
From 921c06892f7550a3a8e2b3fe941c6272bdacf88d Mon Sep 17 00:00:00 2001
|
||||
From: mhecko <mhecko@redhat.com>
|
||||
Date: Thu, 15 Feb 2024 09:56:27 +0100
|
||||
Subject: [PATCH 01/34] rhui: do not bootstrap target client on aws
|
||||
|
||||
Bootstrapping target RHUI client now requires installing the entire
|
||||
RHEL8 RPM stack. Threfore, do not try installing target client
|
||||
and instead rely only on the files from our leapp-rhui-aws package.
|
||||
---
|
||||
.../cloud/checkrhui/libraries/checkrhui.py | 6 +-
|
||||
.../libraries/userspacegen.py | 104 ++++++++++++++----
|
||||
.../system_upgrade/common/models/rhuiinfo.py | 7 ++
|
||||
3 files changed, 92 insertions(+), 25 deletions(-)
|
||||
|
||||
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 84ab40e3..e1c158c7 100644
|
||||
--- a/repos/system_upgrade/common/actors/cloud/checkrhui/libraries/checkrhui.py
|
||||
+++ b/repos/system_upgrade/common/actors/cloud/checkrhui/libraries/checkrhui.py
|
||||
@@ -142,7 +142,11 @@ def customize_rhui_setup_for_aws(rhui_family, setup_info):
|
||||
|
||||
target_version = version.get_target_major_version()
|
||||
if target_version == '8':
|
||||
- return # The rhel8 plugin is packed into leapp-rhui-aws as we need python2 compatible client
|
||||
+ # RHEL8 rh-amazon-rhui-client depends on amazon-libdnf-plugin that depends
|
||||
+ # essentially on the entire RHEL8 RPM stack, so we cannot just swap the clients
|
||||
+ # The leapp-rhui-aws will provide all necessary files to access entire RHEL8 content
|
||||
+ setup_info.bootstrap_target_client = False
|
||||
+ return
|
||||
|
||||
amazon_plugin_copy_task = CopyFile(src='/usr/lib/python3.9/site-packages/dnf-plugins/amazon-id.py',
|
||||
dst='/usr/lib/python3.6/site-packages/dnf-plugins/')
|
||||
diff --git a/repos/system_upgrade/common/actors/targetuserspacecreator/libraries/userspacegen.py b/repos/system_upgrade/common/actors/targetuserspacecreator/libraries/userspacegen.py
|
||||
index d917bfd5..d60bc75f 100644
|
||||
--- a/repos/system_upgrade/common/actors/targetuserspacecreator/libraries/userspacegen.py
|
||||
+++ b/repos/system_upgrade/common/actors/targetuserspacecreator/libraries/userspacegen.py
|
||||
@@ -853,9 +853,9 @@ def _get_rhui_available_repoids(context, cloud_repo):
|
||||
return set(repoids)
|
||||
|
||||
|
||||
-def get_copy_location_from_copy_in_task(context, copy_task):
|
||||
+def get_copy_location_from_copy_in_task(context_basepath, copy_task):
|
||||
basename = os.path.basename(copy_task.src)
|
||||
- dest_in_container = context.full_path(copy_task.dst)
|
||||
+ dest_in_container = os.path.join(context_basepath, copy_task.dst)
|
||||
if os.path.isdir(dest_in_container):
|
||||
return os.path.join(copy_task.dst, basename)
|
||||
return copy_task.dst
|
||||
@@ -871,7 +871,10 @@ def _get_rh_available_repoids(context, indata):
|
||||
|
||||
# If we are upgrading a RHUI system, check what repositories are provided by the (already installed) target clients
|
||||
if indata and indata.rhui_info:
|
||||
- files_provided_by_clients = _query_rpm_for_pkg_files(context, indata.rhui_info.target_client_pkg_names)
|
||||
+ setup_info = indata.rhui_info.target_client_setup_info
|
||||
+ target_content_access_files = set()
|
||||
+ if setup_info.bootstrap_target_client:
|
||||
+ target_content_access_files = _query_rpm_for_pkg_files(context, indata.rhui_info.target_client_pkg_names)
|
||||
|
||||
def is_repofile(path):
|
||||
return os.path.dirname(path) == '/etc/yum.repos.d' and os.path.basename(path).endswith('.repo')
|
||||
@@ -884,24 +887,33 @@ def _get_rh_available_repoids(context, indata):
|
||||
|
||||
yum_repos_d = context.full_path('/etc/yum.repos.d')
|
||||
all_repofiles = {os.path.join(yum_repos_d, path) for path in os.listdir(yum_repos_d) if path.endswith('.repo')}
|
||||
- client_repofiles = {context.full_path(path) for path in files_provided_by_clients if is_repofile(path)}
|
||||
+ api.current_logger().debug('(RHUI Setup) All available repofiles: {0}'.format(' '.join(all_repofiles)))
|
||||
+
|
||||
+ target_access_repofiles = {
|
||||
+ context.full_path(path) for path in target_content_access_files if is_repofile(path)
|
||||
+ }
|
||||
|
||||
# Exclude repofiles used to setup the target rhui access as on some platforms the repos provided by
|
||||
# the client are not sufficient to install the client into target userspace (GCP)
|
||||
rhui_setup_repofile_tasks = [task for task in setup_tasks if task.src.endswith('repo')]
|
||||
rhui_setup_repofiles = (
|
||||
- get_copy_location_from_copy_in_task(context, copy_task) for copy_task in rhui_setup_repofile_tasks
|
||||
+ get_copy_location_from_copy_in_task(context.base_dir, copy) for copy in rhui_setup_repofile_tasks
|
||||
)
|
||||
rhui_setup_repofiles = {context.full_path(repofile) for repofile in rhui_setup_repofiles}
|
||||
|
||||
- foreign_repofiles = all_repofiles - client_repofiles - rhui_setup_repofiles
|
||||
+ foreign_repofiles = all_repofiles - target_access_repofiles - rhui_setup_repofiles
|
||||
+
|
||||
+ api.current_logger().debug(
|
||||
+ 'The following repofiles are considered as unknown to'
|
||||
+ ' the target RHUI content setup and will be ignored: {0}'.format(' '.join(foreign_repofiles))
|
||||
+ )
|
||||
|
||||
# Rename non-client repofiles so they will not be recognized when running dnf repolist
|
||||
for foreign_repofile in foreign_repofiles:
|
||||
os.rename(foreign_repofile, '{0}.back'.format(foreign_repofile))
|
||||
|
||||
try:
|
||||
- dnf_cmd = ['dnf', 'repolist', '--releasever', target_ver, '-v']
|
||||
+ dnf_cmd = ['dnf', 'repolist', '--releasever', target_ver, '-v', '--enablerepo', '*']
|
||||
repolist_result = context.call(dnf_cmd)['stdout']
|
||||
repoid_lines = [line for line in repolist_result.split('\n') if line.startswith('Repo-id')]
|
||||
rhui_repoids = {extract_repoid_from_line(line) for line in repoid_lines}
|
||||
@@ -919,6 +931,9 @@ def _get_rh_available_repoids(context, indata):
|
||||
for foreign_repofile in foreign_repofiles:
|
||||
os.rename('{0}.back'.format(foreign_repofile), foreign_repofile)
|
||||
|
||||
+ api.current_logger().debug(
|
||||
+ 'The following repofiles are considered as provided by RedHat: {0}'.format(' '.join(rh_repoids))
|
||||
+ )
|
||||
return rh_repoids
|
||||
|
||||
|
||||
@@ -1086,7 +1101,7 @@ def _get_target_userspace():
|
||||
return constants.TARGET_USERSPACE.format(get_target_major_version())
|
||||
|
||||
|
||||
-def _create_target_userspace(context, packages, files, target_repoids):
|
||||
+def _create_target_userspace(context, indata, packages, files, target_repoids):
|
||||
"""Create the target userspace."""
|
||||
target_path = _get_target_userspace()
|
||||
prepare_target_userspace(context, target_path, target_repoids, list(packages))
|
||||
@@ -1096,12 +1111,57 @@ def _create_target_userspace(context, packages, files, target_repoids):
|
||||
_copy_files(target_context, files)
|
||||
dnfplugin.install(_get_target_userspace())
|
||||
|
||||
+ # If we used only repofiles from leapp-rhui-<provider> then remove these as they provide
|
||||
+ # duplicit definitions as the target clients already installed in the target container
|
||||
+ if indata.rhui_info:
|
||||
+ api.current_logger().debug(
|
||||
+ 'Target container should have access to content. '
|
||||
+ 'Removing repofiles from leapp-rhui-<provider> from the target..'
|
||||
+ )
|
||||
+ setup_info = indata.rhui_info.target_client_setup_info
|
||||
+ if not setup_info.bootstrap_target_client:
|
||||
+ target_userspace_path = _get_target_userspace()
|
||||
+ for copy in setup_info.preinstall_tasks.files_to_copy_into_overlay:
|
||||
+ dst_in_container = get_copy_location_from_copy_in_task(target_userspace_path, copy)
|
||||
+ dst_in_container = dst_in_container.strip('/')
|
||||
+ dst_in_host = os.path.join(target_userspace_path, dst_in_container)
|
||||
+ if os.path.isfile(dst_in_host) and dst_in_host.endswith('.repo'):
|
||||
+ api.current_logger().debug('Removing repofile: {0}'.format(dst_in_host))
|
||||
+ os.remove(dst_in_host)
|
||||
+
|
||||
# and do not forget to set the rhsm into the container mode again
|
||||
with mounting.NspawnActions(_get_target_userspace()) as target_context:
|
||||
rhsm.set_container_mode(target_context)
|
||||
|
||||
|
||||
-def install_target_rhui_client_if_needed(context, indata):
|
||||
+def _apply_rhui_access_preinstall_tasks(context, rhui_setup_info):
|
||||
+ if rhui_setup_info.preinstall_tasks:
|
||||
+ api.current_logger().debug('Applying RHUI preinstall tasks.')
|
||||
+ preinstall_tasks = rhui_setup_info.preinstall_tasks
|
||||
+
|
||||
+ for file_to_remove in preinstall_tasks.files_to_remove:
|
||||
+ api.current_logger().debug('Removing {0} from the scratch container.'.format(file_to_remove))
|
||||
+ context.remove(file_to_remove)
|
||||
+
|
||||
+ for copy_info in preinstall_tasks.files_to_copy_into_overlay:
|
||||
+ api.current_logger().debug(
|
||||
+ 'Copying {0} in {1} into the scratch container.'.format(copy_info.src, copy_info.dst)
|
||||
+ )
|
||||
+ context.makedirs(os.path.dirname(copy_info.dst), exists_ok=True)
|
||||
+ context.copy_to(copy_info.src, copy_info.dst)
|
||||
+
|
||||
+
|
||||
+def _apply_rhui_access_postinstall_tasks(context, rhui_setup_info):
|
||||
+ if rhui_setup_info.postinstall_tasks:
|
||||
+ api.current_logger().debug('Applying RHUI postinstall tasks.')
|
||||
+ for copy_info in rhui_setup_info.postinstall_tasks.files_to_copy:
|
||||
+ context.makedirs(os.path.dirname(copy_info.dst), exists_ok=True)
|
||||
+ debug_msg = 'Copying {0} to {1} (inside the scratch container).'
|
||||
+ api.current_logger().debug(debug_msg.format(copy_info.src, copy_info.dst))
|
||||
+ context.call(['cp', copy_info.src, copy_info.dst])
|
||||
+
|
||||
+
|
||||
+def setup_target_rhui_access_if_needed(context, indata):
|
||||
if not indata.rhui_info:
|
||||
return
|
||||
|
||||
@@ -1110,15 +1170,14 @@ def install_target_rhui_client_if_needed(context, indata):
|
||||
_create_target_userspace_directories(userspace_dir)
|
||||
|
||||
setup_info = indata.rhui_info.target_client_setup_info
|
||||
- if setup_info.preinstall_tasks:
|
||||
- preinstall_tasks = setup_info.preinstall_tasks
|
||||
+ _apply_rhui_access_preinstall_tasks(context, setup_info)
|
||||
|
||||
- for file_to_remove in preinstall_tasks.files_to_remove:
|
||||
- context.remove(file_to_remove)
|
||||
-
|
||||
- for copy_info in preinstall_tasks.files_to_copy_into_overlay:
|
||||
- context.makedirs(os.path.dirname(copy_info.dst), exists_ok=True)
|
||||
- context.copy_to(copy_info.src, copy_info.dst)
|
||||
+ if not setup_info.bootstrap_target_client:
|
||||
+ # Installation of the target RHUI client is not possible and we bundle all necessary
|
||||
+ # files into the leapp-rhui-<provider> packages.
|
||||
+ api.current_logger().debug('Bootstrapping target RHUI client is disabled, leapp will rely '
|
||||
+ 'only on files budled in leapp-rhui-<provider> package.')
|
||||
+ return
|
||||
|
||||
cmd = ['dnf', '-y']
|
||||
|
||||
@@ -1149,16 +1208,13 @@ def install_target_rhui_client_if_needed(context, indata):
|
||||
|
||||
context.call(cmd, callback_raw=utils.logging_handler, stdin='\n'.join(dnf_transaction_steps))
|
||||
|
||||
- if setup_info.postinstall_tasks:
|
||||
- for copy_info in setup_info.postinstall_tasks.files_to_copy:
|
||||
- context.makedirs(os.path.dirname(copy_info.dst), exists_ok=True)
|
||||
- context.call(['cp', copy_info.src, copy_info.dst])
|
||||
+ _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)
|
||||
|
||||
for copy_task in setup_info.preinstall_tasks.files_to_copy_into_overlay:
|
||||
- dest = get_copy_location_from_copy_in_task(context, copy_task)
|
||||
+ dest = get_copy_location_from_copy_in_task(context.base_dir, copy_task)
|
||||
can_be_cleaned_up = copy_task.src not in setup_info.files_supporting_client_operation
|
||||
if dest not in files_owned_by_clients and can_be_cleaned_up:
|
||||
context.remove(dest)
|
||||
@@ -1184,10 +1240,10 @@ def perform():
|
||||
target_iso = next(api.consume(TargetOSInstallationImage), None)
|
||||
with mounting.mount_upgrade_iso_to_root_dir(overlay.target, target_iso):
|
||||
|
||||
- install_target_rhui_client_if_needed(context, indata)
|
||||
+ setup_target_rhui_access_if_needed(context, indata)
|
||||
|
||||
target_repoids = _gather_target_repositories(context, indata, prod_cert_path)
|
||||
- _create_target_userspace(context, indata.packages, indata.files, target_repoids)
|
||||
+ _create_target_userspace(context, indata, indata.packages, indata.files, target_repoids)
|
||||
# TODO: this is tmp solution as proper one needs significant refactoring
|
||||
target_repo_facts = repofileutils.get_parsed_repofiles(context)
|
||||
api.produce(TMPTargetRepositoriesFacts(repositories=target_repo_facts))
|
||||
diff --git a/repos/system_upgrade/common/models/rhuiinfo.py b/repos/system_upgrade/common/models/rhuiinfo.py
|
||||
index 3eaa4826..0a2e45af 100644
|
||||
--- a/repos/system_upgrade/common/models/rhuiinfo.py
|
||||
+++ b/repos/system_upgrade/common/models/rhuiinfo.py
|
||||
@@ -36,6 +36,13 @@ class TargetRHUISetupInfo(Model):
|
||||
files_supporting_client_operation = fields.List(fields.String(), default=[])
|
||||
"""A subset of files copied in preinstall tasks that should not be cleaned up."""
|
||||
|
||||
+ bootstrap_target_client = fields.Boolean(default=True)
|
||||
+ """
|
||||
+ Swap the current RHUI client for the target one to facilitate access to the target content.
|
||||
+
|
||||
+ When False, only files from the leapp-rhui-<provider> will be used to access target content.
|
||||
+ """
|
||||
+
|
||||
|
||||
class RHUIInfo(Model):
|
||||
"""
|
||||
--
|
||||
2.42.0
|
||||
|
@ -1,830 +0,0 @@
|
||||
From b875ae256cc61336c76ea83f5e40eb7895cab0fc Mon Sep 17 00:00:00 2001
|
||||
From: Petr Stodulka <pstodulk@redhat.com>
|
||||
Date: Fri, 9 Feb 2024 13:00:16 +0100
|
||||
Subject: [PATCH 02/34] Packit: Drop tests for obsoleted upgrade paths +
|
||||
restructuralization
|
||||
|
||||
Dropping upgrade paths related to following releases: 8.6, 8.9, 9.0,
|
||||
9.3. See the previous commit for more info.
|
||||
|
||||
During the drop of these release, I've realized the current structure
|
||||
of tests is not suitable for such operations as current test/job
|
||||
definitions has been chained. So e.g. tests for 8.10 -> 9.4 depended
|
||||
on 8.9 -> 9.3, which depended on 8.8 -> 8.6, etc... Even going deeper,
|
||||
IPU 8->9 definitions have been based on 7 -> 8 definitions.
|
||||
|
||||
So I updated the structure, separating tests for IPU 7 -> 8 and 8 -> 9
|
||||
and also deps between all upgrade paths. Now, particular tests
|
||||
can inherit one of *abstract* jobs definitions, so dropping or removing
|
||||
tests for an upgrade path does not affect other tests.
|
||||
|
||||
Also fixed some incorrect definitions in tests, like a fixed label
|
||||
for `beaker-minimal-88to92` (orig "8.6to9.2").
|
||||
|
||||
Update welcome-PR bot msg to reflect changes in upgrade paths.
|
||||
|
||||
Jira: OAMG-10451
|
||||
---
|
||||
.github/workflows/pr-welcome-msg.yml | 11 +-
|
||||
.packit.yaml | 530 ++++++++++-----------------
|
||||
2 files changed, 191 insertions(+), 350 deletions(-)
|
||||
|
||||
diff --git a/.github/workflows/pr-welcome-msg.yml b/.github/workflows/pr-welcome-msg.yml
|
||||
index e791340e..e23c9bbb 100644
|
||||
--- a/.github/workflows/pr-welcome-msg.yml
|
||||
+++ b/.github/workflows/pr-welcome-msg.yml
|
||||
@@ -24,18 +24,15 @@ jobs:
|
||||
- **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 from PR#42, use `/packit test oamg/leapp#42`
|
||||
+ 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.
|
||||
|
||||
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.9to9.3,kernel-rt-8.9to9.3** to schedule `kernel-rt` and `beaker-minimal` test sets for 8.9->9.3 upgrade path
|
||||
+ - **/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
|
||||
|
||||
- [Deprecated] To launch on-demand regression testing public members of oamg organization can leave the following comment:
|
||||
- - **/rerun** to schedule basic regression tests using this pr build and latest upstream leapp build as artifacts
|
||||
- - **/rerun 42** to schedule basic regression tests using this pr build and leapp\*PR42\* as artifacts
|
||||
- - **/rerun-sst** to schedule sst tests using this pr build and latest upstream leapp build as artifacts
|
||||
- - **/rerun-sst 42** to schedule sst tests using this pr build and leapp\*PR42\* as artifacts
|
||||
+ See other labels for particular jobs defined in the `.packit.yaml` file.
|
||||
|
||||
Please [open ticket](https://url.corp.redhat.com/oamg-ci-issue) in case you experience technical problem with the CI. (RH internal only)
|
||||
|
||||
diff --git a/.packit.yaml b/.packit.yaml
|
||||
index 491b1450..bce97bad 100644
|
||||
--- a/.packit.yaml
|
||||
+++ b/.packit.yaml
|
||||
@@ -85,18 +85,31 @@ jobs:
|
||||
# builds from master branch should start with 100 release, to have high priority
|
||||
- bash -c "sed -i \"s/1%{?dist}/100%{?dist}/g\" packaging/leapp-repository.spec"
|
||||
|
||||
-- &sanity-79to86
|
||||
+
|
||||
+# 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
|
||||
+# Available only to RH Employees.
|
||||
+
|
||||
+# ###################################################################### #
|
||||
+# ############################### 7 TO 8 ############################### #
|
||||
+# ###################################################################### #
|
||||
+
|
||||
+# ###################################################################### #
|
||||
+# ### Abstract job definitions to make individual tests/jobs smaller ### #
|
||||
+# ###################################################################### #
|
||||
+- &sanity-abstract-7to8
|
||||
job: tests
|
||||
+ trigger: ignore
|
||||
fmf_url: "https://gitlab.cee.redhat.com/oamg/leapp-tests"
|
||||
fmf_ref: "main"
|
||||
use_internal_tf: True
|
||||
- trigger: pull_request
|
||||
labels:
|
||||
- sanity
|
||||
targets:
|
||||
epel-7-x86_64:
|
||||
distros: [RHEL-7.9-ZStream]
|
||||
- identifier: sanity-7.9to8.6
|
||||
+ identifier: sanity-abstract-7to8
|
||||
tmt_plan: ""
|
||||
tf_extra_params:
|
||||
test:
|
||||
@@ -110,20 +123,16 @@ jobs:
|
||||
provisioning:
|
||||
tags:
|
||||
BusinessUnit: sst_upgrades@leapp_upstream_test
|
||||
- env:
|
||||
- SOURCE_RELEASE: "7.9"
|
||||
- TARGET_RELEASE: "8.6"
|
||||
- LEAPPDATA_BRANCH: "upstream"
|
||||
|
||||
-- &sanity-79to86-aws
|
||||
- <<: *sanity-79to86
|
||||
+- &sanity-abstract-7to8-aws
|
||||
+ <<: *sanity-abstract-7to8
|
||||
labels:
|
||||
- sanity
|
||||
- aws
|
||||
targets:
|
||||
epel-7-x86_64:
|
||||
distros: [RHEL-7.9-rhui]
|
||||
- identifier: sanity-7.9to8.6-aws
|
||||
+ 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:
|
||||
@@ -139,57 +148,14 @@ jobs:
|
||||
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"
|
||||
tags:
|
||||
BusinessUnit: sst_upgrades@leapp_upstream_test
|
||||
- env:
|
||||
- SOURCE_RELEASE: "7.9"
|
||||
- TARGET_RELEASE: "8.6"
|
||||
- RHUI: "aws"
|
||||
- LEAPPDATA_BRANCH: "upstream"
|
||||
- LEAPP_NO_RHSM: "1"
|
||||
- USE_CUSTOM_REPOS: rhui
|
||||
-
|
||||
-- &sanity-79to88-aws
|
||||
- <<: *sanity-79to86-aws
|
||||
- identifier: sanity-7.9to8.8-aws
|
||||
- env:
|
||||
- SOURCE_RELEASE: "7.9"
|
||||
- TARGET_RELEASE: "8.8"
|
||||
- RHUI: "aws"
|
||||
- LEAPPDATA_BRANCH: "upstream"
|
||||
- LEAPP_NO_RHSM: "1"
|
||||
- USE_CUSTOM_REPOS: rhui
|
||||
-
|
||||
-- &sanity-79to89-aws
|
||||
- <<: *sanity-79to86-aws
|
||||
- identifier: sanity-7.9to8.9-aws
|
||||
- env:
|
||||
- SOURCE_RELEASE: "7.9"
|
||||
- TARGET_RELEASE: "8.9"
|
||||
- RHUI: "aws"
|
||||
- LEAPPDATA_BRANCH: "upstream"
|
||||
- LEAPP_NO_RHSM: "1"
|
||||
- USE_CUSTOM_REPOS: rhui
|
||||
-
|
||||
-# NOTE(mkluson) RHEL 8.10 content is not publicly available (via RHUI)
|
||||
-#- &sanity-79to810-aws
|
||||
-# <<: *sanity-79to86-aws
|
||||
-# 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
|
||||
|
||||
# On-demand minimal beaker tests
|
||||
-- &beaker-minimal-79to86
|
||||
- <<: *sanity-79to86
|
||||
+- &beaker-minimal-7to8-abstract-ondemand
|
||||
+ <<: *sanity-abstract-7to8
|
||||
manual_trigger: True
|
||||
labels:
|
||||
- beaker-minimal
|
||||
- - beaker-minimal-7.9to8.6
|
||||
- - 7.9to8.6
|
||||
- identifier: sanity-7.9to8.6-beaker-minimal
|
||||
+ identifier: beaker-minimal-7to8-abstract-ondemand
|
||||
tf_extra_params:
|
||||
test:
|
||||
tmt:
|
||||
@@ -204,13 +170,11 @@ jobs:
|
||||
BusinessUnit: sst_upgrades@leapp_upstream_test
|
||||
|
||||
# On-demand kernel-rt tests
|
||||
-- &kernel-rt-79to86
|
||||
- <<: *beaker-minimal-79to86
|
||||
+- &kernel-rt-abstract-7to8-ondemand
|
||||
+ <<: *beaker-minimal-7to8-abstract-ondemand
|
||||
labels:
|
||||
- kernel-rt
|
||||
- - kernel-rt-7.9to8.6
|
||||
- - 7.9to8.6
|
||||
- identifier: sanity-7.9to8.6-kernel-rt
|
||||
+ identifier: sanity-7to8-kernel-rt-abstract-ondemand
|
||||
tf_extra_params:
|
||||
test:
|
||||
tmt:
|
||||
@@ -224,114 +188,133 @@ jobs:
|
||||
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"
|
||||
+ RHUI: "aws"
|
||||
+ LEAPPDATA_BRANCH: "upstream"
|
||||
+ LEAPP_NO_RHSM: "1"
|
||||
+ USE_CUSTOM_REPOS: rhui
|
||||
+
|
||||
- &sanity-79to88
|
||||
- <<: *sanity-79to86
|
||||
+ <<: *sanity-abstract-7to8
|
||||
+ trigger: pull_request
|
||||
identifier: sanity-7.9to8.8
|
||||
env:
|
||||
SOURCE_RELEASE: "7.9"
|
||||
TARGET_RELEASE: "8.8"
|
||||
LEAPPDATA_BRANCH: "upstream"
|
||||
|
||||
-# On-demand minimal beaker tests
|
||||
- &beaker-minimal-79to88
|
||||
- <<: *beaker-minimal-79to86
|
||||
+ <<: *beaker-minimal-7to8-abstract-ondemand
|
||||
+ trigger: pull_request
|
||||
labels:
|
||||
- beaker-minimal
|
||||
- beaker-minimal-7.9to8.8
|
||||
- 7.9to8.8
|
||||
- identifier: sanity-7.9to8.8-beaker-minimal
|
||||
+ identifier: sanity-7.9to8.8-beaker-minimal-ondemand
|
||||
env:
|
||||
SOURCE_RELEASE: "7.9"
|
||||
TARGET_RELEASE: "8.8"
|
||||
LEAPPDATA_BRANCH: "upstream"
|
||||
|
||||
-# On-demand kernel-rt tests
|
||||
- &kernel-rt-79to88
|
||||
- <<: *kernel-rt-79to86
|
||||
+ <<: *kernel-rt-abstract-7to8-ondemand
|
||||
+ trigger: pull_request
|
||||
labels:
|
||||
- kernel-rt
|
||||
- kernel-rt-7.9to8.8
|
||||
- 7.9to8.8
|
||||
- identifier: sanity-7.9to8.8-kernel-rt
|
||||
+ identifier: sanity-7.9to8.8-kernel-rt-ondemand
|
||||
env:
|
||||
SOURCE_RELEASE: "7.9"
|
||||
TARGET_RELEASE: "8.8"
|
||||
LEAPPDATA_BRANCH: "upstream"
|
||||
|
||||
-- &sanity-79to89
|
||||
- <<: *sanity-79to86
|
||||
- identifier: sanity-7.9to8.9
|
||||
- env:
|
||||
- SOURCE_RELEASE: "7.9"
|
||||
- TARGET_RELEASE: "8.9"
|
||||
- LEAPPDATA_BRANCH: "upstream"
|
||||
-
|
||||
-# On-demand minimal beaker tests
|
||||
-- &beaker-minimal-79to89
|
||||
- <<: *beaker-minimal-79to86
|
||||
- labels:
|
||||
- - beaker-minimal
|
||||
- - beaker-minimal-7.9to8.9
|
||||
- - 7.9to8.9
|
||||
- identifier: sanity-7.9to8.9-beaker-minimal
|
||||
- env:
|
||||
- SOURCE_RELEASE: "7.9"
|
||||
- TARGET_RELEASE: "8.9"
|
||||
- LEAPPDATA_BRANCH: "upstream"
|
||||
-
|
||||
-# On-demand kernel-rt tests
|
||||
-- &kernel-rt-79to89
|
||||
- <<: *kernel-rt-79to88
|
||||
- labels:
|
||||
- - kernel-rt
|
||||
- - kernel-rt-7.9to8.9
|
||||
- - 7.9to8.9
|
||||
- identifier: sanity-7.9to8.9-kernel-rt
|
||||
- env:
|
||||
- SOURCE_RELEASE: "7.9"
|
||||
- TARGET_RELEASE: "8.9"
|
||||
- LEAPPDATA_BRANCH: "upstream"
|
||||
-
|
||||
+# Tests: 7.9 -> 8.10
|
||||
- &sanity-79to810
|
||||
- <<: *sanity-79to86
|
||||
+ <<: *sanity-abstract-7to8
|
||||
+ trigger: pull_request
|
||||
identifier: sanity-7.9to8.10
|
||||
env:
|
||||
SOURCE_RELEASE: "7.9"
|
||||
TARGET_RELEASE: "8.10"
|
||||
LEAPPDATA_BRANCH: "upstream"
|
||||
|
||||
-# On-demand minimal beaker tests
|
||||
+# 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
|
||||
+
|
||||
- &beaker-minimal-79to810
|
||||
- <<: *beaker-minimal-79to86
|
||||
+ <<: *beaker-minimal-7to8-abstract-ondemand
|
||||
+ trigger: pull_request
|
||||
labels:
|
||||
- beaker-minimal
|
||||
- beaker-minimal-7.9to8.10
|
||||
- 7.9to8.10
|
||||
- identifier: sanity-7.9to8.10-beaker-minimal
|
||||
+ identifier: sanity-7.9to8.10-beaker-minimal-ondemand
|
||||
env:
|
||||
SOURCE_RELEASE: "7.9"
|
||||
TARGET_RELEASE: "8.10"
|
||||
LEAPPDATA_BRANCH: "upstream"
|
||||
|
||||
-# On-demand kernel-rt tests
|
||||
- &kernel-rt-79to810
|
||||
- <<: *kernel-rt-79to88
|
||||
+ <<: *kernel-rt-abstract-7to8-ondemand
|
||||
+ trigger: pull_request
|
||||
labels:
|
||||
- kernel-rt
|
||||
- kernel-rt-7.9to8.10
|
||||
- 7.9to8.10
|
||||
- identifier: sanity-7.9to8.10-kernel-rt
|
||||
+ identifier: sanity-7.9to8.10-kernel-rt-ondemand
|
||||
env:
|
||||
SOURCE_RELEASE: "7.9"
|
||||
TARGET_RELEASE: "8.10"
|
||||
LEAPPDATA_BRANCH: "upstream"
|
||||
|
||||
-- &sanity-86to90
|
||||
- <<: *sanity-79to86
|
||||
+
|
||||
+# ###################################################################### #
|
||||
+# ############################## 8 TO 10 ############################### #
|
||||
+# ###################################################################### #
|
||||
+
|
||||
+# ###################################################################### #
|
||||
+# ### Abstract job definitions to make individual tests/jobs smaller ### #
|
||||
+# ###################################################################### #
|
||||
+
|
||||
+#NOTE(pstodulk) putting default values in abstract jobs as from 8.10, as this
|
||||
+# is the last RHEL 8 release and all new future tests will start from this
|
||||
+# one release.
|
||||
+
|
||||
+- &sanity-abstract-8to9
|
||||
+ job: tests
|
||||
+ trigger: ignore
|
||||
+ fmf_url: "https://gitlab.cee.redhat.com/oamg/leapp-tests"
|
||||
+ fmf_ref: "main"
|
||||
+ use_internal_tf: True
|
||||
+ labels:
|
||||
+ - sanity
|
||||
targets:
|
||||
epel-8-x86_64:
|
||||
- distros: [RHEL-8.6.0-Nightly]
|
||||
- identifier: sanity-8.6to9.0
|
||||
+ distros: [RHEL-8.10.0-Nightly]
|
||||
+ identifier: sanity-abstract-8to9
|
||||
tf_extra_params:
|
||||
test:
|
||||
tmt:
|
||||
@@ -339,28 +322,44 @@ jobs:
|
||||
environments:
|
||||
- tmt:
|
||||
context:
|
||||
- distro: "rhel-8.6"
|
||||
+ distro: "rhel-8.10"
|
||||
settings:
|
||||
provisioning:
|
||||
tags:
|
||||
BusinessUnit: sst_upgrades@leapp_upstream_test
|
||||
- env:
|
||||
- SOURCE_RELEASE: "8.6"
|
||||
- TARGET_RELEASE: "9.0"
|
||||
- RHSM_REPOS_EUS: "eus"
|
||||
- LEAPPDATA_BRANCH: "upstream"
|
||||
|
||||
-# On-demand minimal beaker tests
|
||||
-- &beaker-minimal-86to90
|
||||
- <<: *beaker-minimal-79to86
|
||||
+- &sanity-abstract-8to9-aws
|
||||
+ <<: *sanity-abstract-8to9
|
||||
+ labels:
|
||||
+ - sanity
|
||||
+ - aws
|
||||
+ targets:
|
||||
+ 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
|
||||
+ manual_trigger: True
|
||||
labels:
|
||||
- beaker-minimal
|
||||
- - beaker-minimal-8.6to9.0
|
||||
- - 8.6to9.0
|
||||
targets:
|
||||
epel-8-x86_64:
|
||||
- distros: [RHEL-8.6.0-Nightly]
|
||||
- identifier: sanity-8.6to9.0-beaker-minimal
|
||||
+ distros: [RHEL-8.10.0-Nightly]
|
||||
+ identifier: beaker-minimal-8to9-abstract-ondemand
|
||||
tf_extra_params:
|
||||
test:
|
||||
tmt:
|
||||
@@ -368,25 +367,17 @@ jobs:
|
||||
environments:
|
||||
- tmt:
|
||||
context:
|
||||
- distro: "rhel-8.6"
|
||||
+ distro: "rhel-8.10"
|
||||
settings:
|
||||
provisioning:
|
||||
tags:
|
||||
BusinessUnit: sst_upgrades@leapp_upstream_test
|
||||
- env:
|
||||
- SOURCE_RELEASE: "8.6"
|
||||
- TARGET_RELEASE: "9.0"
|
||||
- RHSM_REPOS_EUS: "eus"
|
||||
- LEAPPDATA_BRANCH: "upstream"
|
||||
|
||||
-# On-demand kernel-rt tests
|
||||
-- &kernel-rt-86to90
|
||||
- <<: *beaker-minimal-86to90
|
||||
+- &kernel-rt-abstract-8to9-ondemand
|
||||
+ <<: *beaker-minimal-8to9-abstract-ondemand
|
||||
labels:
|
||||
- kernel-rt
|
||||
- - kernel-rt-8.6to9.0
|
||||
- - 8.6to9.0
|
||||
- identifier: sanity-8.6to9.0-kernel-rt
|
||||
+ identifier: sanity-8to9-kernel-rt-abstract-ondemand
|
||||
tf_extra_params:
|
||||
test:
|
||||
tmt:
|
||||
@@ -394,14 +385,21 @@ jobs:
|
||||
environments:
|
||||
- tmt:
|
||||
context:
|
||||
- distro: "rhel-8.6"
|
||||
+ distro: "rhel-8.10"
|
||||
settings:
|
||||
provisioning:
|
||||
tags:
|
||||
BusinessUnit: sst_upgrades@leapp_upstream_test
|
||||
|
||||
+
|
||||
+# ###################################################################### #
|
||||
+# ######################### Individual tests ########################### #
|
||||
+# ###################################################################### #
|
||||
+
|
||||
+# Tests: 8.8 -> 9.2
|
||||
- &sanity-88to92
|
||||
- <<: *sanity-86to90
|
||||
+ <<: *sanity-abstract-8to9
|
||||
+ trigger: pull_request
|
||||
targets:
|
||||
epel-8-x86_64:
|
||||
distros: [RHEL-8.8.0-Nightly]
|
||||
@@ -425,21 +423,18 @@ jobs:
|
||||
LEAPPDATA_BRANCH: "upstream"
|
||||
LEAPP_DEVEL_TARGET_RELEASE: "9.2"
|
||||
|
||||
-# On-demand minimal beaker tests
|
||||
-- &beaker-minimal-88to92
|
||||
- <<: *beaker-minimal-86to90
|
||||
- labels:
|
||||
- - beaker-minimal
|
||||
- - beaker-minimal-8.8to9.2
|
||||
- - 8.6to9.2
|
||||
+- &sanity-88to92-aws
|
||||
+ <<: *sanity-abstract-8to9-aws
|
||||
+ trigger: pull_request
|
||||
targets:
|
||||
epel-8-x86_64:
|
||||
- distros: [RHEL-8.8.0-Nightly]
|
||||
- identifier: sanity-8.8to9.2-beaker-minimal
|
||||
+ 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:
|
||||
- plan_filter: 'tag:partitioning & tag:8to9 & enabled:true'
|
||||
+ plan_filter: 'tag:upgrade_happy_path & enabled:true'
|
||||
environments:
|
||||
- tmt:
|
||||
context:
|
||||
@@ -452,122 +447,77 @@ 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_DEVEL_TARGET_RELEASE: "9.2"
|
||||
+ LEAPP_NO_RHSM: "1"
|
||||
+ USE_CUSTOM_REPOS: rhui
|
||||
|
||||
-# On-demand kernel-rt tests
|
||||
-- &kernel-rt-88to92
|
||||
- <<: *beaker-minimal-88to92
|
||||
+- &beaker-minimal-88to92
|
||||
+ <<: *beaker-minimal-8to9-abstract-ondemand
|
||||
+ trigger: pull_request
|
||||
labels:
|
||||
- - kernel-rt
|
||||
- - kernel-rt-8.8to9.2
|
||||
+ - beaker-minimal
|
||||
+ - beaker-minimal-8.8to9.2
|
||||
- 8.8to9.2
|
||||
- identifier: sanity-8.8to9.2-kernel-rt
|
||||
- tf_extra_params:
|
||||
- test:
|
||||
- tmt:
|
||||
- plan_filter: 'tag:kernel-rt & tag:8to9 & enabled:true'
|
||||
- environments:
|
||||
- - tmt:
|
||||
- context:
|
||||
- distro: "rhel-8.8"
|
||||
- settings:
|
||||
- provisioning:
|
||||
- tags:
|
||||
- BusinessUnit: sst_upgrades@leapp_upstream_test
|
||||
-
|
||||
-- &sanity-89to93
|
||||
- <<: *sanity-88to92
|
||||
targets:
|
||||
epel-8-x86_64:
|
||||
- distros: [RHEL-8.9.0-Nightly]
|
||||
- identifier: sanity-8.9to9.3
|
||||
+ distros: [RHEL-8.8.0-Nightly]
|
||||
+ identifier: sanity-8.8to9.2-beaker-minimal-ondemand
|
||||
tf_extra_params:
|
||||
test:
|
||||
tmt:
|
||||
- plan_filter: 'tag:sanity & tag:8to9 & enabled:true'
|
||||
+ plan_filter: 'tag:partitioning & tag:8to9 & enabled:true'
|
||||
environments:
|
||||
- tmt:
|
||||
context:
|
||||
- distro: "rhel-8.9"
|
||||
+ distro: "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
|
||||
env:
|
||||
- SOURCE_RELEASE: "8.9"
|
||||
- TARGET_RELEASE: "9.3"
|
||||
+ SOURCE_RELEASE: "8.8"
|
||||
+ TARGET_RELEASE: "9.2"
|
||||
LEAPPDATA_BRANCH: "upstream"
|
||||
- LEAPP_DEVEL_TARGET_RELEASE: "9.3"
|
||||
+ LEAPP_DEVEL_TARGET_RELEASE: "9.2"
|
||||
|
||||
-# On-demand minimal beaker tests
|
||||
-- &beaker-minimal-89to93
|
||||
- <<: *beaker-minimal-88to92
|
||||
+- &kernel-rt-88to92
|
||||
+ <<: *kernel-rt-abstract-8to9-ondemand
|
||||
+ trigger: pull_request
|
||||
labels:
|
||||
- - beaker-minimal
|
||||
- - beaker-minimal-8.9to9.3
|
||||
- - 8.9to9.3
|
||||
+ - kernel-rt
|
||||
+ - kernel-rt-8.8to9.2
|
||||
+ - 8.8to9.2
|
||||
+ identifier: sanity-8.8to9.2-kernel-rt-ondemand
|
||||
targets:
|
||||
epel-8-x86_64:
|
||||
- distros: [RHEL-8.9.0-Nightly]
|
||||
- identifier: sanity-8.9to9.3-beaker-minimal
|
||||
+ distros: [RHEL-8.8.0-Nightly]
|
||||
tf_extra_params:
|
||||
test:
|
||||
tmt:
|
||||
- plan_filter: 'tag:partitioning & tag:8to9 & enabled:true'
|
||||
+ plan_filter: 'tag:kernel-rt & tag:8to9 & enabled:true'
|
||||
environments:
|
||||
- tmt:
|
||||
context:
|
||||
- distro: "rhel-8.9"
|
||||
+ distro: "rhel-8.8"
|
||||
settings:
|
||||
provisioning:
|
||||
tags:
|
||||
BusinessUnit: sst_upgrades@leapp_upstream_test
|
||||
env:
|
||||
- SOURCE_RELEASE: "8.9"
|
||||
- TARGET_RELEASE: "9.3"
|
||||
+ SOURCE_RELEASE: "8.8"
|
||||
+ TARGET_RELEASE: "9.2"
|
||||
LEAPPDATA_BRANCH: "upstream"
|
||||
- LEAPP_DEVEL_TARGET_RELEASE: "9.3"
|
||||
+ LEAPP_DEVEL_TARGET_RELEASE: "9.2"
|
||||
|
||||
-# On-demand kernel-rt tests
|
||||
-- &kernel-rt-89to93
|
||||
- <<: *beaker-minimal-89to93
|
||||
- labels:
|
||||
- - kernel-rt
|
||||
- - kernel-rt-8.9to9.3
|
||||
- - 8.9to9.3
|
||||
- identifier: sanity-8.9to9.3-kernel-rt
|
||||
- tf_extra_params:
|
||||
- test:
|
||||
- tmt:
|
||||
- plan_filter: 'tag:kernel-rt & tag:8to9 & enabled:true'
|
||||
- environments:
|
||||
- - tmt:
|
||||
- context:
|
||||
- distro: "rhel-8.9"
|
||||
- settings:
|
||||
- provisioning:
|
||||
- tags:
|
||||
- BusinessUnit: sst_upgrades@leapp_upstream_test
|
||||
|
||||
+# Tests: 8.10 -> 9.4
|
||||
- &sanity-810to94
|
||||
- <<: *sanity-88to92
|
||||
- targets:
|
||||
- epel-8-x86_64:
|
||||
- distros: [RHEL-8.10.0-Nightly]
|
||||
+ <<: *sanity-abstract-8to9
|
||||
+ trigger: pull_request
|
||||
identifier: sanity-8.10to9.4
|
||||
- tf_extra_params:
|
||||
- test:
|
||||
- tmt:
|
||||
- plan_filter: 'tag:sanity & tag:8to9 & enabled:true'
|
||||
- environments:
|
||||
- - tmt:
|
||||
- context:
|
||||
- distro: "rhel-8.10"
|
||||
- settings:
|
||||
- provisioning:
|
||||
- tags:
|
||||
- BusinessUnit: sst_upgrades@leapp_upstream_test
|
||||
env:
|
||||
SOURCE_RELEASE: "8.10"
|
||||
TARGET_RELEASE: "9.4"
|
||||
@@ -576,27 +526,13 @@ jobs:
|
||||
|
||||
# On-demand minimal beaker tests
|
||||
- &beaker-minimal-810to94
|
||||
- <<: *beaker-minimal-88to92
|
||||
+ <<: *beaker-minimal-8to9-abstract-ondemand
|
||||
+ trigger: pull_request
|
||||
labels:
|
||||
- beaker-minimal
|
||||
- beaker-minimal-8.10to9.4
|
||||
- 8.10to9.4
|
||||
- targets:
|
||||
- epel-8-x86_64:
|
||||
- distros: [RHEL-8.10.0-Nightly]
|
||||
- identifier: sanity-8.10to9.4-beaker-minimal
|
||||
- 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
|
||||
+ identifier: sanity-8.10to9.4-beaker-minimal-ondemand
|
||||
env:
|
||||
SOURCE_RELEASE: "8.10"
|
||||
TARGET_RELEASE: "9.4"
|
||||
@@ -604,107 +540,15 @@ jobs:
|
||||
|
||||
# On-demand kernel-rt tests
|
||||
- &kernel-rt-810to94
|
||||
- <<: *beaker-minimal-810to94
|
||||
+ <<: *kernel-rt-abstract-8to9-ondemand
|
||||
+ trigger: pull_request
|
||||
labels:
|
||||
- kernel-rt
|
||||
- kernel-rt-8.10to9.4
|
||||
- 8.10to9.4
|
||||
- identifier: sanity-8.10to9.4-kernel-rt
|
||||
- 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
|
||||
-
|
||||
-- &sanity-86to90-aws
|
||||
- <<: *sanity-79to86-aws
|
||||
- targets:
|
||||
- epel-8-x86_64:
|
||||
- distros: [RHEL-8.6-rhui]
|
||||
- identifier: sanity-8.6to9.0-aws
|
||||
- tf_extra_params:
|
||||
- test:
|
||||
- tmt:
|
||||
- plan_filter: 'tag:upgrade_happy_path & enabled:true'
|
||||
- environments:
|
||||
- - tmt:
|
||||
- context:
|
||||
- distro: "rhel-8.6"
|
||||
- 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: "8.6"
|
||||
- TARGET_RELEASE: "9.0"
|
||||
- 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
|
||||
-
|
||||
-- &sanity-88to92-aws
|
||||
- <<: *sanity-86to90-aws
|
||||
- targets:
|
||||
- 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:
|
||||
- plan_filter: 'tag:upgrade_happy_path & enabled:true'
|
||||
- environments:
|
||||
- - tmt:
|
||||
- context:
|
||||
- distro: "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
|
||||
+ identifier: sanity-8.10to9.4-kernel-rt-ondemand
|
||||
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
|
||||
-
|
||||
-- &sanity-89to93-aws
|
||||
- <<: *sanity-86to90-aws
|
||||
- targets:
|
||||
- epel-8-x86_64:
|
||||
- distros: [RHEL-8.9-rhui]
|
||||
- identifier: sanity-8.9to9.3-aws
|
||||
- # NOTE(mkluson) Unfortunately to use yaml templates we need to rewrite the whole tf_extra_params dict
|
||||
- tf_extra_params:
|
||||
- test:
|
||||
- tmt:
|
||||
- plan_filter: 'tag:upgrade_happy_path & enabled:true'
|
||||
- environments:
|
||||
- - tmt:
|
||||
- context:
|
||||
- distro: "rhel-8.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
|
||||
- env:
|
||||
- SOURCE_RELEASE: "8.9"
|
||||
- TARGET_RELEASE: "9.3"
|
||||
- RHSM_REPOS: "rhel-8-for-x86_64-appstream-rpms,rhel-8-for-x86_64-baseos-rpms"
|
||||
- RHUI: "aws"
|
||||
+ 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"
|
||||
- LEAPP_NO_RHSM: "1"
|
||||
- USE_CUSTOM_REPOS: rhui
|
||||
--
|
||||
2.42.0
|
||||
|
@ -1,25 +0,0 @@
|
||||
From db8a0cf5c66ced0ed49990a40a45a08373b34af5 Mon Sep 17 00:00:00 2001
|
||||
From: Evgeni Golov <evgeni@golov.de>
|
||||
Date: Fri, 1 Mar 2024 20:30:04 +0100
|
||||
Subject: [PATCH 03/34] silence use-yield-from from pylint 3.1
|
||||
|
||||
yield from cannot be used until we require python3.3 or greater
|
||||
---
|
||||
.pylintrc | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/.pylintrc b/.pylintrc
|
||||
index 57259bcb..f78c1c3f 100644
|
||||
--- a/.pylintrc
|
||||
+++ b/.pylintrc
|
||||
@@ -57,6 +57,7 @@ disable=
|
||||
redundant-u-string-prefix, # still have py2 to support
|
||||
logging-format-interpolation,
|
||||
logging-not-lazy,
|
||||
+ use-yield-from, # yield from cannot be used until we require python 3.3 or greater
|
||||
too-many-lines # we do not want to take care about that one
|
||||
|
||||
[FORMAT]
|
||||
--
|
||||
2.42.0
|
||||
|
@ -1,23 +0,0 @@
|
||||
From 214ed9b57c5e291cda5ff6baf7c7a790038fef34 Mon Sep 17 00:00:00 2001
|
||||
From: Matej Matuska <mmatuska@redhat.com>
|
||||
Date: Mon, 11 Mar 2024 18:30:23 +0100
|
||||
Subject: [PATCH 04/34] rocescanner: Actually call process() in
|
||||
test_roce_notibmz test
|
||||
|
||||
---
|
||||
.../el8toel9/actors/rocescanner/tests/unit_test_rocescanner.py | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/repos/system_upgrade/el8toel9/actors/rocescanner/tests/unit_test_rocescanner.py b/repos/system_upgrade/el8toel9/actors/rocescanner/tests/unit_test_rocescanner.py
|
||||
index a4889328..ee9e4498 100644
|
||||
--- a/repos/system_upgrade/el8toel9/actors/rocescanner/tests/unit_test_rocescanner.py
|
||||
+++ b/repos/system_upgrade/el8toel9/actors/rocescanner/tests/unit_test_rocescanner.py
|
||||
@@ -151,4 +151,5 @@ def test_roce_noibmz(monkeypatch, arch):
|
||||
monkeypatch.setattr(rocescanner.api, 'current_actor', CurrentActorMocked(arch=arch))
|
||||
monkeypatch.setattr(rocescanner.api.current_actor(), 'produce', mocked_produce)
|
||||
monkeypatch.setattr(rocescanner, 'get_roce_nics_lines', lambda: mocked_roce_lines)
|
||||
+ rocescanner.process()
|
||||
assert not mocked_produce.called
|
||||
--
|
||||
2.42.0
|
||||
|
@ -1,624 +0,0 @@
|
||||
From 050620eabe52a2184b40a7ac2818d927516d8b6d Mon Sep 17 00:00:00 2001
|
||||
From: David Kubek <dkubek@redhat.com>
|
||||
Date: Tue, 20 Feb 2024 20:54:16 +0100
|
||||
Subject: [PATCH 05/34] Fix incorrect parsing of `lscpu` output
|
||||
|
||||
Original solution expected always ``key: val`` pair on each line.
|
||||
However, it has not been expected that val could be actually empty
|
||||
string, which would lead to situation where the following line is
|
||||
interpreted as a value.
|
||||
|
||||
The new solution updates the parsing for output on RHEL 7, but also
|
||||
calls newly ``lscpu -J`` on RHEL 8+ to obtain data in the JSON format,
|
||||
which drops all possible parsing problems from our side.
|
||||
|
||||
Fixes #1182
|
||||
---
|
||||
.github/workflows/codespell.yml | 2 +-
|
||||
.../actors/scancpu/libraries/scancpu.py | 39 +++++----
|
||||
.../actors/scancpu/tests/files/json/invalid | 2 +
|
||||
.../scancpu/tests/files/json/lscpu_aarch64 | 29 +++++++
|
||||
.../scancpu/tests/files/json/lscpu_ppc64le | 19 +++++
|
||||
.../scancpu/tests/files/json/lscpu_s390x | 30 +++++++
|
||||
.../scancpu/tests/files/json/lscpu_x86_64 | 31 +++++++
|
||||
.../actors/scancpu/tests/files/lscpu_aarch64 | 26 ------
|
||||
.../actors/scancpu/tests/files/lscpu_ppc64le | 24 ------
|
||||
.../actors/scancpu/tests/files/lscpu_s390x | 38 ---------
|
||||
.../scancpu/tests/files/txt/lscpu_aarch64 | 25 ++++++
|
||||
.../scancpu/tests/files/txt/lscpu_empty_field | 4 +
|
||||
.../scancpu/tests/files/txt/lscpu_ppc64le | 15 ++++
|
||||
.../scancpu/tests/files/txt/lscpu_s390x | 26 ++++++
|
||||
.../tests/files/{ => txt}/lscpu_x86_64 | 0
|
||||
.../actors/scancpu/tests/test_scancpu.py | 82 ++++++++++++++++---
|
||||
16 files changed, 279 insertions(+), 113 deletions(-)
|
||||
create mode 100644 repos/system_upgrade/common/actors/scancpu/tests/files/json/invalid
|
||||
create mode 100644 repos/system_upgrade/common/actors/scancpu/tests/files/json/lscpu_aarch64
|
||||
create mode 100644 repos/system_upgrade/common/actors/scancpu/tests/files/json/lscpu_ppc64le
|
||||
create mode 100644 repos/system_upgrade/common/actors/scancpu/tests/files/json/lscpu_s390x
|
||||
create mode 100644 repos/system_upgrade/common/actors/scancpu/tests/files/json/lscpu_x86_64
|
||||
delete mode 100644 repos/system_upgrade/common/actors/scancpu/tests/files/lscpu_aarch64
|
||||
delete mode 100644 repos/system_upgrade/common/actors/scancpu/tests/files/lscpu_ppc64le
|
||||
delete mode 100644 repos/system_upgrade/common/actors/scancpu/tests/files/lscpu_s390x
|
||||
create mode 100644 repos/system_upgrade/common/actors/scancpu/tests/files/txt/lscpu_aarch64
|
||||
create mode 100644 repos/system_upgrade/common/actors/scancpu/tests/files/txt/lscpu_empty_field
|
||||
create mode 100644 repos/system_upgrade/common/actors/scancpu/tests/files/txt/lscpu_ppc64le
|
||||
create mode 100644 repos/system_upgrade/common/actors/scancpu/tests/files/txt/lscpu_s390x
|
||||
rename repos/system_upgrade/common/actors/scancpu/tests/files/{ => txt}/lscpu_x86_64 (100%)
|
||||
|
||||
diff --git a/.github/workflows/codespell.yml b/.github/workflows/codespell.yml
|
||||
index 24add3fb..4921bc90 100644
|
||||
--- a/.github/workflows/codespell.yml
|
||||
+++ b/.github/workflows/codespell.yml
|
||||
@@ -23,7 +23,7 @@ jobs:
|
||||
./repos/system_upgrade/el8toel9/actors/xorgdrvfact/tests/files/journalctl-xorg-intel,\
|
||||
./repos/system_upgrade/el8toel9/actors/xorgdrvfact/tests/files/journalctl-xorg-qxl,\
|
||||
./repos/system_upgrade/el8toel9/actors/xorgdrvfact/tests/files/journalctl-xorg-without-qxl,\
|
||||
- ./repos/system_upgrade/common/actors/scancpu/tests/files/lscpu_s390x,\
|
||||
+ ./repos/system_upgrade/common/actors/scancpu/tests/files,\
|
||||
./etc/leapp/files/device_driver_deprecation_data.json,\
|
||||
./etc/leapp/files/pes-events.json,\
|
||||
./etc/leapp/files/repomap.json,\
|
||||
diff --git a/repos/system_upgrade/common/actors/scancpu/libraries/scancpu.py b/repos/system_upgrade/common/actors/scancpu/libraries/scancpu.py
|
||||
index 9de50fae..7451066a 100644
|
||||
--- a/repos/system_upgrade/common/actors/scancpu/libraries/scancpu.py
|
||||
+++ b/repos/system_upgrade/common/actors/scancpu/libraries/scancpu.py
|
||||
@@ -1,22 +1,41 @@
|
||||
+import json
|
||||
import re
|
||||
|
||||
from leapp.libraries.common.config import architecture
|
||||
+from leapp.libraries.common.config.version import get_source_major_version
|
||||
from leapp.libraries.stdlib import api, CalledProcessError, run
|
||||
from leapp.models import CPUInfo, DetectedDeviceOrDriver, DeviceDriverDeprecationData
|
||||
|
||||
-LSCPU_NAME_VALUE = re.compile(r'(?P<name>[^:]+):\s+(?P<value>.+)\n?')
|
||||
+LSCPU_NAME_VALUE = re.compile(r'^(?P<name>[^:]+):[^\S\n]+(?P<value>.+)\n?', flags=re.MULTILINE)
|
||||
PPC64LE_MODEL = re.compile(r'\d+\.\d+ \(pvr (?P<family>[0-9a-fA-F]+) 0*[0-9a-fA-F]+\)')
|
||||
|
||||
|
||||
-def _get_lscpu_output():
|
||||
+def _get_lscpu_output(output_json=False):
|
||||
try:
|
||||
- result = run(['lscpu'])
|
||||
+ result = run(['lscpu', '-J' if output_json else ''])
|
||||
return result.get('stdout', '')
|
||||
except (OSError, CalledProcessError):
|
||||
api.current_logger().debug('Executing `lscpu` failed', exc_info=True)
|
||||
return ''
|
||||
|
||||
|
||||
+def _parse_lscpu_output():
|
||||
+ if get_source_major_version() == '7':
|
||||
+ return dict(LSCPU_NAME_VALUE.findall(_get_lscpu_output()))
|
||||
+
|
||||
+ lscpu = _get_lscpu_output(output_json=True)
|
||||
+ try:
|
||||
+ parsed_json = json.loads(lscpu)
|
||||
+ # The json contains one entry "lscpu" which is a list of dictionaries
|
||||
+ # with 2 keys "field" (name of the field from lscpu) and "data" (value
|
||||
+ # of the field).
|
||||
+ return dict((entry['field'].rstrip(':'), entry['data']) for entry in parsed_json['lscpu'])
|
||||
+ except ValueError:
|
||||
+ api.current_logger().debug('Failed to parse json output from `lscpu`. Got:\n{}'.format(lscpu))
|
||||
+
|
||||
+ return dict()
|
||||
+
|
||||
+
|
||||
def _get_cpu_flags(lscpu):
|
||||
flags = lscpu.get('Flags', '')
|
||||
return flags.split()
|
||||
@@ -128,24 +147,16 @@ def _find_deprecation_data_entries(lscpu):
|
||||
arch_prefix, is_detected = architecture.ARCH_ARM64, _is_detected_aarch64
|
||||
|
||||
if arch_prefix and is_detected:
|
||||
- return [
|
||||
- _to_detected_device(entry) for entry in _get_cpu_entries_for(arch_prefix)
|
||||
- if is_detected(lscpu, entry)
|
||||
- ]
|
||||
+ return [_to_detected_device(entry) for entry in _get_cpu_entries_for(arch_prefix) if is_detected(lscpu, entry)]
|
||||
|
||||
api.current_logger().warning('Unsupported platform could not detect relevant CPU information')
|
||||
return []
|
||||
|
||||
|
||||
def process():
|
||||
- lscpu = dict(LSCPU_NAME_VALUE.findall(_get_lscpu_output()))
|
||||
+ lscpu = _parse_lscpu_output()
|
||||
api.produce(*_find_deprecation_data_entries(lscpu))
|
||||
# Backwards compatibility
|
||||
machine_type = lscpu.get('Machine type')
|
||||
flags = _get_cpu_flags(lscpu)
|
||||
- api.produce(
|
||||
- CPUInfo(
|
||||
- machine_type=int(machine_type) if machine_type else None,
|
||||
- flags=flags
|
||||
- )
|
||||
- )
|
||||
+ api.produce(CPUInfo(machine_type=int(machine_type) if machine_type else None, flags=flags))
|
||||
diff --git a/repos/system_upgrade/common/actors/scancpu/tests/files/json/invalid b/repos/system_upgrade/common/actors/scancpu/tests/files/json/invalid
|
||||
new file mode 100644
|
||||
index 00000000..422c2b7a
|
||||
--- /dev/null
|
||||
+++ b/repos/system_upgrade/common/actors/scancpu/tests/files/json/invalid
|
||||
@@ -0,0 +1,2 @@
|
||||
+a
|
||||
+b
|
||||
diff --git a/repos/system_upgrade/common/actors/scancpu/tests/files/json/lscpu_aarch64 b/repos/system_upgrade/common/actors/scancpu/tests/files/json/lscpu_aarch64
|
||||
new file mode 100644
|
||||
index 00000000..79186695
|
||||
--- /dev/null
|
||||
+++ b/repos/system_upgrade/common/actors/scancpu/tests/files/json/lscpu_aarch64
|
||||
@@ -0,0 +1,29 @@
|
||||
+{
|
||||
+ "lscpu": [
|
||||
+ {"field": "Architecture:", "data": "aarch64"},
|
||||
+ {"field": "Byte Order:", "data": "Little Endian"},
|
||||
+ {"field": "CPU(s):", "data": "160"},
|
||||
+ {"field": "On-line CPU(s) list:", "data": "0-159"},
|
||||
+ {"field": "Thread(s) per core:", "data": "1"},
|
||||
+ {"field": "Core(s) per socket:", "data": "80"},
|
||||
+ {"field": "Socket(s):", "data": "2"},
|
||||
+ {"field": "NUMA node(s):", "data": "4"},
|
||||
+ {"field": "Vendor ID:", "data": "ARM"},
|
||||
+ {"field": "BIOS Vendor ID:", "data": "Ampere(R)"},
|
||||
+ {"field": "Model:", "data": "1"},
|
||||
+ {"field": "Model name:", "data": "Neoverse-N1"},
|
||||
+ {"field": "BIOS Model name:", "data": "Ampere(R) Altra(R) Processor"},
|
||||
+ {"field": "Stepping:", "data": "r3p1"},
|
||||
+ {"field": "CPU max MHz:", "data": "3000.0000"},
|
||||
+ {"field": "CPU min MHz:", "data": "1000.0000"},
|
||||
+ {"field": "BogoMIPS:", "data": "50.00"},
|
||||
+ {"field": "L1d cache:", "data": "64K"},
|
||||
+ {"field": "L1i cache:", "data": "64K"},
|
||||
+ {"field": "L2 cache:", "data": "1024K"},
|
||||
+ {"field": "NUMA node0 CPU(s):", "data": "0-79"},
|
||||
+ {"field": "NUMA node1 CPU(s):", "data": "80-159"},
|
||||
+ {"field": "NUMA node2 CPU(s):", "data": null},
|
||||
+ {"field": "NUMA node3 CPU(s):", "data": null},
|
||||
+ {"field": "Flags:", "data": "fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm lrcpc dcpop asimddp ssbs"}
|
||||
+ ]
|
||||
+}
|
||||
diff --git a/repos/system_upgrade/common/actors/scancpu/tests/files/json/lscpu_ppc64le b/repos/system_upgrade/common/actors/scancpu/tests/files/json/lscpu_ppc64le
|
||||
new file mode 100644
|
||||
index 00000000..cc51c4ac
|
||||
--- /dev/null
|
||||
+++ b/repos/system_upgrade/common/actors/scancpu/tests/files/json/lscpu_ppc64le
|
||||
@@ -0,0 +1,19 @@
|
||||
+{
|
||||
+ "lscpu": [
|
||||
+ {"field": "Architecture:", "data": "ppc64le"},
|
||||
+ {"field": "Byte Order:", "data": "Little Endian"},
|
||||
+ {"field": "CPU(s):", "data": "8"},
|
||||
+ {"field": "On-line CPU(s) list:", "data": "0-7"},
|
||||
+ {"field": "Thread(s) per core:", "data": "1"},
|
||||
+ {"field": "Core(s) per socket:", "data": "1"},
|
||||
+ {"field": "Socket(s):", "data": "8"},
|
||||
+ {"field": "NUMA node(s):", "data": "1"},
|
||||
+ {"field": "Model:", "data": "2.1 (pvr 004b 0201)"},
|
||||
+ {"field": "Model name:", "data": "POWER8E (raw), altivec supported"},
|
||||
+ {"field": "Hypervisor vendor:", "data": "KVM"},
|
||||
+ {"field": "Virtualization type:", "data": "para"},
|
||||
+ {"field": "L1d cache:", "data": "64K"},
|
||||
+ {"field": "L1i cache:", "data": "32K"},
|
||||
+ {"field": "NUMA node0 CPU(s):", "data": "0-7"}
|
||||
+ ]
|
||||
+}
|
||||
diff --git a/repos/system_upgrade/common/actors/scancpu/tests/files/json/lscpu_s390x b/repos/system_upgrade/common/actors/scancpu/tests/files/json/lscpu_s390x
|
||||
new file mode 100644
|
||||
index 00000000..950da2de
|
||||
--- /dev/null
|
||||
+++ b/repos/system_upgrade/common/actors/scancpu/tests/files/json/lscpu_s390x
|
||||
@@ -0,0 +1,30 @@
|
||||
+{
|
||||
+ "lscpu": [
|
||||
+ {"field": "Architecture:", "data": "s390x"},
|
||||
+ {"field": "CPU op-mode(s):", "data": "32-bit, 64-bit"},
|
||||
+ {"field": "Byte Order:", "data": "Big Endian"},
|
||||
+ {"field": "CPU(s):", "data": "4"},
|
||||
+ {"field": "On-line CPU(s) list:", "data": "0-3"},
|
||||
+ {"field": "Thread(s) per core:", "data": "1"},
|
||||
+ {"field": "Core(s) per socket:", "data": "1"},
|
||||
+ {"field": "Socket(s) per book:", "data": "1"},
|
||||
+ {"field": "Book(s) per drawer:", "data": "1"},
|
||||
+ {"field": "Drawer(s):", "data": "4"},
|
||||
+ {"field": "NUMA node(s):", "data": "1"},
|
||||
+ {"field": "Vendor ID:", "data": "IBM/S390"},
|
||||
+ {"field": "Machine type:", "data": "3931"},
|
||||
+ {"field": "CPU dynamic MHz:", "data": "5200"},
|
||||
+ {"field": "CPU static MHz:", "data": "5200"},
|
||||
+ {"field": "BogoMIPS:", "data": "3331.00"},
|
||||
+ {"field": "Hypervisor:", "data": "KVM/Linux"},
|
||||
+ {"field": "Hypervisor vendor:", "data": "KVM"},
|
||||
+ {"field": "Virtualization type:", "data": "full"},
|
||||
+ {"field": "Dispatching mode:", "data": "horizontal"},
|
||||
+ {"field": "L1d cache:", "data": "128K"},
|
||||
+ {"field": "L1i cache:", "data": "128K"},
|
||||
+ {"field": "L2 cache:", "data": "32768K"},
|
||||
+ {"field": "L3 cache:", "data": "262144K"},
|
||||
+ {"field": "NUMA node0 CPU(s):", "data": "0-3"},
|
||||
+ {"field": "Flags:", "data": "esan3 zarch stfle msa ldisp eimm dfp edat etf3eh highgprs te vx vxd vxe gs vxe2 vxp sort dflt vxp2 nnpa sie"}
|
||||
+ ]
|
||||
+}
|
||||
diff --git a/repos/system_upgrade/common/actors/scancpu/tests/files/json/lscpu_x86_64 b/repos/system_upgrade/common/actors/scancpu/tests/files/json/lscpu_x86_64
|
||||
new file mode 100644
|
||||
index 00000000..da75a3fa
|
||||
--- /dev/null
|
||||
+++ b/repos/system_upgrade/common/actors/scancpu/tests/files/json/lscpu_x86_64
|
||||
@@ -0,0 +1,31 @@
|
||||
+{
|
||||
+ "lscpu": [
|
||||
+ {"field": "Architecture:", "data": "x86_64"},
|
||||
+ {"field": "CPU op-mode(s):", "data": "32-bit, 64-bit"},
|
||||
+ {"field": "Byte Order:", "data": "Little Endian"},
|
||||
+ {"field": "CPU(s):", "data": "2"},
|
||||
+ {"field": "On-line CPU(s) list:", "data": "0,1"},
|
||||
+ {"field": "Thread(s) per core:", "data": "1"},
|
||||
+ {"field": "Core(s) per socket:", "data": "1"},
|
||||
+ {"field": "Socket(s):", "data": "2"},
|
||||
+ {"field": "NUMA node(s):", "data": "1"},
|
||||
+ {"field": "Vendor ID:", "data": "GenuineIntel"},
|
||||
+ {"field": "BIOS Vendor ID:", "data": "QEMU"},
|
||||
+ {"field": "CPU family:", "data": "6"},
|
||||
+ {"field": "Model:", "data": "165"},
|
||||
+ {"field": "Model name:", "data": "Intel(R) Core(TM) i7-10850H CPU @ 2.70GHz"},
|
||||
+ {"field": "BIOS Model name:", "data": "pc-i440fx-7.2"},
|
||||
+ {"field": "Stepping:", "data": "2"},
|
||||
+ {"field": "CPU MHz:", "data": "2712.006"},
|
||||
+ {"field": "BogoMIPS:", "data": "5424.01"},
|
||||
+ {"field": "Virtualization:", "data": "VT-x"},
|
||||
+ {"field": "Hypervisor vendor:", "data": "KVM"},
|
||||
+ {"field": "Virtualization type:", "data": "full"},
|
||||
+ {"field": "L1d cache:", "data": "32K"},
|
||||
+ {"field": "L1i cache:", "data": "32K"},
|
||||
+ {"field": "L2 cache:", "data": "4096K"},
|
||||
+ {"field": "L3 cache:", "data": "16384K"},
|
||||
+ {"field": "NUMA node0 CPU(s):", "data": "0,1"},
|
||||
+ {"field": "Flags:", "data": "fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid dca sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm cpuid_fault epb invpcid_single pti ssbd ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid cqm xsaveopt cqm_llc cqm_occup_llc dtherm ida arat pln pts md_clear flush_l1d"}
|
||||
+ ]
|
||||
+}
|
||||
diff --git a/repos/system_upgrade/common/actors/scancpu/tests/files/lscpu_aarch64 b/repos/system_upgrade/common/actors/scancpu/tests/files/lscpu_aarch64
|
||||
deleted file mode 100644
|
||||
index 5b6c3470..00000000
|
||||
--- a/repos/system_upgrade/common/actors/scancpu/tests/files/lscpu_aarch64
|
||||
+++ /dev/null
|
||||
@@ -1,26 +0,0 @@
|
||||
-Architecture: aarch64
|
||||
-CPU op-mode(s): 32-bit, 64-bit
|
||||
-Byte Order: Little Endian
|
||||
-CPU(s): 5
|
||||
-On-line CPU(s) list: 0-4
|
||||
-Vendor ID: APM
|
||||
-Model name: -
|
||||
-Model: 2
|
||||
-Thread(s) per core: 1
|
||||
-Core(s) per cluster: 5
|
||||
-Socket(s): -
|
||||
-Cluster(s): 1
|
||||
-Stepping: 0x3
|
||||
-BogoMIPS: 80.00
|
||||
-Flags: fp asimd evtstrm aes pmull sha1 sha2 crc32 cpuid
|
||||
-NUMA node(s): 1
|
||||
-NUMA node0 CPU(s): 0-4
|
||||
-Vulnerability Itlb multihit: Not affected
|
||||
-Vulnerability L1tf: Not affected
|
||||
-Vulnerability Mds: Not affected
|
||||
-Vulnerability Meltdown: Mitigation; PTI
|
||||
-Vulnerability Spec store bypass: Vulnerable
|
||||
-Vulnerability Spectre v1: Mitigation; __user pointer sanitization
|
||||
-Vulnerability Spectre v2: Vulnerable
|
||||
-Vulnerability Srbds: Not affected
|
||||
-Vulnerability Tsx async abort: Not affected
|
||||
diff --git a/repos/system_upgrade/common/actors/scancpu/tests/files/lscpu_ppc64le b/repos/system_upgrade/common/actors/scancpu/tests/files/lscpu_ppc64le
|
||||
deleted file mode 100644
|
||||
index 259dd19d..00000000
|
||||
--- a/repos/system_upgrade/common/actors/scancpu/tests/files/lscpu_ppc64le
|
||||
+++ /dev/null
|
||||
@@ -1,24 +0,0 @@
|
||||
-Architecture: ppc64le
|
||||
-Byte Order: Little Endian
|
||||
-CPU(s): 8
|
||||
-On-line CPU(s) list: 0-7
|
||||
-Model name: POWER9 (architected), altivec supported
|
||||
-Model: 2.2 (pvr 004e 1202)
|
||||
-Thread(s) per core: 1
|
||||
-Core(s) per socket: 1
|
||||
-Socket(s): 8
|
||||
-Hypervisor vendor: KVM
|
||||
-Virtualization type: para
|
||||
-L1d cache: 256 KiB (8 instances)
|
||||
-L1i cache: 256 KiB (8 instances)
|
||||
-NUMA node(s): 1
|
||||
-NUMA node0 CPU(s): 0-7
|
||||
-Vulnerability Itlb multihit: Not affected
|
||||
-Vulnerability L1tf: Mitigation; RFI Flush, L1D private per thread
|
||||
-Vulnerability Mds: Not affected
|
||||
-Vulnerability Meltdown: Mitigation; RFI Flush, L1D private per thread
|
||||
-Vulnerability Spec store bypass: Mitigation; Kernel entry/exit barrier (eieio)
|
||||
-Vulnerability Spectre v1: Mitigation; __user pointer sanitization, ori31 speculation barrier enabled
|
||||
-Vulnerability Spectre v2: Mitigation; Software count cache flush (hardware accelerated), Software link stack flush
|
||||
-Vulnerability Srbds: Not affected
|
||||
-Vulnerability Tsx async abort: Not affected
|
||||
diff --git a/repos/system_upgrade/common/actors/scancpu/tests/files/lscpu_s390x b/repos/system_upgrade/common/actors/scancpu/tests/files/lscpu_s390x
|
||||
deleted file mode 100644
|
||||
index 3c0a0ac3..00000000
|
||||
--- a/repos/system_upgrade/common/actors/scancpu/tests/files/lscpu_s390x
|
||||
+++ /dev/null
|
||||
@@ -1,38 +0,0 @@
|
||||
-Architecture: s390x
|
||||
-CPU op-mode(s): 32-bit, 64-bit
|
||||
-Byte Order: Big Endian
|
||||
-CPU(s): 2
|
||||
-On-line CPU(s) list: 0,1
|
||||
-Vendor ID: IBM/S390
|
||||
-Model name: -
|
||||
-Machine type: 2827
|
||||
-Thread(s) per core: 1
|
||||
-Core(s) per socket: 1
|
||||
-Socket(s) per book: 1
|
||||
-Book(s) per drawer: 1
|
||||
-Drawer(s): 2
|
||||
-CPU dynamic MHz: 5200
|
||||
-CPU static MHz: 5200
|
||||
-BogoMIPS: 3241.00
|
||||
-Dispatching mode: horizontal
|
||||
-Flags: esan3 zarch stfle msa ldisp eimm dfp edat etf3eh highgprs te vx vxd vxe gs vxe2 vxp sort dflt sie
|
||||
-Hypervisor: z/VM 7.2.0
|
||||
-Hypervisor vendor: IBM
|
||||
-Virtualization type: full
|
||||
-L1d cache: 256 KiB (2 instances)
|
||||
-L1i cache: 256 KiB (2 instances)
|
||||
-L2d cache: 8 MiB (2 instances)
|
||||
-L2i cache: 8 MiB (2 instances)
|
||||
-L3 cache: 256 MiB
|
||||
-L4 cache: 960 MiB
|
||||
-NUMA node(s): 1
|
||||
-NUMA node0 CPU(s): 0,1
|
||||
-Vulnerability Itlb multihit: Not affected
|
||||
-Vulnerability L1tf: Not affected
|
||||
-Vulnerability Mds: Not affected
|
||||
-Vulnerability Meltdown: Not affected
|
||||
-Vulnerability Spec store bypass: Not affected
|
||||
-Vulnerability Spectre v1: Mitigation; __user pointer sanitization
|
||||
-Vulnerability Spectre v2: Mitigation; etokens
|
||||
-Vulnerability Srbds: Not affected
|
||||
-Vulnerability Tsx async abort: Not affected
|
||||
diff --git a/repos/system_upgrade/common/actors/scancpu/tests/files/txt/lscpu_aarch64 b/repos/system_upgrade/common/actors/scancpu/tests/files/txt/lscpu_aarch64
|
||||
new file mode 100644
|
||||
index 00000000..3b9619ef
|
||||
--- /dev/null
|
||||
+++ b/repos/system_upgrade/common/actors/scancpu/tests/files/txt/lscpu_aarch64
|
||||
@@ -0,0 +1,25 @@
|
||||
+Architecture: aarch64
|
||||
+Byte Order: Little Endian
|
||||
+CPU(s): 160
|
||||
+On-line CPU(s) list: 0-159
|
||||
+Thread(s) per core: 1
|
||||
+Core(s) per socket: 80
|
||||
+Socket(s): 2
|
||||
+NUMA node(s): 4
|
||||
+Vendor ID: ARM
|
||||
+BIOS Vendor ID: Ampere(R)
|
||||
+Model: 1
|
||||
+Model name: Neoverse-N1
|
||||
+BIOS Model name: Ampere(R) Altra(R) Processor
|
||||
+Stepping: r3p1
|
||||
+CPU max MHz: 3000.0000
|
||||
+CPU min MHz: 1000.0000
|
||||
+BogoMIPS: 50.00
|
||||
+L1d cache: 64K
|
||||
+L1i cache: 64K
|
||||
+L2 cache: 1024K
|
||||
+NUMA node0 CPU(s): 0-79
|
||||
+NUMA node1 CPU(s): 80-159
|
||||
+NUMA node2 CPU(s):
|
||||
+NUMA node3 CPU(s):
|
||||
+Flags: fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm lrcpc dcpop asimddp ssbs
|
||||
diff --git a/repos/system_upgrade/common/actors/scancpu/tests/files/txt/lscpu_empty_field b/repos/system_upgrade/common/actors/scancpu/tests/files/txt/lscpu_empty_field
|
||||
new file mode 100644
|
||||
index 00000000..f830b7fe
|
||||
--- /dev/null
|
||||
+++ b/repos/system_upgrade/common/actors/scancpu/tests/files/txt/lscpu_empty_field
|
||||
@@ -0,0 +1,4 @@
|
||||
+Empyt 1:
|
||||
+Empyt 2:
|
||||
+Empyt 3:
|
||||
+Flags: flag
|
||||
diff --git a/repos/system_upgrade/common/actors/scancpu/tests/files/txt/lscpu_ppc64le b/repos/system_upgrade/common/actors/scancpu/tests/files/txt/lscpu_ppc64le
|
||||
new file mode 100644
|
||||
index 00000000..07d2ed65
|
||||
--- /dev/null
|
||||
+++ b/repos/system_upgrade/common/actors/scancpu/tests/files/txt/lscpu_ppc64le
|
||||
@@ -0,0 +1,15 @@
|
||||
+Architecture: ppc64le
|
||||
+Byte Order: Little Endian
|
||||
+CPU(s): 8
|
||||
+On-line CPU(s) list: 0-7
|
||||
+Thread(s) per core: 1
|
||||
+Core(s) per socket: 1
|
||||
+Socket(s): 8
|
||||
+NUMA node(s): 1
|
||||
+Model: 2.1 (pvr 004b 0201)
|
||||
+Model name: POWER8E (raw), altivec supported
|
||||
+Hypervisor vendor: KVM
|
||||
+Virtualization type: para
|
||||
+L1d cache: 64K
|
||||
+L1i cache: 32K
|
||||
+NUMA node0 CPU(s): 0-7
|
||||
diff --git a/repos/system_upgrade/common/actors/scancpu/tests/files/txt/lscpu_s390x b/repos/system_upgrade/common/actors/scancpu/tests/files/txt/lscpu_s390x
|
||||
new file mode 100644
|
||||
index 00000000..2c0de9f9
|
||||
--- /dev/null
|
||||
+++ b/repos/system_upgrade/common/actors/scancpu/tests/files/txt/lscpu_s390x
|
||||
@@ -0,0 +1,26 @@
|
||||
+Architecture: s390x
|
||||
+CPU op-mode(s): 32-bit, 64-bit
|
||||
+Byte Order: Big Endian
|
||||
+CPU(s): 4
|
||||
+On-line CPU(s) list: 0-3
|
||||
+Thread(s) per core: 1
|
||||
+Core(s) per socket: 1
|
||||
+Socket(s) per book: 1
|
||||
+Book(s) per drawer: 1
|
||||
+Drawer(s): 4
|
||||
+NUMA node(s): 1
|
||||
+Vendor ID: IBM/S390
|
||||
+Machine type: 3931
|
||||
+CPU dynamic MHz: 5200
|
||||
+CPU static MHz: 5200
|
||||
+BogoMIPS: 3331.00
|
||||
+Hypervisor: KVM/Linux
|
||||
+Hypervisor vendor: KVM
|
||||
+Virtualization type: full
|
||||
+Dispatching mode: horizontal
|
||||
+L1d cache: 128K
|
||||
+L1i cache: 128K
|
||||
+L2 cache: 32768K
|
||||
+L3 cache: 262144K
|
||||
+NUMA node0 CPU(s): 0-3
|
||||
+Flags: esan3 zarch stfle msa ldisp eimm dfp edat etf3eh highgprs te vx vxd vxe gs vxe2 vxp sort dflt vxp2 nnpa sie
|
||||
diff --git a/repos/system_upgrade/common/actors/scancpu/tests/files/lscpu_x86_64 b/repos/system_upgrade/common/actors/scancpu/tests/files/txt/lscpu_x86_64
|
||||
similarity index 100%
|
||||
rename from repos/system_upgrade/common/actors/scancpu/tests/files/lscpu_x86_64
|
||||
rename to repos/system_upgrade/common/actors/scancpu/tests/files/txt/lscpu_x86_64
|
||||
diff --git a/repos/system_upgrade/common/actors/scancpu/tests/test_scancpu.py b/repos/system_upgrade/common/actors/scancpu/tests/test_scancpu.py
|
||||
index 894fae08..dc9d1ffc 100644
|
||||
--- a/repos/system_upgrade/common/actors/scancpu/tests/test_scancpu.py
|
||||
+++ b/repos/system_upgrade/common/actors/scancpu/tests/test_scancpu.py
|
||||
@@ -3,7 +3,6 @@ import os
|
||||
import pytest
|
||||
|
||||
from leapp.libraries.actor import scancpu
|
||||
-from leapp.libraries.common import testutils
|
||||
from leapp.libraries.common.config.architecture import (
|
||||
ARCH_ARM64,
|
||||
ARCH_PPC64LE,
|
||||
@@ -11,6 +10,7 @@ from leapp.libraries.common.config.architecture import (
|
||||
ARCH_SUPPORTED,
|
||||
ARCH_X86_64
|
||||
)
|
||||
+from leapp.libraries.common.testutils import CurrentActorMocked, logger_mocked, produce_mocked
|
||||
from leapp.libraries.stdlib import api
|
||||
from leapp.models import CPUInfo
|
||||
|
||||
@@ -18,8 +18,12 @@ CUR_DIR = os.path.dirname(os.path.abspath(__file__))
|
||||
|
||||
LSCPU = {
|
||||
ARCH_ARM64: {
|
||||
- "machine_type": None,
|
||||
- "flags": ['fp', 'asimd', 'evtstrm', 'aes', 'pmull', 'sha1', 'sha2', 'crc32', 'cpuid'],
|
||||
+ "machine_type":
|
||||
+ None,
|
||||
+ "flags": [
|
||||
+ 'fp', 'asimd', 'evtstrm', 'aes', 'pmull', 'sha1', 'sha2', 'crc32', 'atomics', 'fphp', 'asimdhp', 'cpuid',
|
||||
+ 'asimdrdm', 'lrcpc', 'dcpop', 'asimddp', 'ssbs'
|
||||
+ ]
|
||||
},
|
||||
ARCH_PPC64LE: {
|
||||
"machine_type": None,
|
||||
@@ -27,10 +31,10 @@ LSCPU = {
|
||||
},
|
||||
ARCH_S390X: {
|
||||
"machine_type":
|
||||
- 2827,
|
||||
+ 3931,
|
||||
"flags": [
|
||||
'esan3', 'zarch', 'stfle', 'msa', 'ldisp', 'eimm', 'dfp', 'edat', 'etf3eh', 'highgprs', 'te', 'vx', 'vxd',
|
||||
- 'vxe', 'gs', 'vxe2', 'vxp', 'sort', 'dflt', 'sie'
|
||||
+ 'vxe', 'gs', 'vxe2', 'vxp', 'sort', 'dflt', 'vxp2', 'nnpa', 'sie'
|
||||
]
|
||||
},
|
||||
ARCH_X86_64: {
|
||||
@@ -57,23 +61,34 @@ class mocked_get_cpuinfo(object):
|
||||
def __init__(self, filename):
|
||||
self.filename = filename
|
||||
|
||||
- def __call__(self):
|
||||
+ def __call__(self, output_json=False):
|
||||
"""
|
||||
Return lines of the self.filename test file located in the files directory.
|
||||
|
||||
Those files contain /proc/cpuinfo content from several machines.
|
||||
"""
|
||||
- with open(os.path.join(CUR_DIR, 'files', self.filename), 'r') as fp:
|
||||
+
|
||||
+ filename = self.filename
|
||||
+ if output_json:
|
||||
+ filename = os.path.join('json', filename)
|
||||
+ else:
|
||||
+ filename = os.path.join('txt', filename)
|
||||
+ filename = os.path.join(CUR_DIR, 'files', filename)
|
||||
+
|
||||
+ with open(filename, 'r') as fp:
|
||||
return '\n'.join(fp.read().splitlines())
|
||||
|
||||
|
||||
@pytest.mark.parametrize("arch", ARCH_SUPPORTED)
|
||||
-def test_scancpu(monkeypatch, arch):
|
||||
+@pytest.mark.parametrize("version", ['7', '8'])
|
||||
+def test_scancpu(monkeypatch, arch, version):
|
||||
+
|
||||
+ monkeypatch.setattr('leapp.libraries.actor.scancpu.get_source_major_version', lambda: version)
|
||||
|
||||
mocked_cpuinfo = mocked_get_cpuinfo('lscpu_' + arch)
|
||||
monkeypatch.setattr(scancpu, '_get_lscpu_output', mocked_cpuinfo)
|
||||
- monkeypatch.setattr(api, 'produce', testutils.produce_mocked())
|
||||
- current_actor = testutils.CurrentActorMocked(arch=arch)
|
||||
+ monkeypatch.setattr(api, 'produce', produce_mocked())
|
||||
+ current_actor = CurrentActorMocked(arch=arch)
|
||||
monkeypatch.setattr(api, 'current_actor', current_actor)
|
||||
|
||||
scancpu.process()
|
||||
@@ -89,3 +104,50 @@ def test_scancpu(monkeypatch, arch):
|
||||
|
||||
# Did not produce anything extra
|
||||
assert expected == produced
|
||||
+
|
||||
+
|
||||
+def test_lscpu_with_empty_field(monkeypatch):
|
||||
+
|
||||
+ def mocked_cpuinfo(*args, **kwargs):
|
||||
+ return mocked_get_cpuinfo('lscpu_empty_field')(output_json=False)
|
||||
+
|
||||
+ monkeypatch.setattr(scancpu, '_get_lscpu_output', mocked_cpuinfo)
|
||||
+ monkeypatch.setattr(api, 'produce', produce_mocked())
|
||||
+ current_actor = CurrentActorMocked()
|
||||
+ monkeypatch.setattr(api, 'current_actor', current_actor)
|
||||
+
|
||||
+ scancpu.process()
|
||||
+
|
||||
+ expected = CPUInfo(machine_type=None, flags=['flag'])
|
||||
+ produced = api.produce.model_instances[0]
|
||||
+
|
||||
+ assert api.produce.called == 1
|
||||
+
|
||||
+ assert expected.machine_type == produced.machine_type
|
||||
+ assert sorted(expected.flags) == sorted(produced.flags)
|
||||
+
|
||||
+
|
||||
+def test_parse_invalid_json(monkeypatch):
|
||||
+
|
||||
+ monkeypatch.setattr('leapp.libraries.actor.scancpu.get_source_major_version', lambda: '8')
|
||||
+
|
||||
+ def mocked_cpuinfo(*args, **kwargs):
|
||||
+ return mocked_get_cpuinfo('invalid')(output_json=True)
|
||||
+
|
||||
+ monkeypatch.setattr(scancpu, '_get_lscpu_output', mocked_cpuinfo)
|
||||
+ monkeypatch.setattr(api, 'produce', produce_mocked())
|
||||
+ monkeypatch.setattr(api, 'current_logger', logger_mocked())
|
||||
+ current_actor = CurrentActorMocked()
|
||||
+ monkeypatch.setattr(api, 'current_actor', current_actor)
|
||||
+
|
||||
+ scancpu.process()
|
||||
+
|
||||
+ assert api.produce.called == 1
|
||||
+
|
||||
+ assert any('Failed to parse json output' in msg for msg in api.current_logger().dbgmsg)
|
||||
+
|
||||
+ expected = CPUInfo(machine_type=None, flags=[])
|
||||
+ produced = api.produce.model_instances[0]
|
||||
+
|
||||
+ assert expected.machine_type == produced.machine_type
|
||||
+ assert sorted(expected.flags) == sorted(produced.flags)
|
||||
--
|
||||
2.42.0
|
||||
|
@ -1,254 +0,0 @@
|
||||
From b65ef94be64f16eacb79a55d1185e37aa401832e Mon Sep 17 00:00:00 2001
|
||||
From: tomasfratrik <tomasfratrik8@gmail.com>
|
||||
Date: Mon, 4 Mar 2024 09:10:02 +0100
|
||||
Subject: [PATCH 06/34] Add unit tests for actor udevamdinfo
|
||||
|
||||
* Move actor's process to its library
|
||||
* Add check for run in process
|
||||
* Create file with short output of 'udevamd info -e' for testing
|
||||
purposes
|
||||
* Add unit tests for actor
|
||||
|
||||
Jira: OAMG-1277
|
||||
---
|
||||
.../common/actors/udev/udevadminfo/actor.py | 5 +-
|
||||
.../udev/udevadminfo/libraries/udevadminfo.py | 19 +++
|
||||
.../udevadminfo/tests/files/udevadm_database | 134 ++++++++++++++++++
|
||||
.../udevadminfo/tests/test_udevadminfo.py | 40 ++++++
|
||||
4 files changed, 195 insertions(+), 3 deletions(-)
|
||||
create mode 100644 repos/system_upgrade/common/actors/udev/udevadminfo/libraries/udevadminfo.py
|
||||
create mode 100644 repos/system_upgrade/common/actors/udev/udevadminfo/tests/files/udevadm_database
|
||||
create mode 100644 repos/system_upgrade/common/actors/udev/udevadminfo/tests/test_udevadminfo.py
|
||||
|
||||
diff --git a/repos/system_upgrade/common/actors/udev/udevadminfo/actor.py b/repos/system_upgrade/common/actors/udev/udevadminfo/actor.py
|
||||
index b674e56c..ac702914 100644
|
||||
--- a/repos/system_upgrade/common/actors/udev/udevadminfo/actor.py
|
||||
+++ b/repos/system_upgrade/common/actors/udev/udevadminfo/actor.py
|
||||
@@ -1,5 +1,5 @@
|
||||
from leapp.actors import Actor
|
||||
-from leapp.libraries.stdlib import run
|
||||
+from leapp.libraries.actor import udevadminfo
|
||||
from leapp.models import UdevAdmInfoData
|
||||
from leapp.tags import FactsPhaseTag, IPUWorkflowTag
|
||||
|
||||
@@ -15,5 +15,4 @@ class UdevAdmInfo(Actor):
|
||||
tags = (IPUWorkflowTag, FactsPhaseTag,)
|
||||
|
||||
def process(self):
|
||||
- out = run(['udevadm', 'info', '-e'])['stdout']
|
||||
- self.produce(UdevAdmInfoData(db=out))
|
||||
+ udevadminfo.process()
|
||||
diff --git a/repos/system_upgrade/common/actors/udev/udevadminfo/libraries/udevadminfo.py b/repos/system_upgrade/common/actors/udev/udevadminfo/libraries/udevadminfo.py
|
||||
new file mode 100644
|
||||
index 00000000..dabe49e0
|
||||
--- /dev/null
|
||||
+++ b/repos/system_upgrade/common/actors/udev/udevadminfo/libraries/udevadminfo.py
|
||||
@@ -0,0 +1,19 @@
|
||||
+from leapp.exceptions import StopActorExecutionError
|
||||
+from leapp.libraries.stdlib import api, CalledProcessError, run
|
||||
+from leapp.models import UdevAdmInfoData
|
||||
+
|
||||
+
|
||||
+def process():
|
||||
+ try:
|
||||
+ out = run(['udevadm', 'info', '-e'])['stdout']
|
||||
+ except (CalledProcessError, OSError) as err:
|
||||
+ raise StopActorExecutionError(
|
||||
+ message=(
|
||||
+ "Unable to gather information about the system devices"
|
||||
+ ),
|
||||
+ details={
|
||||
+ 'details': 'Failed to execute `udevadm info -e` command.',
|
||||
+ 'error': str(err)
|
||||
+ }
|
||||
+ )
|
||||
+ api.produce(UdevAdmInfoData(db=out))
|
||||
diff --git a/repos/system_upgrade/common/actors/udev/udevadminfo/tests/files/udevadm_database b/repos/system_upgrade/common/actors/udev/udevadminfo/tests/files/udevadm_database
|
||||
new file mode 100644
|
||||
index 00000000..219fb574
|
||||
--- /dev/null
|
||||
+++ b/repos/system_upgrade/common/actors/udev/udevadminfo/tests/files/udevadm_database
|
||||
@@ -0,0 +1,134 @@
|
||||
+P: /devices/LNXSYSTM:00/LNXSYBUS:00/ACPI0010:00/LNXCPU:00
|
||||
+E: DEVPATH=/devices/LNXSYSTM:00/LNXSYBUS:00/ACPI0010:00/LNXCPU:00
|
||||
+E: ID_VENDOR_FROM_DATABASE=The Linux Foundation
|
||||
+E: MODALIAS=acpi:LNXCPU:
|
||||
+E: SUBSYSTEM=acpi
|
||||
+E: USEC_INITIALIZED=1698543
|
||||
+
|
||||
+P: /devices/LNXSYSTM:00/LNXSYBUS:00/ACPI0010:00/LNXCPU:01
|
||||
+E: DEVPATH=/devices/LNXSYSTM:00/LNXSYBUS:00/ACPI0010:00/LNXCPU:01
|
||||
+E: ID_VENDOR_FROM_DATABASE=The Linux Foundation
|
||||
+E: MODALIAS=acpi:LNXCPU:
|
||||
+E: SUBSYSTEM=acpi
|
||||
+E: USEC_INITIALIZED=1698839
|
||||
+
|
||||
+P: /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0103:00
|
||||
+E: DEVPATH=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0103:00
|
||||
+E: ID_VENDOR_FROM_DATABASE=The Linux Foundation
|
||||
+E: MODALIAS=acpi:PNP0103:
|
||||
+E: SUBSYSTEM=acpi
|
||||
+E: USEC_INITIALIZED=1697906
|
||||
+
|
||||
+P: /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00
|
||||
+E: DEVPATH=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00
|
||||
+E: ID_VENDOR_FROM_DATABASE=The Linux Foundation
|
||||
+E: MODALIAS=acpi:PNP0A03:
|
||||
+E: SUBSYSTEM=acpi
|
||||
+E: USEC_INITIALIZED=1698109
|
||||
+
|
||||
+P: /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/PNP0A06:00
|
||||
+E: DEVPATH=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/PNP0A06:00
|
||||
+E: ID_VENDOR_FROM_DATABASE=The Linux Foundation
|
||||
+E: MODALIAS=acpi:PNP0A06:
|
||||
+E: SUBSYSTEM=acpi
|
||||
+E: USEC_INITIALIZED=1702939
|
||||
+P: /devices/LNXSYSTM:00
|
||||
+E: DEVPATH=/devices/LNXSYSTM:00
|
||||
+E: ID_VENDOR_FROM_DATABASE=The Linux Foundation
|
||||
+E: MODALIAS=acpi:LNXSYSTM:
|
||||
+E: SUBSYSTEM=acpi
|
||||
+E: USEC_INITIALIZED=1694509
|
||||
+
|
||||
+P: /devices/LNXSYSTM:00/LNXPWRBN:00
|
||||
+E: DEVPATH=/devices/LNXSYSTM:00/LNXPWRBN:00
|
||||
+E: DRIVER=button
|
||||
+E: ID_VENDOR_FROM_DATABASE=The Linux Foundation
|
||||
+E: MODALIAS=acpi:LNXPWRBN:
|
||||
+E: SUBSYSTEM=acpi
|
||||
+E: USEC_INITIALIZED=1695034
|
||||
+
|
||||
+P: /devices/LNXSYSTM:00/LNXPWRBN:00/input/input0
|
||||
+E: DEVPATH=/devices/LNXSYSTM:00/LNXPWRBN:00/input/input0
|
||||
+E: EV=3
|
||||
+E: ID_FOR_SEAT=input-acpi-LNXPWRBN_00
|
||||
+E: ID_INPUT=1
|
||||
+E: ID_INPUT_KEY=1
|
||||
+E: ID_PATH=acpi-LNXPWRBN:00
|
||||
+E: ID_PATH_TAG=acpi-LNXPWRBN_00
|
||||
+E: KEY=10000000000000 0
|
||||
+E: MODALIAS=input:b0019v0000p0001e0000-e0,1,k74,ramlsfw
|
||||
+E: NAME="Power Button"
|
||||
+E: PHYS="LNXPWRBN/button/input0"
|
||||
+E: PRODUCT=19/0/1/0
|
||||
+E: PROP=0
|
||||
+E: SUBSYSTEM=input
|
||||
+E: TAGS=:seat:
|
||||
+E: USEC_INITIALIZED=1697068
|
||||
+
|
||||
+P: /devices/LNXSYSTM:00/LNXPWRBN:00/input/input0/event0
|
||||
+N: input/event0
|
||||
+E: DEVNAME=/dev/input/event0
|
||||
+E: DEVPATH=/devices/LNXSYSTM:00/LNXPWRBN:00/input/input0/event0
|
||||
+E: ID_INPUT=1
|
||||
+E: ID_INPUT_KEY=1
|
||||
+E: ID_PATH=acpi-LNXPWRBN:00
|
||||
+E: ID_PATH_TAG=acpi-LNXPWRBN_00
|
||||
+E: MAJOR=13
|
||||
+E: MINOR=64
|
||||
+E: SUBSYSTEM=input
|
||||
+E: TAGS=:power-switch:
|
||||
+E: USEC_INITIALIZED=1744996
|
||||
+
|
||||
+P: /devices/LNXSYSTM:00/LNXPWRBN:00/wakeup/wakeup10
|
||||
+E: DEVPATH=/devices/LNXSYSTM:00/LNXPWRBN:00/wakeup/wakeup10
|
||||
+E: SUBSYSTEM=wakeup
|
||||
+
|
||||
+P: /devices/LNXSYSTM:00/LNXSYBUS:00
|
||||
+E: DEVPATH=/devices/LNXSYSTM:00/LNXSYBUS:00
|
||||
+E: ID_VENDOR_FROM_DATABASE=The Linux Foundation
|
||||
+E: MODALIAS=acpi:LNXSYBUS:
|
||||
+E: SUBSYSTEM=acpi
|
||||
+E: USEC_INITIALIZED=1695925
|
||||
+
|
||||
+P: /devices/LNXSYSTM:00/LNXSYBUS:00/ACPI0010:00
|
||||
+E: DEVPATH=/devices/LNXSYSTM:00/LNXSYBUS:00/ACPI0010:00
|
||||
+E: ID_VENDOR_FROM_DATABASE=The Linux Foundation
|
||||
+E: MODALIAS=acpi:ACPI0010:PNP0A05:
|
||||
+E: SUBSYSTEM=acpi
|
||||
+E: USEC_INITIALIZED=1698058
|
||||
+
|
||||
+P: /devices/LNXSYSTM:00/LNXSYBUS:00/ACPI0010:00/LNXCPU:00
|
||||
+E: DEVPATH=/devices/LNXSYSTM:00/LNXSYBUS:00/ACPI0010:00/LNXCPU:00
|
||||
+E: ID_VENDOR_FROM_DATABASE=The Linux Foundation
|
||||
+E: MODALIAS=acpi:LNXCPU:
|
||||
+E: SUBSYSTEM=acpi
|
||||
+E: USEC_INITIALIZED=1698543
|
||||
+
|
||||
+P: /devices/LNXSYSTM:00/LNXSYBUS:00/ACPI0010:00/LNXCPU:01
|
||||
+E: DEVPATH=/devices/LNXSYSTM:00/LNXSYBUS:00/ACPI0010:00/LNXCPU:01
|
||||
+E: ID_VENDOR_FROM_DATABASE=The Linux Foundation
|
||||
+E: MODALIAS=acpi:LNXCPU:
|
||||
+E: SUBSYSTEM=acpi
|
||||
+E: USEC_INITIALIZED=1698839
|
||||
+
|
||||
+P: /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0103:00
|
||||
+E: DEVPATH=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0103:00
|
||||
+E: ID_VENDOR_FROM_DATABASE=The Linux Foundation
|
||||
+E: MODALIAS=acpi:PNP0103:
|
||||
+E: SUBSYSTEM=acpi
|
||||
+E: USEC_INITIALIZED=1697906
|
||||
+
|
||||
+P: /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00
|
||||
+E: DEVPATH=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00
|
||||
+E: ID_VENDOR_FROM_DATABASE=The Linux Foundation
|
||||
+E: MODALIAS=acpi:PNP0A03:
|
||||
+E: SUBSYSTEM=acpi
|
||||
+E: USEC_INITIALIZED=1698109
|
||||
+
|
||||
+P: /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/PNP0A06:00
|
||||
+E: DEVPATH=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/PNP0A06:00
|
||||
+E: ID_VENDOR_FROM_DATABASE=The Linux Foundation
|
||||
+E: MODALIAS=acpi:PNP0A06:
|
||||
+E: SUBSYSTEM=acpi
|
||||
+E: USEC_INITIALIZED=1702939
|
||||
+
|
||||
diff --git a/repos/system_upgrade/common/actors/udev/udevadminfo/tests/test_udevadminfo.py b/repos/system_upgrade/common/actors/udev/udevadminfo/tests/test_udevadminfo.py
|
||||
new file mode 100644
|
||||
index 00000000..f465d6f6
|
||||
--- /dev/null
|
||||
+++ b/repos/system_upgrade/common/actors/udev/udevadminfo/tests/test_udevadminfo.py
|
||||
@@ -0,0 +1,40 @@
|
||||
+import os
|
||||
+
|
||||
+import pytest
|
||||
+
|
||||
+from leapp.exceptions import StopActorExecutionError
|
||||
+from leapp.libraries.actor import udevadminfo
|
||||
+from leapp.libraries.common import testutils
|
||||
+from leapp.libraries.stdlib import api, CalledProcessError
|
||||
+from leapp.models import UdevAdmInfoData
|
||||
+
|
||||
+CUR_DIR = os.path.dirname(os.path.abspath(__file__))
|
||||
+
|
||||
+
|
||||
+def _raise_call_error(*args):
|
||||
+ raise CalledProcessError(
|
||||
+ message='A Leapp Command Error occurred.',
|
||||
+ command=args,
|
||||
+ result={'signal': None, 'exit_code': 1, 'pid': 0, 'stdout': 'fake', 'stderr': 'fake'}
|
||||
+ )
|
||||
+
|
||||
+
|
||||
+def test_failed_run(monkeypatch):
|
||||
+ monkeypatch.setattr(api, 'produce', testutils.produce_mocked())
|
||||
+ monkeypatch.setattr(udevadminfo, 'run', _raise_call_error)
|
||||
+
|
||||
+ with pytest.raises(StopActorExecutionError):
|
||||
+ udevadminfo.process()
|
||||
+
|
||||
+
|
||||
+def test_udevadminfo(monkeypatch):
|
||||
+
|
||||
+ with open(os.path.join(CUR_DIR, 'files', 'udevadm_database'), 'r') as fp:
|
||||
+ mocked_data = fp.read()
|
||||
+ monkeypatch.setattr(api, 'produce', testutils.produce_mocked())
|
||||
+ monkeypatch.setattr(udevadminfo, 'run', lambda *args: {'stdout': mocked_data})
|
||||
+ udevadminfo.process()
|
||||
+
|
||||
+ assert api.produce.called == 1
|
||||
+ assert isinstance(api.produce.model_instances[0], UdevAdmInfoData)
|
||||
+ assert api.produce.model_instances[0].db == mocked_data
|
||||
--
|
||||
2.42.0
|
||||
|
@ -1,166 +0,0 @@
|
||||
From 3066cad4e7a2a440a93f01fd0c0cbec84bb5485f Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Fr=C3=A1trik?=
|
||||
<93993694+tomasfratrik@users.noreply.github.com>
|
||||
Date: Thu, 11 Apr 2024 13:48:31 +0200
|
||||
Subject: [PATCH 07/34] Add unit tests for scansourcefiles actor (#1190)
|
||||
|
||||
Jira: OAMG-10367
|
||||
---
|
||||
.../tests/unit_test_scansourcefiles.py | 147 +++++++++++++++++-
|
||||
1 file changed, 142 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/repos/system_upgrade/common/actors/scansourcefiles/tests/unit_test_scansourcefiles.py b/repos/system_upgrade/common/actors/scansourcefiles/tests/unit_test_scansourcefiles.py
|
||||
index 6a6b009a..40ae2408 100644
|
||||
--- a/repos/system_upgrade/common/actors/scansourcefiles/tests/unit_test_scansourcefiles.py
|
||||
+++ b/repos/system_upgrade/common/actors/scansourcefiles/tests/unit_test_scansourcefiles.py
|
||||
@@ -1,5 +1,142 @@
|
||||
-def test_scansourcefiles():
|
||||
- # TODO(pstodulk): keeping unit tests for later after I check the idea
|
||||
- # of this actor with the team.
|
||||
- # JIRA: OAMG-10367
|
||||
- pass
|
||||
+import os
|
||||
+
|
||||
+import pytest
|
||||
+
|
||||
+from leapp.libraries.actor import scansourcefiles
|
||||
+from leapp.libraries.common import testutils
|
||||
+from leapp.libraries.stdlib import api, CalledProcessError
|
||||
+from leapp.models import FileInfo, TrackedFilesInfoSource
|
||||
+
|
||||
+
|
||||
+@pytest.mark.parametrize(
|
||||
+ ('run_output', 'expected_output_is_modified'),
|
||||
+ (
|
||||
+ ({'exit_code': 0}, False),
|
||||
+ ({'exit_code': 1, 'stdout': 'missing /boot/efi/EFI (Permission denied)'}, True),
|
||||
+ ({'exit_code': 1, 'stdout': 'S.5...... c /etc/openldap/ldap.conf'}, True),
|
||||
+ ({'exit_code': 1, 'stdout': '..?...... c /etc/libaudit.conf'}, False),
|
||||
+ ({'exit_code': 1, 'stdout': '.....UG.. g /var/run/avahi-daemon'}, False),
|
||||
+ )
|
||||
+)
|
||||
+def test_is_modified(monkeypatch, run_output, expected_output_is_modified):
|
||||
+ input_file = '/file'
|
||||
+
|
||||
+ def mocked_run(cmd, *args, **kwargs):
|
||||
+ assert cmd == ['rpm', '-Vf', '--nomtime', input_file]
|
||||
+ return run_output
|
||||
+
|
||||
+ monkeypatch.setattr(scansourcefiles, 'run', mocked_run)
|
||||
+ assert scansourcefiles.is_modified(input_file) == expected_output_is_modified
|
||||
+
|
||||
+
|
||||
+@pytest.mark.parametrize(
|
||||
+ 'run_output',
|
||||
+ [
|
||||
+ {'stdout': ['']},
|
||||
+ {'stdout': ['rpm']},
|
||||
+ {'stdout': ['rpm1', 'rpm2']},
|
||||
+ ]
|
||||
+)
|
||||
+def test_get_rpm_name(monkeypatch, run_output):
|
||||
+ input_file = '/file'
|
||||
+
|
||||
+ def mocked_run(cmd, *args, **kwargs):
|
||||
+ assert cmd == ['rpm', '-qf', '--queryformat', r'%{NAME}\n', input_file]
|
||||
+ return run_output
|
||||
+
|
||||
+ monkeypatch.setattr(scansourcefiles, 'run', mocked_run)
|
||||
+ monkeypatch.setattr(api, 'current_logger', testutils.logger_mocked())
|
||||
+ assert scansourcefiles._get_rpm_name(input_file) == run_output['stdout'][0]
|
||||
+
|
||||
+ if len(run_output['stdout']) > 1:
|
||||
+ expected_warnmsg = ('The {} file is owned by multiple rpms: {}.'
|
||||
+ .format(input_file, ', '.join(run_output['stdout'])))
|
||||
+ assert api.current_logger.warnmsg == [expected_warnmsg]
|
||||
+
|
||||
+
|
||||
+def test_get_rpm_name_error(monkeypatch):
|
||||
+ input_file = '/file'
|
||||
+
|
||||
+ def mocked_run(cmd, *args, **kwargs):
|
||||
+ assert cmd == ['rpm', '-qf', '--queryformat', r'%{NAME}\n', input_file]
|
||||
+ raise CalledProcessError("mocked error", cmd, "result")
|
||||
+
|
||||
+ monkeypatch.setattr(scansourcefiles, 'run', mocked_run)
|
||||
+ assert scansourcefiles._get_rpm_name(input_file) == ''
|
||||
+
|
||||
+
|
||||
+@pytest.mark.parametrize(
|
||||
+ ('input_file', 'exists', 'rpm_name', 'is_modified'),
|
||||
+ (
|
||||
+ ('/not_existing_file', False, '', False),
|
||||
+ ('/not_existing_file_rpm_owned', False, 'rpm', False),
|
||||
+ ('/not_existing_file_rpm_owned_modified', False, 'rpm', True),
|
||||
+ ('/existing_file_not_modified', True, '', False),
|
||||
+ ('/existing_file_owned_by_rpm_not_modified', True, 'rpm', False),
|
||||
+ ('/existing_file_owned_by_rpm_modified', True, 'rpm', True),
|
||||
+ )
|
||||
+)
|
||||
+def test_scan_file(monkeypatch, input_file, exists, rpm_name, is_modified):
|
||||
+ monkeypatch.setattr(scansourcefiles, 'is_modified', lambda _: is_modified)
|
||||
+ monkeypatch.setattr(scansourcefiles, '_get_rpm_name', lambda _: rpm_name)
|
||||
+ monkeypatch.setattr(os.path, 'exists', lambda _: exists)
|
||||
+
|
||||
+ expected_model_output = FileInfo(path=input_file, exists=exists, rpm_name=rpm_name, is_modified=is_modified)
|
||||
+ assert scansourcefiles.scan_file(input_file) == expected_model_output
|
||||
+
|
||||
+
|
||||
+@pytest.mark.parametrize(
|
||||
+ ('input_files'),
|
||||
+ (
|
||||
+ ([]),
|
||||
+ (['/file1']),
|
||||
+ (['/file1', '/file2']),
|
||||
+ )
|
||||
+)
|
||||
+def test_scan_files(monkeypatch, input_files):
|
||||
+ base_data = {
|
||||
+ 'exists': False,
|
||||
+ 'rpm_name': '',
|
||||
+ 'is_modified': False
|
||||
+ }
|
||||
+
|
||||
+ def scan_file_mocked(input_file):
|
||||
+ return FileInfo(path=input_file, **base_data)
|
||||
+
|
||||
+ monkeypatch.setattr(scansourcefiles, 'scan_file', scan_file_mocked)
|
||||
+ expected_output_list = [FileInfo(path=input_file, **base_data) for input_file in input_files]
|
||||
+ assert scansourcefiles.scan_files(input_files) == expected_output_list
|
||||
+
|
||||
+
|
||||
+@pytest.mark.parametrize(
|
||||
+ 'rhel_major_version', ['8', '9']
|
||||
+)
|
||||
+def test_tracked_files(monkeypatch, rhel_major_version):
|
||||
+ TRACKED_FILES_MOCKED = {
|
||||
+ 'common': [
|
||||
+ '/file1',
|
||||
+ ],
|
||||
+ '8': [
|
||||
+ '/file2',
|
||||
+ ],
|
||||
+ '9': [
|
||||
+ '/file3',
|
||||
+ ],
|
||||
+ }
|
||||
+
|
||||
+ def scan_files_mocked(files):
|
||||
+ return [FileInfo(path=file_path, exists=False, rpm_name='', is_modified=False) for file_path in files]
|
||||
+
|
||||
+ monkeypatch.setattr(api, 'produce', testutils.produce_mocked())
|
||||
+ monkeypatch.setattr(scansourcefiles, 'TRACKED_FILES', TRACKED_FILES_MOCKED)
|
||||
+ monkeypatch.setattr(scansourcefiles, 'get_source_major_version', lambda: rhel_major_version)
|
||||
+ monkeypatch.setattr(scansourcefiles, 'scan_files', scan_files_mocked)
|
||||
+
|
||||
+ scansourcefiles.process()
|
||||
+
|
||||
+ tracked_files_model = api.produce.model_instances[0]
|
||||
+ assert api.produce.called == 1
|
||||
+ assert isinstance(tracked_files_model, TrackedFilesInfoSource)
|
||||
+ # assert only 1 common and 1 version file were scanned
|
||||
+ assert len(tracked_files_model.files) == 2
|
||||
+ assert all(isinstance(files_list_item, FileInfo) for files_list_item in tracked_files_model.files)
|
||||
--
|
||||
2.42.0
|
||||
|
@ -1,72 +0,0 @@
|
||||
From 82070789813ae64f8fadc31a5096bf8df4124f75 Mon Sep 17 00:00:00 2001
|
||||
From: mhecko <mhecko@redhat.com>
|
||||
Date: Tue, 2 Apr 2024 11:24:49 +0200
|
||||
Subject: [PATCH 08/34] pes_events_scanner: overwrite repositories when
|
||||
applying an event
|
||||
|
||||
The Package class has custom __hash__ and __eq__ methods in order to
|
||||
achieve a straightforward presentation via set manipulation. However,
|
||||
this causes problems, e.g., when applying split events. For example:
|
||||
Applying the event Split(in={(A, repo1)}, out={(A, repo2), (B, repo2)})
|
||||
to the package state {(A, repo1), (B, repo1)} results in the following:
|
||||
{(A, repo1), (B, repo1)} --apply--> {(A, repo2), (B, repo1)}
|
||||
which is undesired as repo1 is a source system repository. Such
|
||||
a package will get reported to the user as potentially removed during
|
||||
the upgrade. This patch addresses this unwanted behavior.
|
||||
---
|
||||
.../peseventsscanner/libraries/pes_events_scanner.py | 9 ++++++++-
|
||||
.../peseventsscanner/tests/test_pes_event_scanner.py | 9 +++++++++
|
||||
2 files changed, 17 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/repos/system_upgrade/common/actors/peseventsscanner/libraries/pes_events_scanner.py b/repos/system_upgrade/common/actors/peseventsscanner/libraries/pes_events_scanner.py
|
||||
index f9411dfe..f5cb2613 100644
|
||||
--- a/repos/system_upgrade/common/actors/peseventsscanner/libraries/pes_events_scanner.py
|
||||
+++ b/repos/system_upgrade/common/actors/peseventsscanner/libraries/pes_events_scanner.py
|
||||
@@ -139,8 +139,11 @@ def compute_pkg_changes_between_consequent_releases(source_installed_pkgs,
|
||||
if event.action == Action.PRESENT:
|
||||
for pkg in event.in_pkgs:
|
||||
if pkg in seen_pkgs:
|
||||
+ # First remove the package with the old repository and add it back, but now with the new
|
||||
+ # repository. As the Package class has a custom __hash__ and __eq__ comparing only name
|
||||
+ # and modulestream, the pkg.repository field is ignore and therefore the add() call
|
||||
+ # does not update the entry.
|
||||
if pkg in target_pkgs:
|
||||
- # Remove the package with the old repository, add the one with the new one
|
||||
target_pkgs.remove(pkg)
|
||||
target_pkgs.add(pkg)
|
||||
elif event.action == Action.DEPRECATED:
|
||||
@@ -163,7 +166,11 @@ def compute_pkg_changes_between_consequent_releases(source_installed_pkgs,
|
||||
event.id, event.action, removed_pkgs_str, added_pkgs_str)
|
||||
|
||||
# In pkgs are present, event can be applied
|
||||
+ # Note: We do a .difference(event.out_packages) followed by an .union(event.out_packages) to overwrite
|
||||
+ # # repositories of the packages (Package has overwritten __hash__ and __eq__, ignoring
|
||||
+ # # the repository field)
|
||||
target_pkgs = target_pkgs.difference(event.in_pkgs)
|
||||
+ target_pkgs = target_pkgs.difference(event.out_pkgs)
|
||||
target_pkgs = target_pkgs.union(event.out_pkgs)
|
||||
|
||||
pkgs_to_demodularize = pkgs_to_demodularize.difference(event.in_pkgs)
|
||||
diff --git a/repos/system_upgrade/common/actors/peseventsscanner/tests/test_pes_event_scanner.py b/repos/system_upgrade/common/actors/peseventsscanner/tests/test_pes_event_scanner.py
|
||||
index 7cdcf820..80ece770 100644
|
||||
--- a/repos/system_upgrade/common/actors/peseventsscanner/tests/test_pes_event_scanner.py
|
||||
+++ b/repos/system_upgrade/common/actors/peseventsscanner/tests/test_pes_event_scanner.py
|
||||
@@ -123,6 +123,15 @@ def pkgs_into_tuples(pkgs):
|
||||
[(8, 0)],
|
||||
{Package('renamed-out', 'rhel8-repo', None)}
|
||||
),
|
||||
+ (
|
||||
+ {Package('A', 'rhel7-repo', None), Package('B', 'rhel7-repo', None)},
|
||||
+ [
|
||||
+ Event(1, Action.SPLIT, {Package('A', 'rhel7-repo', None)},
|
||||
+ {Package('A', 'rhel8-repo', None), Package('B', 'rhel8-repo', None)}, (7, 6), (8, 0), [])
|
||||
+ ],
|
||||
+ [(8, 0)],
|
||||
+ {Package('A', 'rhel8-repo', None), Package('B', 'rhel8-repo', None)}
|
||||
+ ),
|
||||
)
|
||||
)
|
||||
def test_event_application_fundamentals(monkeypatch, installed_pkgs, events, releases, expected_target_pkgs):
|
||||
--
|
||||
2.42.0
|
||||
|
@ -1,53 +0,0 @@
|
||||
From 1f8b8f3259d7daff63dff0a4d630b36e615e416d Mon Sep 17 00:00:00 2001
|
||||
From: David Kubek <dkubek@redhat.com>
|
||||
Date: Wed, 10 Apr 2024 12:08:23 +0200
|
||||
Subject: [PATCH 09/34] Modify upgrade not terminate after lockfile detected
|
||||
|
||||
Previously, when the upgrade failed in the initram the file
|
||||
/sysroot/root/tmp_leapp_py3/.leapp_upgrade_failed has been generated and
|
||||
upon detecting this file leapp triggered an emergency shell. This caused
|
||||
the original failure to be hidden from the customer.
|
||||
|
||||
With this commit, we no longer crash immediately upon detecting the file
|
||||
but rather continue and "wait" for the underlying issue and error to
|
||||
emerge.
|
||||
|
||||
RHEL-24148
|
||||
---
|
||||
.../files/dracut/85sys-upgrade-redhat/do-upgrade.sh | 13 +++++++++----
|
||||
1 file changed, 9 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/repos/system_upgrade/common/actors/commonleappdracutmodules/files/dracut/85sys-upgrade-redhat/do-upgrade.sh b/repos/system_upgrade/common/actors/commonleappdracutmodules/files/dracut/85sys-upgrade-redhat/do-upgrade.sh
|
||||
index 4a6f7b62..56a94b5d 100755
|
||||
--- a/repos/system_upgrade/common/actors/commonleappdracutmodules/files/dracut/85sys-upgrade-redhat/do-upgrade.sh
|
||||
+++ b/repos/system_upgrade/common/actors/commonleappdracutmodules/files/dracut/85sys-upgrade-redhat/do-upgrade.sh
|
||||
@@ -282,6 +282,11 @@ do_upgrade() {
|
||||
local dirname
|
||||
dirname="$("$NEWROOT/bin/dirname" "$NEWROOT$LEAPP_FAILED_FLAG_FILE")"
|
||||
[ -d "$dirname" ] || mkdir "$dirname"
|
||||
+
|
||||
+ echo >&2 "Creating file $NEWROOT$LEAPP_FAILED_FLAG_FILE"
|
||||
+ echo >&2 "Warning: Leapp upgrade failed and there is an issue blocking the upgrade."
|
||||
+ echo >&2 "Please file a support case with /var/log/leapp/leapp-upgrade.log attached"
|
||||
+
|
||||
"$NEWROOT/bin/touch" "$NEWROOT$LEAPP_FAILED_FLAG_FILE"
|
||||
fi
|
||||
|
||||
@@ -358,10 +363,10 @@ mount -o "remount,rw" "$NEWROOT"
|
||||
# check if leapp previously failed in the initramfs, if it did return to the emergency shell
|
||||
[ -f "$NEWROOT$LEAPP_FAILED_FLAG_FILE" ] && {
|
||||
echo >&2 "Found file $NEWROOT$LEAPP_FAILED_FLAG_FILE"
|
||||
- echo >&2 "Error: Leapp previously failed and cannot continue, returning back to emergency shell"
|
||||
- echo >&2 "Please file a support case with $NEWROOT/var/log/leapp/leapp-upgrade.log attached"
|
||||
- echo >&2 "To rerun the upgrade upon exiting the dracut shell remove the $NEWROOT$LEAPP_FAILED_FLAG_FILE file"
|
||||
- exit 1
|
||||
+ echo >&2 "Warning: Leapp failed on a previous execution and something might be blocking the upgrade."
|
||||
+ echo >&2 "Continuing with the upgrade anyway. Note that any subsequent error might be potentially misleading due to a previous failure."
|
||||
+ echo >&2 "A log file will be generated at $NEWROOT/var/log/leapp/leapp-upgrade.log."
|
||||
+ echo >&2 "In case of persisting failure, if possible, try to boot to the original system and file a support case with /var/log/leapp/leapp-upgrade.log attached."
|
||||
}
|
||||
|
||||
[ ! -x "$NEWROOT$LEAPPBIN" ] && {
|
||||
--
|
||||
2.42.0
|
||||
|
@ -1,37 +0,0 @@
|
||||
From 1fb7e78bfa86163c27c309d6244298d4b3075762 Mon Sep 17 00:00:00 2001
|
||||
From: Matej Matuska <mmatuska@redhat.com>
|
||||
Date: Fri, 2 Feb 2024 12:32:15 +0100
|
||||
Subject: [PATCH 10/34] Make the reboot required text more visible in the
|
||||
console output
|
||||
|
||||
The "A reboot is required to continue. Please reboot your system."
|
||||
message is printed before the reports summary and thus is easily
|
||||
overlooked by users.
|
||||
|
||||
This patch adds a second such message after the report summary to
|
||||
improve this.
|
||||
|
||||
Jira: RHEL-22736
|
||||
---
|
||||
commands/upgrade/__init__.py | 5 +++++
|
||||
1 file changed, 5 insertions(+)
|
||||
|
||||
diff --git a/commands/upgrade/__init__.py b/commands/upgrade/__init__.py
|
||||
index c42b7cba..cc5fe647 100644
|
||||
--- a/commands/upgrade/__init__.py
|
||||
+++ b/commands/upgrade/__init__.py
|
||||
@@ -113,6 +113,11 @@ def upgrade(args, breadcrumbs):
|
||||
|
||||
if workflow.failure:
|
||||
sys.exit(1)
|
||||
+ elif not args.resume:
|
||||
+ sys.stdout.write(
|
||||
+ 'Reboot the system to continue with the upgrade.'
|
||||
+ ' This might take a while depending on the system configuration.\n'
|
||||
+ )
|
||||
|
||||
|
||||
def register(base_command):
|
||||
--
|
||||
2.42.0
|
||||
|
@ -1,176 +0,0 @@
|
||||
From 8fe2a2d35395a43b8449354d68479d8339ef49ab Mon Sep 17 00:00:00 2001
|
||||
From: mhecko <mhecko@redhat.com>
|
||||
Date: Sun, 21 Apr 2024 22:40:38 +0200
|
||||
Subject: [PATCH 11/34] check_grub_legacy: inhibit when GRUB legacy is present
|
||||
|
||||
Adds a new actor checking for whether any of the GRUB devices
|
||||
have the old GRUB Legacy installed. If any of such devices
|
||||
is detected, the upgrade is inhibited. The GRUB Legacy is detected
|
||||
by searching for the string 'GRUB version 0.94' in `file -s`
|
||||
of the device.
|
||||
---
|
||||
.../el7toel8/actors/checklegacygrub/actor.py | 20 ++++++
|
||||
.../libraries/check_legacy_grub.py | 71 +++++++++++++++++++
|
||||
.../tests/test_check_legacy_grub.py | 45 ++++++++++++
|
||||
3 files changed, 136 insertions(+)
|
||||
create mode 100644 repos/system_upgrade/el7toel8/actors/checklegacygrub/actor.py
|
||||
create mode 100644 repos/system_upgrade/el7toel8/actors/checklegacygrub/libraries/check_legacy_grub.py
|
||||
create mode 100644 repos/system_upgrade/el7toel8/actors/checklegacygrub/tests/test_check_legacy_grub.py
|
||||
|
||||
diff --git a/repos/system_upgrade/el7toel8/actors/checklegacygrub/actor.py b/repos/system_upgrade/el7toel8/actors/checklegacygrub/actor.py
|
||||
new file mode 100644
|
||||
index 00000000..1fc7dde4
|
||||
--- /dev/null
|
||||
+++ b/repos/system_upgrade/el7toel8/actors/checklegacygrub/actor.py
|
||||
@@ -0,0 +1,20 @@
|
||||
+from leapp.actors import Actor
|
||||
+from leapp.libraries.actor import check_legacy_grub as check_legacy_grub_lib
|
||||
+from leapp.reporting import Report
|
||||
+from leapp.tags import FactsPhaseTag, IPUWorkflowTag
|
||||
+
|
||||
+
|
||||
+class CheckLegacyGrub(Actor):
|
||||
+ """
|
||||
+ Check whether GRUB Legacy is installed in the MBR.
|
||||
+
|
||||
+ GRUB Legacy is deprecated since RHEL 7 in favour of GRUB2.
|
||||
+ """
|
||||
+
|
||||
+ name = 'check_grub_legacy'
|
||||
+ consumes = ()
|
||||
+ produces = (Report,)
|
||||
+ tags = (FactsPhaseTag, IPUWorkflowTag)
|
||||
+
|
||||
+ def process(self):
|
||||
+ check_legacy_grub_lib.check_grub_disks_for_legacy_grub()
|
||||
diff --git a/repos/system_upgrade/el7toel8/actors/checklegacygrub/libraries/check_legacy_grub.py b/repos/system_upgrade/el7toel8/actors/checklegacygrub/libraries/check_legacy_grub.py
|
||||
new file mode 100644
|
||||
index 00000000..d02c14f9
|
||||
--- /dev/null
|
||||
+++ b/repos/system_upgrade/el7toel8/actors/checklegacygrub/libraries/check_legacy_grub.py
|
||||
@@ -0,0 +1,71 @@
|
||||
+from leapp import reporting
|
||||
+from leapp.exceptions import StopActorExecution
|
||||
+from leapp.libraries.common import grub as grub_lib
|
||||
+from leapp.libraries.stdlib import api, CalledProcessError, run
|
||||
+from leapp.reporting import create_report
|
||||
+
|
||||
+# There is no grub legacy package on RHEL7, therefore, the system must have been upgraded from RHEL6
|
||||
+MIGRATION_TO_GRUB2_GUIDE_URL = 'https://access.redhat.com/solutions/2643721'
|
||||
+
|
||||
+
|
||||
+def has_legacy_grub(device):
|
||||
+ try:
|
||||
+ output = run(['file', '-s', device])
|
||||
+ except CalledProcessError as err:
|
||||
+ msg = 'Failed to determine the file type for the special device `{0}`. Full error: `{1}`'
|
||||
+ api.current_logger().warning(msg.format(device, str(err)))
|
||||
+
|
||||
+ # According to `file` manpage, the exit code > 0 iff the file does not exists (meaning)
|
||||
+ # that grub_lib.get_grub_devices() is unreliable for some reason (better stop the upgrade),
|
||||
+ # or because the file type could not be determined. However, its manpage directly gives examples
|
||||
+ # of file -s being used on block devices, so this should be unlikely - especially if one would
|
||||
+ # consider that get_grub_devices was able to determine that it is a grub device.
|
||||
+ raise StopActorExecution()
|
||||
+
|
||||
+ grub_legacy_version_string = 'GRUB version 0.94'
|
||||
+ return grub_legacy_version_string in output['stdout']
|
||||
+
|
||||
+
|
||||
+def check_grub_disks_for_legacy_grub():
|
||||
+ # Both GRUB2 and Grub Legacy are recognized by `get_grub_devices`
|
||||
+ grub_devices = grub_lib.get_grub_devices()
|
||||
+
|
||||
+ legacy_grub_devices = []
|
||||
+ for device in grub_devices:
|
||||
+ if has_legacy_grub(device):
|
||||
+ legacy_grub_devices.append(device)
|
||||
+
|
||||
+ if legacy_grub_devices:
|
||||
+ details = (
|
||||
+ 'Leapp detected GRUB Legacy to be installed on the system. '
|
||||
+ 'The GRUB Legacy bootloader is unsupported on RHEL7 and GRUB2 must be used instead. '
|
||||
+ 'The presence of GRUB Legacy is possible on systems that have been upgraded from RHEL 6 in the past, '
|
||||
+ 'but required manual post-upgrade steps have not been performed. '
|
||||
+ 'Note that the in-place upgrade from RHEL 6 to RHEL 7 systems is in such a case '
|
||||
+ 'considered as unfinished.\n\n'
|
||||
+
|
||||
+ 'GRUB Legacy has been detected on following devices:\n'
|
||||
+ '{block_devices_fmt}\n'
|
||||
+ )
|
||||
+
|
||||
+ hint = (
|
||||
+ 'Migrate to the GRUB2 bootloader on the reported devices. '
|
||||
+ 'Also finish other post-upgrade steps related to the previous in-place upgrade, the majority of which '
|
||||
+ 'is a part of the related preupgrade report for upgrades from RHEL 6 to RHEL 7.'
|
||||
+ 'If you are not sure whether all previously required post-upgrade steps '
|
||||
+ 'have been performed, consider a clean installation of the RHEL 8 system instead. '
|
||||
+ 'Note that the in-place upgrade to RHEL 8 can fail in various ways '
|
||||
+ 'if the RHEL 7 system is misconfigured.'
|
||||
+ )
|
||||
+
|
||||
+ block_devices_fmt = '\n'.join(legacy_grub_devices)
|
||||
+ create_report([
|
||||
+ reporting.Title("GRUB Legacy is used on the system"),
|
||||
+ reporting.Summary(details.format(block_devices_fmt=block_devices_fmt)),
|
||||
+ reporting.Severity(reporting.Severity.HIGH),
|
||||
+ reporting.Groups([reporting.Groups.BOOT]),
|
||||
+ reporting.Remediation(hint=hint),
|
||||
+ reporting.Groups([reporting.Groups.INHIBITOR]),
|
||||
+ reporting.ExternalLink(url=MIGRATION_TO_GRUB2_GUIDE_URL,
|
||||
+ title='How to install GRUB2 after a RHEL6 to RHEL7 upgrade'),
|
||||
+ ])
|
||||
diff --git a/repos/system_upgrade/el7toel8/actors/checklegacygrub/tests/test_check_legacy_grub.py b/repos/system_upgrade/el7toel8/actors/checklegacygrub/tests/test_check_legacy_grub.py
|
||||
new file mode 100644
|
||||
index 00000000..d6e5008e
|
||||
--- /dev/null
|
||||
+++ b/repos/system_upgrade/el7toel8/actors/checklegacygrub/tests/test_check_legacy_grub.py
|
||||
@@ -0,0 +1,45 @@
|
||||
+import pytest
|
||||
+
|
||||
+from leapp.libraries.actor import check_legacy_grub as check_legacy_grub_lib
|
||||
+from leapp.libraries.common import grub as grub_lib
|
||||
+from leapp.libraries.common.testutils import create_report_mocked
|
||||
+from leapp.utils.report import is_inhibitor
|
||||
+
|
||||
+VDA_WITH_LEGACY_GRUB = (
|
||||
+ '/dev/vda: x86 boot sector; GRand Unified Bootloader, stage1 version 0x3, '
|
||||
+ 'stage2 address 0x2000, stage2 segment 0x200, GRUB version 0.94; partition 1: ID=0x83, '
|
||||
+ 'active, starthead 32, startsector 2048, 1024000 sectors; partition 2: ID=0x83, starthead 221, '
|
||||
+ 'startsector 1026048, 19945472 sectors, code offset 0x48\n'
|
||||
+)
|
||||
+
|
||||
+NVME0N1_VDB_WITH_GRUB = (
|
||||
+ '/dev/nvme0n1: x86 boot sector; partition 1: ID=0x83, active, starthead 32, startsector 2048, 6291456 sectors; '
|
||||
+ 'partition 2: ID=0x83, starthead 191, startsector 6293504, 993921024 sectors, code offset 0x63'
|
||||
+)
|
||||
+
|
||||
+
|
||||
+@pytest.mark.parametrize(
|
||||
+ ('grub_device_to_file_output', 'should_inhibit'),
|
||||
+ [
|
||||
+ ({'/dev/vda': VDA_WITH_LEGACY_GRUB}, True),
|
||||
+ ({'/dev/nvme0n1': NVME0N1_VDB_WITH_GRUB}, False),
|
||||
+ ({'/dev/vda': VDA_WITH_LEGACY_GRUB, '/dev/nvme0n1': NVME0N1_VDB_WITH_GRUB}, True)
|
||||
+ ]
|
||||
+)
|
||||
+def test_check_legacy_grub(monkeypatch, grub_device_to_file_output, should_inhibit):
|
||||
+
|
||||
+ def file_cmd_mock(cmd, *args, **kwargs):
|
||||
+ assert cmd[:2] == ['file', '-s']
|
||||
+ return {'stdout': grub_device_to_file_output[cmd[2]]}
|
||||
+
|
||||
+ monkeypatch.setattr(check_legacy_grub_lib, 'create_report', create_report_mocked())
|
||||
+ monkeypatch.setattr(grub_lib, 'get_grub_devices', lambda: list(grub_device_to_file_output.keys()))
|
||||
+ monkeypatch.setattr(check_legacy_grub_lib, 'run', file_cmd_mock)
|
||||
+
|
||||
+ check_legacy_grub_lib.check_grub_disks_for_legacy_grub()
|
||||
+
|
||||
+ assert bool(check_legacy_grub_lib.create_report.called) == should_inhibit
|
||||
+ if should_inhibit:
|
||||
+ assert len(check_legacy_grub_lib.create_report.reports) == 1
|
||||
+ report = check_legacy_grub_lib.create_report.reports[0]
|
||||
+ assert is_inhibitor(report)
|
||||
--
|
||||
2.42.0
|
||||
|
@ -1,46 +0,0 @@
|
||||
From a4e3906fff5d11e0fb94f5dbe10ed653dc2d0bee Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Matej=20Matu=C5=A1ka?= <mmatuska@redhat.com>
|
||||
Date: Tue, 23 Apr 2024 23:56:57 +0200
|
||||
Subject: [PATCH 12/34] Default channel to GA is not specified otherwise
|
||||
(#1205)
|
||||
|
||||
Originally we tried to map by default repositories from particular channels on the source system to their equivalents on the target system. IOW:
|
||||
|
||||
* eus -> eus
|
||||
* aus -> aus
|
||||
* e4s -> e4s
|
||||
* "ga" -> "ga"
|
||||
...
|
||||
|
||||
However, it has been revealed this logic should not apply on minor releases for which these non-ga (premium) repositories do not exist. So doing upgrade e.g. to 8.9, 8.10 , 9.3 for which specific eus, etc.. repositories are not defined lead to 404 error.
|
||||
|
||||
Discussing this deeply between stakeholders, it has been decided to drop this logic and target always to "ga" repositories unless the leapp is executed with instructions to choose a different channel (using envars, --channel .. option). To prevent this issue.
|
||||
|
||||
It's still possible to require mistakenly e.g. "eus" channel for the target release for which the related repositories are not defined. e.g.:
|
||||
> leapp upgrade --channel eus --target 8.10
|
||||
|
||||
In such a case, the previous errors (404 Not found) can be hit again. But it will not happen by default. In this case, we expect and request people to understand what they want when they use the option.
|
||||
|
||||
@pirat89 : Updated commit msg
|
||||
|
||||
jira: RHEL-24720
|
||||
---
|
||||
commands/upgrade/util.py | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/commands/upgrade/util.py b/commands/upgrade/util.py
|
||||
index b11265ee..9eff0ad1 100644
|
||||
--- a/commands/upgrade/util.py
|
||||
+++ b/commands/upgrade/util.py
|
||||
@@ -207,6 +207,8 @@ def prepare_configuration(args):
|
||||
|
||||
if args.channel:
|
||||
os.environ['LEAPP_TARGET_PRODUCT_CHANNEL'] = args.channel
|
||||
+ elif 'LEAPP_TARGET_PRODUCT_CHANNEL' not in os.environ:
|
||||
+ os.environ['LEAPP_TARGET_PRODUCT_CHANNEL'] = 'ga'
|
||||
|
||||
if args.iso:
|
||||
os.environ['LEAPP_TARGET_ISO'] = args.iso
|
||||
--
|
||||
2.42.0
|
||||
|
@ -1,39 +0,0 @@
|
||||
From 6d05575efdd6c3c728e784add3017d072eda4d5e Mon Sep 17 00:00:00 2001
|
||||
From: Toshio Kuratomi <tkuratom@redhat.com>
|
||||
Date: Tue, 23 Apr 2024 14:03:44 -0700
|
||||
Subject: [PATCH 13/34] Enhance grub2 install failure message.
|
||||
|
||||
The new message informs the useir will happen (they will boot into the old RHEL's kernel) so they
|
||||
understand why they need to run the remediation.
|
||||
|
||||
jira: https://issues.redhat.com/browse/RHEL-29683
|
||||
---
|
||||
.../common/actors/checkgrubcore/actor.py | 10 +++++++---
|
||||
1 file changed, 7 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/repos/system_upgrade/common/actors/checkgrubcore/actor.py b/repos/system_upgrade/common/actors/checkgrubcore/actor.py
|
||||
index ae9e53ef..662c4d64 100644
|
||||
--- a/repos/system_upgrade/common/actors/checkgrubcore/actor.py
|
||||
+++ b/repos/system_upgrade/common/actors/checkgrubcore/actor.py
|
||||
@@ -46,11 +46,15 @@ class CheckGrubCore(Actor):
|
||||
reporting.Title('Leapp could not identify where GRUB2 core is located'),
|
||||
reporting.Summary(
|
||||
'We assumed GRUB2 core is located on the same device(s) as /boot, '
|
||||
- 'however Leapp could not detect GRUB2 on the device(s). '
|
||||
- 'GRUB2 core needs to be updated maually on legacy (BIOS) systems. '
|
||||
+ 'however Leapp could not detect GRUB2 on those device(s). '
|
||||
+ 'This means GRUB2 core will not be updated during the upgrade process and '
|
||||
+ 'the system will probably ' 'boot into the old kernel after the upgrade. '
|
||||
+ 'GRUB2 core needs to be updated manually on legacy (BIOS) systems to '
|
||||
+ 'fix this.'
|
||||
),
|
||||
reporting.Severity(reporting.Severity.HIGH),
|
||||
reporting.Groups([reporting.Groups.BOOT]),
|
||||
reporting.Remediation(
|
||||
- hint='Please run "grub2-install <GRUB_DEVICE> command manually after the upgrade'),
|
||||
+ hint='Please run the "grub2-install <GRUB_DEVICE>" command manually '
|
||||
+ 'after the upgrade'),
|
||||
])
|
||||
--
|
||||
2.42.0
|
||||
|
@ -1,388 +0,0 @@
|
||||
From ea6cd7912ce650f033a972921a2b29636ac304db Mon Sep 17 00:00:00 2001
|
||||
From: mhecko <mhecko@redhat.com>
|
||||
Date: Tue, 2 Apr 2024 19:29:16 +0200
|
||||
Subject: [PATCH 14/34] boot: check first partition offset on GRUB devices
|
||||
|
||||
Check that the first partition starts at least at 1MiB (2048 cylinders),
|
||||
as too small first-partition offsets lead to failures when doing
|
||||
grub2-install. The limit (1MiB) has been chosen as it is a common
|
||||
value set by the disk formatting tools nowadays.
|
||||
|
||||
jira: https://issues.redhat.com/browse/RHEL-3341
|
||||
---
|
||||
.../actors/checkfirstpartitionoffset/actor.py | 24 ++++++
|
||||
.../libraries/check_first_partition_offset.py | 52 +++++++++++++
|
||||
.../test_check_first_partition_offset.py | 51 ++++++++++++
|
||||
.../scangrubdevpartitionlayout/actor.py | 18 +++++
|
||||
.../libraries/scan_layout.py | 64 +++++++++++++++
|
||||
.../tests/test_scan_partition_layout.py | 78 +++++++++++++++++++
|
||||
.../el7toel8/models/partitionlayout.py | 28 +++++++
|
||||
7 files changed, 315 insertions(+)
|
||||
create mode 100644 repos/system_upgrade/el7toel8/actors/checkfirstpartitionoffset/actor.py
|
||||
create mode 100644 repos/system_upgrade/el7toel8/actors/checkfirstpartitionoffset/libraries/check_first_partition_offset.py
|
||||
create mode 100644 repos/system_upgrade/el7toel8/actors/checkfirstpartitionoffset/tests/test_check_first_partition_offset.py
|
||||
create mode 100644 repos/system_upgrade/el7toel8/actors/scangrubdevpartitionlayout/actor.py
|
||||
create mode 100644 repos/system_upgrade/el7toel8/actors/scangrubdevpartitionlayout/libraries/scan_layout.py
|
||||
create mode 100644 repos/system_upgrade/el7toel8/actors/scangrubdevpartitionlayout/tests/test_scan_partition_layout.py
|
||||
create mode 100644 repos/system_upgrade/el7toel8/models/partitionlayout.py
|
||||
|
||||
diff --git a/repos/system_upgrade/el7toel8/actors/checkfirstpartitionoffset/actor.py b/repos/system_upgrade/el7toel8/actors/checkfirstpartitionoffset/actor.py
|
||||
new file mode 100644
|
||||
index 00000000..cde27c2a
|
||||
--- /dev/null
|
||||
+++ b/repos/system_upgrade/el7toel8/actors/checkfirstpartitionoffset/actor.py
|
||||
@@ -0,0 +1,24 @@
|
||||
+from leapp.actors import Actor
|
||||
+from leapp.libraries.actor import check_first_partition_offset
|
||||
+from leapp.models import FirmwareFacts, GRUBDevicePartitionLayout
|
||||
+from leapp.reporting import Report
|
||||
+from leapp.tags import ChecksPhaseTag, IPUWorkflowTag
|
||||
+
|
||||
+
|
||||
+class CheckFirstPartitionOffset(Actor):
|
||||
+ """
|
||||
+ Check whether the first partition starts at the offset >=1MiB.
|
||||
+
|
||||
+ The alignment of the first partition plays role in disk access speeds. Older tools placed the start of the first
|
||||
+ partition at cylinder 63 (due to historical reasons connected to the INT13h BIOS API). However, grub core
|
||||
+ binary is placed before the start of the first partition, meaning that not enough space causes bootloader
|
||||
+ installation to fail. Modern partitioning tools place the first partition at >= 1MiB (cylinder 2048+).
|
||||
+ """
|
||||
+
|
||||
+ name = 'check_first_partition_offset'
|
||||
+ consumes = (FirmwareFacts, GRUBDevicePartitionLayout,)
|
||||
+ produces = (Report,)
|
||||
+ tags = (ChecksPhaseTag, IPUWorkflowTag,)
|
||||
+
|
||||
+ def process(self):
|
||||
+ check_first_partition_offset.check_first_partition_offset()
|
||||
diff --git a/repos/system_upgrade/el7toel8/actors/checkfirstpartitionoffset/libraries/check_first_partition_offset.py b/repos/system_upgrade/el7toel8/actors/checkfirstpartitionoffset/libraries/check_first_partition_offset.py
|
||||
new file mode 100644
|
||||
index 00000000..fbd4e178
|
||||
--- /dev/null
|
||||
+++ b/repos/system_upgrade/el7toel8/actors/checkfirstpartitionoffset/libraries/check_first_partition_offset.py
|
||||
@@ -0,0 +1,52 @@
|
||||
+from leapp import reporting
|
||||
+from leapp.libraries.common.config import architecture
|
||||
+from leapp.libraries.stdlib import api
|
||||
+from leapp.models import FirmwareFacts, GRUBDevicePartitionLayout
|
||||
+
|
||||
+SAFE_OFFSET_BYTES = 1024*1024 # 1MiB
|
||||
+
|
||||
+
|
||||
+def check_first_partition_offset():
|
||||
+ if architecture.matches_architecture(architecture.ARCH_S390X):
|
||||
+ return
|
||||
+
|
||||
+ for fact in api.consume(FirmwareFacts):
|
||||
+ if fact.firmware == 'efi':
|
||||
+ return # Skip EFI system
|
||||
+
|
||||
+ problematic_devices = []
|
||||
+ for grub_dev in api.consume(GRUBDevicePartitionLayout):
|
||||
+ first_partition = min(grub_dev.partitions, key=lambda partition: partition.start_offset)
|
||||
+ if first_partition.start_offset < SAFE_OFFSET_BYTES:
|
||||
+ problematic_devices.append(grub_dev.device)
|
||||
+
|
||||
+ if problematic_devices:
|
||||
+ summary = (
|
||||
+ 'On the system booting by using BIOS, the in-place upgrade fails '
|
||||
+ 'when upgrading the GRUB2 bootloader if the boot disk\'s embedding area '
|
||||
+ 'does not contain enough space for the core image installation. '
|
||||
+ 'This results in a broken system, and can occur when the disk has been '
|
||||
+ 'partitioned manually, for example using the RHEL 6 fdisk utility.\n\n'
|
||||
+
|
||||
+ 'The list of devices with small embedding area:\n'
|
||||
+ '{0}.'
|
||||
+ )
|
||||
+ problematic_devices_fmt = ['- {0}'.format(dev) for dev in problematic_devices]
|
||||
+
|
||||
+ hint = (
|
||||
+ 'We recommend to perform a fresh installation of the RHEL 8 system '
|
||||
+ 'instead of performing the in-place upgrade.\n'
|
||||
+ 'Another possibility is to reformat the devices so that there is '
|
||||
+ 'at least {0} kiB space before the first partition. '
|
||||
+ 'Note that this operation is not supported and does not have to be '
|
||||
+ 'always possible.'
|
||||
+ )
|
||||
+
|
||||
+ reporting.create_report([
|
||||
+ reporting.Title('Found GRUB devices with too little space reserved before the first partition'),
|
||||
+ reporting.Summary(summary.format('\n'.join(problematic_devices_fmt))),
|
||||
+ reporting.Remediation(hint=hint.format(SAFE_OFFSET_BYTES // 1024)),
|
||||
+ reporting.Severity(reporting.Severity.HIGH),
|
||||
+ reporting.Groups([reporting.Groups.BOOT]),
|
||||
+ reporting.Groups([reporting.Groups.INHIBITOR]),
|
||||
+ ])
|
||||
diff --git a/repos/system_upgrade/el7toel8/actors/checkfirstpartitionoffset/tests/test_check_first_partition_offset.py b/repos/system_upgrade/el7toel8/actors/checkfirstpartitionoffset/tests/test_check_first_partition_offset.py
|
||||
new file mode 100644
|
||||
index 00000000..e349ff7d
|
||||
--- /dev/null
|
||||
+++ b/repos/system_upgrade/el7toel8/actors/checkfirstpartitionoffset/tests/test_check_first_partition_offset.py
|
||||
@@ -0,0 +1,51 @@
|
||||
+import pytest
|
||||
+
|
||||
+from leapp import reporting
|
||||
+from leapp.libraries.actor import check_first_partition_offset
|
||||
+from leapp.libraries.common import grub
|
||||
+from leapp.libraries.common.testutils import create_report_mocked, CurrentActorMocked
|
||||
+from leapp.libraries.stdlib import api
|
||||
+from leapp.models import FirmwareFacts, GRUBDevicePartitionLayout, PartitionInfo
|
||||
+from leapp.reporting import Report
|
||||
+from leapp.utils.report import is_inhibitor
|
||||
+
|
||||
+
|
||||
+@pytest.mark.parametrize(
|
||||
+ ('devices', 'should_report'),
|
||||
+ [
|
||||
+ (
|
||||
+ [
|
||||
+ GRUBDevicePartitionLayout(device='/dev/vda',
|
||||
+ partitions=[PartitionInfo(part_device='/dev/vda1', start_offset=32256)])
|
||||
+ ],
|
||||
+ True
|
||||
+ ),
|
||||
+ (
|
||||
+ [
|
||||
+ GRUBDevicePartitionLayout(device='/dev/vda',
|
||||
+ partitions=[PartitionInfo(part_device='/dev/vda1', start_offset=1024*1025)])
|
||||
+ ],
|
||||
+ False
|
||||
+ ),
|
||||
+ (
|
||||
+ [
|
||||
+ GRUBDevicePartitionLayout(device='/dev/vda',
|
||||
+ partitions=[PartitionInfo(part_device='/dev/vda1', start_offset=1024*1024)])
|
||||
+ ],
|
||||
+ False
|
||||
+ )
|
||||
+ ]
|
||||
+)
|
||||
+def test_bad_offset_reported(monkeypatch, devices, should_report):
|
||||
+ def consume_mocked(model_cls):
|
||||
+ if model_cls == FirmwareFacts:
|
||||
+ return [FirmwareFacts(firmware='bios')]
|
||||
+ return devices
|
||||
+
|
||||
+ monkeypatch.setattr(api, 'consume', consume_mocked)
|
||||
+ monkeypatch.setattr(api, 'current_actor', CurrentActorMocked())
|
||||
+ monkeypatch.setattr(reporting, 'create_report', create_report_mocked())
|
||||
+
|
||||
+ check_first_partition_offset.check_first_partition_offset()
|
||||
+
|
||||
+ assert bool(reporting.create_report.called) == should_report
|
||||
diff --git a/repos/system_upgrade/el7toel8/actors/scangrubdevpartitionlayout/actor.py b/repos/system_upgrade/el7toel8/actors/scangrubdevpartitionlayout/actor.py
|
||||
new file mode 100644
|
||||
index 00000000..0db93aba
|
||||
--- /dev/null
|
||||
+++ b/repos/system_upgrade/el7toel8/actors/scangrubdevpartitionlayout/actor.py
|
||||
@@ -0,0 +1,18 @@
|
||||
+from leapp.actors import Actor
|
||||
+from leapp.libraries.actor import scan_layout as scan_layout_lib
|
||||
+from leapp.models import GRUBDevicePartitionLayout, GrubInfo
|
||||
+from leapp.tags import FactsPhaseTag, IPUWorkflowTag
|
||||
+
|
||||
+
|
||||
+class ScanGRUBDevicePartitionLayout(Actor):
|
||||
+ """
|
||||
+ Scan all identified GRUB devices for their partition layout.
|
||||
+ """
|
||||
+
|
||||
+ name = 'scan_grub_device_partition_layout'
|
||||
+ consumes = (GrubInfo,)
|
||||
+ produces = (GRUBDevicePartitionLayout,)
|
||||
+ tags = (FactsPhaseTag, IPUWorkflowTag,)
|
||||
+
|
||||
+ def process(self):
|
||||
+ scan_layout_lib.scan_grub_device_partition_layout()
|
||||
diff --git a/repos/system_upgrade/el7toel8/actors/scangrubdevpartitionlayout/libraries/scan_layout.py b/repos/system_upgrade/el7toel8/actors/scangrubdevpartitionlayout/libraries/scan_layout.py
|
||||
new file mode 100644
|
||||
index 00000000..bb2e6d9e
|
||||
--- /dev/null
|
||||
+++ b/repos/system_upgrade/el7toel8/actors/scangrubdevpartitionlayout/libraries/scan_layout.py
|
||||
@@ -0,0 +1,64 @@
|
||||
+from leapp.libraries.stdlib import api, CalledProcessError, run
|
||||
+from leapp.models import GRUBDevicePartitionLayout, GrubInfo, PartitionInfo
|
||||
+
|
||||
+SAFE_OFFSET_BYTES = 1024*1024 # 1MiB
|
||||
+
|
||||
+
|
||||
+def split_on_space_segments(line):
|
||||
+ fragments = (fragment.strip() for fragment in line.split(' '))
|
||||
+ return [fragment for fragment in fragments if fragment]
|
||||
+
|
||||
+
|
||||
+def get_partition_layout(device):
|
||||
+ try:
|
||||
+ partition_table = run(['fdisk', '-l', '-u=sectors', device], split=True)['stdout']
|
||||
+ except CalledProcessError as err:
|
||||
+ # Unlikely - if the disk has no partition table, `fdisk` terminates with 0 (no err). Fdisk exits with an err
|
||||
+ # when the device does not exists, or if it is too small to contain a partition table.
|
||||
+
|
||||
+ err_msg = 'Failed to run `fdisk` to obtain the partition table of the device {0}. Full error: \'{1}\''
|
||||
+ api.current_logger().error(err_msg.format(device, str(err)))
|
||||
+ return None
|
||||
+
|
||||
+ table_iter = iter(partition_table)
|
||||
+
|
||||
+ for line in table_iter:
|
||||
+ if not line.startswith('Units'):
|
||||
+ # We are still reading general device information and not the table itself
|
||||
+ continue
|
||||
+
|
||||
+ unit = line.split('=')[2].strip() # Contains '512 bytes'
|
||||
+ unit = int(unit.split(' ')[0].strip())
|
||||
+ break # First line of the partition table header
|
||||
+
|
||||
+ for line in table_iter:
|
||||
+ line = line.strip()
|
||||
+ if not line.startswith('Device'):
|
||||
+ continue
|
||||
+
|
||||
+ part_all_attrs = split_on_space_segments(line)
|
||||
+ break
|
||||
+
|
||||
+ partitions = []
|
||||
+ for partition_line in table_iter:
|
||||
+ # Fields: Device Boot Start End Sectors Size Id Type
|
||||
+ # The line looks like: `/dev/vda1 * 2048 2099199 2097152 1G 83 Linux`
|
||||
+ part_info = split_on_space_segments(partition_line)
|
||||
+
|
||||
+ # 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])
|
||||
+ partitions.append(PartitionInfo(part_device=part_device, start_offset=part_start*unit))
|
||||
+
|
||||
+ return GRUBDevicePartitionLayout(device=device, partitions=partitions)
|
||||
+
|
||||
+
|
||||
+def scan_grub_device_partition_layout():
|
||||
+ grub_devices = next(api.consume(GrubInfo), None)
|
||||
+ if not grub_devices:
|
||||
+ return
|
||||
+
|
||||
+ for device in grub_devices.orig_devices:
|
||||
+ dev_info = get_partition_layout(device)
|
||||
+ if dev_info:
|
||||
+ api.produce(dev_info)
|
||||
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
|
||||
new file mode 100644
|
||||
index 00000000..37bb5bcf
|
||||
--- /dev/null
|
||||
+++ b/repos/system_upgrade/el7toel8/actors/scangrubdevpartitionlayout/tests/test_scan_partition_layout.py
|
||||
@@ -0,0 +1,78 @@
|
||||
+from collections import namedtuple
|
||||
+
|
||||
+import pytest
|
||||
+
|
||||
+from leapp.libraries.actor import scan_layout as scan_layout_lib
|
||||
+from leapp.libraries.common import grub
|
||||
+from leapp.libraries.common.testutils import create_report_mocked, produce_mocked
|
||||
+from leapp.libraries.stdlib import api
|
||||
+from leapp.models import GRUBDevicePartitionLayout, GrubInfo
|
||||
+from leapp.utils.report import is_inhibitor
|
||||
+
|
||||
+Device = namedtuple('Device', ['name', 'partitions', 'sector_size'])
|
||||
+Partition = namedtuple('Partition', ['name', 'start_offset'])
|
||||
+
|
||||
+
|
||||
+@pytest.mark.parametrize(
|
||||
+ 'devices',
|
||||
+ [
|
||||
+ (
|
||||
+ Device(name='/dev/vda', sector_size=512,
|
||||
+ partitions=[Partition(name='/dev/vda1', start_offset=63),
|
||||
+ Partition(name='/dev/vda2', start_offset=1000)]),
|
||||
+ Device(name='/dev/vdb', sector_size=1024,
|
||||
+ partitions=[Partition(name='/dev/vdb1', start_offset=100),
|
||||
+ Partition(name='/dev/vdb2', start_offset=20000)])
|
||||
+ ),
|
||||
+ (
|
||||
+ Device(name='/dev/vda', sector_size=512,
|
||||
+ partitions=[Partition(name='/dev/vda1', start_offset=111),
|
||||
+ Partition(name='/dev/vda2', start_offset=1000)]),
|
||||
+ )
|
||||
+ ]
|
||||
+)
|
||||
+def test_get_partition_layout(monkeypatch, devices):
|
||||
+ device_to_fdisk_output = {}
|
||||
+ for device in devices:
|
||||
+ fdisk_output = [
|
||||
+ 'Disk {0}: 42.9 GB, 42949672960 bytes, 83886080 sectors'.format(device.name),
|
||||
+ 'Units = sectors of 1 * {sector_size} = {sector_size} bytes'.format(sector_size=device.sector_size),
|
||||
+ 'Sector size (logical/physical): 512 bytes / 512 bytes',
|
||||
+ 'I/O size (minimum/optimal): 512 bytes / 512 bytes',
|
||||
+ 'Disk label type: dos',
|
||||
+ 'Disk identifier: 0x0000000da',
|
||||
+ '',
|
||||
+ ' 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)
|
||||
+ fdisk_output.append(part_line)
|
||||
+
|
||||
+ device_to_fdisk_output[device.name] = fdisk_output
|
||||
+
|
||||
+ def mocked_run(cmd, *args, **kwargs):
|
||||
+ assert cmd[:3] == ['fdisk', '-l', '-u=sectors']
|
||||
+ device = cmd[3]
|
||||
+ output = device_to_fdisk_output[device]
|
||||
+ return {'stdout': output}
|
||||
+
|
||||
+ def consume_mocked(*args, **kwargs):
|
||||
+ yield GrubInfo(orig_devices=[device.name for device in devices])
|
||||
+
|
||||
+ monkeypatch.setattr(scan_layout_lib, 'run', mocked_run)
|
||||
+ monkeypatch.setattr(api, 'produce', produce_mocked())
|
||||
+ monkeypatch.setattr(api, 'consume', consume_mocked)
|
||||
+
|
||||
+ scan_layout_lib.scan_grub_device_partition_layout()
|
||||
+
|
||||
+ assert api.produce.called == len(devices)
|
||||
+
|
||||
+ dev_name_to_desc = {dev.name: dev for dev in devices}
|
||||
+
|
||||
+ for message in api.produce.model_instances:
|
||||
+ assert isinstance(message, GRUBDevicePartitionLayout)
|
||||
+ dev = dev_name_to_desc[message.device]
|
||||
+
|
||||
+ expected_part_name_to_start = {part.name: part.start_offset*dev.sector_size for part in dev.partitions}
|
||||
+ actual_part_name_to_start = {part.part_device: part.start_offset for part in message.partitions}
|
||||
+ assert expected_part_name_to_start == actual_part_name_to_start
|
||||
diff --git a/repos/system_upgrade/el7toel8/models/partitionlayout.py b/repos/system_upgrade/el7toel8/models/partitionlayout.py
|
||||
new file mode 100644
|
||||
index 00000000..c6483283
|
||||
--- /dev/null
|
||||
+++ b/repos/system_upgrade/el7toel8/models/partitionlayout.py
|
||||
@@ -0,0 +1,28 @@
|
||||
+from leapp.models import fields, Model
|
||||
+from leapp.topics import SystemInfoTopic
|
||||
+
|
||||
+
|
||||
+class PartitionInfo(Model):
|
||||
+ """
|
||||
+ Information about a single partition.
|
||||
+ """
|
||||
+ topic = SystemInfoTopic
|
||||
+
|
||||
+ part_device = fields.String()
|
||||
+ """ Partition device """
|
||||
+
|
||||
+ start_offset = fields.Integer()
|
||||
+ """ Partition start - offset from the start of the block device in bytes """
|
||||
+
|
||||
+
|
||||
+class GRUBDevicePartitionLayout(Model):
|
||||
+ """
|
||||
+ Information about partition layout of a GRUB device.
|
||||
+ """
|
||||
+ topic = SystemInfoTopic
|
||||
+
|
||||
+ device = fields.String()
|
||||
+ """ GRUB device """
|
||||
+
|
||||
+ partitions = fields.List(fields.Model(PartitionInfo))
|
||||
+ """ List of partitions present on the device """
|
||||
--
|
||||
2.42.0
|
||||
|
@ -1,138 +0,0 @@
|
||||
From 683176dbeeeff32cc6b04410b4f7e4715a3de8e0 Mon Sep 17 00:00:00 2001
|
||||
From: Petr Stodulka <pstodulk@redhat.com>
|
||||
Date: Wed, 24 Apr 2024 01:09:51 +0200
|
||||
Subject: [PATCH 15/34] boot: Skip checks of first partition offset for for gpt
|
||||
partition table
|
||||
|
||||
This is extension of the previous commit. The original problem that
|
||||
we are trying to resolve is to be sure the embedding area (MBR gap)
|
||||
has expected size. This is irrelevant in case of GPT partition table
|
||||
is used on a device. The fdisk output format is in case of GPT
|
||||
disk label different, which breaks the parsing, resulting in empty
|
||||
list of partitions in related GRUBDevicePartitionLayout msg.
|
||||
|
||||
For now, let's skip produce of msgs for "GPT devices". As a seatbelt,
|
||||
ignore processing of messages with empty partitions field, expecting
|
||||
that such a device does not contain MBR. We want to prevent false
|
||||
positive inhibitors (and FP blocking errors). We expect that total
|
||||
number of machines with small embedding area is very minor in total
|
||||
numbers, so even if we would miss something (which is not expected
|
||||
now to our best knowledge) it's still good trade-off as the major
|
||||
goal is to reduce number of machines that have problems with the
|
||||
in-place upgrade.
|
||||
|
||||
The solution can be updated in future if there is a reason for it.
|
||||
---
|
||||
.../libraries/check_first_partition_offset.py | 7 +++++
|
||||
.../test_check_first_partition_offset.py | 16 +++++++++++
|
||||
.../libraries/scan_layout.py | 28 +++++++++++++++++++
|
||||
.../tests/test_scan_partition_layout.py | 5 ++++
|
||||
4 files changed, 56 insertions(+)
|
||||
|
||||
diff --git a/repos/system_upgrade/el7toel8/actors/checkfirstpartitionoffset/libraries/check_first_partition_offset.py b/repos/system_upgrade/el7toel8/actors/checkfirstpartitionoffset/libraries/check_first_partition_offset.py
|
||||
index fbd4e178..fca9c3ff 100644
|
||||
--- a/repos/system_upgrade/el7toel8/actors/checkfirstpartitionoffset/libraries/check_first_partition_offset.py
|
||||
+++ b/repos/system_upgrade/el7toel8/actors/checkfirstpartitionoffset/libraries/check_first_partition_offset.py
|
||||
@@ -16,6 +16,13 @@ def check_first_partition_offset():
|
||||
|
||||
problematic_devices = []
|
||||
for grub_dev in api.consume(GRUBDevicePartitionLayout):
|
||||
+ if not grub_dev.partitions:
|
||||
+ # NOTE(pstodulk): In case of empty partition list we have nothing to do.
|
||||
+ # This can could happen when the fdisk output is different then expected.
|
||||
+ # E.g. when GPT partition table is used on the disk. We are right now
|
||||
+ # interested strictly about MBR only, so ignoring these cases.
|
||||
+ # This is seatbelt, as the msg should not be produced for GPT at all.
|
||||
+ continue
|
||||
first_partition = min(grub_dev.partitions, key=lambda partition: partition.start_offset)
|
||||
if first_partition.start_offset < SAFE_OFFSET_BYTES:
|
||||
problematic_devices.append(grub_dev.device)
|
||||
diff --git a/repos/system_upgrade/el7toel8/actors/checkfirstpartitionoffset/tests/test_check_first_partition_offset.py b/repos/system_upgrade/el7toel8/actors/checkfirstpartitionoffset/tests/test_check_first_partition_offset.py
|
||||
index e349ff7d..f925f7d4 100644
|
||||
--- a/repos/system_upgrade/el7toel8/actors/checkfirstpartitionoffset/tests/test_check_first_partition_offset.py
|
||||
+++ b/repos/system_upgrade/el7toel8/actors/checkfirstpartitionoffset/tests/test_check_first_partition_offset.py
|
||||
@@ -20,6 +20,16 @@ from leapp.utils.report import is_inhibitor
|
||||
],
|
||||
True
|
||||
),
|
||||
+ (
|
||||
+ [
|
||||
+ GRUBDevicePartitionLayout(device='/dev/vda',
|
||||
+ partitions=[
|
||||
+ PartitionInfo(part_device='/dev/vda2', start_offset=1024*1025),
|
||||
+ PartitionInfo(part_device='/dev/vda1', start_offset=32256)
|
||||
+ ])
|
||||
+ ],
|
||||
+ True
|
||||
+ ),
|
||||
(
|
||||
[
|
||||
GRUBDevicePartitionLayout(device='/dev/vda',
|
||||
@@ -33,6 +43,12 @@ from leapp.utils.report import is_inhibitor
|
||||
partitions=[PartitionInfo(part_device='/dev/vda1', start_offset=1024*1024)])
|
||||
],
|
||||
False
|
||||
+ ),
|
||||
+ (
|
||||
+ [
|
||||
+ GRUBDevicePartitionLayout(device='/dev/vda', partitions=[])
|
||||
+ ],
|
||||
+ False
|
||||
)
|
||||
]
|
||||
)
|
||||
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 bb2e6d9e..f51bcda4 100644
|
||||
--- a/repos/system_upgrade/el7toel8/actors/scangrubdevpartitionlayout/libraries/scan_layout.py
|
||||
+++ b/repos/system_upgrade/el7toel8/actors/scangrubdevpartitionlayout/libraries/scan_layout.py
|
||||
@@ -31,6 +31,34 @@ def get_partition_layout(device):
|
||||
unit = int(unit.split(' ')[0].strip())
|
||||
break # First line of the partition table header
|
||||
|
||||
+ # Discover disk label type: dos | gpt
|
||||
+ for line in table_iter:
|
||||
+ line = line.strip()
|
||||
+ if not line.startswith('Disk label type'):
|
||||
+ continue
|
||||
+ disk_type = line.split(':')[1].strip()
|
||||
+ break
|
||||
+
|
||||
+ if disk_type == 'gpt':
|
||||
+ api.current_logger().info(
|
||||
+ 'Detected GPT partition table. Skipping produce of GRUBDevicePartitionLayout message.'
|
||||
+ )
|
||||
+ # NOTE(pstodulk): The GPT table has a different output format than
|
||||
+ # expected below, example (ignore start/end lines):
|
||||
+ # --------------------------- start ----------------------------------
|
||||
+ # # Start End Size Type Name
|
||||
+ # 1 2048 4095 1M BIOS boot
|
||||
+ # 2 4096 2101247 1G Microsoft basic
|
||||
+ # 3 2101248 41940991 19G Linux LVM
|
||||
+ # ---------------------------- end -----------------------------------
|
||||
+ # But mainly, in case of GPT, we have nothing to actually check as
|
||||
+ # we are gathering this data now mainly to get information about the
|
||||
+ # actual size of embedding area (MBR gap). In case of GPT, there is
|
||||
+ # bios boot / prep boot partition, which has always 1 MiB and fulfill
|
||||
+ # our expectations. So skip in this case another processing and generation
|
||||
+ # of the msg. Let's improve it in future if we find a reason for it.
|
||||
+ return None
|
||||
+
|
||||
for line in table_iter:
|
||||
line = line.strip()
|
||||
if not line.startswith('Device'):
|
||||
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 37bb5bcf..54025379 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
|
||||
@@ -76,3 +76,8 @@ def test_get_partition_layout(monkeypatch, devices):
|
||||
expected_part_name_to_start = {part.name: part.start_offset*dev.sector_size for part in dev.partitions}
|
||||
actual_part_name_to_start = {part.part_device: part.start_offset for part in message.partitions}
|
||||
assert expected_part_name_to_start == actual_part_name_to_start
|
||||
+
|
||||
+
|
||||
+def test_get_partition_layout_gpt(monkeypatch):
|
||||
+ # TODO(pstodulk): skipping for now, due to time pressure. Testing for now manually.
|
||||
+ pass
|
||||
--
|
||||
2.42.0
|
||||
|
@ -1,152 +0,0 @@
|
||||
From 8d84c02b92f3a7a7d74a272aa31d5b0a0f24faea Mon Sep 17 00:00:00 2001
|
||||
From: Matej Matuska <mmatuska@redhat.com>
|
||||
Date: Thu, 11 Apr 2024 15:56:51 +0200
|
||||
Subject: [PATCH 16/34] repomapping: Add RHEL7 ELS repos
|
||||
|
||||
RHEL-21891
|
||||
---
|
||||
etc/leapp/files/repomap.json | 60 ++++++++++++++++++-
|
||||
.../common/models/repositoriesmap.py | 2 +-
|
||||
2 files changed, 59 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/etc/leapp/files/repomap.json b/etc/leapp/files/repomap.json
|
||||
index 57cab1ad..1ee6c56a 100644
|
||||
--- a/etc/leapp/files/repomap.json
|
||||
+++ b/etc/leapp/files/repomap.json
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
- "datetime": "202401261328Z",
|
||||
- "version_format": "1.2.0",
|
||||
+ "datetime": "202404091246Z",
|
||||
+ "version_format": "1.2.1",
|
||||
"mapping": [
|
||||
{
|
||||
"source_major_version": "7",
|
||||
@@ -303,6 +303,13 @@
|
||||
"channel": "beta",
|
||||
"repo_type": "rpm"
|
||||
},
|
||||
+ {
|
||||
+ "major_version": "7",
|
||||
+ "repoid": "rhel-7-for-system-z-els-rpms",
|
||||
+ "arch": "s390x",
|
||||
+ "channel": "els",
|
||||
+ "repo_type": "rpm"
|
||||
+ },
|
||||
{
|
||||
"major_version": "7",
|
||||
"repoid": "rhel-7-for-system-z-eus-rpms",
|
||||
@@ -346,6 +353,13 @@
|
||||
"channel": "e4s",
|
||||
"repo_type": "rpm"
|
||||
},
|
||||
+ {
|
||||
+ "major_version": "7",
|
||||
+ "repoid": "rhel-7-server-els-rpms",
|
||||
+ "arch": "x86_64",
|
||||
+ "channel": "els",
|
||||
+ "repo_type": "rpm"
|
||||
+ },
|
||||
{
|
||||
"major_version": "7",
|
||||
"repoid": "rhel-7-server-eus-rpms",
|
||||
@@ -486,6 +500,13 @@
|
||||
"channel": "ga",
|
||||
"repo_type": "rpm"
|
||||
},
|
||||
+ {
|
||||
+ "major_version": "7",
|
||||
+ "repoid": "rhel-7-for-system-z-els-optional-rpms",
|
||||
+ "arch": "s390x",
|
||||
+ "channel": "els",
|
||||
+ "repo_type": "rpm"
|
||||
+ },
|
||||
{
|
||||
"major_version": "7",
|
||||
"repoid": "rhel-7-for-system-z-eus-optional-rpms",
|
||||
@@ -529,6 +550,13 @@
|
||||
"channel": "e4s",
|
||||
"repo_type": "rpm"
|
||||
},
|
||||
+ {
|
||||
+ "major_version": "7",
|
||||
+ "repoid": "rhel-7-server-els-optional-rpms",
|
||||
+ "arch": "x86_64",
|
||||
+ "channel": "els",
|
||||
+ "repo_type": "rpm"
|
||||
+ },
|
||||
{
|
||||
"major_version": "7",
|
||||
"repoid": "rhel-7-server-eus-optional-rpms",
|
||||
@@ -892,6 +920,13 @@
|
||||
"channel": "beta",
|
||||
"repo_type": "rpm"
|
||||
},
|
||||
+ {
|
||||
+ "major_version": "7",
|
||||
+ "repoid": "rhel-sap-for-rhel-7-for-system-z-els-rpms",
|
||||
+ "arch": "s390x",
|
||||
+ "channel": "els",
|
||||
+ "repo_type": "rpm"
|
||||
+ },
|
||||
{
|
||||
"major_version": "7",
|
||||
"repoid": "rhel-sap-for-rhel-7-for-system-z-eus-rpms",
|
||||
@@ -920,6 +955,13 @@
|
||||
"channel": "e4s",
|
||||
"repo_type": "rpm"
|
||||
},
|
||||
+ {
|
||||
+ "major_version": "7",
|
||||
+ "repoid": "rhel-sap-for-rhel-7-server-els-rpms",
|
||||
+ "arch": "x86_64",
|
||||
+ "channel": "els",
|
||||
+ "repo_type": "rpm"
|
||||
+ },
|
||||
{
|
||||
"major_version": "7",
|
||||
"repoid": "rhel-sap-for-rhel-7-server-eus-rhui-rpms",
|
||||
@@ -1022,6 +1064,13 @@
|
||||
"channel": "e4s",
|
||||
"repo_type": "rpm"
|
||||
},
|
||||
+ {
|
||||
+ "major_version": "7",
|
||||
+ "repoid": "rhel-sap-hana-for-rhel-7-server-els-rpms",
|
||||
+ "arch": "x86_64",
|
||||
+ "channel": "els",
|
||||
+ "repo_type": "rpm"
|
||||
+ },
|
||||
{
|
||||
"major_version": "7",
|
||||
"repoid": "rhel-sap-hana-for-rhel-7-server-eus-rhui-rpms",
|
||||
@@ -1125,6 +1174,13 @@
|
||||
"channel": "e4s",
|
||||
"repo_type": "rpm"
|
||||
},
|
||||
+ {
|
||||
+ "major_version": "7",
|
||||
+ "repoid": "rhel-ha-for-rhel-7-server-els-rpms",
|
||||
+ "arch": "x86_64",
|
||||
+ "channel": "els",
|
||||
+ "repo_type": "rpm"
|
||||
+ },
|
||||
{
|
||||
"major_version": "7",
|
||||
"repoid": "rhel-ha-for-rhel-7-server-eus-rhui-rpms",
|
||||
diff --git a/repos/system_upgrade/common/models/repositoriesmap.py b/repos/system_upgrade/common/models/repositoriesmap.py
|
||||
index 7ef0bdb4..7192a60d 100644
|
||||
--- a/repos/system_upgrade/common/models/repositoriesmap.py
|
||||
+++ b/repos/system_upgrade/common/models/repositoriesmap.py
|
||||
@@ -61,7 +61,7 @@ class PESIDRepositoryEntry(Model):
|
||||
too.
|
||||
"""
|
||||
|
||||
- channel = fields.StringEnum(['ga', 'e4s', 'eus', 'aus', 'beta'])
|
||||
+ channel = fields.StringEnum(['ga', 'e4s', 'eus', 'aus', 'beta', 'els'])
|
||||
"""
|
||||
The 'channel' of the repository.
|
||||
|
||||
--
|
||||
2.42.0
|
||||
|
@ -1,25 +0,0 @@
|
||||
From f154c6566a2fbeb4fe64405794b6777c156cabcb Mon Sep 17 00:00:00 2001
|
||||
From: Matej Matuska <mmatuska@redhat.com>
|
||||
Date: Mon, 15 Apr 2024 17:13:03 +0200
|
||||
Subject: [PATCH 17/34] bump required repomap version
|
||||
|
||||
---
|
||||
.../actors/repositoriesmapping/libraries/repositoriesmapping.py | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/repos/system_upgrade/common/actors/repositoriesmapping/libraries/repositoriesmapping.py b/repos/system_upgrade/common/actors/repositoriesmapping/libraries/repositoriesmapping.py
|
||||
index 8045634e..58089195 100644
|
||||
--- a/repos/system_upgrade/common/actors/repositoriesmapping/libraries/repositoriesmapping.py
|
||||
+++ b/repos/system_upgrade/common/actors/repositoriesmapping/libraries/repositoriesmapping.py
|
||||
@@ -17,7 +17,7 @@ REPOMAP_FILE = 'repomap.json'
|
||||
|
||||
|
||||
class RepoMapData(object):
|
||||
- VERSION_FORMAT = '1.2.0'
|
||||
+ VERSION_FORMAT = '1.2.1'
|
||||
|
||||
def __init__(self):
|
||||
self.repositories = []
|
||||
--
|
||||
2.42.0
|
||||
|
@ -1,24 +0,0 @@
|
||||
From 6dc1621c4395412724d8cccf7a2694013fb4f5f0 Mon Sep 17 00:00:00 2001
|
||||
From: Matej Matuska <mmatuska@redhat.com>
|
||||
Date: Mon, 15 Apr 2024 17:25:07 +0200
|
||||
Subject: [PATCH 18/34] fixup! bump required repomap version
|
||||
|
||||
---
|
||||
.../actors/repositoriesmapping/tests/files/repomap_example.json | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/repos/system_upgrade/common/actors/repositoriesmapping/tests/files/repomap_example.json b/repos/system_upgrade/common/actors/repositoriesmapping/tests/files/repomap_example.json
|
||||
index 5e95f5fe..a5fc5fe1 100644
|
||||
--- a/repos/system_upgrade/common/actors/repositoriesmapping/tests/files/repomap_example.json
|
||||
+++ b/repos/system_upgrade/common/actors/repositoriesmapping/tests/files/repomap_example.json
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"datetime": "202107141655Z",
|
||||
- "version_format": "1.2.0",
|
||||
+ "version_format": "1.2.1",
|
||||
"mapping": [
|
||||
{
|
||||
"source_major_version": "7",
|
||||
--
|
||||
2.42.0
|
||||
|
@ -1,33 +0,0 @@
|
||||
From a5bd2546f748ddac4240b3a34b168e422ef78c99 Mon Sep 17 00:00:00 2001
|
||||
From: David Kubek <dkubek@redhat.com>
|
||||
Date: Wed, 24 Apr 2024 11:05:32 +0200
|
||||
Subject: [PATCH 19/34] Fix incorrect command formulation
|
||||
|
||||
Mitigation of an error where instead of no argument an "empty argument"
|
||||
was passed to `lscpu`
|
||||
|
||||
lscpu ''
|
||||
|
||||
vs.
|
||||
|
||||
lscpu
|
||||
---
|
||||
repos/system_upgrade/common/actors/scancpu/libraries/scancpu.py | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/repos/system_upgrade/common/actors/scancpu/libraries/scancpu.py b/repos/system_upgrade/common/actors/scancpu/libraries/scancpu.py
|
||||
index 7451066a..db3f92d4 100644
|
||||
--- a/repos/system_upgrade/common/actors/scancpu/libraries/scancpu.py
|
||||
+++ b/repos/system_upgrade/common/actors/scancpu/libraries/scancpu.py
|
||||
@@ -12,7 +12,7 @@ PPC64LE_MODEL = re.compile(r'\d+\.\d+ \(pvr (?P<family>[0-9a-fA-F]+) 0*[0-9a-fA-
|
||||
|
||||
def _get_lscpu_output(output_json=False):
|
||||
try:
|
||||
- result = run(['lscpu', '-J' if output_json else ''])
|
||||
+ result = run(['lscpu'] + (['-J'] if output_json else []))
|
||||
return result.get('stdout', '')
|
||||
except (OSError, CalledProcessError):
|
||||
api.current_logger().debug('Executing `lscpu` failed', exc_info=True)
|
||||
--
|
||||
2.42.0
|
||||
|
@ -1,37 +0,0 @@
|
||||
From 5e51626069dd7d5e38f36cafdd45f14cfb213e5d Mon Sep 17 00:00:00 2001
|
||||
From: Evgeni Golov <evgeni@golov.de>
|
||||
Date: Thu, 25 Apr 2024 14:59:55 +0200
|
||||
Subject: [PATCH 20/34] mention `Report` in produces of
|
||||
transitionsystemdservicesstates (#1210)
|
||||
|
||||
fixes upgrade warnings:
|
||||
|
||||
leapp.workflow.Applications.transition_systemd_services_states: Actor is trying to produce a message of type "<class 'leapp.reporting.Report'>" without mentioning it explicitely in the actor's "produces" tuple. The message will be ignored
|
||||
---
|
||||
.../actors/systemd/transitionsystemdservicesstates/actor.py | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/repos/system_upgrade/common/actors/systemd/transitionsystemdservicesstates/actor.py b/repos/system_upgrade/common/actors/systemd/transitionsystemdservicesstates/actor.py
|
||||
index 139f9f6b..d2863e09 100644
|
||||
--- a/repos/system_upgrade/common/actors/systemd/transitionsystemdservicesstates/actor.py
|
||||
+++ b/repos/system_upgrade/common/actors/systemd/transitionsystemdservicesstates/actor.py
|
||||
@@ -7,6 +7,7 @@ from leapp.models import (
|
||||
SystemdServicesPresetInfoTarget,
|
||||
SystemdServicesTasks
|
||||
)
|
||||
+from leapp.reporting import Report
|
||||
from leapp.tags import ApplicationsPhaseTag, IPUWorkflowTag
|
||||
|
||||
|
||||
@@ -46,7 +47,7 @@ class TransitionSystemdServicesStates(Actor):
|
||||
SystemdServicesPresetInfoSource,
|
||||
SystemdServicesPresetInfoTarget
|
||||
)
|
||||
- produces = (SystemdServicesTasks,)
|
||||
+ produces = (Report, SystemdServicesTasks)
|
||||
tags = (ApplicationsPhaseTag, IPUWorkflowTag)
|
||||
|
||||
def process(self):
|
||||
--
|
||||
2.42.0
|
||||
|
@ -1,47 +0,0 @@
|
||||
From 346b741209553b9aeb96f2f728480e740a25e0af Mon Sep 17 00:00:00 2001
|
||||
From: Inessa Vasilevskaya <ivasilev@redhat.com>
|
||||
Date: Thu, 25 Apr 2024 13:25:56 +0200
|
||||
Subject: [PATCH 21/34] Update packit config after tier redefinition
|
||||
|
||||
Now for basic sanity test verification in upstream tests
|
||||
tagged by 'tier0' will be used instead of 'sanity'.
|
||||
|
||||
RHELMISC-3211
|
||||
---
|
||||
.packit.yaml | 6 +++---
|
||||
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/.packit.yaml b/.packit.yaml
|
||||
index bce97bad..ed6412dc 100644
|
||||
--- a/.packit.yaml
|
||||
+++ b/.packit.yaml
|
||||
@@ -114,7 +114,7 @@ jobs:
|
||||
tf_extra_params:
|
||||
test:
|
||||
tmt:
|
||||
- plan_filter: 'tag:sanity & enabled:true'
|
||||
+ plan_filter: 'tag:tier0 & enabled:true'
|
||||
environments:
|
||||
- tmt:
|
||||
context:
|
||||
@@ -318,7 +318,7 @@ jobs:
|
||||
tf_extra_params:
|
||||
test:
|
||||
tmt:
|
||||
- plan_filter: 'tag:sanity & tag:8to9 & enabled:true'
|
||||
+ plan_filter: 'tag:tier0 & tag:8to9 & enabled:true'
|
||||
environments:
|
||||
- tmt:
|
||||
context:
|
||||
@@ -407,7 +407,7 @@ jobs:
|
||||
tf_extra_params:
|
||||
test:
|
||||
tmt:
|
||||
- plan_filter: 'tag:sanity & tag:8to9 & enabled:true'
|
||||
+ plan_filter: 'tag:tier0 & tag:8to9 & enabled:true'
|
||||
environments:
|
||||
- tmt:
|
||||
context:
|
||||
--
|
||||
2.42.0
|
||||
|
@ -1,34 +0,0 @@
|
||||
From 0d904126f785ae785e29165bf83a493d8f837fbe Mon Sep 17 00:00:00 2001
|
||||
From: Petr Stodulka <pstodulk@redhat.com>
|
||||
Date: Fri, 26 Apr 2024 14:45:06 +0200
|
||||
Subject: [PATCH 22/34] Update reboot msg: Note the console access
|
||||
|
||||
Some users hasn't read the upgrade documentation and are not aware
|
||||
that after the reboot the actual upgrade is processing. As they wait
|
||||
just for the ssh connection, they think that something is wrong and
|
||||
sometimes reboot the machine, interrupting the entire process, making
|
||||
the machine broken in some cases.
|
||||
|
||||
Adding info that they need a console access in case they want to watch
|
||||
the upgrade progress.
|
||||
|
||||
Jira: https://issues.redhat.com/browse/RHEL-27231
|
||||
---
|
||||
commands/upgrade/__init__.py | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/commands/upgrade/__init__.py b/commands/upgrade/__init__.py
|
||||
index cc5fe647..1e15b59c 100644
|
||||
--- a/commands/upgrade/__init__.py
|
||||
+++ b/commands/upgrade/__init__.py
|
||||
@@ -117,6 +117,7 @@ def upgrade(args, breadcrumbs):
|
||||
sys.stdout.write(
|
||||
'Reboot the system to continue with the upgrade.'
|
||||
' This might take a while depending on the system configuration.\n'
|
||||
+ 'Make sure you have console access to view the actual upgrade process.\n'
|
||||
)
|
||||
|
||||
|
||||
--
|
||||
2.42.0
|
||||
|
@ -1,435 +0,0 @@
|
||||
From 2b27cfbbed1059d8af1add3a209d919901897e47 Mon Sep 17 00:00:00 2001
|
||||
From: Toshio Kuratomi <tkuratom@redhat.com>
|
||||
Date: Tue, 30 Apr 2024 07:28:35 -0700
|
||||
Subject: [PATCH 23/34] Fix kernel cmdline args we add not being propogated to
|
||||
newly installed kernels. (#1193)
|
||||
|
||||
On some upgrades, any kernel commandline args that we were adding were added to the default kernel
|
||||
but once the user installed a new kernel, those args were not propogated to the new kernel. This
|
||||
was happening on S390x and on RHEL7=>8 upgrades.
|
||||
|
||||
To fix this, we add the kernel commandline args to both the default kernel and to the defaults for
|
||||
all kernels.
|
||||
|
||||
On S390x and upgrades to RHEL9 or greater, this is done by placing the kernel cmdline arguments into
|
||||
the /etc/kernel/cmdline file.
|
||||
|
||||
On upgrades to RHEL <= 8 for all architectures other than S390x, this is done by having
|
||||
grub2-editenv modify the /boot/grub2/grubenv file.
|
||||
|
||||
Jira: RHEL-26840, OAMG-10424
|
||||
---
|
||||
.../actors/kernelcmdlineconfig/actor.py | 3 +-
|
||||
.../libraries/kernelcmdlineconfig.py | 166 +++++++++++++++++-
|
||||
.../tests/test_kernelcmdlineconfig.py | 116 ++++++++++--
|
||||
3 files changed, 261 insertions(+), 24 deletions(-)
|
||||
|
||||
diff --git a/repos/system_upgrade/common/actors/kernelcmdlineconfig/actor.py b/repos/system_upgrade/common/actors/kernelcmdlineconfig/actor.py
|
||||
index 13c47113..b44fd835 100644
|
||||
--- a/repos/system_upgrade/common/actors/kernelcmdlineconfig/actor.py
|
||||
+++ b/repos/system_upgrade/common/actors/kernelcmdlineconfig/actor.py
|
||||
@@ -29,4 +29,5 @@ class KernelCmdlineConfig(Actor):
|
||||
|
||||
if ff.firmware == 'bios' and os.path.ismount('/boot/efi'):
|
||||
configs = ['/boot/grub2/grub.cfg', '/boot/efi/EFI/redhat/grub.cfg']
|
||||
- kernelcmdlineconfig.modify_kernel_args_in_boot_cfg(configs)
|
||||
+
|
||||
+ kernelcmdlineconfig.entrypoint(configs)
|
||||
diff --git a/repos/system_upgrade/common/actors/kernelcmdlineconfig/libraries/kernelcmdlineconfig.py b/repos/system_upgrade/common/actors/kernelcmdlineconfig/libraries/kernelcmdlineconfig.py
|
||||
index f98e8168..ad59eb22 100644
|
||||
--- a/repos/system_upgrade/common/actors/kernelcmdlineconfig/libraries/kernelcmdlineconfig.py
|
||||
+++ b/repos/system_upgrade/common/actors/kernelcmdlineconfig/libraries/kernelcmdlineconfig.py
|
||||
@@ -1,9 +1,27 @@
|
||||
+import re
|
||||
+
|
||||
+from leapp import reporting
|
||||
from leapp.exceptions import StopActorExecutionError
|
||||
from leapp.libraries import stdlib
|
||||
-from leapp.libraries.common.config import architecture
|
||||
+from leapp.libraries.common.config import architecture, version
|
||||
from leapp.libraries.stdlib import api
|
||||
from leapp.models import InstalledTargetKernelInfo, KernelCmdlineArg, TargetKernelCmdlineArgTasks
|
||||
|
||||
+KERNEL_CMDLINE_FILE = "/etc/kernel/cmdline"
|
||||
+
|
||||
+
|
||||
+class ReadOfKernelArgsError(Exception):
|
||||
+ """
|
||||
+ Failed to retrieve the kernel command line arguments
|
||||
+ """
|
||||
+
|
||||
+
|
||||
+def use_cmdline_file():
|
||||
+ if (architecture.matches_architecture(architecture.ARCH_S390X) or
|
||||
+ version.matches_target_version('>= 9.0')):
|
||||
+ return True
|
||||
+ return False
|
||||
+
|
||||
|
||||
def run_grubby_cmd(cmd):
|
||||
try:
|
||||
@@ -15,6 +33,9 @@ def run_grubby_cmd(cmd):
|
||||
stdlib.run(['/usr/sbin/zipl'])
|
||||
|
||||
except (OSError, stdlib.CalledProcessError) as e:
|
||||
+ # In most cases we don't raise StopActorExecutionError in post-upgrade
|
||||
+ # actors.
|
||||
+ #
|
||||
raise StopActorExecutionError(
|
||||
"Failed to append extra arguments to kernel command line.",
|
||||
details={"details": str(e)})
|
||||
@@ -31,22 +52,36 @@ def format_kernelarg_msgs_for_grubby_cmd(kernelarg_msgs):
|
||||
return ' '.join(kernel_args)
|
||||
|
||||
|
||||
-def modify_kernel_args_in_boot_cfg(configs_to_modify_explicitly=None):
|
||||
- kernel_info = next(api.consume(InstalledTargetKernelInfo), None)
|
||||
- if not kernel_info:
|
||||
- return
|
||||
+def set_default_kernel_args(kernel_args):
|
||||
+ if use_cmdline_file():
|
||||
+ # Put kernel_args into /etc/kernel/cmdline
|
||||
+ with open(KERNEL_CMDLINE_FILE, 'w') as f:
|
||||
+ f.write(kernel_args)
|
||||
+ else:
|
||||
+ # Use grub2-editenv to put the kernel args into /boot/grub2/grubenv
|
||||
+ stdlib.run(['grub2-editenv', '-', 'set', 'kernelopts={}'.format(kernel_args)])
|
||||
|
||||
- # Collect desired kernelopt modifications
|
||||
+
|
||||
+def retrieve_arguments_to_modify():
|
||||
+ """
|
||||
+ Retrieve the arguments other actors would like to add or remove from the kernel cmdline.
|
||||
+ """
|
||||
kernelargs_msgs_to_add = list(api.consume(KernelCmdlineArg))
|
||||
kernelargs_msgs_to_remove = []
|
||||
+
|
||||
for target_kernel_arg_task in api.consume(TargetKernelCmdlineArgTasks):
|
||||
kernelargs_msgs_to_add.extend(target_kernel_arg_task.to_add)
|
||||
kernelargs_msgs_to_remove.extend(target_kernel_arg_task.to_remove)
|
||||
|
||||
- if not kernelargs_msgs_to_add and not kernelargs_msgs_to_remove:
|
||||
- return # There is no work to do
|
||||
+ return kernelargs_msgs_to_add, kernelargs_msgs_to_remove
|
||||
+
|
||||
|
||||
- grubby_modify_kernelargs_cmd = ['grubby', '--update-kernel={0}'.format(kernel_info.kernel_img_path)]
|
||||
+def modify_args_for_default_kernel(kernel_info,
|
||||
+ kernelargs_msgs_to_add,
|
||||
+ kernelargs_msgs_to_remove,
|
||||
+ configs_to_modify_explicitly=None):
|
||||
+ grubby_modify_kernelargs_cmd = ['grubby',
|
||||
+ '--update-kernel={0}'.format(kernel_info.kernel_img_path)]
|
||||
|
||||
if kernelargs_msgs_to_add:
|
||||
grubby_modify_kernelargs_cmd += [
|
||||
@@ -64,3 +99,116 @@ def modify_kernel_args_in_boot_cfg(configs_to_modify_explicitly=None):
|
||||
run_grubby_cmd(cmd)
|
||||
else:
|
||||
run_grubby_cmd(grubby_modify_kernelargs_cmd)
|
||||
+
|
||||
+
|
||||
+def _extract_grubby_value(record):
|
||||
+ data = record.split('=', 1)[1]
|
||||
+ matches = re.match(r'^([\'"]?)(.*)\1$', data)
|
||||
+ return matches.group(2)
|
||||
+
|
||||
+
|
||||
+def retrieve_args_for_default_kernel(kernel_info):
|
||||
+ # Copy the args for the default kernel to all kernels.
|
||||
+ kernel_args = None
|
||||
+ kernel_root = None
|
||||
+ cmd = ['grubby', '--info', kernel_info.kernel_img_path]
|
||||
+ output = stdlib.run(cmd, split=False)
|
||||
+ for record in output['stdout'].splitlines():
|
||||
+ # This could be done with one regex but it's cleaner to parse it as
|
||||
+ # structured data.
|
||||
+ if record.startswith('args='):
|
||||
+ temp_kernel_args = _extract_grubby_value(record)
|
||||
+
|
||||
+ if kernel_args:
|
||||
+ api.current_logger().warning('Grubby output is malformed:'
|
||||
+ ' `args=` is listed more than once.')
|
||||
+ if kernel_args != temp_kernel_args:
|
||||
+ raise ReadOfKernelArgsError('Grubby listed `args=` multiple'
|
||||
+ ' times with different values.')
|
||||
+ kernel_args = _extract_grubby_value(record)
|
||||
+ elif record.startswith('root='):
|
||||
+ api.current_logger().warning('Grubby output is malformed:'
|
||||
+ ' `root=` is listed more than once.')
|
||||
+ if kernel_root:
|
||||
+ raise ReadOfKernelArgsError('Grubby listed `root=` multiple'
|
||||
+ ' times with different values')
|
||||
+ kernel_root = _extract_grubby_value(record)
|
||||
+
|
||||
+ if not kernel_args or not kernel_root:
|
||||
+ raise ReadOfKernelArgsError(
|
||||
+ 'Failed to retrieve kernel command line to save for future installed'
|
||||
+ ' kernels: root={}, args={}'.format(kernel_root, kernel_args)
|
||||
+ )
|
||||
+
|
||||
+ return kernel_root, kernel_args
|
||||
+
|
||||
+
|
||||
+def modify_kernel_args_in_boot_cfg(configs_to_modify_explicitly=None):
|
||||
+ kernel_info = next(api.consume(InstalledTargetKernelInfo), None)
|
||||
+ if not kernel_info:
|
||||
+ return
|
||||
+
|
||||
+ # Collect desired kernelopt modifications
|
||||
+ kernelargs_msgs_to_add, kernelargs_msgs_to_remove = retrieve_arguments_to_modify()
|
||||
+ if not kernelargs_msgs_to_add and not kernelargs_msgs_to_remove:
|
||||
+ # Nothing to do
|
||||
+ return
|
||||
+
|
||||
+ # Modify the kernel cmdline for the default kernel
|
||||
+ modify_args_for_default_kernel(kernel_info,
|
||||
+ kernelargs_msgs_to_add,
|
||||
+ kernelargs_msgs_to_remove,
|
||||
+ configs_to_modify_explicitly)
|
||||
+
|
||||
+ # Copy kernel params from the default kernel to all the kernels
|
||||
+ kernel_root, kernel_args = retrieve_args_for_default_kernel(kernel_info)
|
||||
+ complete_kernel_args = 'root={} {}'.format(kernel_root, kernel_args)
|
||||
+ set_default_kernel_args(complete_kernel_args)
|
||||
+
|
||||
+
|
||||
+def entrypoint(configs=None):
|
||||
+ try:
|
||||
+ modify_kernel_args_in_boot_cfg(configs)
|
||||
+ except ReadOfKernelArgsError as e:
|
||||
+ api.current_logger().error(str(e))
|
||||
+
|
||||
+ if use_cmdline_file():
|
||||
+ report_hint = reporting.Hints(
|
||||
+ 'After the system has been rebooted into the new version of RHEL, you'
|
||||
+ ' should take the kernel cmdline arguments from /proc/cmdline (Everything'
|
||||
+ ' except the BOOT_IMAGE entry and initrd entries) and copy them into'
|
||||
+ ' /etc/kernel/cmdline before installing any new kernels.'
|
||||
+ )
|
||||
+ else:
|
||||
+ report_hint = reporting.Hints(
|
||||
+ 'After the system has been rebooted into the new version of RHEL, you'
|
||||
+ ' should take the kernel cmdline arguments from /proc/cmdline (Everything'
|
||||
+ ' except the BOOT_IMAGE entry and initrd entries) and then use the'
|
||||
+ ' grub2-editenv command to make them the default kernel args. For example,'
|
||||
+ ' if /proc/cmdline contains:\n\n'
|
||||
+ ' BOOT_IMAGE=(hd0,msdos1)/vmlinuz-4.18.0-425.3.1.el8.x86_64'
|
||||
+ ' root=/dev/mapper/rhel_ibm--root ro console=tty0'
|
||||
+ ' console=ttyS0,115200 rd_NO_PLYMOUTH\n\n'
|
||||
+ ' then run the following grub2-editenv command:\n\n'
|
||||
+ ' # grub2-editenv - set "kernelopts=root=/dev/mapper/rhel_ibm--root'
|
||||
+ ' ro console=tty0 console=ttyS0,115200 rd_NO_PLYMOUTH"'
|
||||
+ )
|
||||
+
|
||||
+ reporting.create_report([
|
||||
+ reporting.Title('Could not set the kernel arguments for future kernels'),
|
||||
+ reporting.Summary(
|
||||
+ 'During the upgrade we needed to modify the kernel command line arguments.'
|
||||
+ ' We were able to change the arguments for the default kernel but we were'
|
||||
+ ' not able to set the arguments as the default for kernels installed in'
|
||||
+ ' the future.'
|
||||
+ ),
|
||||
+ report_hint,
|
||||
+ reporting.Severity(reporting.Severity.HIGH),
|
||||
+ reporting.Groups([
|
||||
+ reporting.Groups.BOOT,
|
||||
+ reporting.Groups.KERNEL,
|
||||
+ reporting.Groups.POST,
|
||||
+ ]),
|
||||
+ reporting.RelatedResource('file', '/etc/kernel/cmdline'),
|
||||
+ reporting.RelatedResource('file', '/proc/cmdline'),
|
||||
+ ])
|
||||
diff --git a/repos/system_upgrade/common/actors/kernelcmdlineconfig/tests/test_kernelcmdlineconfig.py b/repos/system_upgrade/common/actors/kernelcmdlineconfig/tests/test_kernelcmdlineconfig.py
|
||||
index 3f9b2e5e..ffe4b046 100644
|
||||
--- a/repos/system_upgrade/common/actors/kernelcmdlineconfig/tests/test_kernelcmdlineconfig.py
|
||||
+++ b/repos/system_upgrade/common/actors/kernelcmdlineconfig/tests/test_kernelcmdlineconfig.py
|
||||
@@ -1,7 +1,10 @@
|
||||
+from __future__ import division
|
||||
+
|
||||
from collections import namedtuple
|
||||
|
||||
import pytest
|
||||
|
||||
+from leapp.exceptions import StopActorExecutionError
|
||||
from leapp.libraries import stdlib
|
||||
from leapp.libraries.actor import kernelcmdlineconfig
|
||||
from leapp.libraries.common.config import architecture
|
||||
@@ -11,14 +14,44 @@ from leapp.models import InstalledTargetKernelInfo, KernelCmdlineArg, TargetKern
|
||||
|
||||
TARGET_KERNEL_NEVRA = 'kernel-core-1.2.3-4.x86_64.el8.x64_64'
|
||||
|
||||
+# pylint: disable=E501
|
||||
+SAMPLE_KERNEL_ARGS = ('ro rootflags=subvol=root'
|
||||
+ ' resume=/dev/mapper/luks-2c0df999-81ec-4a35-a1f9-b93afee8c6ad'
|
||||
+ ' rd.luks.uuid=luks-90a6412f-c588-46ca-9118-5aca35943d25'
|
||||
+ ' rd.luks.uuid=luks-2c0df999-81ec-4a35-a1f9-b93afee8c6ad rhgb quiet'
|
||||
+ )
|
||||
+SAMPLE_KERNEL_ROOT = 'UUID=1aa15850-2685-418d-95a6-f7266a2de83a'
|
||||
+TEMPLATE_GRUBBY_INFO_OUTPUT = """index=0
|
||||
+kernel="/boot/vmlinuz-6.5.13-100.fc37.x86_64"
|
||||
+args="{0}"
|
||||
+root="{1}"
|
||||
+initrd="/boot/initramfs-6.5.13-100.fc37.x86_64.img"
|
||||
+title="Fedora Linux (6.5.13-100.fc37.x86_64) 37 (Thirty Seven)"
|
||||
+id="a3018267cdd8451db7c77bb3e5b1403d-6.5.13-100.fc37.x86_64"
|
||||
+""" # noqa: E501
|
||||
+SAMPLE_GRUBBY_INFO_OUTPUT = TEMPLATE_GRUBBY_INFO_OUTPUT.format(SAMPLE_KERNEL_ARGS, SAMPLE_KERNEL_ROOT)
|
||||
+# pylint: enable=E501
|
||||
+
|
||||
|
||||
class MockedRun(object):
|
||||
- def __init__(self):
|
||||
+ def __init__(self, outputs=None):
|
||||
+ """
|
||||
+ Mock stdlib.run().
|
||||
+
|
||||
+ If outputs is given, it is a dictionary mapping a cmd to output as stdout.
|
||||
+ """
|
||||
self.commands = []
|
||||
+ self.outputs = outputs or {}
|
||||
|
||||
def __call__(self, cmd, *args, **kwargs):
|
||||
self.commands.append(cmd)
|
||||
- return {}
|
||||
+ return {
|
||||
+ "stdout": self.outputs.get(" ".join(cmd), ""),
|
||||
+ "stderr": "",
|
||||
+ "signal": None,
|
||||
+ "exit_code": 0,
|
||||
+ "pid": 1234,
|
||||
+ }
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
@@ -50,7 +83,7 @@ class MockedRun(object):
|
||||
),
|
||||
]
|
||||
)
|
||||
-def test_kernelcmdline_config_valid_msgs(monkeypatch, msgs, expected_grubby_kernelopt_args):
|
||||
+def test_kernelcmdline_config_valid_msgs(monkeypatch, tmpdir, msgs, expected_grubby_kernelopt_args):
|
||||
kernel_img_path = '/boot/vmlinuz-X'
|
||||
kernel_info = InstalledTargetKernelInfo(pkg_nevra=TARGET_KERNEL_NEVRA,
|
||||
uname_r='',
|
||||
@@ -61,18 +94,28 @@ def test_kernelcmdline_config_valid_msgs(monkeypatch, msgs, expected_grubby_kern
|
||||
grubby_base_cmd = ['grubby', '--update-kernel={}'.format(kernel_img_path)]
|
||||
expected_grubby_cmd = grubby_base_cmd + expected_grubby_kernelopt_args
|
||||
|
||||
- mocked_run = MockedRun()
|
||||
+ mocked_run = MockedRun(
|
||||
+ outputs={" ".join(("grubby", "--info", kernel_img_path)): SAMPLE_GRUBBY_INFO_OUTPUT}
|
||||
+ )
|
||||
monkeypatch.setattr(stdlib, 'run', mocked_run)
|
||||
- monkeypatch.setattr(api, 'current_actor', CurrentActorMocked(architecture.ARCH_X86_64, msgs=msgs))
|
||||
+ monkeypatch.setattr(api, 'current_actor',
|
||||
+ CurrentActorMocked(architecture.ARCH_X86_64,
|
||||
+ dst_ver="8.1",
|
||||
+ msgs=msgs)
|
||||
+ )
|
||||
kernelcmdlineconfig.modify_kernel_args_in_boot_cfg()
|
||||
- assert mocked_run.commands and len(mocked_run.commands) == 1
|
||||
- assert expected_grubby_cmd == mocked_run.commands.pop()
|
||||
+ assert mocked_run.commands and len(mocked_run.commands) == 3
|
||||
+ assert expected_grubby_cmd == mocked_run.commands.pop(0)
|
||||
|
||||
- mocked_run = MockedRun()
|
||||
+ mocked_run = MockedRun(
|
||||
+ outputs={" ".join(("grubby", "--info", kernel_img_path)): SAMPLE_GRUBBY_INFO_OUTPUT}
|
||||
+ )
|
||||
monkeypatch.setattr(stdlib, 'run', mocked_run)
|
||||
monkeypatch.setattr(api, 'current_actor', CurrentActorMocked(architecture.ARCH_S390X, msgs=msgs))
|
||||
+ monkeypatch.setattr(kernelcmdlineconfig, 'KERNEL_CMDLINE_FILE', str(tmpdir / 'cmdline'))
|
||||
+
|
||||
kernelcmdlineconfig.modify_kernel_args_in_boot_cfg()
|
||||
- assert mocked_run.commands and len(mocked_run.commands) == 2
|
||||
+ assert mocked_run.commands and len(mocked_run.commands) == 3
|
||||
assert expected_grubby_cmd == mocked_run.commands.pop(0)
|
||||
assert ['/usr/sbin/zipl'] == mocked_run.commands.pop(0)
|
||||
|
||||
@@ -86,9 +129,17 @@ def test_kernelcmdline_explicit_configs(monkeypatch):
|
||||
initramfs_path='/boot/initramfs-X')
|
||||
msgs = [kernel_info, TargetKernelCmdlineArgTasks(to_remove=[KernelCmdlineArg(key='key1', value='value1')])]
|
||||
|
||||
- mocked_run = MockedRun()
|
||||
+ grubby_cmd_info = ["grubby", "--info", kernel_img_path]
|
||||
+ mocked_run = MockedRun(
|
||||
+ outputs={" ".join(grubby_cmd_info): SAMPLE_GRUBBY_INFO_OUTPUT}
|
||||
+ )
|
||||
monkeypatch.setattr(stdlib, 'run', mocked_run)
|
||||
- monkeypatch.setattr(api, 'current_actor', CurrentActorMocked(architecture.ARCH_X86_64, msgs=msgs))
|
||||
+ monkeypatch.setattr(api, 'current_actor',
|
||||
+ CurrentActorMocked(architecture.ARCH_X86_64,
|
||||
+ dst_ver="8.1",
|
||||
+ msgs=msgs
|
||||
+ )
|
||||
+ )
|
||||
|
||||
configs = ['/boot/grub2/grub.cfg', '/boot/efi/EFI/redhat/grub.cfg']
|
||||
kernelcmdlineconfig.modify_kernel_args_in_boot_cfg(configs_to_modify_explicitly=configs)
|
||||
@@ -97,19 +148,27 @@ def test_kernelcmdline_explicit_configs(monkeypatch):
|
||||
'--remove-args', 'key1=value1']
|
||||
expected_cmds = [
|
||||
grubby_cmd_without_config + ['-c', '/boot/grub2/grub.cfg'],
|
||||
- grubby_cmd_without_config + ['-c', '/boot/efi/EFI/redhat/grub.cfg']
|
||||
+ grubby_cmd_without_config + ['-c', '/boot/efi/EFI/redhat/grub.cfg'],
|
||||
+ grubby_cmd_info,
|
||||
+ ["grub2-editenv", "-", "set", "kernelopts=root={} {}".format(
|
||||
+ SAMPLE_KERNEL_ROOT, SAMPLE_KERNEL_ARGS)],
|
||||
]
|
||||
|
||||
assert mocked_run.commands == expected_cmds
|
||||
|
||||
|
||||
def test_kernelcmdline_config_no_args(monkeypatch):
|
||||
+ kernel_img_path = '/boot/vmlinuz-X'
|
||||
kernel_info = InstalledTargetKernelInfo(pkg_nevra=TARGET_KERNEL_NEVRA,
|
||||
uname_r='',
|
||||
- kernel_img_path='/boot/vmlinuz-X',
|
||||
+ kernel_img_path=kernel_img_path,
|
||||
initramfs_path='/boot/initramfs-X')
|
||||
|
||||
- mocked_run = MockedRun()
|
||||
+ mocked_run = MockedRun(
|
||||
+ outputs={" ".join(("grubby", "--info", kernel_img_path)):
|
||||
+ TEMPLATE_GRUBBY_INFO_OUTPUT.format("", "")
|
||||
+ }
|
||||
+ )
|
||||
monkeypatch.setattr(stdlib, 'run', mocked_run)
|
||||
monkeypatch.setattr(api, 'current_actor', CurrentActorMocked(architecture.ARCH_S390X, msgs=[kernel_info]))
|
||||
kernelcmdlineconfig.modify_kernel_args_in_boot_cfg()
|
||||
@@ -122,3 +181,32 @@ def test_kernelcmdline_config_no_version(monkeypatch):
|
||||
monkeypatch.setattr(api, 'current_actor', CurrentActorMocked(architecture.ARCH_S390X))
|
||||
kernelcmdlineconfig.modify_kernel_args_in_boot_cfg()
|
||||
assert not mocked_run.commands
|
||||
+
|
||||
+
|
||||
+def test_kernelcmdline_config_malformed_args(monkeypatch):
|
||||
+ kernel_img_path = '/boot/vmlinuz-X'
|
||||
+ kernel_info = InstalledTargetKernelInfo(pkg_nevra=TARGET_KERNEL_NEVRA,
|
||||
+ uname_r='',
|
||||
+ kernel_img_path=kernel_img_path,
|
||||
+ initramfs_path='/boot/initramfs-X')
|
||||
+
|
||||
+ # For this test, we need to check we get the proper error if grubby --info
|
||||
+ # doesn't output any args information at all.
|
||||
+ grubby_info_output = "\n".join(line for line in SAMPLE_GRUBBY_INFO_OUTPUT.splitlines()
|
||||
+ if not line.startswith("args="))
|
||||
+ mocked_run = MockedRun(
|
||||
+ outputs={" ".join(("grubby", "--info", kernel_img_path)): grubby_info_output,
|
||||
+ }
|
||||
+ )
|
||||
+ msgs = [kernel_info,
|
||||
+ TargetKernelCmdlineArgTasks(to_remove=[
|
||||
+ KernelCmdlineArg(key='key1', value='value1')])
|
||||
+ ]
|
||||
+ monkeypatch.setattr(stdlib, 'run', mocked_run)
|
||||
+ monkeypatch.setattr(api, 'current_actor',
|
||||
+ CurrentActorMocked(architecture.ARCH_S390X, msgs=msgs))
|
||||
+
|
||||
+ with pytest.raises(kernelcmdlineconfig.ReadOfKernelArgsError,
|
||||
+ match="Failed to retrieve kernel command line to save for future"
|
||||
+ " installed kernels."):
|
||||
+ kernelcmdlineconfig.modify_kernel_args_in_boot_cfg()
|
||||
--
|
||||
2.42.0
|
||||
|
@ -1,30 +0,0 @@
|
||||
From 0869ab168780f4fa10f37f34aaf51342a88c0e5c Mon Sep 17 00:00:00 2001
|
||||
From: Petr Stodulka <pstodulk@redhat.com>
|
||||
Date: Tue, 30 Apr 2024 16:42:26 +0200
|
||||
Subject: [PATCH 24/34] kernelcmdlineconfig: add newline in /etc/kernel/cmdline
|
||||
|
||||
Previous solution created the file without adding the newline
|
||||
in the end of the file. The original solution worked, but to stay
|
||||
on the safe side, adding the expected new line.
|
||||
|
||||
Jira: RHEL-26840, OAMG-10424
|
||||
---
|
||||
.../actors/kernelcmdlineconfig/libraries/kernelcmdlineconfig.py | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/repos/system_upgrade/common/actors/kernelcmdlineconfig/libraries/kernelcmdlineconfig.py b/repos/system_upgrade/common/actors/kernelcmdlineconfig/libraries/kernelcmdlineconfig.py
|
||||
index ad59eb22..238a8aa6 100644
|
||||
--- a/repos/system_upgrade/common/actors/kernelcmdlineconfig/libraries/kernelcmdlineconfig.py
|
||||
+++ b/repos/system_upgrade/common/actors/kernelcmdlineconfig/libraries/kernelcmdlineconfig.py
|
||||
@@ -57,6 +57,8 @@ def set_default_kernel_args(kernel_args):
|
||||
# Put kernel_args into /etc/kernel/cmdline
|
||||
with open(KERNEL_CMDLINE_FILE, 'w') as f:
|
||||
f.write(kernel_args)
|
||||
+ # new line is expected in the EOF (POSIX).
|
||||
+ f.write('\n')
|
||||
else:
|
||||
# Use grub2-editenv to put the kernel args into /boot/grub2/grubenv
|
||||
stdlib.run(['grub2-editenv', '-', 'set', 'kernelopts={}'.format(kernel_args)])
|
||||
--
|
||||
2.42.0
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,110 +0,0 @@
|
||||
From 88126ef33db2094b89fc17ad9e9a3962a9bb7d65 Mon Sep 17 00:00:00 2001
|
||||
From: Evgeni Golov <evgeni@golov.de>
|
||||
Date: Mon, 19 Feb 2024 12:09:05 +0100
|
||||
Subject: [PATCH 27/34] Move common Satellite Upgrade code to "common"
|
||||
|
||||
This allows the re-use of the code in the el8toel9 upgrade.
|
||||
---
|
||||
.../satellite_upgrade_services/actor.py | 35 +++++++++++++++++++
|
||||
.../actors/satellite_upgrader/actor.py | 0
|
||||
.../tests/unit_test_satellite_upgrader.py | 0
|
||||
.../{el7toel8 => common}/models/satellite.py | 0
|
||||
.../satellite_upgrade_data_migration/actor.py | 15 +-------
|
||||
5 files changed, 36 insertions(+), 14 deletions(-)
|
||||
create mode 100644 repos/system_upgrade/common/actors/satellite_upgrade_services/actor.py
|
||||
rename repos/system_upgrade/{el7toel8 => common}/actors/satellite_upgrader/actor.py (100%)
|
||||
rename repos/system_upgrade/{el7toel8 => common}/actors/satellite_upgrader/tests/unit_test_satellite_upgrader.py (100%)
|
||||
rename repos/system_upgrade/{el7toel8 => common}/models/satellite.py (100%)
|
||||
|
||||
diff --git a/repos/system_upgrade/common/actors/satellite_upgrade_services/actor.py b/repos/system_upgrade/common/actors/satellite_upgrade_services/actor.py
|
||||
new file mode 100644
|
||||
index 00000000..3cda49a9
|
||||
--- /dev/null
|
||||
+++ b/repos/system_upgrade/common/actors/satellite_upgrade_services/actor.py
|
||||
@@ -0,0 +1,35 @@
|
||||
+import glob
|
||||
+import os
|
||||
+
|
||||
+from leapp.actors import Actor
|
||||
+from leapp.models import SatelliteFacts
|
||||
+from leapp.tags import ApplicationsPhaseTag, IPUWorkflowTag
|
||||
+
|
||||
+SYSTEMD_WANTS_BASE = '/etc/systemd/system/multi-user.target.wants/'
|
||||
+SERVICES_TO_DISABLE = ['dynflow-sidekiq@*', 'foreman', 'foreman-proxy',
|
||||
+ 'httpd', 'postgresql', 'pulpcore-api', 'pulpcore-content',
|
||||
+ 'pulpcore-worker@*', 'tomcat', 'redis']
|
||||
+
|
||||
+
|
||||
+class SatelliteUpgradeServices(Actor):
|
||||
+ """
|
||||
+ Reconfigure Satellite services
|
||||
+ """
|
||||
+
|
||||
+ name = 'satellite_upgrade_services'
|
||||
+ consumes = (SatelliteFacts,)
|
||||
+ produces = ()
|
||||
+ tags = (IPUWorkflowTag, ApplicationsPhaseTag)
|
||||
+
|
||||
+ def process(self):
|
||||
+ facts = next(self.consume(SatelliteFacts), None)
|
||||
+ if not facts or not facts.has_foreman:
|
||||
+ return
|
||||
+
|
||||
+ # disable services, will be re-enabled by the installer
|
||||
+ for service_name in SERVICES_TO_DISABLE:
|
||||
+ for service in glob.glob(os.path.join(SYSTEMD_WANTS_BASE, '{}.service'.format(service_name))):
|
||||
+ try:
|
||||
+ os.unlink(service)
|
||||
+ except OSError as e:
|
||||
+ self.log.warning('Failed disabling service {}: {}'.format(service, e))
|
||||
diff --git a/repos/system_upgrade/el7toel8/actors/satellite_upgrader/actor.py b/repos/system_upgrade/common/actors/satellite_upgrader/actor.py
|
||||
similarity index 100%
|
||||
rename from repos/system_upgrade/el7toel8/actors/satellite_upgrader/actor.py
|
||||
rename to repos/system_upgrade/common/actors/satellite_upgrader/actor.py
|
||||
diff --git a/repos/system_upgrade/el7toel8/actors/satellite_upgrader/tests/unit_test_satellite_upgrader.py b/repos/system_upgrade/common/actors/satellite_upgrader/tests/unit_test_satellite_upgrader.py
|
||||
similarity index 100%
|
||||
rename from repos/system_upgrade/el7toel8/actors/satellite_upgrader/tests/unit_test_satellite_upgrader.py
|
||||
rename to repos/system_upgrade/common/actors/satellite_upgrader/tests/unit_test_satellite_upgrader.py
|
||||
diff --git a/repos/system_upgrade/el7toel8/models/satellite.py b/repos/system_upgrade/common/models/satellite.py
|
||||
similarity index 100%
|
||||
rename from repos/system_upgrade/el7toel8/models/satellite.py
|
||||
rename to repos/system_upgrade/common/models/satellite.py
|
||||
diff --git a/repos/system_upgrade/el7toel8/actors/satellite_upgrade_data_migration/actor.py b/repos/system_upgrade/el7toel8/actors/satellite_upgrade_data_migration/actor.py
|
||||
index 0cf66970..1dd52691 100644
|
||||
--- a/repos/system_upgrade/el7toel8/actors/satellite_upgrade_data_migration/actor.py
|
||||
+++ b/repos/system_upgrade/el7toel8/actors/satellite_upgrade_data_migration/actor.py
|
||||
@@ -11,15 +11,10 @@ POSTGRESQL_SCL_DATA_PATH = '/var/opt/rh/rh-postgresql12/lib/pgsql/data/'
|
||||
POSTGRESQL_USER = 'postgres'
|
||||
POSTGRESQL_GROUP = 'postgres'
|
||||
|
||||
-SYSTEMD_WANTS_BASE = '/etc/systemd/system/multi-user.target.wants/'
|
||||
-SERVICES_TO_DISABLE = ['dynflow-sidekiq@*', 'foreman', 'foreman-proxy',
|
||||
- 'httpd', 'postgresql', 'pulpcore-api', 'pulpcore-content',
|
||||
- 'pulpcore-worker@*', 'tomcat']
|
||||
-
|
||||
|
||||
class SatelliteUpgradeDataMigration(Actor):
|
||||
"""
|
||||
- Reconfigure Satellite services and migrate PostgreSQL data
|
||||
+ Migrate Satellite PostgreSQL data
|
||||
"""
|
||||
|
||||
name = 'satellite_upgrade_data_migration'
|
||||
@@ -32,14 +27,6 @@ class SatelliteUpgradeDataMigration(Actor):
|
||||
if not facts or not facts.has_foreman:
|
||||
return
|
||||
|
||||
- # disable services, will be re-enabled by the installer
|
||||
- for service_name in SERVICES_TO_DISABLE:
|
||||
- for service in glob.glob(os.path.join(SYSTEMD_WANTS_BASE, '{}.service'.format(service_name))):
|
||||
- try:
|
||||
- os.unlink(service)
|
||||
- except Exception as e: # pylint: disable=broad-except
|
||||
- self.log.warning('Failed disabling service {}: {}'.format(service, e))
|
||||
-
|
||||
if facts.postgresql.local_postgresql and os.path.exists(POSTGRESQL_SCL_DATA_PATH):
|
||||
# we can assume POSTGRESQL_DATA_PATH exists and is empty
|
||||
# move PostgreSQL data to the new home
|
||||
--
|
||||
2.42.0
|
||||
|
@ -1,252 +0,0 @@
|
||||
From 0f70dbf229c04b5374d767eeab25ad3fa32e0d8f Mon Sep 17 00:00:00 2001
|
||||
From: Evgeni Golov <evgeni@golov.de>
|
||||
Date: Mon, 19 Feb 2024 12:23:28 +0100
|
||||
Subject: [PATCH 28/34] Add el8toel9 upgrade facts for Satellite
|
||||
|
||||
This adds the el8toel9 specific fact scanner/generator for Satellite
|
||||
upgrades. The result of this actor is what drives the actual upgrade
|
||||
actions.
|
||||
---
|
||||
.../actors/satellite_upgrade_facts/actor.py | 71 ++++++++
|
||||
.../unit_test_satellite_upgrade_facts.py | 151 ++++++++++++++++++
|
||||
2 files changed, 222 insertions(+)
|
||||
create mode 100644 repos/system_upgrade/el8toel9/actors/satellite_upgrade_facts/actor.py
|
||||
create mode 100644 repos/system_upgrade/el8toel9/actors/satellite_upgrade_facts/tests/unit_test_satellite_upgrade_facts.py
|
||||
|
||||
diff --git a/repos/system_upgrade/el8toel9/actors/satellite_upgrade_facts/actor.py b/repos/system_upgrade/el8toel9/actors/satellite_upgrade_facts/actor.py
|
||||
new file mode 100644
|
||||
index 00000000..2dc78cce
|
||||
--- /dev/null
|
||||
+++ b/repos/system_upgrade/el8toel9/actors/satellite_upgrade_facts/actor.py
|
||||
@@ -0,0 +1,71 @@
|
||||
+from leapp.actors import Actor
|
||||
+from leapp.libraries.common.config import architecture
|
||||
+from leapp.libraries.common.rpms import has_package
|
||||
+from leapp.models import (
|
||||
+ InstalledRPM,
|
||||
+ RepositoriesSetupTasks,
|
||||
+ RpmTransactionTasks,
|
||||
+ SatelliteFacts,
|
||||
+ SatellitePostgresqlFacts,
|
||||
+ UsedRepositories
|
||||
+)
|
||||
+from leapp.tags import FactsPhaseTag, IPUWorkflowTag
|
||||
+
|
||||
+RELATED_PACKAGES = ('foreman', 'foreman-selinux', 'foreman-proxy', 'katello', 'katello-selinux',
|
||||
+ 'candlepin', 'candlepin-selinux', 'pulpcore-selinux', 'satellite', 'satellite-capsule')
|
||||
+RELATED_PACKAGE_PREFIXES = ('rubygem-hammer', 'rubygem-foreman', 'rubygem-katello',
|
||||
+ 'rubygem-smart_proxy', 'python3.11-pulp', 'foreman-installer',
|
||||
+ 'satellite-installer')
|
||||
+
|
||||
+
|
||||
+class SatelliteUpgradeFacts(Actor):
|
||||
+ """
|
||||
+ Report which Satellite packages require updates and how to handle PostgreSQL data
|
||||
+ """
|
||||
+
|
||||
+ name = 'satellite_upgrade_facts'
|
||||
+ consumes = (InstalledRPM, UsedRepositories)
|
||||
+ produces = (RepositoriesSetupTasks, RpmTransactionTasks, SatelliteFacts)
|
||||
+ tags = (IPUWorkflowTag, FactsPhaseTag)
|
||||
+
|
||||
+ def process(self):
|
||||
+ if not architecture.matches_architecture(architecture.ARCH_X86_64):
|
||||
+ return
|
||||
+
|
||||
+ has_foreman = has_package(InstalledRPM, 'foreman') or has_package(InstalledRPM, 'foreman-proxy')
|
||||
+ if not has_foreman:
|
||||
+ return
|
||||
+
|
||||
+ local_postgresql = has_package(InstalledRPM, 'postgresql-server')
|
||||
+
|
||||
+ to_install = ['rubygem-foreman_maintain']
|
||||
+
|
||||
+ for rpm_pkgs in self.consume(InstalledRPM):
|
||||
+ for pkg in rpm_pkgs.items:
|
||||
+ if pkg.name in RELATED_PACKAGES or pkg.name.startswith(RELATED_PACKAGE_PREFIXES):
|
||||
+ to_install.append(pkg.name)
|
||||
+
|
||||
+ if local_postgresql:
|
||||
+ to_install.extend(['postgresql', 'postgresql-server'])
|
||||
+ if has_package(InstalledRPM, 'postgresql-contrib'):
|
||||
+ to_install.append('postgresql-contrib')
|
||||
+ if has_package(InstalledRPM, 'postgresql-evr'):
|
||||
+ to_install.append('postgresql-evr')
|
||||
+
|
||||
+ self.produce(SatelliteFacts(
|
||||
+ has_foreman=has_foreman,
|
||||
+ has_katello_installer=False,
|
||||
+ postgresql=SatellitePostgresqlFacts(
|
||||
+ local_postgresql=local_postgresql,
|
||||
+ ),
|
||||
+ ))
|
||||
+
|
||||
+ repositories_to_enable = []
|
||||
+ for used_repos in self.consume(UsedRepositories):
|
||||
+ for used_repo in used_repos.repositories:
|
||||
+ if used_repo.repository.startswith(('satellite-6', 'satellite-capsule-6', 'satellite-maintenance-6')):
|
||||
+ repositories_to_enable.append(used_repo.repository.replace('for-rhel-8', 'for-rhel-9'))
|
||||
+ if repositories_to_enable:
|
||||
+ self.produce(RepositoriesSetupTasks(to_enable=repositories_to_enable))
|
||||
+
|
||||
+ self.produce(RpmTransactionTasks(to_install=to_install))
|
||||
diff --git a/repos/system_upgrade/el8toel9/actors/satellite_upgrade_facts/tests/unit_test_satellite_upgrade_facts.py b/repos/system_upgrade/el8toel9/actors/satellite_upgrade_facts/tests/unit_test_satellite_upgrade_facts.py
|
||||
new file mode 100644
|
||||
index 00000000..b0e44c46
|
||||
--- /dev/null
|
||||
+++ b/repos/system_upgrade/el8toel9/actors/satellite_upgrade_facts/tests/unit_test_satellite_upgrade_facts.py
|
||||
@@ -0,0 +1,151 @@
|
||||
+from leapp.libraries.common.config import mock_configs
|
||||
+from leapp.models import (
|
||||
+ InstalledRPM,
|
||||
+ RepositoriesSetupTasks,
|
||||
+ RPM,
|
||||
+ RpmTransactionTasks,
|
||||
+ SatelliteFacts,
|
||||
+ UsedRepositories,
|
||||
+ UsedRepository
|
||||
+)
|
||||
+
|
||||
+RH_PACKAGER = 'Red Hat, Inc. <http://bugzilla.redhat.com/bugzilla>'
|
||||
+
|
||||
+
|
||||
+def fake_package(pkg_name):
|
||||
+ return RPM(name=pkg_name, version='0.1', release='1.sm01', epoch='1', packager=RH_PACKAGER, arch='noarch',
|
||||
+ pgpsig='RSA/SHA256, Mon 01 Jan 1970 00:00:00 AM -03, Key ID 199e2f91fd431d51')
|
||||
+
|
||||
+
|
||||
+FOREMAN_RPM = fake_package('foreman')
|
||||
+FOREMAN_PROXY_RPM = fake_package('foreman-proxy')
|
||||
+KATELLO_INSTALLER_RPM = fake_package('foreman-installer-katello')
|
||||
+KATELLO_RPM = fake_package('katello')
|
||||
+RUBYGEM_KATELLO_RPM = fake_package('rubygem-katello')
|
||||
+RUBYGEM_FOREMAN_PUPPET_RPM = fake_package('rubygem-foreman_puppet')
|
||||
+POSTGRESQL_RPM = fake_package('postgresql-server')
|
||||
+SATELLITE_RPM = fake_package('satellite')
|
||||
+SATELLITE_CAPSULE_RPM = fake_package('satellite-capsule')
|
||||
+
|
||||
+SATELLITE_REPOSITORY = UsedRepository(repository='satellite-6.99-for-rhel-8-x86_64-rpms')
|
||||
+CAPSULE_REPOSITORY = UsedRepository(repository='satellite-capsule-6.99-for-rhel-8-x86_64-rpms')
|
||||
+MAINTENANCE_REPOSITORY = UsedRepository(repository='satellite-maintenance-6.99-for-rhel-8-x86_64-rpms')
|
||||
+
|
||||
+
|
||||
+def test_no_satellite_present(current_actor_context):
|
||||
+ current_actor_context.feed(InstalledRPM(items=[]))
|
||||
+ current_actor_context.run(config_model=mock_configs.CONFIG)
|
||||
+ message = current_actor_context.consume(SatelliteFacts)
|
||||
+ assert not message
|
||||
+
|
||||
+
|
||||
+def test_satellite_present(current_actor_context):
|
||||
+ current_actor_context.feed(InstalledRPM(items=[FOREMAN_RPM]))
|
||||
+ current_actor_context.run(config_model=mock_configs.CONFIG)
|
||||
+ message = current_actor_context.consume(SatelliteFacts)[0]
|
||||
+ assert message.has_foreman
|
||||
+
|
||||
+
|
||||
+def test_wrong_arch(current_actor_context):
|
||||
+ current_actor_context.feed(InstalledRPM(items=[FOREMAN_RPM]))
|
||||
+ current_actor_context.run(config_model=mock_configs.CONFIG_S390X)
|
||||
+ message = current_actor_context.consume(SatelliteFacts)
|
||||
+ assert not message
|
||||
+
|
||||
+
|
||||
+def test_satellite_capsule_present(current_actor_context):
|
||||
+ current_actor_context.feed(InstalledRPM(items=[FOREMAN_PROXY_RPM]))
|
||||
+ current_actor_context.run(config_model=mock_configs.CONFIG)
|
||||
+ message = current_actor_context.consume(SatelliteFacts)[0]
|
||||
+ assert message.has_foreman
|
||||
+
|
||||
+
|
||||
+def test_no_katello_installer_present(current_actor_context):
|
||||
+ current_actor_context.feed(InstalledRPM(items=[FOREMAN_RPM]))
|
||||
+ current_actor_context.run(config_model=mock_configs.CONFIG)
|
||||
+ message = current_actor_context.consume(SatelliteFacts)[0]
|
||||
+ assert not message.has_katello_installer
|
||||
+
|
||||
+
|
||||
+def test_katello_installer_present(current_actor_context):
|
||||
+ current_actor_context.feed(InstalledRPM(items=[FOREMAN_RPM, KATELLO_INSTALLER_RPM]))
|
||||
+ current_actor_context.run(config_model=mock_configs.CONFIG)
|
||||
+ message = current_actor_context.consume(SatelliteFacts)[0]
|
||||
+ # while the katello installer rpm is present, we do not want this to be true
|
||||
+ # as the version in EL8 doesn't have the system checks we skip with this flag
|
||||
+ assert not message.has_katello_installer
|
||||
+
|
||||
+
|
||||
+def test_installs_related_package(current_actor_context):
|
||||
+ current_actor_context.feed(InstalledRPM(items=[FOREMAN_RPM, KATELLO_RPM, RUBYGEM_KATELLO_RPM,
|
||||
+ RUBYGEM_FOREMAN_PUPPET_RPM]))
|
||||
+ current_actor_context.run(config_model=mock_configs.CONFIG)
|
||||
+ message = current_actor_context.consume(RpmTransactionTasks)[0]
|
||||
+ assert 'katello' in message.to_install
|
||||
+ assert 'rubygem-katello' in message.to_install
|
||||
+ assert 'rubygem-foreman_puppet' in message.to_install
|
||||
+
|
||||
+
|
||||
+def test_installs_satellite_package(current_actor_context):
|
||||
+ current_actor_context.feed(InstalledRPM(items=[FOREMAN_RPM, SATELLITE_RPM]))
|
||||
+ current_actor_context.run(config_model=mock_configs.CONFIG)
|
||||
+ message = current_actor_context.consume(RpmTransactionTasks)[0]
|
||||
+ assert 'satellite' in message.to_install
|
||||
+ assert 'satellite-capsule' not in message.to_install
|
||||
+
|
||||
+
|
||||
+def test_installs_satellite_capsule_package(current_actor_context):
|
||||
+ current_actor_context.feed(InstalledRPM(items=[FOREMAN_PROXY_RPM, SATELLITE_CAPSULE_RPM]))
|
||||
+ current_actor_context.run(config_model=mock_configs.CONFIG)
|
||||
+ message = current_actor_context.consume(RpmTransactionTasks)[0]
|
||||
+ assert 'satellite-capsule' in message.to_install
|
||||
+ assert 'satellite' not in message.to_install
|
||||
+
|
||||
+
|
||||
+def test_detects_local_postgresql(current_actor_context):
|
||||
+ current_actor_context.feed(InstalledRPM(items=[FOREMAN_RPM, POSTGRESQL_RPM]))
|
||||
+ current_actor_context.run(config_model=mock_configs.CONFIG)
|
||||
+
|
||||
+ satellitemsg = current_actor_context.consume(SatelliteFacts)[0]
|
||||
+ assert satellitemsg.postgresql.local_postgresql
|
||||
+
|
||||
+
|
||||
+def test_detects_remote_postgresql(current_actor_context):
|
||||
+ current_actor_context.feed(InstalledRPM(items=[FOREMAN_RPM]))
|
||||
+ current_actor_context.run(config_model=mock_configs.CONFIG)
|
||||
+
|
||||
+ satellitemsg = current_actor_context.consume(SatelliteFacts)[0]
|
||||
+ assert not satellitemsg.postgresql.local_postgresql
|
||||
+
|
||||
+
|
||||
+def test_enables_right_repositories_on_satellite(current_actor_context):
|
||||
+ current_actor_context.feed(InstalledRPM(items=[FOREMAN_RPM, SATELLITE_RPM]))
|
||||
+ current_actor_context.feed(UsedRepositories(repositories=[SATELLITE_REPOSITORY, MAINTENANCE_REPOSITORY]))
|
||||
+ current_actor_context.run(config_model=mock_configs.CONFIG)
|
||||
+
|
||||
+ rpmmessage = current_actor_context.consume(RepositoriesSetupTasks)[0]
|
||||
+
|
||||
+ assert 'satellite-maintenance-6.99-for-rhel-9-x86_64-rpms' in rpmmessage.to_enable
|
||||
+ assert 'satellite-6.99-for-rhel-9-x86_64-rpms' in rpmmessage.to_enable
|
||||
+ assert 'satellite-capsule-6.99-for-rhel-9-x86_64-rpms' not in rpmmessage.to_enable
|
||||
+
|
||||
+
|
||||
+def test_enables_right_repositories_on_capsule(current_actor_context):
|
||||
+ current_actor_context.feed(InstalledRPM(items=[FOREMAN_PROXY_RPM, SATELLITE_CAPSULE_RPM]))
|
||||
+ current_actor_context.feed(UsedRepositories(repositories=[CAPSULE_REPOSITORY, MAINTENANCE_REPOSITORY]))
|
||||
+ current_actor_context.run(config_model=mock_configs.CONFIG)
|
||||
+
|
||||
+ rpmmessage = current_actor_context.consume(RepositoriesSetupTasks)[0]
|
||||
+
|
||||
+ assert 'satellite-maintenance-6.99-for-rhel-9-x86_64-rpms' in rpmmessage.to_enable
|
||||
+ assert 'satellite-6.99-for-rhel-9-x86_64-rpms' not in rpmmessage.to_enable
|
||||
+ assert 'satellite-capsule-6.99-for-rhel-9-x86_64-rpms' in rpmmessage.to_enable
|
||||
+
|
||||
+
|
||||
+def test_enables_right_repositories_on_upstream(current_actor_context):
|
||||
+ current_actor_context.feed(InstalledRPM(items=[FOREMAN_RPM]))
|
||||
+ current_actor_context.run(config_model=mock_configs.CONFIG)
|
||||
+
|
||||
+ message = current_actor_context.consume(RepositoriesSetupTasks)
|
||||
+
|
||||
+ assert not message
|
||||
--
|
||||
2.42.0
|
||||
|
@ -1,112 +0,0 @@
|
||||
From 720bb13c5eb411469e8bf825b93aeefdc771f039 Mon Sep 17 00:00:00 2001
|
||||
From: Evgeni Golov <evgeni@golov.de>
|
||||
Date: Wed, 24 Apr 2024 13:58:39 +0200
|
||||
Subject: [PATCH 29/34] Refresh collation version if pulp-ansible is present
|
||||
|
||||
When migrating to a new OS, we REINDEX all databases.
|
||||
pulp_ansible ships with an own collation (using ICU), which needs a
|
||||
version refresh after the REINDEX has been done.
|
||||
---
|
||||
.../common/actors/satellite_upgrader/actor.py | 4 ++++
|
||||
.../tests/unit_test_satellite_upgrader.py | 18 ++++++++++++++++++
|
||||
.../system_upgrade/common/models/satellite.py | 2 ++
|
||||
.../actors/satellite_upgrade_facts/actor.py | 1 +
|
||||
.../tests/unit_test_satellite_upgrade_facts.py | 9 +++++++++
|
||||
5 files changed, 34 insertions(+)
|
||||
|
||||
diff --git a/repos/system_upgrade/common/actors/satellite_upgrader/actor.py b/repos/system_upgrade/common/actors/satellite_upgrader/actor.py
|
||||
index f498f2fa..2e0290ae 100644
|
||||
--- a/repos/system_upgrade/common/actors/satellite_upgrader/actor.py
|
||||
+++ b/repos/system_upgrade/common/actors/satellite_upgrader/actor.py
|
||||
@@ -25,6 +25,10 @@ class SatelliteUpgrader(Actor):
|
||||
run(['sed', '-i', '/data_directory/d', '/var/lib/pgsql/data/postgresql.conf'])
|
||||
run(['systemctl', 'start', 'postgresql'])
|
||||
run(['runuser', '-u', 'postgres', '--', 'reindexdb', '-a'])
|
||||
+ if facts.postgresql.has_pulp_ansible_semver:
|
||||
+ run(['runuser', '-c',
|
||||
+ 'echo "ALTER COLLATION pulp_ansible_semver REFRESH VERSION;" | psql pulpcore',
|
||||
+ 'postgres'])
|
||||
except CalledProcessError as e:
|
||||
api.current_logger().error('Failed to reindex the database: {}'.format(str(e)))
|
||||
|
||||
diff --git a/repos/system_upgrade/common/actors/satellite_upgrader/tests/unit_test_satellite_upgrader.py b/repos/system_upgrade/common/actors/satellite_upgrader/tests/unit_test_satellite_upgrader.py
|
||||
index 2f3509f3..55896c75 100644
|
||||
--- a/repos/system_upgrade/common/actors/satellite_upgrader/tests/unit_test_satellite_upgrader.py
|
||||
+++ b/repos/system_upgrade/common/actors/satellite_upgrader/tests/unit_test_satellite_upgrader.py
|
||||
@@ -48,3 +48,21 @@ def test_run_reindexdb(monkeypatch, current_actor_context):
|
||||
assert mocked_run.commands[1] == ['systemctl', 'start', 'postgresql']
|
||||
assert mocked_run.commands[2] == ['runuser', '-u', 'postgres', '--', 'reindexdb', '-a']
|
||||
assert mocked_run.commands[3] == ['foreman-installer', '--disable-system-checks']
|
||||
+
|
||||
+
|
||||
+def test_run_reindexdb_with_pulp_ansible(monkeypatch, current_actor_context):
|
||||
+ mocked_run = MockedRun()
|
||||
+ monkeypatch.setattr('leapp.libraries.stdlib.run', mocked_run)
|
||||
+ current_actor_context.feed(SatelliteFacts(has_foreman=True,
|
||||
+ postgresql=SatellitePostgresqlFacts(local_postgresql=True,
|
||||
+ has_pulp_ansible_semver=True)))
|
||||
+ current_actor_context.run()
|
||||
+ assert mocked_run.commands
|
||||
+ assert len(mocked_run.commands) == 5
|
||||
+ assert mocked_run.commands[0] == ['sed', '-i', '/data_directory/d', '/var/lib/pgsql/data/postgresql.conf']
|
||||
+ assert mocked_run.commands[1] == ['systemctl', 'start', 'postgresql']
|
||||
+ assert mocked_run.commands[2] == ['runuser', '-u', 'postgres', '--', 'reindexdb', '-a']
|
||||
+ assert mocked_run.commands[3] == ['runuser', '-c',
|
||||
+ 'echo "ALTER COLLATION pulp_ansible_semver REFRESH VERSION;" | psql pulpcore',
|
||||
+ 'postgres']
|
||||
+ assert mocked_run.commands[4] == ['foreman-installer', '--disable-system-checks']
|
||||
diff --git a/repos/system_upgrade/common/models/satellite.py b/repos/system_upgrade/common/models/satellite.py
|
||||
index b4282790..532f6a3a 100644
|
||||
--- a/repos/system_upgrade/common/models/satellite.py
|
||||
+++ b/repos/system_upgrade/common/models/satellite.py
|
||||
@@ -15,6 +15,8 @@ class SatellitePostgresqlFacts(Model):
|
||||
""" How many bytes are required on the target partition """
|
||||
space_available = fields.Nullable(fields.Integer())
|
||||
""" How many bytes are available on the target partition """
|
||||
+ has_pulp_ansible_semver = fields.Boolean(default=False)
|
||||
+ """ Whether the DB has the pulp_ansible_semver collation """
|
||||
|
||||
|
||||
class SatelliteFacts(Model):
|
||||
diff --git a/repos/system_upgrade/el8toel9/actors/satellite_upgrade_facts/actor.py b/repos/system_upgrade/el8toel9/actors/satellite_upgrade_facts/actor.py
|
||||
index 2dc78cce..46612876 100644
|
||||
--- a/repos/system_upgrade/el8toel9/actors/satellite_upgrade_facts/actor.py
|
||||
+++ b/repos/system_upgrade/el8toel9/actors/satellite_upgrade_facts/actor.py
|
||||
@@ -57,6 +57,7 @@ class SatelliteUpgradeFacts(Actor):
|
||||
has_katello_installer=False,
|
||||
postgresql=SatellitePostgresqlFacts(
|
||||
local_postgresql=local_postgresql,
|
||||
+ has_pulp_ansible_semver=has_package(InstalledRPM, 'python3.11-pulp-ansible'),
|
||||
),
|
||||
))
|
||||
|
||||
diff --git a/repos/system_upgrade/el8toel9/actors/satellite_upgrade_facts/tests/unit_test_satellite_upgrade_facts.py b/repos/system_upgrade/el8toel9/actors/satellite_upgrade_facts/tests/unit_test_satellite_upgrade_facts.py
|
||||
index b0e44c46..e7ca512e 100644
|
||||
--- a/repos/system_upgrade/el8toel9/actors/satellite_upgrade_facts/tests/unit_test_satellite_upgrade_facts.py
|
||||
+++ b/repos/system_upgrade/el8toel9/actors/satellite_upgrade_facts/tests/unit_test_satellite_upgrade_facts.py
|
||||
@@ -26,6 +26,7 @@ RUBYGEM_FOREMAN_PUPPET_RPM = fake_package('rubygem-foreman_puppet')
|
||||
POSTGRESQL_RPM = fake_package('postgresql-server')
|
||||
SATELLITE_RPM = fake_package('satellite')
|
||||
SATELLITE_CAPSULE_RPM = fake_package('satellite-capsule')
|
||||
+PULP_ANSIBLE_RPM = fake_package('python3.11-pulp-ansible')
|
||||
|
||||
SATELLITE_REPOSITORY = UsedRepository(repository='satellite-6.99-for-rhel-8-x86_64-rpms')
|
||||
CAPSULE_REPOSITORY = UsedRepository(repository='satellite-capsule-6.99-for-rhel-8-x86_64-rpms')
|
||||
@@ -118,6 +119,14 @@ def test_detects_remote_postgresql(current_actor_context):
|
||||
assert not satellitemsg.postgresql.local_postgresql
|
||||
|
||||
|
||||
+def test_detects_pulp_ansible(current_actor_context):
|
||||
+ current_actor_context.feed(InstalledRPM(items=[FOREMAN_RPM, POSTGRESQL_RPM, PULP_ANSIBLE_RPM]))
|
||||
+ current_actor_context.run(config_model=mock_configs.CONFIG)
|
||||
+
|
||||
+ satellitemsg = current_actor_context.consume(SatelliteFacts)[0]
|
||||
+ assert satellitemsg.postgresql.has_pulp_ansible_semver
|
||||
+
|
||||
+
|
||||
def test_enables_right_repositories_on_satellite(current_actor_context):
|
||||
current_actor_context.feed(InstalledRPM(items=[FOREMAN_RPM, SATELLITE_RPM]))
|
||||
current_actor_context.feed(UsedRepositories(repositories=[SATELLITE_REPOSITORY, MAINTENANCE_REPOSITORY]))
|
||||
--
|
||||
2.42.0
|
||||
|
@ -1,90 +0,0 @@
|
||||
From bad2fb2e446246dc80807b078c80e0c98fd72fe5 Mon Sep 17 00:00:00 2001
|
||||
From: Evgeni Golov <evgeni@golov.de>
|
||||
Date: Fri, 26 Apr 2024 09:08:58 +0200
|
||||
Subject: [PATCH 30/34] Refactor satellite_upgrade_services to use
|
||||
SystemdServicesTasks
|
||||
|
||||
We used to just delete the symlinks in /etc/systemd, but with the new
|
||||
systemd actors this doesn't work anymore as they will restore the
|
||||
pre-delete state because they by default aim at having source and
|
||||
target systems match in terms of services. By using SystemdServicesTasks
|
||||
we can explicitly turn those services off and inform all interested
|
||||
parties about this.
|
||||
---
|
||||
.../satellite_upgrade_services/actor.py | 15 ++++++------
|
||||
.../unit_test_satellite_upgrade_services.py | 24 +++++++++++++++++++
|
||||
2 files changed, 31 insertions(+), 8 deletions(-)
|
||||
create mode 100644 repos/system_upgrade/common/actors/satellite_upgrade_services/tests/unit_test_satellite_upgrade_services.py
|
||||
|
||||
diff --git a/repos/system_upgrade/common/actors/satellite_upgrade_services/actor.py b/repos/system_upgrade/common/actors/satellite_upgrade_services/actor.py
|
||||
index 3cda49a9..d14edfb7 100644
|
||||
--- a/repos/system_upgrade/common/actors/satellite_upgrade_services/actor.py
|
||||
+++ b/repos/system_upgrade/common/actors/satellite_upgrade_services/actor.py
|
||||
@@ -2,8 +2,8 @@ import glob
|
||||
import os
|
||||
|
||||
from leapp.actors import Actor
|
||||
-from leapp.models import SatelliteFacts
|
||||
-from leapp.tags import ApplicationsPhaseTag, IPUWorkflowTag
|
||||
+from leapp.models import SatelliteFacts, SystemdServicesTasks
|
||||
+from leapp.tags import FactsPhaseTag, IPUWorkflowTag
|
||||
|
||||
SYSTEMD_WANTS_BASE = '/etc/systemd/system/multi-user.target.wants/'
|
||||
SERVICES_TO_DISABLE = ['dynflow-sidekiq@*', 'foreman', 'foreman-proxy',
|
||||
@@ -18,8 +18,8 @@ class SatelliteUpgradeServices(Actor):
|
||||
|
||||
name = 'satellite_upgrade_services'
|
||||
consumes = (SatelliteFacts,)
|
||||
- produces = ()
|
||||
- tags = (IPUWorkflowTag, ApplicationsPhaseTag)
|
||||
+ produces = (SystemdServicesTasks,)
|
||||
+ tags = (IPUWorkflowTag, FactsPhaseTag)
|
||||
|
||||
def process(self):
|
||||
facts = next(self.consume(SatelliteFacts), None)
|
||||
@@ -27,9 +27,8 @@ class SatelliteUpgradeServices(Actor):
|
||||
return
|
||||
|
||||
# disable services, will be re-enabled by the installer
|
||||
+ services_to_disable = []
|
||||
for service_name in SERVICES_TO_DISABLE:
|
||||
for service in glob.glob(os.path.join(SYSTEMD_WANTS_BASE, '{}.service'.format(service_name))):
|
||||
- try:
|
||||
- os.unlink(service)
|
||||
- except OSError as e:
|
||||
- self.log.warning('Failed disabling service {}: {}'.format(service, e))
|
||||
+ services_to_disable.append(os.path.basename(service))
|
||||
+ self.produce(SystemdServicesTasks(to_disable=services_to_disable))
|
||||
diff --git a/repos/system_upgrade/common/actors/satellite_upgrade_services/tests/unit_test_satellite_upgrade_services.py b/repos/system_upgrade/common/actors/satellite_upgrade_services/tests/unit_test_satellite_upgrade_services.py
|
||||
new file mode 100644
|
||||
index 00000000..f41621ab
|
||||
--- /dev/null
|
||||
+++ b/repos/system_upgrade/common/actors/satellite_upgrade_services/tests/unit_test_satellite_upgrade_services.py
|
||||
@@ -0,0 +1,24 @@
|
||||
+import glob
|
||||
+
|
||||
+from leapp.models import SatelliteFacts, SatellitePostgresqlFacts, SystemdServicesTasks
|
||||
+
|
||||
+
|
||||
+def test_disable_httpd(monkeypatch, current_actor_context):
|
||||
+ def mock_glob():
|
||||
+ orig_glob = glob.glob
|
||||
+
|
||||
+ def mocked_glob(pathname):
|
||||
+ if pathname == '/etc/systemd/system/multi-user.target.wants/httpd.service':
|
||||
+ return [pathname]
|
||||
+ return orig_glob(pathname)
|
||||
+
|
||||
+ return mocked_glob
|
||||
+
|
||||
+ monkeypatch.setattr('glob.glob', mock_glob())
|
||||
+
|
||||
+ current_actor_context.feed(SatelliteFacts(has_foreman=True,
|
||||
+ postgresql=SatellitePostgresqlFacts(local_postgresql=False)))
|
||||
+ current_actor_context.run()
|
||||
+
|
||||
+ message = current_actor_context.consume(SystemdServicesTasks)[0]
|
||||
+ assert 'httpd.service' in message.to_disable
|
||||
--
|
||||
2.42.0
|
||||
|
@ -1,144 +0,0 @@
|
||||
From 64e2c58ac3bd97cbb09daf4c861204705c69ec97 Mon Sep 17 00:00:00 2001
|
||||
From: Petr Stodulka <pstodulk@redhat.com>
|
||||
Date: Fri, 3 May 2024 14:44:51 +0200
|
||||
Subject: [PATCH 31/34] mount /usr: Implement try-sleep loop - add time for
|
||||
storage initialisation
|
||||
|
||||
This problem is typical for SAN + FC when the storage needs sometimes
|
||||
more time for the initialisation. Implemented try-sleep loop.
|
||||
Retry the activation of the storage + /usr mounting in 15s.
|
||||
The loop can be repeated 10 times, so total time is 150s right now
|
||||
for the activation.
|
||||
|
||||
Note that this is not proper solution for the storage initialisation,
|
||||
however we have discovered some obstacles in the bootup process to
|
||||
be able to do it correctly as we would like to. Regarding limited
|
||||
time, we are going to deliver this solution, that should improve
|
||||
the experience and should be safe to not cause regressions for already
|
||||
working functionality. We expect to provide better solution for
|
||||
newer upgrades paths in future (IPU 8->9 and newer).
|
||||
|
||||
jira: https://issues.redhat.com/browse/RHEL-3344
|
||||
---
|
||||
.../dracut/85sys-upgrade-redhat/mount_usr.sh | 95 +++++++++++++++----
|
||||
1 file changed, 79 insertions(+), 16 deletions(-)
|
||||
|
||||
diff --git a/repos/system_upgrade/common/actors/commonleappdracutmodules/files/dracut/85sys-upgrade-redhat/mount_usr.sh b/repos/system_upgrade/common/actors/commonleappdracutmodules/files/dracut/85sys-upgrade-redhat/mount_usr.sh
|
||||
index 3c52652f..db065d87 100755
|
||||
--- a/repos/system_upgrade/common/actors/commonleappdracutmodules/files/dracut/85sys-upgrade-redhat/mount_usr.sh
|
||||
+++ b/repos/system_upgrade/common/actors/commonleappdracutmodules/files/dracut/85sys-upgrade-redhat/mount_usr.sh
|
||||
@@ -22,6 +22,18 @@ filtersubvol() {
|
||||
|
||||
mount_usr()
|
||||
{
|
||||
+ #
|
||||
+ # mount_usr [true | false]
|
||||
+ # Expected a "true" value for the last attempt to mount /usr. On the last
|
||||
+ # attempt, in case of failure drop to shell.
|
||||
+ #
|
||||
+ # Return 0 when everything is all right
|
||||
+ # In case of failure and /usr has been detected:
|
||||
+ # return 2 when $1 is "true" (drop to shell invoked)
|
||||
+ # (note: possibly it's nonsense, but to be sure..)
|
||||
+ # return 1 otherwise
|
||||
+ #
|
||||
+ _last_attempt="$1"
|
||||
# check, if we have to mount the /usr filesystem
|
||||
while read -r _dev _mp _fs _opts _freq _passno; do
|
||||
[ "${_dev%%#*}" != "$_dev" ] && continue
|
||||
@@ -60,25 +72,76 @@ mount_usr()
|
||||
fi
|
||||
done < "${NEWROOT}/etc/fstab" >> /etc/fstab
|
||||
|
||||
- if [ "$_usr_found" != "" ]; then
|
||||
- info "Mounting /usr with -o $_opts"
|
||||
- mount "${NEWROOT}/usr" 2>&1 | vinfo
|
||||
- mount -o remount,rw "${NEWROOT}/usr"
|
||||
+ if [ "$_usr_found" = "" ]; then
|
||||
+ # nothing to do
|
||||
+ return 0
|
||||
+ fi
|
||||
|
||||
- if ! ismounted "${NEWROOT}/usr"; then
|
||||
- warn "Mounting /usr to ${NEWROOT}/usr failed"
|
||||
- warn "*** Dropping you to a shell; the system will continue"
|
||||
- warn "*** when you leave the shell."
|
||||
- action_on_fail
|
||||
- fi
|
||||
+ info "Mounting /usr with -o $_opts"
|
||||
+ mount "${NEWROOT}/usr" 2>&1 | vinfo
|
||||
+ mount -o remount,rw "${NEWROOT}/usr"
|
||||
+
|
||||
+ if ismounted "${NEWROOT}/usr"; then
|
||||
+ # success!!
|
||||
+ return 0
|
||||
+ fi
|
||||
+
|
||||
+ if [ "$_last_attempt" = "true" ]; then
|
||||
+ warn "Mounting /usr to ${NEWROOT}/usr failed"
|
||||
+ warn "*** Dropping you to a shell; the system will continue"
|
||||
+ warn "*** when you leave the shell."
|
||||
+ action_on_fail
|
||||
+ return 2
|
||||
fi
|
||||
+
|
||||
+ return 1
|
||||
}
|
||||
|
||||
-if [ -f "${NEWROOT}/etc/fstab" ]; then
|
||||
- # In case we have the LVM command available try make it activate all partitions
|
||||
- if command -v lvm 2>/dev/null 1>/dev/null; then
|
||||
- lvm vgchange -a y
|
||||
+
|
||||
+try_to_mount_usr() {
|
||||
+ _last_attempt="$1"
|
||||
+ if [ ! -f "${NEWROOT}/etc/fstab" ]; then
|
||||
+ warn "File ${NEWROOT}/etc/fstab doesn't exist."
|
||||
+ return 1
|
||||
+ fi
|
||||
+
|
||||
+ # In case we have the LVM command available try make it activate all partitions
|
||||
+ if command -v lvm 2>/dev/null 1>/dev/null; then
|
||||
+ lvm vgchange -a y || {
|
||||
+ warn "Detected problem when tried to activate LVM VG."
|
||||
+ if [ "$_last_attempt" != "true" ]; then
|
||||
+ # this is not last execution, retry
|
||||
+ return 1
|
||||
+ fi
|
||||
+ # NOTE(pstodulk):
|
||||
+ # last execution, so call mount_usr anyway
|
||||
+ # I am not 100% about lvm vgchange exit codes and I am aware of
|
||||
+ # possible warnings, in this last run, let's keep it on mount_usr
|
||||
+ # anyway..
|
||||
+ }
|
||||
+ fi
|
||||
+
|
||||
+ mount_usr "$1"
|
||||
+}
|
||||
+
|
||||
+_sleep_timeout=15
|
||||
+_last_attempt="false"
|
||||
+for i in 0 1 2 3 4 5 6 7 8 9 10 11; do
|
||||
+ if [ $i -eq 11 ]; then
|
||||
+ _last_attempt="true"
|
||||
fi
|
||||
+ try_to_mount_usr "$_last_attempt" && break
|
||||
+
|
||||
+ # something is wrong. In some cases, storage needs more time for the
|
||||
+ # initialisation - especially in case of SAN.
|
||||
+
|
||||
+ if [ "$_last_attempt" = "true" ]; then
|
||||
+ warn "The last attempt to initialize storage has not been successful."
|
||||
+ warn "Unknown state of the storage. It is possible that upgrade will be stopped."
|
||||
+ break
|
||||
+ fi
|
||||
+
|
||||
+ warn "Failed attempt to initialize the storage. Retry in $_sleep_timeout seconds. Attempt: $i of 10"
|
||||
+ sleep $_sleep_timeout
|
||||
+done
|
||||
|
||||
- mount_usr
|
||||
-fi
|
||||
--
|
||||
2.42.0
|
||||
|
@ -1,374 +0,0 @@
|
||||
From 3cb522d3a682365dae5d8745056f4671bdd5e41b Mon Sep 17 00:00:00 2001
|
||||
From: Michal Reznik <mreznik@redhat.com>
|
||||
Date: Fri, 3 May 2024 13:47:49 +0200
|
||||
Subject: [PATCH 32/34] Add additional KB resources
|
||||
|
||||
add aditional KB resources in a form of ExternalLink or
|
||||
error details as requested by support
|
||||
---
|
||||
.../libraries/checkbootavailspace.py | 4 ++++
|
||||
.../common/actors/checkcifs/libraries/checkcifs.py | 5 +++++
|
||||
.../libraries/checkdddd.py | 10 ++++++++++
|
||||
.../common/actors/checkmemory/libraries/checkmemory.py | 5 +++++
|
||||
repos/system_upgrade/common/actors/checknfs/actor.py | 4 ++++
|
||||
.../common/actors/checkrootsymlinks/actor.py | 5 +++++
|
||||
.../libraries/checkyumpluginsenabled.py | 4 ++++
|
||||
.../libraries/checkinstalledkernels.py | 5 +++++
|
||||
.../missinggpgkeysinhibitor/libraries/missinggpgkey.py | 5 ++++-
|
||||
.../common/actors/opensshpermitrootlogincheck/actor.py | 5 +++++
|
||||
.../common/actors/persistentnetnamesdisable/actor.py | 5 +++++
|
||||
.../targetuserspacecreator/libraries/userspacegen.py | 9 +++++++++
|
||||
.../actors/verifydialogs/libraries/verifydialogs.py | 5 +++++
|
||||
repos/system_upgrade/common/libraries/rhsm.py | 3 ++-
|
||||
.../system_upgrade/el7toel8/actors/checkbtrfs/actor.py | 4 ++++
|
||||
.../actors/checkhacluster/libraries/checkhacluster.py | 4 ++++
|
||||
.../el7toel8/actors/checkremovedpammodules/actor.py | 4 ++++
|
||||
.../libraries/checkinstalleddevelkernels.py | 4 ++++
|
||||
.../libraries/satellite_upgrade_check.py | 5 +++++
|
||||
.../actors/checkifcfg/libraries/checkifcfg_ifcfg.py | 5 +++++
|
||||
.../actors/firewalldcheckallowzonedrifting/actor.py | 5 +++++
|
||||
21 files changed, 103 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/repos/system_upgrade/common/actors/checkbootavailspace/libraries/checkbootavailspace.py b/repos/system_upgrade/common/actors/checkbootavailspace/libraries/checkbootavailspace.py
|
||||
index 7380f335..0cc4cf7d 100644
|
||||
--- a/repos/system_upgrade/common/actors/checkbootavailspace/libraries/checkbootavailspace.py
|
||||
+++ b/repos/system_upgrade/common/actors/checkbootavailspace/libraries/checkbootavailspace.py
|
||||
@@ -32,6 +32,10 @@ def inhibit_upgrade(avail_bytes):
|
||||
'/boot needs additional {0} MiB to be able to accommodate the upgrade initramfs and new kernel.'.format(
|
||||
additional_mib_needed)
|
||||
),
|
||||
+ reporting.ExternalLink(
|
||||
+ url='https://access.redhat.com/solutions/298263',
|
||||
+ title='Why does kernel cannot be upgraded due to insufficient space in /boot ?'
|
||||
+ ),
|
||||
reporting.Severity(reporting.Severity.HIGH),
|
||||
reporting.Groups([reporting.Groups.FILESYSTEM]),
|
||||
reporting.Groups([reporting.Groups.INHIBITOR]),
|
||||
diff --git a/repos/system_upgrade/common/actors/checkcifs/libraries/checkcifs.py b/repos/system_upgrade/common/actors/checkcifs/libraries/checkcifs.py
|
||||
index b3ae146f..fc26ea70 100644
|
||||
--- a/repos/system_upgrade/common/actors/checkcifs/libraries/checkcifs.py
|
||||
+++ b/repos/system_upgrade/common/actors/checkcifs/libraries/checkcifs.py
|
||||
@@ -18,6 +18,11 @@ def checkcifs(storage_info):
|
||||
reporting.Groups.NETWORK
|
||||
]),
|
||||
reporting.Remediation(hint='Comment out CIFS entries to proceed with the upgrade.'),
|
||||
+ reporting.ExternalLink(
|
||||
+ url='https://access.redhat.com/solutions/6964304',
|
||||
+ title='Leapp upgrade failed with error '
|
||||
+ '"Inhibitor: Use of CIFS detected. Upgrade cannot proceed"'
|
||||
+ ),
|
||||
reporting.Groups([reporting.Groups.INHIBITOR]),
|
||||
reporting.RelatedResource('file', '/etc/fstab')
|
||||
])
|
||||
diff --git a/repos/system_upgrade/common/actors/checkdetecteddevicesanddrivers/libraries/checkdddd.py b/repos/system_upgrade/common/actors/checkdetecteddevicesanddrivers/libraries/checkdddd.py
|
||||
index df431c0e..defe3f9a 100644
|
||||
--- a/repos/system_upgrade/common/actors/checkdetecteddevicesanddrivers/libraries/checkdddd.py
|
||||
+++ b/repos/system_upgrade/common/actors/checkdetecteddevicesanddrivers/libraries/checkdddd.py
|
||||
@@ -35,6 +35,16 @@ def create_inhibitors(inhibiting_entries):
|
||||
source=get_source_major_version(),
|
||||
)
|
||||
),
|
||||
+ reporting.ExternalLink(
|
||||
+ url='https://access.redhat.com/solutions/6971716',
|
||||
+ title='Leapp preupgrade getting "Inhibitor: Detected loaded kernel drivers which have been '
|
||||
+ 'removed in RHEL 8. Upgrade cannot proceed." '
|
||||
+ ),
|
||||
+ reporting.ExternalLink(
|
||||
+ url='https://access.redhat.com/solutions/5436131',
|
||||
+ title='Leapp upgrade fail with error "Inhibitor: Detected loaded kernel drivers which '
|
||||
+ 'have been removed in RHEL 8. Upgrade cannot proceed."'
|
||||
+ ),
|
||||
reporting.Audience('sysadmin'),
|
||||
reporting.Groups([reporting.Groups.KERNEL, reporting.Groups.DRIVERS]),
|
||||
reporting.Severity(reporting.Severity.HIGH),
|
||||
diff --git a/repos/system_upgrade/common/actors/checkmemory/libraries/checkmemory.py b/repos/system_upgrade/common/actors/checkmemory/libraries/checkmemory.py
|
||||
index 25012273..808c9662 100644
|
||||
--- a/repos/system_upgrade/common/actors/checkmemory/libraries/checkmemory.py
|
||||
+++ b/repos/system_upgrade/common/actors/checkmemory/libraries/checkmemory.py
|
||||
@@ -42,6 +42,11 @@ def process():
|
||||
reporting.Summary(summary),
|
||||
reporting.Severity(reporting.Severity.HIGH),
|
||||
reporting.Groups([reporting.Groups.SANITY, reporting.Groups.INHIBITOR]),
|
||||
+ reporting.ExternalLink(
|
||||
+ url='https://access.redhat.com/solutions/7014179',
|
||||
+ title='Leapp upgrade fail with error"Minimum memory requirements '
|
||||
+ 'for RHEL 8 are not met"Upgrade cannot proceed'
|
||||
+ ),
|
||||
reporting.ExternalLink(
|
||||
url='https://access.redhat.com/articles/rhel-limits',
|
||||
title='Red Hat Enterprise Linux Technology Capabilities and Limits'
|
||||
diff --git a/repos/system_upgrade/common/actors/checknfs/actor.py b/repos/system_upgrade/common/actors/checknfs/actor.py
|
||||
index 208c5dd9..94c5e606 100644
|
||||
--- a/repos/system_upgrade/common/actors/checknfs/actor.py
|
||||
+++ b/repos/system_upgrade/common/actors/checknfs/actor.py
|
||||
@@ -61,6 +61,10 @@ class CheckNfs(Actor):
|
||||
reporting.Groups.NETWORK
|
||||
]),
|
||||
reporting.Remediation(hint='Disable NFS temporarily for the upgrade if possible.'),
|
||||
+ reporting.ExternalLink(
|
||||
+ url='https://access.redhat.com/solutions/6964006',
|
||||
+ title='Why does leapp upgrade fail on detecting NFS during upgrade?'
|
||||
+ ),
|
||||
reporting.Groups([reporting.Groups.INHIBITOR]),
|
||||
] + fstab_related_resource
|
||||
)
|
||||
diff --git a/repos/system_upgrade/common/actors/checkrootsymlinks/actor.py b/repos/system_upgrade/common/actors/checkrootsymlinks/actor.py
|
||||
index 2769b7c1..c35272b2 100644
|
||||
--- a/repos/system_upgrade/common/actors/checkrootsymlinks/actor.py
|
||||
+++ b/repos/system_upgrade/common/actors/checkrootsymlinks/actor.py
|
||||
@@ -37,6 +37,11 @@ class CheckRootSymlinks(Actor):
|
||||
'point to absolute paths.\n'
|
||||
'Please change these links to relative ones.'
|
||||
),
|
||||
+ reporting.ExternalLink(
|
||||
+ url='https://access.redhat.com/solutions/6989732',
|
||||
+ title='leapp upgrade stops with Inhibitor "Upgrade requires links in root '
|
||||
+ 'directory to be relative"'
|
||||
+ ),
|
||||
reporting.Severity(reporting.Severity.HIGH),
|
||||
reporting.Groups([reporting.Groups.INHIBITOR])]
|
||||
|
||||
diff --git a/repos/system_upgrade/common/actors/checkyumpluginsenabled/libraries/checkyumpluginsenabled.py b/repos/system_upgrade/common/actors/checkyumpluginsenabled/libraries/checkyumpluginsenabled.py
|
||||
index 48f38d0a..5522af9c 100644
|
||||
--- a/repos/system_upgrade/common/actors/checkyumpluginsenabled/libraries/checkyumpluginsenabled.py
|
||||
+++ b/repos/system_upgrade/common/actors/checkyumpluginsenabled/libraries/checkyumpluginsenabled.py
|
||||
@@ -63,6 +63,10 @@ def check_required_yum_plugins_enabled(pkg_manager_info):
|
||||
# Provide all commands as one due to problems with satellites
|
||||
commands=[['bash', '-c', '"{0}"'.format('; '.join(remediation_commands))]]
|
||||
),
|
||||
+ reporting.ExternalLink(
|
||||
+ url='https://access.redhat.com/solutions/7028063',
|
||||
+ title='Why is Leapp preupgrade generating "Inhibitor: Required YUM plugins are not being loaded."'
|
||||
+ ),
|
||||
reporting.RelatedResource('file', pkg_manager_config_path),
|
||||
reporting.RelatedResource('file', subscription_manager_plugin_conf),
|
||||
reporting.RelatedResource('file', product_id_plugin_conf),
|
||||
diff --git a/repos/system_upgrade/common/actors/kernel/checkinstalledkernels/libraries/checkinstalledkernels.py b/repos/system_upgrade/common/actors/kernel/checkinstalledkernels/libraries/checkinstalledkernels.py
|
||||
index 95882d29..4573354b 100644
|
||||
--- a/repos/system_upgrade/common/actors/kernel/checkinstalledkernels/libraries/checkinstalledkernels.py
|
||||
+++ b/repos/system_upgrade/common/actors/kernel/checkinstalledkernels/libraries/checkinstalledkernels.py
|
||||
@@ -103,5 +103,10 @@ def process():
|
||||
reporting.Groups([reporting.Groups.KERNEL, reporting.Groups.BOOT]),
|
||||
reporting.Groups([reporting.Groups.INHIBITOR]),
|
||||
reporting.Remediation(hint=remediation),
|
||||
+ reporting.ExternalLink(
|
||||
+ url='https://access.redhat.com/solutions/7014134',
|
||||
+ title='Leapp upgrade fail with error "Inhibitor:Newest installed kernel '
|
||||
+ 'not in use" Upgrade cannot proceed'
|
||||
+ ),
|
||||
reporting.RelatedResource('package', 'kernel')
|
||||
])
|
||||
diff --git a/repos/system_upgrade/common/actors/missinggpgkeysinhibitor/libraries/missinggpgkey.py b/repos/system_upgrade/common/actors/missinggpgkeysinhibitor/libraries/missinggpgkey.py
|
||||
index 9a806ca2..4b93e741 100644
|
||||
--- a/repos/system_upgrade/common/actors/missinggpgkeysinhibitor/libraries/missinggpgkey.py
|
||||
+++ b/repos/system_upgrade/common/actors/missinggpgkeysinhibitor/libraries/missinggpgkey.py
|
||||
@@ -65,7 +65,10 @@ def _consume_data():
|
||||
used_target_repos = next(api.consume(UsedTargetRepositories)).repos
|
||||
except StopIteration:
|
||||
raise StopActorExecutionError(
|
||||
- 'Could not check for valid GPG keys', details={'details': 'No UsedTargetRepositories facts'}
|
||||
+ 'Could not check for valid GPG keys', details={
|
||||
+ 'details': 'No UsedTargetRepositories facts',
|
||||
+ 'link': 'https://access.redhat.com/solutions/7061850'
|
||||
+ }
|
||||
)
|
||||
|
||||
try:
|
||||
diff --git a/repos/system_upgrade/common/actors/opensshpermitrootlogincheck/actor.py b/repos/system_upgrade/common/actors/opensshpermitrootlogincheck/actor.py
|
||||
index 2ac4ec8f..7a49622f 100644
|
||||
--- a/repos/system_upgrade/common/actors/opensshpermitrootlogincheck/actor.py
|
||||
+++ b/repos/system_upgrade/common/actors/opensshpermitrootlogincheck/actor.py
|
||||
@@ -135,6 +135,11 @@ class OpenSshPermitRootLoginCheck(Actor):
|
||||
'sshd_config next to the "PermitRootLogin yes" directive '
|
||||
'to prevent rpm replacing it during the upgrade.'
|
||||
),
|
||||
+ reporting.ExternalLink(
|
||||
+ url='https://access.redhat.com/solutions/7003083',
|
||||
+ title='Why Leapp Preupgrade for RHEL 8 to 9 getting '
|
||||
+ '"Possible problems with remote login using root account" ?'
|
||||
+ ),
|
||||
reporting.Groups([reporting.Groups.INHIBITOR])
|
||||
] + COMMON_RESOURCES)
|
||||
# If the configuration is modified and contains any directive allowing
|
||||
diff --git a/repos/system_upgrade/common/actors/persistentnetnamesdisable/actor.py b/repos/system_upgrade/common/actors/persistentnetnamesdisable/actor.py
|
||||
index 0e13c139..1f7f1413 100644
|
||||
--- a/repos/system_upgrade/common/actors/persistentnetnamesdisable/actor.py
|
||||
+++ b/repos/system_upgrade/common/actors/persistentnetnamesdisable/actor.py
|
||||
@@ -50,6 +50,11 @@ class PersistentNetNamesDisable(Actor):
|
||||
title='How to perform an in-place upgrade to RHEL 8 when using kernel NIC names on RHEL 7',
|
||||
url='https://access.redhat.com/solutions/4067471'
|
||||
),
|
||||
+ reporting.ExternalLink(
|
||||
+ title='RHEL 8 to RHEL 9: inplace upgrade fails at '
|
||||
+ '"Network configuration for unsupported device types detected"',
|
||||
+ url='https://access.redhat.com/solutions/7009239'
|
||||
+ ),
|
||||
reporting.Remediation(
|
||||
hint='Rename all ethX network interfaces following the attached KB solution article.'
|
||||
),
|
||||
diff --git a/repos/system_upgrade/common/actors/targetuserspacecreator/libraries/userspacegen.py b/repos/system_upgrade/common/actors/targetuserspacecreator/libraries/userspacegen.py
|
||||
index d60bc75f..dc93c9a0 100644
|
||||
--- a/repos/system_upgrade/common/actors/targetuserspacecreator/libraries/userspacegen.py
|
||||
+++ b/repos/system_upgrade/common/actors/targetuserspacecreator/libraries/userspacegen.py
|
||||
@@ -828,6 +828,10 @@ def _get_rhsm_available_repoids(context):
|
||||
' to set up Satellite and the system properly.'
|
||||
|
||||
).format(target_major_version)),
|
||||
+ reporting.ExternalLink(
|
||||
+ url='https://access.redhat.com/solutions/5392811',
|
||||
+ title='RHEL 7 to RHEL 8 LEAPP Upgrade Failing When Using Red Hat Satellite'
|
||||
+ ),
|
||||
reporting.ExternalLink(
|
||||
# https://red.ht/preparing-for-upgrade-to-rhel8
|
||||
# https://red.ht/preparing-for-upgrade-to-rhel9
|
||||
@@ -1007,6 +1011,11 @@ def gather_target_repositories(context, indata):
|
||||
# https://red.ht/preparing-for-upgrade-to-rhel10
|
||||
url='https://red.ht/preparing-for-upgrade-to-rhel{}'.format(target_major_version),
|
||||
title='Preparing for the upgrade'),
|
||||
+ reporting.ExternalLink(
|
||||
+ url='https://access.redhat.com/solutions/7001181',
|
||||
+ title='LEAPP Upgrade Failing from RHEL 7 to RHEL 8 when system is '
|
||||
+ 'registered to custromer portal'
|
||||
+ ),
|
||||
reporting.RelatedResource("file", "/etc/leapp/files/repomap.json"),
|
||||
reporting.RelatedResource("file", "/etc/yum.repos.d/")
|
||||
])
|
||||
diff --git a/repos/system_upgrade/common/actors/verifydialogs/libraries/verifydialogs.py b/repos/system_upgrade/common/actors/verifydialogs/libraries/verifydialogs.py
|
||||
index a6dbe6eb..a79079b1 100644
|
||||
--- a/repos/system_upgrade/common/actors/verifydialogs/libraries/verifydialogs.py
|
||||
+++ b/repos/system_upgrade/common/actors/verifydialogs/libraries/verifydialogs.py
|
||||
@@ -20,5 +20,10 @@ def check_dialogs(inhibit_if_no_userchoice=True):
|
||||
reporting.Summary(summary.format('\n'.join(sections))),
|
||||
reporting.Groups([reporting.Groups.INHIBITOR] if inhibit_if_no_userchoice else []),
|
||||
reporting.Remediation(hint=dialogs_remediation, commands=cmd_remediation),
|
||||
+ reporting.ExternalLink(
|
||||
+ url='https://access.redhat.com/solutions/7035321',
|
||||
+ title='Leapp upgrade fail with error "Inhibitor: Missing required answers '
|
||||
+ 'in the answer file."'
|
||||
+ ),
|
||||
reporting.Key(dialog.key)]
|
||||
reporting.create_report(report_data + dialog_resources)
|
||||
diff --git a/repos/system_upgrade/common/libraries/rhsm.py b/repos/system_upgrade/common/libraries/rhsm.py
|
||||
index eb388829..74f6aeb1 100644
|
||||
--- a/repos/system_upgrade/common/libraries/rhsm.py
|
||||
+++ b/repos/system_upgrade/common/libraries/rhsm.py
|
||||
@@ -85,7 +85,8 @@ def _handle_rhsm_exceptions(hint=None):
|
||||
details={
|
||||
'details': str(e),
|
||||
'stderr': e.stderr,
|
||||
- 'hint': hint or _def_hint
|
||||
+ 'hint': hint or _def_hint,
|
||||
+ 'link': 'https://access.redhat.com/solutions/6138372'
|
||||
}
|
||||
)
|
||||
|
||||
diff --git a/repos/system_upgrade/el7toel8/actors/checkbtrfs/actor.py b/repos/system_upgrade/el7toel8/actors/checkbtrfs/actor.py
|
||||
index c1b07f8d..a3848957 100644
|
||||
--- a/repos/system_upgrade/el7toel8/actors/checkbtrfs/actor.py
|
||||
+++ b/repos/system_upgrade/el7toel8/actors/checkbtrfs/actor.py
|
||||
@@ -41,6 +41,10 @@ class CheckBtrfs(Actor):
|
||||
title='How do I prevent a kernel module from loading automatically?',
|
||||
url='https://access.redhat.com/solutions/41278'
|
||||
),
|
||||
+ reporting.ExternalLink(
|
||||
+ title='Leapp upgrade fail with error "Inhibitor: Btrfs has been removed from RHEL8"',
|
||||
+ url='https://access.redhat.com/solutions/7020130'
|
||||
+ ),
|
||||
reporting.Severity(reporting.Severity.HIGH),
|
||||
reporting.Groups([reporting.Groups.INHIBITOR]),
|
||||
reporting.Groups([reporting.Groups.FILESYSTEM]),
|
||||
diff --git a/repos/system_upgrade/el7toel8/actors/checkhacluster/libraries/checkhacluster.py b/repos/system_upgrade/el7toel8/actors/checkhacluster/libraries/checkhacluster.py
|
||||
index 870cf8a9..115867d2 100644
|
||||
--- a/repos/system_upgrade/el7toel8/actors/checkhacluster/libraries/checkhacluster.py
|
||||
+++ b/repos/system_upgrade/el7toel8/actors/checkhacluster/libraries/checkhacluster.py
|
||||
@@ -25,6 +25,10 @@ def inhibit(node_type):
|
||||
" to a RHEL High Availability or Resilient Storage Cluster"
|
||||
),
|
||||
),
|
||||
+ reporting.ExternalLink(
|
||||
+ url='https://access.redhat.com/solutions/7049940',
|
||||
+ title='Leapp upgrade from RHEL 7 to RHEL 8 fails for pacemaker cluster'
|
||||
+ ),
|
||||
reporting.Remediation(
|
||||
hint=(
|
||||
"Destroy the existing HA cluster"
|
||||
diff --git a/repos/system_upgrade/el7toel8/actors/checkremovedpammodules/actor.py b/repos/system_upgrade/el7toel8/actors/checkremovedpammodules/actor.py
|
||||
index 503f6149..d2e92398 100644
|
||||
--- a/repos/system_upgrade/el7toel8/actors/checkremovedpammodules/actor.py
|
||||
+++ b/repos/system_upgrade/el7toel8/actors/checkremovedpammodules/actor.py
|
||||
@@ -59,6 +59,10 @@ class CheckRemovedPamModules(Actor):
|
||||
'please remove the pam module(s) from all the files '
|
||||
'under /etc/pam.d/.'.format(', '.join(replacements))
|
||||
),
|
||||
+ reporting.ExternalLink(
|
||||
+ url='https://access.redhat.com/solutions/7004774',
|
||||
+ title='Leapp preupgrade fails with: The pam_tally2 pam module(s) no longer available'
|
||||
+ ),
|
||||
reporting.Severity(reporting.Severity.HIGH),
|
||||
reporting.Groups([reporting.Groups.INHIBITOR]),
|
||||
] + [reporting.RelatedResource('pam', r) for r in replacements | found_modules])
|
||||
diff --git a/repos/system_upgrade/el7toel8/actors/kernel/checkinstalleddevelkernels/checkinstalleddevelkernels/libraries/checkinstalleddevelkernels.py b/repos/system_upgrade/el7toel8/actors/kernel/checkinstalleddevelkernels/checkinstalleddevelkernels/libraries/checkinstalleddevelkernels.py
|
||||
index 0ff4489f..fa49092c 100644
|
||||
--- a/repos/system_upgrade/el7toel8/actors/kernel/checkinstalleddevelkernels/checkinstalleddevelkernels/libraries/checkinstalleddevelkernels.py
|
||||
+++ b/repos/system_upgrade/el7toel8/actors/kernel/checkinstalleddevelkernels/checkinstalleddevelkernels/libraries/checkinstalleddevelkernels.py
|
||||
@@ -38,5 +38,9 @@ def process():
|
||||
reporting.Groups([reporting.Groups.KERNEL]),
|
||||
reporting.Groups([reporting.Groups.INHIBITOR]),
|
||||
reporting.Remediation(hint=hint, commands=commands),
|
||||
+ reporting.ExternalLink(
|
||||
+ url='https://access.redhat.com/solutions/4723671',
|
||||
+ title='leapp upgrade fails on kernel-devel packages'
|
||||
+ ),
|
||||
reporting.RelatedResource('package', 'kernel-devel')
|
||||
])
|
||||
diff --git a/repos/system_upgrade/el7toel8/actors/satellite_upgrade_check/libraries/satellite_upgrade_check.py b/repos/system_upgrade/el7toel8/actors/satellite_upgrade_check/libraries/satellite_upgrade_check.py
|
||||
index 6954dd50..82148ef3 100644
|
||||
--- a/repos/system_upgrade/el7toel8/actors/satellite_upgrade_check/libraries/satellite_upgrade_check.py
|
||||
+++ b/repos/system_upgrade/el7toel8/actors/satellite_upgrade_check/libraries/satellite_upgrade_check.py
|
||||
@@ -53,6 +53,11 @@ def satellite_upgrade_check(facts):
|
||||
reporting.create_report([
|
||||
reporting.Title(title),
|
||||
reporting.Summary(summary),
|
||||
+ reporting.ExternalLink(
|
||||
+ url='https://access.redhat.com/solutions/6794671',
|
||||
+ title='Leapp preupgrade of Red Hat Satellite 6 fails on '
|
||||
+ 'Old PostgreSQL data found in /var/lib/pgsql/data'
|
||||
+ ),
|
||||
reporting.Severity(severity),
|
||||
reporting.Groups([]),
|
||||
reporting.Groups(flags)
|
||||
diff --git a/repos/system_upgrade/el8toel9/actors/checkifcfg/libraries/checkifcfg_ifcfg.py b/repos/system_upgrade/el8toel9/actors/checkifcfg/libraries/checkifcfg_ifcfg.py
|
||||
index 946841df..ed666350 100644
|
||||
--- a/repos/system_upgrade/el8toel9/actors/checkifcfg/libraries/checkifcfg_ifcfg.py
|
||||
+++ b/repos/system_upgrade/el8toel9/actors/checkifcfg/libraries/checkifcfg_ifcfg.py
|
||||
@@ -88,6 +88,11 @@ def process():
|
||||
reporting.Title(title),
|
||||
reporting.Summary(summary),
|
||||
reporting.Remediation(hint=remediation),
|
||||
+ reporting.ExternalLink(
|
||||
+ url='https://access.redhat.com/solutions/7009239',
|
||||
+ title='RHEL 8 to RHEL 9: inplace upgrade fails at '
|
||||
+ '"Network configuration for unsupported device types detected"'
|
||||
+ ),
|
||||
reporting.Severity(reporting.Severity.HIGH),
|
||||
reporting.Groups([reporting.Groups.NETWORK, reporting.Groups.SERVICES]),
|
||||
reporting.Groups([reporting.Groups.INHIBITOR]),
|
||||
diff --git a/repos/system_upgrade/el8toel9/actors/firewalldcheckallowzonedrifting/actor.py b/repos/system_upgrade/el8toel9/actors/firewalldcheckallowzonedrifting/actor.py
|
||||
index b7eb5806..0002f6aa 100644
|
||||
--- a/repos/system_upgrade/el8toel9/actors/firewalldcheckallowzonedrifting/actor.py
|
||||
+++ b/repos/system_upgrade/el8toel9/actors/firewalldcheckallowzonedrifting/actor.py
|
||||
@@ -44,6 +44,11 @@ class FirewalldCheckAllowZoneDrifting(Actor):
|
||||
reporting.ExternalLink(
|
||||
url='https://access.redhat.com/articles/4855631',
|
||||
title='Changes in firewalld related to Zone Drifting'),
|
||||
+ reporting.ExternalLink(
|
||||
+ url='https://access.redhat.com/solutions/6969130',
|
||||
+ title='Leapp Preupgrade check fails with error - '
|
||||
+ '"Inhibitor: Firewalld Configuration AllowZoneDrifting Is Unsupported".'
|
||||
+ ),
|
||||
reporting.Remediation(
|
||||
hint='Set AllowZoneDrifting=no in /etc/firewalld/firewalld.conf',
|
||||
commands=[['sed', '-i', 's/^AllowZoneDrifting=.*/AllowZoneDrifting=no/',
|
||||
--
|
||||
2.42.0
|
||||
|
@ -1,43 +0,0 @@
|
||||
From da5ce33f51b2607c372acfc0e9bb28bf5270ef65 Mon Sep 17 00:00:00 2001
|
||||
From: Petr Stodulka <pstodulk@redhat.com>
|
||||
Date: Sat, 4 May 2024 10:07:14 +0200
|
||||
Subject: [PATCH 33/34] storage initialisation: apply sleep always
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Based on feedback from @rmetrich¹ the sleep period should be applied
|
||||
always as the problem with initialisation is happening also on systems
|
||||
with higher than few number of LVs where /usr is not on dedicated
|
||||
volume.
|
||||
|
||||
1: https://github.com/oamg/leapp-repository/pull/1218#issuecomment-2093303020
|
||||
---
|
||||
.../files/dracut/85sys-upgrade-redhat/mount_usr.sh | 5 +++--
|
||||
1 file changed, 3 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/repos/system_upgrade/common/actors/commonleappdracutmodules/files/dracut/85sys-upgrade-redhat/mount_usr.sh b/repos/system_upgrade/common/actors/commonleappdracutmodules/files/dracut/85sys-upgrade-redhat/mount_usr.sh
|
||||
index db065d87..84f4857d 100755
|
||||
--- a/repos/system_upgrade/common/actors/commonleappdracutmodules/files/dracut/85sys-upgrade-redhat/mount_usr.sh
|
||||
+++ b/repos/system_upgrade/common/actors/commonleappdracutmodules/files/dracut/85sys-upgrade-redhat/mount_usr.sh
|
||||
@@ -127,6 +127,8 @@ try_to_mount_usr() {
|
||||
_sleep_timeout=15
|
||||
_last_attempt="false"
|
||||
for i in 0 1 2 3 4 5 6 7 8 9 10 11; do
|
||||
+ info "Storage initialisation: Attempt $i of 11. Wait $_sleep_timeout seconds."
|
||||
+ sleep $_sleep_timeout
|
||||
if [ $i -eq 11 ]; then
|
||||
_last_attempt="true"
|
||||
fi
|
||||
@@ -141,7 +143,6 @@ for i in 0 1 2 3 4 5 6 7 8 9 10 11; do
|
||||
break
|
||||
fi
|
||||
|
||||
- warn "Failed attempt to initialize the storage. Retry in $_sleep_timeout seconds. Attempt: $i of 10"
|
||||
- sleep $_sleep_timeout
|
||||
+ warn "Failed attempt to initialize the storage. Retry..."
|
||||
done
|
||||
|
||||
--
|
||||
2.42.0
|
||||
|
@ -1,30 +0,0 @@
|
||||
From ce8dfff52c067fc334511c9773759eca8bff8b61 Mon Sep 17 00:00:00 2001
|
||||
From: Rodolfo Olivieri <rolivier@redhat.com>
|
||||
Date: Tue, 7 May 2024 09:38:41 -0300
|
||||
Subject: [PATCH 34/34] Add renovate to track github-actions deps
|
||||
|
||||
The renovate bot will track and automatically update the github actions
|
||||
dependencies in the project.
|
||||
---
|
||||
.github/renovate.json | 8 ++++++++
|
||||
1 file changed, 8 insertions(+)
|
||||
create mode 100644 .github/renovate.json
|
||||
|
||||
diff --git a/.github/renovate.json b/.github/renovate.json
|
||||
new file mode 100644
|
||||
index 00000000..f55d8081
|
||||
--- /dev/null
|
||||
+++ b/.github/renovate.json
|
||||
@@ -0,0 +1,8 @@
|
||||
+{
|
||||
+ "extends": [
|
||||
+ "config:base"
|
||||
+ ],
|
||||
+ "enabledManagers": [
|
||||
+ "github-actions"
|
||||
+ ]
|
||||
+}
|
||||
\ No newline at end of file
|
||||
--
|
||||
2.42.0
|
||||
|
@ -1,25 +0,0 @@
|
||||
From 82b20e29da6c05bfb385c44eed2dc9af72c36148 Mon Sep 17 00:00:00 2001
|
||||
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
|
||||
Date: Sat, 11 May 2024 14:59:13 +0000
|
||||
Subject: [PATCH 35/49] chore(deps): update
|
||||
redhat-plumbers-in-action/differential-shellcheck action to v5
|
||||
|
||||
---
|
||||
.github/workflows/differential-shellcheck.yml | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/.github/workflows/differential-shellcheck.yml b/.github/workflows/differential-shellcheck.yml
|
||||
index 4af99f8d..f643f054 100644
|
||||
--- a/.github/workflows/differential-shellcheck.yml
|
||||
+++ b/.github/workflows/differential-shellcheck.yml
|
||||
@@ -24,6 +24,6 @@ jobs:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Differential ShellCheck
|
||||
- uses: redhat-plumbers-in-action/differential-shellcheck@v3
|
||||
+ uses: redhat-plumbers-in-action/differential-shellcheck@v5
|
||||
with:
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
--
|
||||
2.44.0
|
||||
|
@ -1,76 +0,0 @@
|
||||
From 821a387628e935e1aa9a74af153cd7598c8038c1 Mon Sep 17 00:00:00 2001
|
||||
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
|
||||
Date: Wed, 8 May 2024 12:45:11 +0000
|
||||
Subject: [PATCH 36/49] chore(deps): update actions/checkout action to v4
|
||||
|
||||
---
|
||||
.github/workflows/codespell.yml | 2 +-
|
||||
.github/workflows/differential-shellcheck.yml | 2 +-
|
||||
.github/workflows/reuse-copr-build.yml | 4 ++--
|
||||
.github/workflows/unit-tests.yml | 2 +-
|
||||
4 files changed, 5 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/.github/workflows/codespell.yml b/.github/workflows/codespell.yml
|
||||
index 4921bc90..c0ec20d6 100644
|
||||
--- a/.github/workflows/codespell.yml
|
||||
+++ b/.github/workflows/codespell.yml
|
||||
@@ -14,7 +14,7 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- - uses: actions/checkout@v3
|
||||
+ - uses: actions/checkout@v4
|
||||
- uses: codespell-project/actions-codespell@master
|
||||
with:
|
||||
ignore_words_list: ro,fo,couldn,repositor
|
||||
diff --git a/.github/workflows/differential-shellcheck.yml b/.github/workflows/differential-shellcheck.yml
|
||||
index f643f054..f1ed5f6a 100644
|
||||
--- a/.github/workflows/differential-shellcheck.yml
|
||||
+++ b/.github/workflows/differential-shellcheck.yml
|
||||
@@ -19,7 +19,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Repository checkout
|
||||
- uses: actions/checkout@v3
|
||||
+ uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
diff --git a/.github/workflows/reuse-copr-build.yml b/.github/workflows/reuse-copr-build.yml
|
||||
index 093e0c1a..c742db50 100644
|
||||
--- a/.github/workflows/reuse-copr-build.yml
|
||||
+++ b/.github/workflows/reuse-copr-build.yml
|
||||
@@ -42,7 +42,7 @@ jobs:
|
||||
# TODO: The correct way to checkout would be to use similar approach as in get_commit_by_timestamp function of
|
||||
# the github gluetool module (i.e. do not use HEAD but the last commit before comment).
|
||||
id: checkout
|
||||
- uses: actions/checkout@v2
|
||||
+ uses: actions/checkout@v4
|
||||
with:
|
||||
ref: "refs/pull/${{ steps.pr_nr.outputs.pr_nr }}/head"
|
||||
|
||||
@@ -105,7 +105,7 @@ jobs:
|
||||
- name: Checkout leapp
|
||||
id: checkout_leapp
|
||||
if: ${{ steps.leapp_pr_regex_match.outputs.match != '' }}
|
||||
- uses: actions/checkout@v2
|
||||
+ uses: actions/checkout@v4
|
||||
with:
|
||||
repository: "oamg/leapp"
|
||||
ref: "refs/pull/${{ steps.leapp_pr.outputs.leapp_pr }}/head"
|
||||
diff --git a/.github/workflows/unit-tests.yml b/.github/workflows/unit-tests.yml
|
||||
index 107a1fc0..e4b4d173 100644
|
||||
--- a/.github/workflows/unit-tests.yml
|
||||
+++ b/.github/workflows/unit-tests.yml
|
||||
@@ -34,7 +34,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout code
|
||||
- uses: actions/checkout@v2
|
||||
+ uses: actions/checkout@v4
|
||||
with:
|
||||
# NOTE(ivasilev) fetch-depth 0 is critical here as leapp deps discovery depends on specific substring in
|
||||
# commit message and default 1 option will get us just merge commit which has an unrelevant message.
|
||||
--
|
||||
2.44.0
|
||||
|
@ -1,25 +0,0 @@
|
||||
From d7ad5d7da691f1425a3eba59e1f74392948a98e3 Mon Sep 17 00:00:00 2001
|
||||
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
|
||||
Date: Fri, 10 May 2024 05:33:55 +0000
|
||||
Subject: [PATCH 37/49] chore(deps): update dependency ubuntu to v22
|
||||
|
||||
---
|
||||
.github/workflows/reuse-copr-build.yml | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/.github/workflows/reuse-copr-build.yml b/.github/workflows/reuse-copr-build.yml
|
||||
index c742db50..6bf71226 100644
|
||||
--- a/.github/workflows/reuse-copr-build.yml
|
||||
+++ b/.github/workflows/reuse-copr-build.yml
|
||||
@@ -16,7 +16,7 @@ jobs:
|
||||
reusable_workflow_copr_build_job:
|
||||
# This job only runs for '/rerun' pull request comments by owner, member, or collaborator of the repo/organization.
|
||||
name: Build copr builds for tft tests
|
||||
- runs-on: ubuntu-20.04
|
||||
+ runs-on: ubuntu-22.04
|
||||
outputs:
|
||||
artifacts: ${{ steps.gen_artifacts.outputs.artifacts }}
|
||||
if: |
|
||||
--
|
||||
2.44.0
|
||||
|
@ -1,119 +0,0 @@
|
||||
From 96346a5400a6e9741566e5070024a7918a6a9323 Mon Sep 17 00:00:00 2001
|
||||
From: Petr Stodulka <pstodulk@redhat.com>
|
||||
Date: Tue, 14 May 2024 15:24:43 +0200
|
||||
Subject: [PATCH 38/49] Fix E0606 errors reported by pylint
|
||||
|
||||
E0606 -> possibly-used-before-assignement
|
||||
|
||||
Note that in case of checktargetrepos actor we are introducing
|
||||
https://red.ht/upgrading-rhel9-to-rhel10-main-official-doc
|
||||
for IPU 9 -> 10. However, this shortened URL must be defined yet later.
|
||||
---
|
||||
.../actors/checktargetrepos/libraries/checktargetrepos.py | 2 ++
|
||||
.../tests/unit_test_upgradeinitramfsgenerator.py | 1 +
|
||||
.../common/actors/scantargetiso/tests/test_scan_target_iso.py | 1 +
|
||||
.../tests/unit_test_selinuxcontentscanner.py | 2 ++
|
||||
.../selinux/selinuxprepare/tests/unit_test_selinuxprepare.py | 1 +
|
||||
repos/system_upgrade/common/libraries/tests/test_grub.py | 3 +++
|
||||
repos/system_upgrade/common/libraries/tests/test_mdraid.py | 2 ++
|
||||
7 files changed, 12 insertions(+)
|
||||
|
||||
diff --git a/repos/system_upgrade/common/actors/checktargetrepos/libraries/checktargetrepos.py b/repos/system_upgrade/common/actors/checktargetrepos/libraries/checktargetrepos.py
|
||||
index 6d5a2f65..c286ed4f 100644
|
||||
--- a/repos/system_upgrade/common/actors/checktargetrepos/libraries/checktargetrepos.py
|
||||
+++ b/repos/system_upgrade/common/actors/checktargetrepos/libraries/checktargetrepos.py
|
||||
@@ -33,6 +33,8 @@ def process():
|
||||
ipu_doc_url = 'https://red.ht/upgrading-rhel7-to-rhel8-main-official-doc'
|
||||
elif target_major_version == '9':
|
||||
ipu_doc_url = 'https://red.ht/upgrading-rhel8-to-rhel9-main-official-doc'
|
||||
+ else:
|
||||
+ ipu_doc_url = 'https://red.ht/upgrading-rhel9-to-rhel10-main-official-doc'
|
||||
|
||||
rhui_info = next(api.consume(RHUIInfo), None)
|
||||
|
||||
diff --git a/repos/system_upgrade/common/actors/initramfs/upgradeinitramfsgenerator/tests/unit_test_upgradeinitramfsgenerator.py b/repos/system_upgrade/common/actors/initramfs/upgradeinitramfsgenerator/tests/unit_test_upgradeinitramfsgenerator.py
|
||||
index 8068e177..7397b82b 100644
|
||||
--- a/repos/system_upgrade/common/actors/initramfs/upgradeinitramfsgenerator/tests/unit_test_upgradeinitramfsgenerator.py
|
||||
+++ b/repos/system_upgrade/common/actors/initramfs/upgradeinitramfsgenerator/tests/unit_test_upgradeinitramfsgenerator.py
|
||||
@@ -354,6 +354,7 @@ def test_copy_modules_fail(monkeypatch, kind):
|
||||
|
||||
module_class = None
|
||||
copy_fn = None
|
||||
+ dst_path = None
|
||||
if kind == 'dracut':
|
||||
module_class = DracutModule
|
||||
copy_fn = upgradeinitramfsgenerator.copy_dracut_modules
|
||||
diff --git a/repos/system_upgrade/common/actors/scantargetiso/tests/test_scan_target_iso.py b/repos/system_upgrade/common/actors/scantargetiso/tests/test_scan_target_iso.py
|
||||
index 4dd0a125..8e235c6d 100644
|
||||
--- a/repos/system_upgrade/common/actors/scantargetiso/tests/test_scan_target_iso.py
|
||||
+++ b/repos/system_upgrade/common/actors/scantargetiso/tests/test_scan_target_iso.py
|
||||
@@ -201,6 +201,7 @@ def test_iso_repository_detection(monkeypatch, repodirs_in_iso, expected_repoids
|
||||
|
||||
produced_custom_repo_msgs = []
|
||||
target_iso_msg = None
|
||||
+ target_iso = None
|
||||
for produced_msg in produced_msgs:
|
||||
if isinstance(produced_msg, CustomTargetRepository):
|
||||
produced_custom_repo_msgs.append(produced_msg)
|
||||
diff --git a/repos/system_upgrade/common/actors/selinux/selinuxcontentscanner/tests/unit_test_selinuxcontentscanner.py b/repos/system_upgrade/common/actors/selinux/selinuxcontentscanner/tests/unit_test_selinuxcontentscanner.py
|
||||
index 1837c245..830eeac5 100644
|
||||
--- a/repos/system_upgrade/common/actors/selinux/selinuxcontentscanner/tests/unit_test_selinuxcontentscanner.py
|
||||
+++ b/repos/system_upgrade/common/actors/selinux/selinuxcontentscanner/tests/unit_test_selinuxcontentscanner.py
|
||||
@@ -33,6 +33,8 @@ class run_mocked(object):
|
||||
"port -a -t http_port_t -p udp 81",
|
||||
"fcontext -a -f a -t httpd_sys_content_t '/web(/.*)?'",
|
||||
"fcontext -a -f a -t cgdcbxd_exec_t '/ganesha(/.*)?'"]
|
||||
+ else:
|
||||
+ assert False, 'run_mocked: Called unexpected cmd not covered by test: {}'.format(self.args)
|
||||
|
||||
return {'stdout': stdout}
|
||||
|
||||
diff --git a/repos/system_upgrade/common/actors/selinux/selinuxprepare/tests/unit_test_selinuxprepare.py b/repos/system_upgrade/common/actors/selinux/selinuxprepare/tests/unit_test_selinuxprepare.py
|
||||
index 7d975dda..c1ad06c5 100644
|
||||
--- a/repos/system_upgrade/common/actors/selinux/selinuxprepare/tests/unit_test_selinuxprepare.py
|
||||
+++ b/repos/system_upgrade/common/actors/selinux/selinuxprepare/tests/unit_test_selinuxprepare.py
|
||||
@@ -24,6 +24,7 @@ class run_mocked(object):
|
||||
self.removed_modules.add(self.args[idx + 1])
|
||||
else:
|
||||
self.non_semodule_calls += 1
|
||||
+ stdout = []
|
||||
|
||||
return {'stdout': stdout}
|
||||
|
||||
diff --git a/repos/system_upgrade/common/libraries/tests/test_grub.py b/repos/system_upgrade/common/libraries/tests/test_grub.py
|
||||
index 5a4f3f63..6f13538c 100644
|
||||
--- a/repos/system_upgrade/common/libraries/tests/test_grub.py
|
||||
+++ b/repos/system_upgrade/common/libraries/tests/test_grub.py
|
||||
@@ -40,6 +40,7 @@ class RunMocked(object):
|
||||
def __call__(self, args, encoding=None):
|
||||
self.called += 1
|
||||
self.args = args
|
||||
+ stdout = ''
|
||||
if self.raise_err:
|
||||
raise_call_error(args)
|
||||
|
||||
@@ -50,6 +51,8 @@ class RunMocked(object):
|
||||
stdout = BOOT_DEVICE
|
||||
elif self.args[:-1] == ['lsblk', '-spnlo', 'name']:
|
||||
stdout = self.args[-1][:-1]
|
||||
+ else:
|
||||
+ assert False, 'RunMockedError: Called unexpected cmd not covered by test: {}'.format(self.args)
|
||||
|
||||
return {'stdout': stdout}
|
||||
|
||||
diff --git a/repos/system_upgrade/common/libraries/tests/test_mdraid.py b/repos/system_upgrade/common/libraries/tests/test_mdraid.py
|
||||
index cb7c1059..d536beec 100644
|
||||
--- a/repos/system_upgrade/common/libraries/tests/test_mdraid.py
|
||||
+++ b/repos/system_upgrade/common/libraries/tests/test_mdraid.py
|
||||
@@ -42,6 +42,8 @@ class RunMocked(object):
|
||||
stdout = 'ARRAY /dev/md0 level=raid1 num-devices=2 metadata=1.2 name=localhost.localdomain:0 UUID=c4acea6e:d56e1598:91822e3f:fb26832c\n devices=/dev/sda1,/dev/sdb1' # noqa: E501; pylint: disable=line-too-long
|
||||
elif self.args == ['mdadm', '--detail', '--verbose', '--brief', NOT_MD_DEVICE]:
|
||||
stdout = 'mdadm: /dev/sda does not appear to be an md device'
|
||||
+ else:
|
||||
+ assert False, 'RunMockedError: Called unexpected cmd not covered by test: {}'.format(self.args)
|
||||
|
||||
return {'stdout': stdout}
|
||||
|
||||
--
|
||||
2.44.0
|
||||
|
@ -1,78 +0,0 @@
|
||||
From 35e667c33dc186292a27efe2dceb2f71a20a5e13 Mon Sep 17 00:00:00 2001
|
||||
From: Petr Stodulka <pstodulk@redhat.com>
|
||||
Date: Tue, 14 May 2024 16:14:20 +0200
|
||||
Subject: [PATCH 39/49] Fix W0135 reported by pylint
|
||||
|
||||
W0135 -> contextmanager-generator-missing-cleanup
|
||||
|
||||
Expects try-finally around `yield`. Checked reported functions,
|
||||
usually it's FP. In one case I changed the code to make it clear.
|
||||
---
|
||||
repos/system_upgrade/common/libraries/dnfplugin.py | 3 +++
|
||||
.../system_upgrade/common/libraries/overlaygen.py | 14 ++++++++++----
|
||||
2 files changed, 13 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/repos/system_upgrade/common/libraries/dnfplugin.py b/repos/system_upgrade/common/libraries/dnfplugin.py
|
||||
index fbd58246..e59168ef 100644
|
||||
--- a/repos/system_upgrade/common/libraries/dnfplugin.py
|
||||
+++ b/repos/system_upgrade/common/libraries/dnfplugin.py
|
||||
@@ -460,6 +460,9 @@ def perform_transaction_install(target_userspace_info, storage_info, used_repos,
|
||||
|
||||
@contextlib.contextmanager
|
||||
def _prepare_perform(used_repos, target_userspace_info, xfs_info, storage_info, target_iso=None):
|
||||
+ # noqa: W0135; pylint: disable=contextmanager-generator-missing-cleanup
|
||||
+ # NOTE(pstodulk): the pylint check is not valid in this case - finally is covered
|
||||
+ # implicitly
|
||||
reserve_space = overlaygen.get_recommended_leapp_free_space(target_userspace_info.path)
|
||||
with _prepare_transaction(used_repos=used_repos,
|
||||
target_userspace_info=target_userspace_info
|
||||
diff --git a/repos/system_upgrade/common/libraries/overlaygen.py b/repos/system_upgrade/common/libraries/overlaygen.py
|
||||
index 6b0ff97d..4bcbf32b 100644
|
||||
--- a/repos/system_upgrade/common/libraries/overlaygen.py
|
||||
+++ b/repos/system_upgrade/common/libraries/overlaygen.py
|
||||
@@ -296,6 +296,9 @@ def _prepare_required_mounts(scratch_dir, mounts_dir, storage_info, scratch_rese
|
||||
|
||||
@contextlib.contextmanager
|
||||
def _build_overlay_mount(root_mount, mounts):
|
||||
+ # noqa: W0135; pylint: disable=contextmanager-generator-missing-cleanup
|
||||
+ # NOTE(pstodulk): the pylint check is not valid in this case - finally is covered
|
||||
+ # implicitly
|
||||
if not root_mount:
|
||||
raise StopActorExecutionError('Root mount point has not been prepared for overlayfs.')
|
||||
if not mounts:
|
||||
@@ -519,6 +522,9 @@ def _mount_dnf_cache(overlay_target):
|
||||
"""
|
||||
Convenience context manager to ensure bind mounted /var/cache/dnf and removal of the mount.
|
||||
"""
|
||||
+ # noqa: W0135; pylint: disable=contextmanager-generator-missing-cleanup
|
||||
+ # NOTE(pstodulk): the pylint check is not valid in this case - finally is covered
|
||||
+ # implicitly
|
||||
with mounting.BindMount(
|
||||
source='/var/cache/dnf',
|
||||
target=os.path.join(overlay_target, 'var', 'cache', 'dnf')) as cache_mount:
|
||||
@@ -570,6 +576,9 @@ def create_source_overlay(mounts_dir, scratch_dir, xfs_info, storage_info, mount
|
||||
:type scratch_reserve: Optional[int]
|
||||
:rtype: mounting.BindMount or mounting.NullMount
|
||||
"""
|
||||
+ # noqa: W0135; pylint: disable=contextmanager-generator-missing-cleanup
|
||||
+ # NOTE(pstodulk): the pylint check is not valid in this case - finally is covered
|
||||
+ # implicitly
|
||||
api.current_logger().debug('Creating source overlay in {scratch_dir} with mounts in {mounts_dir}'.format(
|
||||
scratch_dir=scratch_dir, mounts_dir=mounts_dir))
|
||||
try:
|
||||
@@ -589,11 +598,8 @@ def create_source_overlay(mounts_dir, scratch_dir, xfs_info, storage_info, mount
|
||||
with _build_overlay_mount(root_overlay, mounts) as overlay:
|
||||
with _mount_dnf_cache(overlay.target):
|
||||
yield overlay
|
||||
- except Exception:
|
||||
+ finally:
|
||||
cleanup_scratch(scratch_dir, mounts_dir)
|
||||
- raise
|
||||
- # cleanup always now
|
||||
- cleanup_scratch(scratch_dir, mounts_dir)
|
||||
|
||||
|
||||
# #############################################################################
|
||||
--
|
||||
2.44.0
|
||||
|
@ -1,35 +0,0 @@
|
||||
From d14423e2de7f6aeec921fd9cf0aad85101f6a65d Mon Sep 17 00:00:00 2001
|
||||
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
|
||||
Date: Thu, 16 May 2024 08:11:44 +0200
|
||||
Subject: [PATCH 40/49] chore(deps): update
|
||||
peter-evans/create-or-update-comment digest to v4 (#1222)
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Update peter-evans/create-or-update-comment digest to v4 to use versioned (released) content instead of updating it per each new commit change.
|
||||
|
||||
---------
|
||||
|
||||
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
|
||||
Co-authored-by: Petr Stodůlka <pstodulk@redhat.com>
|
||||
---
|
||||
.github/workflows/pr-welcome-msg.yml | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/.github/workflows/pr-welcome-msg.yml b/.github/workflows/pr-welcome-msg.yml
|
||||
index e23c9bbb..c6527da4 100644
|
||||
--- a/.github/workflows/pr-welcome-msg.yml
|
||||
+++ b/.github/workflows/pr-welcome-msg.yml
|
||||
@@ -14,7 +14,7 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Create comment
|
||||
- uses: peter-evans/create-or-update-comment@a35cf36e5301d70b76f316e867e7788a55a31dae
|
||||
+ uses: peter-evans/create-or-update-comment@v4
|
||||
with:
|
||||
issue-number: ${{ github.event.pull_request.number }}
|
||||
body: |
|
||||
--
|
||||
2.44.0
|
||||
|
@ -1,56 +0,0 @@
|
||||
From c68bc5ef0f277a5878802566dc5517a1f98feac6 Mon Sep 17 00:00:00 2001
|
||||
From: Evgeni Golov <evgeni@golov.de>
|
||||
Date: Thu, 16 May 2024 11:08:47 +0200
|
||||
Subject: [PATCH 41/49] properly indent the list of supported OSes
|
||||
|
||||
before:
|
||||
```
|
||||
Risk Factor: high (inhibitor)
|
||||
Title: The installed OS version is not supported for the in-place upgrade to the target RHEL version
|
||||
Summary: The supported OS releases for the upgrade process:
|
||||
RHEL 8.8
|
||||
RHEL 8.10
|
||||
RHEL-SAPHANA 8.8
|
||||
RHEL-SAPHANA 8.10
|
||||
```
|
||||
|
||||
after:
|
||||
```
|
||||
Risk Factor: high (inhibitor)
|
||||
Title: The installed OS version is not supported for the in-place upgrade to the target RHEL version
|
||||
Summary: The supported OS releases for the upgrade process:
|
||||
- RHEL 8.8
|
||||
- RHEL 8.10
|
||||
- RHEL-SAPHANA 8.8
|
||||
- RHEL-SAPHANA 8.10
|
||||
```
|
||||
---
|
||||
.../common/actors/checkosrelease/libraries/checkosrelease.py | 5 +++--
|
||||
1 file changed, 3 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/repos/system_upgrade/common/actors/checkosrelease/libraries/checkosrelease.py b/repos/system_upgrade/common/actors/checkosrelease/libraries/checkosrelease.py
|
||||
index e57ba1a7..bbc6b5ae 100644
|
||||
--- a/repos/system_upgrade/common/actors/checkosrelease/libraries/checkosrelease.py
|
||||
+++ b/repos/system_upgrade/common/actors/checkosrelease/libraries/checkosrelease.py
|
||||
@@ -4,6 +4,7 @@ from leapp import reporting
|
||||
from leapp.libraries.common.config import version
|
||||
|
||||
COMMON_REPORT_TAGS = [reporting.Groups.SANITY]
|
||||
+FMT_LIST_SEPARATOR = '\n - '
|
||||
|
||||
related = [reporting.RelatedResource('file', '/etc/os-release')]
|
||||
|
||||
@@ -34,8 +35,8 @@ def check_os_version():
|
||||
'The installed OS version is not supported for the in-place upgrade to the target RHEL version'
|
||||
),
|
||||
reporting.Summary(
|
||||
- 'The supported OS releases for the upgrade process:\n'
|
||||
- ' {}'.format('\n'.join(supported_releases))
|
||||
+ 'The supported OS releases for the upgrade process:'
|
||||
+ '{}{}'.format(FMT_LIST_SEPARATOR, FMT_LIST_SEPARATOR.join(supported_releases))
|
||||
),
|
||||
reporting.Severity(reporting.Severity.HIGH),
|
||||
reporting.Groups(COMMON_REPORT_TAGS),
|
||||
--
|
||||
2.44.0
|
||||
|
@ -1,47 +0,0 @@
|
||||
From 8ad024515ed4b9e3df05157c67938d700eee5fa8 Mon Sep 17 00:00:00 2001
|
||||
From: Evgeni Golov <evgeni@golov.de>
|
||||
Date: Thu, 16 May 2024 11:54:17 +0200
|
||||
Subject: [PATCH 42/49] report which OS release was detected as unsupported
|
||||
|
||||
---
|
||||
.../common/actors/checkosrelease/libraries/checkosrelease.py | 5 ++++-
|
||||
.../actors/checkosrelease/tests/test_checkosrelease.py | 1 +
|
||||
2 files changed, 5 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/repos/system_upgrade/common/actors/checkosrelease/libraries/checkosrelease.py b/repos/system_upgrade/common/actors/checkosrelease/libraries/checkosrelease.py
|
||||
index bbc6b5ae..1ee6e6ab 100644
|
||||
--- a/repos/system_upgrade/common/actors/checkosrelease/libraries/checkosrelease.py
|
||||
+++ b/repos/system_upgrade/common/actors/checkosrelease/libraries/checkosrelease.py
|
||||
@@ -30,13 +30,16 @@ def check_os_version():
|
||||
for rel in version.SUPPORTED_VERSIONS:
|
||||
for ver in version.SUPPORTED_VERSIONS[rel]:
|
||||
supported_releases.append(rel.upper() + ' ' + ver)
|
||||
+ current_release = ' '.join(version.current_version()).upper()
|
||||
reporting.create_report([
|
||||
reporting.Title(
|
||||
'The installed OS version is not supported for the in-place upgrade to the target RHEL version'
|
||||
),
|
||||
reporting.Summary(
|
||||
'The supported OS releases for the upgrade process:'
|
||||
- '{}{}'.format(FMT_LIST_SEPARATOR, FMT_LIST_SEPARATOR.join(supported_releases))
|
||||
+ '{}{}\n\nThe detected OS release is: {}'.format(FMT_LIST_SEPARATOR,
|
||||
+ FMT_LIST_SEPARATOR.join(supported_releases),
|
||||
+ current_release)
|
||||
),
|
||||
reporting.Severity(reporting.Severity.HIGH),
|
||||
reporting.Groups(COMMON_REPORT_TAGS),
|
||||
diff --git a/repos/system_upgrade/common/actors/checkosrelease/tests/test_checkosrelease.py b/repos/system_upgrade/common/actors/checkosrelease/tests/test_checkosrelease.py
|
||||
index 99d19832..aa0fd636 100644
|
||||
--- a/repos/system_upgrade/common/actors/checkosrelease/tests/test_checkosrelease.py
|
||||
+++ b/repos/system_upgrade/common/actors/checkosrelease/tests/test_checkosrelease.py
|
||||
@@ -28,6 +28,7 @@ def test_no_skip_check(monkeypatch):
|
||||
def test_not_supported_release(monkeypatch):
|
||||
monkeypatch.setattr(version, "is_supported_version", lambda: False)
|
||||
monkeypatch.setattr(version, "get_source_major_version", lambda: '7')
|
||||
+ monkeypatch.setattr(version, "current_version", lambda: ('bad', '7'))
|
||||
monkeypatch.setattr(reporting, "create_report", create_report_mocked())
|
||||
|
||||
checkosrelease.check_os_version()
|
||||
--
|
||||
2.44.0
|
||||
|
@ -1,25 +0,0 @@
|
||||
From 8c22562662078459abe3e0690d2f7a3120e62809 Mon Sep 17 00:00:00 2001
|
||||
From: Martin Kluson <mkluson@redhat.com>
|
||||
Date: Mon, 20 May 2024 16:33:03 +0200
|
||||
Subject: [PATCH 43/49] Fix typo in .packit.yaml
|
||||
|
||||
---
|
||||
.packit.yaml | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/.packit.yaml b/.packit.yaml
|
||||
index ed6412dc..dc9b9431 100644
|
||||
--- a/.packit.yaml
|
||||
+++ b/.packit.yaml
|
||||
@@ -292,7 +292,7 @@ jobs:
|
||||
|
||||
|
||||
# ###################################################################### #
|
||||
-# ############################## 8 TO 10 ############################### #
|
||||
+# ############################## 8 TO 9 ################################ #
|
||||
# ###################################################################### #
|
||||
|
||||
# ###################################################################### #
|
||||
--
|
||||
2.44.0
|
||||
|
@ -1,55 +0,0 @@
|
||||
From a7893092361d93a34c57b3cb2f05cc4e1db418b9 Mon Sep 17 00:00:00 2001
|
||||
From: Evgeni Golov <evgeni@golov.de>
|
||||
Date: Thu, 16 May 2024 10:24:30 +0200
|
||||
Subject: [PATCH 44/49] drop unused packager field from distro metadata
|
||||
|
||||
The actor was refactored to accept any `gpg-key` package, regardless of
|
||||
the value in the packager field, but the data was never drop from the
|
||||
JSON files.
|
||||
|
||||
Fixes: 4968bec73947fb83aeb2d89fe7e919fba2ca2776
|
||||
---
|
||||
.../libraries/distributionsignedrpmscanner.py | 1 -
|
||||
.../common/files/distro/centos/gpg-signatures.json | 3 +--
|
||||
.../common/files/distro/rhel/gpg-signatures.json | 3 +--
|
||||
3 files changed, 2 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/repos/system_upgrade/common/actors/distributionsignedrpmscanner/libraries/distributionsignedrpmscanner.py b/repos/system_upgrade/common/actors/distributionsignedrpmscanner/libraries/distributionsignedrpmscanner.py
|
||||
index 0bc71bfa..7898453b 100644
|
||||
--- a/repos/system_upgrade/common/actors/distributionsignedrpmscanner/libraries/distributionsignedrpmscanner.py
|
||||
+++ b/repos/system_upgrade/common/actors/distributionsignedrpmscanner/libraries/distributionsignedrpmscanner.py
|
||||
@@ -16,7 +16,6 @@ def get_distribution_data(distribution):
|
||||
with open(distribution_config) as distro_config_file:
|
||||
distro_config_json = json.load(distro_config_file)
|
||||
distro_keys = distro_config_json.get('keys', [])
|
||||
- # distro_packager = distro_config_json.get('packager', 'not-available')
|
||||
else:
|
||||
raise StopActorExecutionError(
|
||||
'Cannot find distribution signature configuration.',
|
||||
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 30e329ee..cf7f819d 100644
|
||||
--- a/repos/system_upgrade/common/files/distro/centos/gpg-signatures.json
|
||||
+++ b/repos/system_upgrade/common/files/distro/centos/gpg-signatures.json
|
||||
@@ -3,6 +3,5 @@
|
||||
"24c6a8a7f4a80eb5",
|
||||
"05b555b38483c65d",
|
||||
"4eb84e71f2ee9d55"
|
||||
- ],
|
||||
- "packager": "CentOS"
|
||||
+ ]
|
||||
}
|
||||
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 eccf0106..64d9ed12 100644
|
||||
--- a/repos/system_upgrade/common/files/distro/rhel/gpg-signatures.json
|
||||
+++ b/repos/system_upgrade/common/files/distro/rhel/gpg-signatures.json
|
||||
@@ -5,6 +5,5 @@
|
||||
"938a80caf21541eb",
|
||||
"fd372689897da07a",
|
||||
"45689c882fa658e0"
|
||||
- ],
|
||||
- "packager": "Red Hat, Inc."
|
||||
+ ]
|
||||
}
|
||||
--
|
||||
2.44.0
|
||||
|
@ -1,39 +0,0 @@
|
||||
From ae387bc31826e76c220f0b5fdd1f8fab4b36a5a3 Mon Sep 17 00:00:00 2001
|
||||
From: David Kubek <dkubek@redhat.com>
|
||||
Date: Tue, 21 Nov 2023 13:54:41 +0100
|
||||
Subject: [PATCH 45/49] Add environment information to leappdb
|
||||
|
||||
Related to changes extending the information stored in the leapp db.
|
||||
After this comment, the command line arguments as well as the
|
||||
environment variables modifying the leapp execution (env vars starting
|
||||
with `LEAPP_`) will be stored in the database.
|
||||
|
||||
Works on: OAMG-8402
|
||||
---
|
||||
commands/upgrade/util.py | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
diff --git a/commands/upgrade/util.py b/commands/upgrade/util.py
|
||||
index 9eff0ad1..b20c316d 100644
|
||||
--- a/commands/upgrade/util.py
|
||||
+++ b/commands/upgrade/util.py
|
||||
@@ -3,6 +3,7 @@ import itertools
|
||||
import json
|
||||
import os
|
||||
import shutil
|
||||
+import sys
|
||||
import tarfile
|
||||
from datetime import datetime
|
||||
|
||||
@@ -235,6 +236,8 @@ def prepare_configuration(args):
|
||||
'debug': os.getenv('LEAPP_DEBUG', '0'),
|
||||
'verbose': os.getenv('LEAPP_VERBOSE', '0'),
|
||||
'whitelist_experimental': args.whitelist_experimental or (),
|
||||
+ 'environment': {env: os.getenv(env) for env in os.environ if env.startswith('LEAPP_')},
|
||||
+ 'cmd': sys.argv,
|
||||
}
|
||||
return configuration
|
||||
|
||||
--
|
||||
2.44.0
|
||||
|
@ -1,34 +0,0 @@
|
||||
From 3173d1a43eaf7d5353cd3cc753c4ba904a6f50d1 Mon Sep 17 00:00:00 2001
|
||||
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
|
||||
Date: Fri, 10 May 2024 05:33:51 +0000
|
||||
Subject: [PATCH 46/49] chore(deps): update actions/github-script action to v7
|
||||
|
||||
---
|
||||
.github/workflows/reuse-copr-build.yml | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/.github/workflows/reuse-copr-build.yml b/.github/workflows/reuse-copr-build.yml
|
||||
index 6bf71226..3cf06254 100644
|
||||
--- a/.github/workflows/reuse-copr-build.yml
|
||||
+++ b/.github/workflows/reuse-copr-build.yml
|
||||
@@ -78,7 +78,7 @@ jobs:
|
||||
- name: Add comment with copr build url
|
||||
# TODO: Create comment when copr build fails.
|
||||
id: link_copr
|
||||
- uses: actions/github-script@v4
|
||||
+ uses: actions/github-script@v7
|
||||
with:
|
||||
script: |
|
||||
github.issues.createComment({
|
||||
@@ -145,7 +145,7 @@ jobs:
|
||||
# TODO: Create comment when copr build fails.
|
||||
id: link_copr_leapp
|
||||
if: ${{ steps.leapp_pr_regex_match.outputs.match != '' }}
|
||||
- uses: actions/github-script@v4
|
||||
+ uses: actions/github-script@v7
|
||||
with:
|
||||
script: |
|
||||
github.issues.createComment({
|
||||
--
|
||||
2.44.0
|
||||
|
@ -1,69 +0,0 @@
|
||||
From 1fab8273744b3dba9c2acf927e6b87417d25f77b Mon Sep 17 00:00:00 2001
|
||||
From: Evgeni Golov <evgeni@golov.de>
|
||||
Date: Mon, 27 May 2024 11:51:43 +0200
|
||||
Subject: [PATCH 47/49] fix some typos spotted by codespell
|
||||
|
||||
also add `zeor` to the ignore list as that's part of an email address at
|
||||
`zeor.simegen.com`
|
||||
---
|
||||
.github/workflows/codespell.yml | 2 +-
|
||||
.../common/actors/selinux/selinuxapplycustom/actor.py | 2 +-
|
||||
repos/system_upgrade/common/libraries/overlaygen.py | 2 +-
|
||||
.../checkcustomnetworkscripts/libraries/customnetworkscripts.py | 2 +-
|
||||
4 files changed, 4 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/.github/workflows/codespell.yml b/.github/workflows/codespell.yml
|
||||
index c0ec20d6..002d3774 100644
|
||||
--- a/.github/workflows/codespell.yml
|
||||
+++ b/.github/workflows/codespell.yml
|
||||
@@ -17,7 +17,7 @@ jobs:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: codespell-project/actions-codespell@master
|
||||
with:
|
||||
- ignore_words_list: ro,fo,couldn,repositor
|
||||
+ ignore_words_list: ro,fo,couldn,repositor,zeor
|
||||
skip: "./repos/system_upgrade/common/actors/storagescanner/tests/files/mounts,\
|
||||
./repos/system_upgrade/el7toel8/actors/networkmanagerreadconfig/tests/files/nm_cfg_file_error,\
|
||||
./repos/system_upgrade/el8toel9/actors/xorgdrvfact/tests/files/journalctl-xorg-intel,\
|
||||
diff --git a/repos/system_upgrade/common/actors/selinux/selinuxapplycustom/actor.py b/repos/system_upgrade/common/actors/selinux/selinuxapplycustom/actor.py
|
||||
index b7f8376f..55c64c3e 100644
|
||||
--- a/repos/system_upgrade/common/actors/selinux/selinuxapplycustom/actor.py
|
||||
+++ b/repos/system_upgrade/common/actors/selinux/selinuxapplycustom/actor.py
|
||||
@@ -26,7 +26,7 @@ class SELinuxApplyCustom(Actor):
|
||||
tags = (ApplicationsPhaseTag, IPUWorkflowTag)
|
||||
|
||||
def process(self):
|
||||
- # save progress for repoting purposes
|
||||
+ # save progress for reporting purposes
|
||||
failed_modules = []
|
||||
failed_custom = []
|
||||
|
||||
diff --git a/repos/system_upgrade/common/libraries/overlaygen.py b/repos/system_upgrade/common/libraries/overlaygen.py
|
||||
index 4bcbf32b..1132cde1 100644
|
||||
--- a/repos/system_upgrade/common/libraries/overlaygen.py
|
||||
+++ b/repos/system_upgrade/common/libraries/overlaygen.py
|
||||
@@ -274,7 +274,7 @@ def _prepare_required_mounts(scratch_dir, mounts_dir, storage_info, scratch_rese
|
||||
space_needed = scratch_reserve + _MAGICAL_CONSTANT_OVL_SIZE * len(mount_points)
|
||||
_ensure_enough_diskimage_space(space_needed, scratch_dir)
|
||||
|
||||
- # free space required on this partition should not be affected by durin the
|
||||
+ # free space required on this partition should not be affected by during the
|
||||
# upgrade transaction execution by space consumed on creation of disk images
|
||||
# as disk images are cleaned in the end of this functions,
|
||||
# but we want to reserve some space in advance.
|
||||
diff --git a/repos/system_upgrade/el8toel9/actors/checkcustomnetworkscripts/libraries/customnetworkscripts.py b/repos/system_upgrade/el8toel9/actors/checkcustomnetworkscripts/libraries/customnetworkscripts.py
|
||||
index c3a6ffd1..2947aa27 100644
|
||||
--- a/repos/system_upgrade/el8toel9/actors/checkcustomnetworkscripts/libraries/customnetworkscripts.py
|
||||
+++ b/repos/system_upgrade/el8toel9/actors/checkcustomnetworkscripts/libraries/customnetworkscripts.py
|
||||
@@ -28,7 +28,7 @@ def generate_report(existing_custom_network_scripts):
|
||||
reporting.Remediation(
|
||||
hint=(
|
||||
"Migrate the custom network-scripts to NetworkManager dispatcher"
|
||||
- " scripts manually before the ugprade. Follow instructions in the"
|
||||
+ " scripts manually before the upgrade. Follow instructions in the"
|
||||
" official documentation."
|
||||
)
|
||||
),
|
||||
--
|
||||
2.44.0
|
||||
|
@ -1,47 +0,0 @@
|
||||
From 8b1fd71d209f37005d7858768d211ee1cb07a30c Mon Sep 17 00:00:00 2001
|
||||
From: Evgeni Golov <evgeni@golov.de>
|
||||
Date: Mon, 27 May 2024 12:49:04 +0200
|
||||
Subject: [PATCH 48/49] BZ#2283067 - don't remove Tomcat during Satellite 7to8
|
||||
upgrade
|
||||
|
||||
This was previously added to workaround issues with the packages in RHEL
|
||||
8.8/8.9, but now that 8.10 is released it's not required anymore and
|
||||
actually breaks the upgrade.
|
||||
---
|
||||
.../actors/satellite_upgrade_facts/actor.py | 13 +++++++------
|
||||
1 file changed, 7 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/repos/system_upgrade/el7toel8/actors/satellite_upgrade_facts/actor.py b/repos/system_upgrade/el7toel8/actors/satellite_upgrade_facts/actor.py
|
||||
index 3cd9d9da..cfba0503 100644
|
||||
--- a/repos/system_upgrade/el7toel8/actors/satellite_upgrade_facts/actor.py
|
||||
+++ b/repos/system_upgrade/el7toel8/actors/satellite_upgrade_facts/actor.py
|
||||
@@ -1,7 +1,7 @@
|
||||
import os
|
||||
|
||||
from leapp.actors import Actor
|
||||
-from leapp.libraries.common.config import architecture
|
||||
+from leapp.libraries.common.config import architecture, version
|
||||
from leapp.libraries.common.rpms import has_package
|
||||
from leapp.libraries.stdlib import run
|
||||
from leapp.models import (
|
||||
@@ -55,11 +55,12 @@ class SatelliteUpgradeFacts(Actor):
|
||||
# enable modules that are needed for Pulpcore
|
||||
modules_to_enable.append(Module(name='python38', stream='3.8'))
|
||||
to_install.append('katello')
|
||||
- # Force removal of tomcat
|
||||
- # PES data indicates tomcat.el7 can be upgraded to tomcat.el8 since EL 8.8,
|
||||
- # but we need pki-servlet-engine from the module instead which will be pulled in via normal
|
||||
- # package dependencies
|
||||
- to_remove.extend(['tomcat', 'tomcat-lib'])
|
||||
+ if version.matches_target_version('8.8', '8.9'):
|
||||
+ # Force removal of tomcat
|
||||
+ # PES data indicates tomcat.el7 can be upgraded to tomcat.el8 since EL 8.8,
|
||||
+ # but we need pki-servlet-engine from the module instead which will be pulled in via normal
|
||||
+ # package dependencies
|
||||
+ to_remove.extend(['tomcat', 'tomcat-lib'])
|
||||
|
||||
if has_package(InstalledRPM, 'rh-redis5-redis'):
|
||||
modules_to_enable.append(Module(name='redis', stream='5'))
|
||||
--
|
||||
2.44.0
|
||||
|
@ -1,373 +0,0 @@
|
||||
From 061504d4b7748e11a8d6258021b6ac9d281cc63c Mon Sep 17 00:00:00 2001
|
||||
From: Matej Matuska <mmatuska@redhat.com>
|
||||
Date: Tue, 28 May 2024 14:23:44 +0200
|
||||
Subject: [PATCH 49/49] Add product certs and target for 9.5
|
||||
|
||||
---
|
||||
.../common/files/prod-certs/9.5/279.pem | 35 ++++++++++++++++++
|
||||
.../common/files/prod-certs/9.5/362.pem | 36 +++++++++++++++++++
|
||||
.../common/files/prod-certs/9.5/363.pem | 35 ++++++++++++++++++
|
||||
.../common/files/prod-certs/9.5/419.pem | 35 ++++++++++++++++++
|
||||
.../common/files/prod-certs/9.5/433.pem | 35 ++++++++++++++++++
|
||||
.../common/files/prod-certs/9.5/479.pem | 35 ++++++++++++++++++
|
||||
.../common/files/prod-certs/9.5/486.pem | 35 ++++++++++++++++++
|
||||
.../common/files/prod-certs/9.5/72.pem | 35 ++++++++++++++++++
|
||||
.../common/files/upgrade_paths.json | 4 +--
|
||||
9 files changed, 283 insertions(+), 2 deletions(-)
|
||||
create mode 100644 repos/system_upgrade/common/files/prod-certs/9.5/279.pem
|
||||
create mode 100644 repos/system_upgrade/common/files/prod-certs/9.5/362.pem
|
||||
create mode 100644 repos/system_upgrade/common/files/prod-certs/9.5/363.pem
|
||||
create mode 100644 repos/system_upgrade/common/files/prod-certs/9.5/419.pem
|
||||
create mode 100644 repos/system_upgrade/common/files/prod-certs/9.5/433.pem
|
||||
create mode 100644 repos/system_upgrade/common/files/prod-certs/9.5/479.pem
|
||||
create mode 100644 repos/system_upgrade/common/files/prod-certs/9.5/486.pem
|
||||
create mode 100644 repos/system_upgrade/common/files/prod-certs/9.5/72.pem
|
||||
|
||||
diff --git a/repos/system_upgrade/common/files/prod-certs/9.5/279.pem b/repos/system_upgrade/common/files/prod-certs/9.5/279.pem
|
||||
new file mode 100644
|
||||
index 00000000..2257a543
|
||||
--- /dev/null
|
||||
+++ b/repos/system_upgrade/common/files/prod-certs/9.5/279.pem
|
||||
@@ -0,0 +1,35 @@
|
||||
+-----BEGIN CERTIFICATE-----
|
||||
+MIIGJTCCBA2gAwIBAgIJALDxRLt/tVPfMA0GCSqGSIb3DQEBCwUAMIGuMQswCQYD
|
||||
+VQQGEwJVUzEXMBUGA1UECAwOTm9ydGggQ2Fyb2xpbmExFjAUBgNVBAoMDVJlZCBI
|
||||
+YXQsIEluYy4xGDAWBgNVBAsMD1JlZCBIYXQgTmV0d29yazEuMCwGA1UEAwwlUmVk
|
||||
+IEhhdCBFbnRpdGxlbWVudCBQcm9kdWN0IEF1dGhvcml0eTEkMCIGCSqGSIb3DQEJ
|
||||
+ARYVY2Etc3VwcG9ydEByZWRoYXQuY29tMB4XDTI0MDExNjE1MzAyMFoXDTQ0MDEx
|
||||
+NjE1MzAyMFowRDFCMEAGA1UEAww5UmVkIEhhdCBQcm9kdWN0IElEIFs1OWY4YmIz
|
||||
+My0wZjU2LTQ2N2UtYTE1ZC1hZmQxMjUzMTYzN2NdMIICIjANBgkqhkiG9w0BAQEF
|
||||
+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
|
||||
+AwEAAaOBrjCBqzAJBgNVHRMEAjAAMEMGDCsGAQQBkggJAYIXAQQzDDFSZWQgSGF0
|
||||
+IEVudGVycHJpc2UgTGludXggZm9yIFBvd2VyLCBsaXR0bGUgZW5kaWFuMBUGDCsG
|
||||
+AQQBkggJAYIXAgQFDAM5LjUwGQYMKwYBBAGSCAkBghcDBAkMB3BwYzY0bGUwJwYM
|
||||
+KwYBBAGSCAkBghcEBBcMFXJoZWwtOSxyaGVsLTktcHBjNjRsZTANBgkqhkiG9w0B
|
||||
+AQsFAAOCAgEAii9ffFWGZCeIaaI6EXmBK6s4uCryT72DsqL9xPUj6J1lm/9Xf4Nq
|
||||
+h0I+4zEEaPqI4XzUmw+LuVLpZAC79daKRiZRRPoIrR74Ca0KfvCPY72ZCIXYUmHZ
|
||||
+wgjrw4q6ZUSz4wYxPv/A8Q02oWlkHF7s7r8JNrq4B6IvOfdLFeVQGXtNtf7EIrH0
|
||||
+YKV/RRIPMKPEuc14EhmK8z9+lpySmZ7+4/cZh1DIqFjd6XGo7UeuON7atqEsHZ8e
|
||||
+PHlgw0Rl/HtCHBEHquZtuMoIF5f1C/qXGgMfIHzbHnCa42k7Vjx2/+UKxsmYmDRp
|
||||
+RGfBoZJL5DHla7+JOhmN70rTuKnwhPmP3b80Ax18uvrYPgzGxhb0jd7XvlZl+bSD
|
||||
+7aVhq/XK9rFjN9hf3wVwg01nIHIxMZPXZ1Eml/Af7ZzttcIxuOWTh1/TFw8XSUx/
|
||||
+kS8Z0tJpH+AiTCr93JLuh88ryKK5jZ5gGSWMOIpoSWE0wqTgODGcYAAeJJ034ogb
|
||||
+pbsPihjhxACkQhky+F1KJH2HE9pIKxaJNnCGWn1StX8DA9sngVSGl4YmLlZfEyUz
|
||||
+K2nJeUB9DPbtyHZHXw4N6Ep17CjUPZIY2jQSMBNkhAOpkIgvtVEMYQtXu6OVLbnu
|
||||
+O2sGXqV3LBUg3L00WxR9QAIG/n54z5afF3mxl3zJEcZoUwp4OHxkn84=
|
||||
+-----END CERTIFICATE-----
|
||||
diff --git a/repos/system_upgrade/common/files/prod-certs/9.5/362.pem b/repos/system_upgrade/common/files/prod-certs/9.5/362.pem
|
||||
new file mode 100644
|
||||
index 00000000..aa60c216
|
||||
--- /dev/null
|
||||
+++ b/repos/system_upgrade/common/files/prod-certs/9.5/362.pem
|
||||
@@ -0,0 +1,36 @@
|
||||
+-----BEGIN CERTIFICATE-----
|
||||
+MIIGNDCCBBygAwIBAgIJALDxRLt/tVPJMA0GCSqGSIb3DQEBCwUAMIGuMQswCQYD
|
||||
+VQQGEwJVUzEXMBUGA1UECAwOTm9ydGggQ2Fyb2xpbmExFjAUBgNVBAoMDVJlZCBI
|
||||
+YXQsIEluYy4xGDAWBgNVBAsMD1JlZCBIYXQgTmV0d29yazEuMCwGA1UEAwwlUmVk
|
||||
+IEhhdCBFbnRpdGxlbWVudCBQcm9kdWN0IEF1dGhvcml0eTEkMCIGCSqGSIb3DQEJ
|
||||
+ARYVY2Etc3VwcG9ydEByZWRoYXQuY29tMB4XDTI0MDExNjE1Mjk1OVoXDTQ0MDEx
|
||||
+NjE1Mjk1OVowRDFCMEAGA1UEAww5UmVkIEhhdCBQcm9kdWN0IElEIFs4OTA1ZDA0
|
||||
+MC04ZGY5LTQ3ZjAtODdhZi0yZDE1ZTYwNzgxZjVdMIICIjANBgkqhkiG9w0BAQEF
|
||||
+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
|
||||
+AwEAAaOBvTCBujAJBgNVHRMEAjAAMEgGDCsGAQQBkggJAYJqAQQ4DDZSZWQgSGF0
|
||||
+IEVudGVycHJpc2UgTGludXggZm9yIFBvd2VyLCBsaXR0bGUgZW5kaWFuIEJldGEw
|
||||
+GgYMKwYBBAGSCAkBgmoCBAoMCDkuNSBCZXRhMBkGDCsGAQQBkggJAYJqAwQJDAdw
|
||||
+cGM2NGxlMCwGDCsGAQQBkggJAYJqBAQcDBpyaGVsLTkscmhlbC05LWJldGEtcHBj
|
||||
+NjRsZTANBgkqhkiG9w0BAQsFAAOCAgEAgx5sfDsgXS0GiE9tBa2VUDDcQ82EgPdV
|
||||
+vR8SUcrhuYv0c0XtKcYw3qwm03QRHLu8zv3f9HMT2SLQGqIPVYAjIk6IR2n9jsIW
|
||||
+ssbgpkZPaypgRadgS0abapCOSDFh+67FmV3YJR9kHQSrTwMLhqGphidapfN9Si4i
|
||||
+THn6sc9sy/iyXP8FDgqXehPutoWCvMA1kf6ek50v3121P860XPhhMHXQsLB6y+GV
|
||||
+G3fy2QAezSpJTA0PwrIWz+ZZiZ9oH5Fpvo2hMGnPclgfsN9/Ge13IE39vBgmznum
|
||||
+mlkwtArIYajjYDk4ADXFWmhY04zMBldLrR6PIrBNxRZv0a1hazcEP1LJPu2YLWgW
|
||||
+eV9/FNnzUySfL0a+hkTQvDfs2Ojeb72fDvaDXMzJoT8vdjlAilVsgU98JRXEg2Wq
|
||||
+5NYlLmkFpJGEvlejqGH8H73R7nFgu5aYeHetScXZmKW7itTiJoECxqX0Yqr/NQLa
|
||||
+9fSsuRxs0TQUVVKlMoAVokstvrW4v8rtxIU9UqfktOUs3U/kq0GCFwASSwdeGPW4
|
||||
+oWfeLK2W9TEICSoW6P38+/vNqXTe7N9x7M6wyfc8HrGM0uYiZrPSodID6yvkJtBv
|
||||
+wqS9vw9mlczrBF2m55o1dehZbWuncj6CO0Jc/xC8HqpnP8BLNb7/TyPyQrISeQjN
|
||||
+2LqCFq1dAdQ=
|
||||
+-----END CERTIFICATE-----
|
||||
diff --git a/repos/system_upgrade/common/files/prod-certs/9.5/363.pem b/repos/system_upgrade/common/files/prod-certs/9.5/363.pem
|
||||
new file mode 100644
|
||||
index 00000000..8c15335b
|
||||
--- /dev/null
|
||||
+++ b/repos/system_upgrade/common/files/prod-certs/9.5/363.pem
|
||||
@@ -0,0 +1,35 @@
|
||||
+-----BEGIN CERTIFICATE-----
|
||||
+MIIGJjCCBA6gAwIBAgIJALDxRLt/tVPIMA0GCSqGSIb3DQEBCwUAMIGuMQswCQYD
|
||||
+VQQGEwJVUzEXMBUGA1UECAwOTm9ydGggQ2Fyb2xpbmExFjAUBgNVBAoMDVJlZCBI
|
||||
+YXQsIEluYy4xGDAWBgNVBAsMD1JlZCBIYXQgTmV0d29yazEuMCwGA1UEAwwlUmVk
|
||||
+IEhhdCBFbnRpdGxlbWVudCBQcm9kdWN0IEF1dGhvcml0eTEkMCIGCSqGSIb3DQEJ
|
||||
+ARYVY2Etc3VwcG9ydEByZWRoYXQuY29tMB4XDTI0MDExNjE1Mjk1OFoXDTQ0MDEx
|
||||
+NjE1Mjk1OFowRDFCMEAGA1UEAww5UmVkIEhhdCBQcm9kdWN0IElEIFtkNWEyNjZi
|
||||
+MC0zMzUwLTQxYTMtYmRmZC1kZmIyNmJmZDdmMDFdMIICIjANBgkqhkiG9w0BAQEF
|
||||
+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
|
||||
+AwEAAaOBrzCBrDAJBgNVHRMEAjAAMDoGDCsGAQQBkggJAYJrAQQqDChSZWQgSGF0
|
||||
+IEVudGVycHJpc2UgTGludXggZm9yIEFSTSA2NCBCZXRhMBoGDCsGAQQBkggJAYJr
|
||||
+AgQKDAg5LjUgQmV0YTAZBgwrBgEEAZIICQGCawMECQwHYWFyY2g2NDAsBgwrBgEE
|
||||
+AZIICQGCawQEHAwacmhlbC05LHJoZWwtOS1iZXRhLWFhcmNoNjQwDQYJKoZIhvcN
|
||||
+AQELBQADggIBAM+fiLd/oETC0reNeAtlG0W+FcBdMm3Bl78L7X6Yj4cFLNjfk0PO
|
||||
+1E8EVGUjw+nx9ZwPlxAdP15Sh90oPztwRgQB2SwyBugYvvQAVY/0VsGvcsq8VyHD
|
||||
+IDd/mcPMjtFf+ZUqwhy3l1pbxXFiV+sMQtpltdboM5uIVEhZ6+C9hCAawHrQRcOM
|
||||
+z9usjgqzxjA2jcg0QX0A0ICKmbL4r9dwnX/Wpjo1P7CJUn5gNmJcoMcVYnUmFZ3I
|
||||
+oVlf+cLOWoex6BzK/QHr+UV+jnPj0d8EmS5vXgzE8Afj31iPn33JavOtsUfdr1hK
|
||||
+rrdJcHGbKj/lukUIzWBbxr/snq3iC2/hn0AW57GUCpbu9eeNH2pP7G5dNPXK0CpQ
|
||||
+/ThqyYdvht9HV89YqtLT+bUNjjAe8xhFCSkyBtheOBtG4zR3ctJvRCAb7kmqhTeo
|
||||
+DzDNcuf0vhWV5m2g4VQ0hbUnJCt1c0eLyF7aFA6oi8xMH7CaIrwrcoO7XbQCdtW6
|
||||
+uHuxNo8QQHgql6VQdNhlZpXjR/4F66WYzprs1+TITZqGXkZk1NTCjCGtWJBp/In+
|
||||
+HaDSbe+w4eZ/g6OaLyTOw3X7nPz+2j/2eJnNG9FpZt7mhiSfKwgQpTB7sCkiLg+C
|
||||
+YEKJL0NUBfag6Ahkjqdh/Ptldm8H+hjwzrMX0JtsyD/tJpVMb7LlkGi7
|
||||
+-----END CERTIFICATE-----
|
||||
diff --git a/repos/system_upgrade/common/files/prod-certs/9.5/419.pem b/repos/system_upgrade/common/files/prod-certs/9.5/419.pem
|
||||
new file mode 100644
|
||||
index 00000000..3dd6f54b
|
||||
--- /dev/null
|
||||
+++ b/repos/system_upgrade/common/files/prod-certs/9.5/419.pem
|
||||
@@ -0,0 +1,35 @@
|
||||
+-----BEGIN CERTIFICATE-----
|
||||
+MIIGFzCCA/+gAwIBAgIJALDxRLt/tVPeMA0GCSqGSIb3DQEBCwUAMIGuMQswCQYD
|
||||
+VQQGEwJVUzEXMBUGA1UECAwOTm9ydGggQ2Fyb2xpbmExFjAUBgNVBAoMDVJlZCBI
|
||||
+YXQsIEluYy4xGDAWBgNVBAsMD1JlZCBIYXQgTmV0d29yazEuMCwGA1UEAwwlUmVk
|
||||
+IEhhdCBFbnRpdGxlbWVudCBQcm9kdWN0IEF1dGhvcml0eTEkMCIGCSqGSIb3DQEJ
|
||||
+ARYVY2Etc3VwcG9ydEByZWRoYXQuY29tMB4XDTI0MDExNjE1MzAyMFoXDTQ0MDEx
|
||||
+NjE1MzAyMFowRDFCMEAGA1UEAww5UmVkIEhhdCBQcm9kdWN0IElEIFs1Yjk4YWE3
|
||||
+Mi1jODQ4LTQ3M2UtOGQ2Ni1lMGU1NzQ1OGYwMDddMIICIjANBgkqhkiG9w0BAQEF
|
||||
+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
|
||||
+AwEAAaOBoDCBnTAJBgNVHRMEAjAAMDUGDCsGAQQBkggJAYMjAQQlDCNSZWQgSGF0
|
||||
+IEVudGVycHJpc2UgTGludXggZm9yIEFSTSA2NDAVBgwrBgEEAZIICQGDIwIEBQwD
|
||||
+OS41MBkGDCsGAQQBkggJAYMjAwQJDAdhYXJjaDY0MCcGDCsGAQQBkggJAYMjBAQX
|
||||
+DBVyaGVsLTkscmhlbC05LWFhcmNoNjQwDQYJKoZIhvcNAQELBQADggIBAL680KfM
|
||||
+f4EeH2dvDkjsgTcRbSvkp08PUG671wLnVfIK0Ay9aLvExwoZK6a0hc1U3eLOrrlT
|
||||
+Kq6MTNhpkeE7RLtGaBMZMNICGrC+Gh1r0uR0a59xAjWly5QodQ05znSjXbdaGkBU
|
||||
+8vxtGm+ho9dJguEOn1d0Y8racomdK84+mivtLyc6pK3712nHTYmwQX/gzQ3dM/hm
|
||||
+gB+btQo+crObv2OfjUiN+W5k2eX+DRPsgu9bIpXQaHY4l+CvoZR3/Ww7Xzut4CQE
|
||||
+aAOpDbv/xAWPkWJ4CdSJp8jN6xGN05Grfw6xeBsTY+XFuoWlW4/9RsY3Qd8tjhTl
|
||||
+wsIUGOUxxuDDjKq4MoEvbm+w/B0rZHOcMbE0sPi0YFRsRB5/REYJZ0fnOOikEZOw
|
||||
+GC7EA38HITdkugveWL/NRkwg0AvNNt7ILNYXLVbskTBqw7QnWTy/vgxb/a2lyQuQ
|
||||
+E+j/NfINlDMXbitb5Nymg45Yl3XDkmeuEQKY2TUKdWype6NRDfJpHBNeeWNWZxrG
|
||||
+8u+/biqhXbYODlHp1VYRItz7BbTf+YCz7wFnCXBJA7gNPJDCwirIvJm9B15A3Hu3
|
||||
+0gd0f0TciKQH1PPnKZicxsEGI9C1sf5LRv+QuVGRvWDnF4GeS5r6OnCz06hndwyj
|
||||
+cuuGz2+UpjGvrPb9BtkDK2vUML0yaqj+pY7i
|
||||
+-----END CERTIFICATE-----
|
||||
diff --git a/repos/system_upgrade/common/files/prod-certs/9.5/433.pem b/repos/system_upgrade/common/files/prod-certs/9.5/433.pem
|
||||
new file mode 100644
|
||||
index 00000000..de388174
|
||||
--- /dev/null
|
||||
+++ b/repos/system_upgrade/common/files/prod-certs/9.5/433.pem
|
||||
@@ -0,0 +1,35 @@
|
||||
+-----BEGIN CERTIFICATE-----
|
||||
+MIIGKTCCBBGgAwIBAgIJALDxRLt/tVPKMA0GCSqGSIb3DQEBCwUAMIGuMQswCQYD
|
||||
+VQQGEwJVUzEXMBUGA1UECAwOTm9ydGggQ2Fyb2xpbmExFjAUBgNVBAoMDVJlZCBI
|
||||
+YXQsIEluYy4xGDAWBgNVBAsMD1JlZCBIYXQgTmV0d29yazEuMCwGA1UEAwwlUmVk
|
||||
+IEhhdCBFbnRpdGxlbWVudCBQcm9kdWN0IEF1dGhvcml0eTEkMCIGCSqGSIb3DQEJ
|
||||
+ARYVY2Etc3VwcG9ydEByZWRoYXQuY29tMB4XDTI0MDExNjE1Mjk1OVoXDTQ0MDEx
|
||||
+NjE1Mjk1OVowRDFCMEAGA1UEAww5UmVkIEhhdCBQcm9kdWN0IElEIFtmNjQ4ZjZk
|
||||
+ZC0xZDhjLTQ2ZWYtOTZjYy02NWQ4NzA1MTNlMmFdMIICIjANBgkqhkiG9w0BAQEF
|
||||
+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
|
||||
+AwEAAaOBsjCBrzAJBgNVHRMEAjAAMEEGDCsGAQQBkggJAYMxAQQxDC9SZWQgSGF0
|
||||
+IEVudGVycHJpc2UgTGludXggZm9yIElCTSB6IFN5c3RlbXMgQmV0YTAaBgwrBgEE
|
||||
+AZIICQGDMQIECgwIOS41IEJldGEwFwYMKwYBBAGSCAkBgzEDBAcMBXMzOTB4MCoG
|
||||
+DCsGAQQBkggJAYMxBAQaDBhyaGVsLTkscmhlbC05LWJldGEtczM5MHgwDQYJKoZI
|
||||
+hvcNAQELBQADggIBAIdymcUPQMVEtwFpOCTyUArt1qx5pzoHmQvsGEBaGbeyiXmQ
|
||||
+4/5Nv5YgTyefrDR/uyu3ubg8BSTV8zgqqISpq3bVz2qWHTD024IqszhIvXYihHjR
|
||||
+aqzhgfbd7u+OfkZGa5WqFKFCNgQ93UBmp6g2dkR1gaF63kI9aal6fhNV6wBJitND
|
||||
+WXb+lGykB/i3X+HFuhXFYcFWCDvVNEpf3pyWLbXLDXsdP8+nkLFKGNnBwxRdARx8
|
||||
+sPz3HxStVBnf1mdhp+uGz8j14a5/psjhaqB4Vf9pCuOVLb6d+XdxJhVBTtD7C01a
|
||||
+Yp/e6He7tcEFHV7YU6qFN49kGk2eDBrMrE8svQ/StSJwHXarquq0z3QKjf4amLz5
|
||||
+DUvy0H0dxWUiYiiBx7mD68f5ng/lrsTl91frhQHRo5yLKrG9NQhfWe8wW8dVI8un
|
||||
+kzfesD5aDImYz0ClQAYROjzBXnMTJlVwGklSa3mrF7r8mKwsWmfvx2W8wGEF/Y27
|
||||
+BpYOVLvP22lhbuNZuSxnsTEAF5tzLcRI/nwox0Xsjb0ieS5J/7+0CGe24DpmQI0b
|
||||
+Dg0sSQhVzhYQkW6fwsTxZa+U2L7UcT/hojUMwji5t2n150LWcadcrtjTNnA7KJpu
|
||||
+8DGVW89eCmtJI9dEoQzG49GzOQ8iCmfsxWp3Epsbv8wCXtj9pvLmU7ioizSp
|
||||
+-----END CERTIFICATE-----
|
||||
diff --git a/repos/system_upgrade/common/files/prod-certs/9.5/479.pem b/repos/system_upgrade/common/files/prod-certs/9.5/479.pem
|
||||
new file mode 100644
|
||||
index 00000000..3352d4a8
|
||||
--- /dev/null
|
||||
+++ b/repos/system_upgrade/common/files/prod-certs/9.5/479.pem
|
||||
@@ -0,0 +1,35 @@
|
||||
+-----BEGIN CERTIFICATE-----
|
||||
+MIIGFTCCA/2gAwIBAgIJALDxRLt/tVPhMA0GCSqGSIb3DQEBCwUAMIGuMQswCQYD
|
||||
+VQQGEwJVUzEXMBUGA1UECAwOTm9ydGggQ2Fyb2xpbmExFjAUBgNVBAoMDVJlZCBI
|
||||
+YXQsIEluYy4xGDAWBgNVBAsMD1JlZCBIYXQgTmV0d29yazEuMCwGA1UEAwwlUmVk
|
||||
+IEhhdCBFbnRpdGxlbWVudCBQcm9kdWN0IEF1dGhvcml0eTEkMCIGCSqGSIb3DQEJ
|
||||
+ARYVY2Etc3VwcG9ydEByZWRoYXQuY29tMB4XDTI0MDExNjE1MzAyMVoXDTQ0MDEx
|
||||
+NjE1MzAyMVowRDFCMEAGA1UEAww5UmVkIEhhdCBQcm9kdWN0IElEIFszYWQ2NDlj
|
||||
+NS1jOTNjLTQ2NjItYWIxMy1iNzE4ODNmNWVmNzJdMIICIjANBgkqhkiG9w0BAQEF
|
||||
+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
|
||||
+OS41MBgGDCsGAQQBkggJAYNfAwQIDAZ4ODZfNjQwJgYMKwYBBAGSCAkBg18EBBYM
|
||||
+FHJoZWwtOSxyaGVsLTkteDg2XzY0MA0GCSqGSIb3DQEBCwUAA4ICAQBwU1eipuYq
|
||||
+/N0j9MiytX8Lvm/+xwPsg+/vpG1o2ro1Dts9U1xZDFt/Fg8+9wnApOMO2reS2aEG
|
||||
+f/ZJX+R/xWdlhlQTE9z5QTk3k3b7H79b8xWfJcbQU1ZwlaSrIba4FgmHx2h2PN3r
|
||||
+GNpswVsdXyCjfitBWG/uQlWi2RKDU+B5zD+8HBC3io9qPLYRybTGjfmQ/GlEINxA
|
||||
+NtnkoE+rDLGSMZNlUpmpjccK8nCLgf70csRloen8MbRH4j4kkVfmjHn75lLk0epb
|
||||
+zojsGHBRGvtwZzS3X7M03OB+uDoNGUKcD5RUq4zo2Rnlu9Xh0rhvG6wF9KeU2q30
|
||||
+hMR6eXJ4blMhpmCBWhvIAqVm68zUnWxPPFWa1hZzECaVuarGd0ncgrm21NiT+mE2
|
||||
+ZkrNBBmmZ7Hckv5QP83ynOXr4SkNEf/50rmPhcWaAD3MZr3mgOK5sg0E/diBbVmz
|
||||
+ZNw1jJ59HvNvKlxeqJqsFW4MkCDBccVPGDna3P4NXSXW5RYGgF0txNfQZc1briuz
|
||||
+bO+U3NAQocEdqUwflId5v97g0YElVliPdsM8b8xixrCCZT1pOXU46UXBP8+Nri70
|
||||
+apME6luow+D4f4ZWqMWg3KJV3FmlYPmn04WMo6EvFv5hvmlu5n6OheBqyzv/Zc1I
|
||||
+SVE+LwwzANJjNHA8PejmIqLbqzqHYrFbHg==
|
||||
+-----END CERTIFICATE-----
|
||||
diff --git a/repos/system_upgrade/common/files/prod-certs/9.5/486.pem b/repos/system_upgrade/common/files/prod-certs/9.5/486.pem
|
||||
new file mode 100644
|
||||
index 00000000..a0c7c085
|
||||
--- /dev/null
|
||||
+++ b/repos/system_upgrade/common/files/prod-certs/9.5/486.pem
|
||||
@@ -0,0 +1,35 @@
|
||||
+-----BEGIN CERTIFICATE-----
|
||||
+MIIGJDCCBAygAwIBAgIJALDxRLt/tVPLMA0GCSqGSIb3DQEBCwUAMIGuMQswCQYD
|
||||
+VQQGEwJVUzEXMBUGA1UECAwOTm9ydGggQ2Fyb2xpbmExFjAUBgNVBAoMDVJlZCBI
|
||||
+YXQsIEluYy4xGDAWBgNVBAsMD1JlZCBIYXQgTmV0d29yazEuMCwGA1UEAwwlUmVk
|
||||
+IEhhdCBFbnRpdGxlbWVudCBQcm9kdWN0IEF1dGhvcml0eTEkMCIGCSqGSIb3DQEJ
|
||||
+ARYVY2Etc3VwcG9ydEByZWRoYXQuY29tMB4XDTI0MDExNjE1Mjk1OVoXDTQ0MDEx
|
||||
+NjE1Mjk1OVowRDFCMEAGA1UEAww5UmVkIEhhdCBQcm9kdWN0IElEIFtiYjI5ZDU3
|
||||
+NC0yNDM5LTRmYTktOWI2Zi1lOWE1NzVkZDU0ZGJdMIICIjANBgkqhkiG9w0BAQEF
|
||||
+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
|
||||
+AwEAAaOBrTCBqjAJBgNVHRMEAjAAMDoGDCsGAQQBkggJAYNmAQQqDChSZWQgSGF0
|
||||
+IEVudGVycHJpc2UgTGludXggZm9yIHg4Nl82NCBCZXRhMBoGDCsGAQQBkggJAYNm
|
||||
+AgQKDAg5LjUgQmV0YTAYBgwrBgEEAZIICQGDZgMECAwGeDg2XzY0MCsGDCsGAQQB
|
||||
+kggJAYNmBAQbDBlyaGVsLTkscmhlbC05LWJldGEteDg2XzY0MA0GCSqGSIb3DQEB
|
||||
+CwUAA4ICAQC26JzDoY4bAGS+1o4L9vWLAk8zeaFWRCzXmTnEEQk6jyIP+I1lS0rH
|
||||
+8QWMu8bnnqeSOkb6qhSuiffwvd2TiYtapMf4rZ6vXQ+zTzuAO9/wRAVsQt2ElBf0
|
||||
+dU0Ghym9Xz/oUWP8TxZNjYuk/uRRTH9y/fVQWJ2PCP7BT3m3arMhpkyB9sNgoQDS
|
||||
+Yjb/d5wHgFyIW0ZOjJrM/ThR4xj8wXWFmjidDGXbn8V0Md8NUTo2QDZuoGwH4UKA
|
||||
+RlF1hjnw2uSr81RvXdWhXeG1XNjW0mJerR2v1T9dCK/QOtYJLIFX8opG05axeJ6y
|
||||
+FHwbuPi9uCvL2WlWXlfsofgVax9LUPWsN0pwL3B38h2m29nWjRi8g8ob10yGmapA
|
||||
+ksLACBur0QXKVUGfU0gI5Kd1CpKQMRHXXW3D+i77mfKJF+uLcle4tF2mzxuXmuxn
|
||||
+3WD+2mmjVWnn5Hx/6A8nELdD5oD4qRN4fydUp2r7UDpVZLqggzvwydhoR1eJvm1K
|
||||
+1ompaqRTXG5rwpEkqIz1gyJZqTt/35G8XXgwIr6gYSJzcQfFnt6VqYI/tdSu7tAh
|
||||
++qN6v3nBrASsHjIMO3qldwk3BTPfzTorzDrDi7240B2JLqdd+SeqkAcANDPcWIeZ
|
||||
+p/JQSedJCYKf0UZ7ry+sJmjhdWLi5ooLq7RPUbXd7kdLCqj2Y8llNg==
|
||||
+-----END CERTIFICATE-----
|
||||
diff --git a/repos/system_upgrade/common/files/prod-certs/9.5/72.pem b/repos/system_upgrade/common/files/prod-certs/9.5/72.pem
|
||||
new file mode 100644
|
||||
index 00000000..38c94ef7
|
||||
--- /dev/null
|
||||
+++ b/repos/system_upgrade/common/files/prod-certs/9.5/72.pem
|
||||
@@ -0,0 +1,35 @@
|
||||
+-----BEGIN CERTIFICATE-----
|
||||
+MIIGFjCCA/6gAwIBAgIJALDxRLt/tVPgMA0GCSqGSIb3DQEBCwUAMIGuMQswCQYD
|
||||
+VQQGEwJVUzEXMBUGA1UECAwOTm9ydGggQ2Fyb2xpbmExFjAUBgNVBAoMDVJlZCBI
|
||||
+YXQsIEluYy4xGDAWBgNVBAsMD1JlZCBIYXQgTmV0d29yazEuMCwGA1UEAwwlUmVk
|
||||
+IEhhdCBFbnRpdGxlbWVudCBQcm9kdWN0IEF1dGhvcml0eTEkMCIGCSqGSIb3DQEJ
|
||||
+ARYVY2Etc3VwcG9ydEByZWRoYXQuY29tMB4XDTI0MDExNjE1MzAyMVoXDTQ0MDEx
|
||||
+NjE1MzAyMVowRDFCMEAGA1UEAww5UmVkIEhhdCBQcm9kdWN0IElEIFs3NTNmOWU4
|
||||
+ZS00ZDdhLTRiZjAtOTgzMi1mYjUzOTFiNWJjNmZdMIICIjANBgkqhkiG9w0BAQEF
|
||||
+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
|
||||
+AwEAAaOBnzCBnDAJBgNVHRMEAjAAMDsGCysGAQQBkggJAUgBBCwMKlJlZCBIYXQg
|
||||
+RW50ZXJwcmlzZSBMaW51eCBmb3IgSUJNIHogU3lzdGVtczAUBgsrBgEEAZIICQFI
|
||||
+AgQFDAM5LjUwFgYLKwYBBAGSCAkBSAMEBwwFczM5MHgwJAYLKwYBBAGSCAkBSAQE
|
||||
+FQwTcmhlbC05LHJoZWwtOS1zMzkweDANBgkqhkiG9w0BAQsFAAOCAgEAu5Ud+Lr+
|
||||
+ymSvv1ZmDgjZmECL254g+TJ9mqYKpZNELZJwUHbfiFETGD1k6nK6NwHIFJae0CIb
|
||||
+LbeQ3bIYdbO5/RgcCIL8QUIiksYi7XzfsnJGegMOiYImoqNunQH2YTD3PRHAPy1k
|
||||
+cji1k0VLISCh/4Qh8m6fT1W/fb1B2+y+Rfkzob4LewdwhfvXkh6uTEj/XKK5itiX
|
||||
+GdHkahr/eE7ooQM9gty7vOX4hXRsVDgf/zjqko+2wCcO6peh6uqU8e9dZ2oqchMy
|
||||
+pJlGaGMQ+I0x8XJ2dlt61mHYTgrbjcvXMEN/Kus0LFAp2mxvlhSStFkwvXfZBqTa
|
||||
+e+qnKDdNLgQcxdlK7p6mwz37XjfPdpMsh4SC4o/e+HVSb5L84nn9SSDp5l+gsNXf
|
||||
+4XpV+v/dYSS/cB5x4kjcACACPWSobpJc7FJ/NXCp1L0V/mvrQijSQoX9TqzJtgbv
|
||||
+btKHUTrwgLpvQMEjfv8ZvNGhCCAl/IM02ACTg+GG2oNTwJKc1ogXFfP5WYVW9vEZ
|
||||
+yYDQbT9mtjfiyqI/nJXvfBbnqxUHgD3lcKs8PpnE0khIkYHoAjs+c7PFfntE08Sa
|
||||
+UdS/tVQ3Swwu2WczaDiVSwqfssWisHGjkIG6Fv5kmM3PNFCPpNCYnabMs+maaeyV
|
||||
+jd/FZrkWz+0TLseJ8xeo0MajgW4IjRqBxwg=
|
||||
+-----END CERTIFICATE-----
|
||||
diff --git a/repos/system_upgrade/common/files/upgrade_paths.json b/repos/system_upgrade/common/files/upgrade_paths.json
|
||||
index 880595c0..43bd049a 100644
|
||||
--- a/repos/system_upgrade/common/files/upgrade_paths.json
|
||||
+++ b/repos/system_upgrade/common/files/upgrade_paths.json
|
||||
@@ -2,9 +2,9 @@
|
||||
"default": {
|
||||
"7.9": ["8.8", "8.10"],
|
||||
"8.8": ["9.2"],
|
||||
- "8.10": ["9.4"],
|
||||
+ "8.10": ["9.4", "9.5"],
|
||||
"7": ["8.8", "8.10"],
|
||||
- "8": ["9.2", "9.4"]
|
||||
+ "8": ["9.2", "9.4", "9.5"]
|
||||
},
|
||||
"saphana": {
|
||||
"7.9": ["8.10", "8.8"],
|
||||
--
|
||||
2.44.0
|
||||
|
@ -1,61 +0,0 @@
|
||||
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
|
||||
|
@ -1,41 +0,0 @@
|
||||
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
|
||||
|
@ -1,37 +0,0 @@
|
||||
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
|
||||
|
@ -1,409 +0,0 @@
|
||||
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
|
||||
|
@ -1,68 +0,0 @@
|
||||
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
|
||||
|
@ -1,34 +0,0 @@
|
||||
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
|
||||
|
@ -1,94 +0,0 @@
|
||||
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
|
||||
|
@ -1,26 +0,0 @@
|
||||
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
|
||||
|
@ -1,187 +0,0 @@
|
||||
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
|
||||
|
@ -1,27 +0,0 @@
|
||||
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
|
||||
|
@ -1,500 +0,0 @@
|
||||
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
|
||||
|
@ -1,167 +0,0 @@
|
||||
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
|
||||
|
@ -1,67 +0,0 @@
|
||||
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
|
||||
|
@ -1,49 +0,0 @@
|
||||
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
|
||||
|
@ -1,26 +0,0 @@
|
||||
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
|
||||
|
@ -1,28 +0,0 @@
|
||||
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
|
||||
|
@ -1,26 +0,0 @@
|
||||
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
|
||||
|
@ -1,37 +0,0 @@
|
||||
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
|
||||
|
@ -1,25 +0,0 @@
|
||||
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
|
||||
|
@ -1,96 +0,0 @@
|
||||
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
|
||||
|
@ -1,129 +0,0 @@
|
||||
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
|
||||
|
@ -1,56 +0,0 @@
|
||||
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
|
||||
|
@ -1,167 +0,0 @@
|
||||
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
|
||||
|
@ -1,199 +0,0 @@
|
||||
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
|
||||
|
@ -1,159 +0,0 @@
|
||||
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
|
||||
|
@ -1,38 +0,0 @@
|
||||
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
|
||||
|
@ -1,364 +0,0 @@
|
||||
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
|
||||
|
@ -1,68 +0,0 @@
|
||||
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
|
||||
|
@ -1,38 +0,0 @@
|
||||
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
|
||||
|
@ -1,37 +0,0 @@
|
||||
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
|
||||
|
@ -1,504 +0,0 @@
|
||||
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
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,56 +0,0 @@
|
||||
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
|
||||
|
@ -1,29 +0,0 @@
|
||||
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
|
||||
|
@ -1,120 +0,0 @@
|
||||
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
|
||||
|
@ -1,26 +0,0 @@
|
||||
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
|
||||
|
@ -1,66 +0,0 @@
|
||||
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
|
||||
|
@ -1,173 +0,0 @@
|
||||
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
|
||||
|
@ -1,70 +0,0 @@
|
||||
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
|
||||
|
@ -1,91 +0,0 @@
|
||||
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
|
||||
|
@ -1,82 +0,0 @@
|
||||
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
|
||||
|
@ -1,114 +0,0 @@
|
||||
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
|
||||
|
@ -1,327 +0,0 @@
|
||||
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
|
||||
|
@ -41,8 +41,8 @@ py2_byte_compile "%1" "%2"}
|
||||
# RHEL 8+ packages to be consistent with other leapp projects in future.
|
||||
|
||||
Name: leapp-repository
|
||||
Version: 0.20.0
|
||||
Release: 5%{?dist}
|
||||
Version: 0.21.0
|
||||
Release: 1%{?dist}
|
||||
Summary: Repositories for leapp
|
||||
|
||||
License: ASL 2.0
|
||||
@ -56,100 +56,6 @@ BuildArch: noarch
|
||||
### PATCHES HERE
|
||||
# Patch0001: filename.patch
|
||||
|
||||
Patch0001: 0001-rhui-do-not-bootstrap-target-client-on-aws.patch
|
||||
Patch0002: 0002-Packit-Drop-tests-for-obsoleted-upgrade-paths-restru.patch
|
||||
Patch0003: 0003-silence-use-yield-from-from-pylint-3.1.patch
|
||||
Patch0004: 0004-rocescanner-Actually-call-process-in-test_roce_notib.patch
|
||||
Patch0005: 0005-Fix-incorrect-parsing-of-lscpu-output.patch
|
||||
Patch0006: 0006-Add-unit-tests-for-actor-udevamdinfo.patch
|
||||
Patch0007: 0007-Add-unit-tests-for-scansourcefiles-actor-1190.patch
|
||||
Patch0008: 0008-pes_events_scanner-overwrite-repositories-when-apply.patch
|
||||
Patch0009: 0009-Modify-upgrade-not-terminate-after-lockfile-detected.patch
|
||||
Patch0010: 0010-Make-the-reboot-required-text-more-visible-in-the-co.patch
|
||||
Patch0011: 0011-check_grub_legacy-inhibit-when-GRUB-legacy-is-presen.patch
|
||||
Patch0012: 0012-Default-channel-to-GA-is-not-specified-otherwise-120.patch
|
||||
Patch0013: 0013-Enhance-grub2-install-failure-message.patch
|
||||
Patch0014: 0014-boot-check-first-partition-offset-on-GRUB-devices.patch
|
||||
Patch0015: 0015-boot-Skip-checks-of-first-partition-offset-for-for-g.patch
|
||||
Patch0016: 0016-repomapping-Add-RHEL7-ELS-repos.patch
|
||||
Patch0017: 0017-bump-required-repomap-version.patch
|
||||
Patch0018: 0018-fixup-bump-required-repomap-version.patch
|
||||
Patch0019: 0019-Fix-incorrect-command-formulation.patch
|
||||
Patch0020: 0020-mention-Report-in-produces-of-transitionsystemdservi.patch
|
||||
Patch0021: 0021-Update-packit-config-after-tier-redefinition.patch
|
||||
Patch0022: 0022-Update-reboot-msg-Note-the-console-access.patch
|
||||
Patch0023: 0023-Fix-kernel-cmdline-args-we-add-not-being-propogated-.patch
|
||||
Patch0024: 0024-kernelcmdlineconfig-add-newline-in-etc-kernel-cmdlin.patch
|
||||
Patch0025: 0025-Data-Update-DDDD.json-fixed-incorrect-data-add-craft.patch
|
||||
Patch0026: 0026-Data-Update-PES-data-to-cover-up-to-date-changes.patch
|
||||
Patch0027: 0027-Move-common-Satellite-Upgrade-code-to-common.patch
|
||||
Patch0028: 0028-Add-el8toel9-upgrade-facts-for-Satellite.patch
|
||||
Patch0029: 0029-Refresh-collation-version-if-pulp-ansible-is-present.patch
|
||||
Patch0030: 0030-Refactor-satellite_upgrade_services-to-use-SystemdSe.patch
|
||||
Patch0031: 0031-mount-usr-Implement-try-sleep-loop-add-time-for-stor.patch
|
||||
Patch0032: 0032-Add-additional-KB-resources.patch
|
||||
Patch0033: 0033-storage-initialisation-apply-sleep-always.patch
|
||||
Patch0034: 0034-Add-renovate-to-track-github-actions-deps.patch
|
||||
Patch0035: 0035-chore-deps-update-redhat-plumbers-in-action-differen.patch
|
||||
Patch0036: 0036-chore-deps-update-actions-checkout-action-to-v4.patch
|
||||
Patch0037: 0037-chore-deps-update-dependency-ubuntu-to-v22.patch
|
||||
Patch0038: 0038-Fix-E0606-errors-reported-by-pylint.patch
|
||||
Patch0039: 0039-Fix-W0135-reported-by-pylint.patch
|
||||
Patch0040: 0040-chore-deps-update-peter-evans-create-or-update-comme.patch
|
||||
Patch0041: 0041-properly-indent-the-list-of-supported-OSes.patch
|
||||
Patch0042: 0042-report-which-OS-release-was-detected-as-unsupported.patch
|
||||
Patch0043: 0043-Fix-typo-in-.packit.yaml.patch
|
||||
Patch0044: 0044-drop-unused-packager-field-from-distro-metadata.patch
|
||||
Patch0045: 0045-Add-environment-information-to-leappdb.patch
|
||||
Patch0046: 0046-chore-deps-update-actions-github-script-action-to-v7.patch
|
||||
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}
|
||||
@ -301,98 +207,6 @@ Requires: python3-gobject-base
|
||||
|
||||
# APPLY PATCHES HERE
|
||||
# %%patch0001 -p1
|
||||
%patch0001 -p1
|
||||
%patch0002 -p1
|
||||
%patch0003 -p1
|
||||
%patch0004 -p1
|
||||
%patch0005 -p1
|
||||
%patch0006 -p1
|
||||
%patch0007 -p1
|
||||
%patch0008 -p1
|
||||
%patch0009 -p1
|
||||
%patch0010 -p1
|
||||
%patch0011 -p1
|
||||
%patch0012 -p1
|
||||
%patch0013 -p1
|
||||
%patch0014 -p1
|
||||
%patch0015 -p1
|
||||
%patch0016 -p1
|
||||
%patch0017 -p1
|
||||
%patch0018 -p1
|
||||
%patch0019 -p1
|
||||
%patch0020 -p1
|
||||
%patch0021 -p1
|
||||
%patch0022 -p1
|
||||
%patch0023 -p1
|
||||
%patch0024 -p1
|
||||
%patch0025 -p1
|
||||
%patch0026 -p1
|
||||
%patch0027 -p1
|
||||
%patch0028 -p1
|
||||
%patch0029 -p1
|
||||
%patch0030 -p1
|
||||
%patch0031 -p1
|
||||
%patch0032 -p1
|
||||
%patch0033 -p1
|
||||
%patch0034 -p1
|
||||
%patch0035 -p1
|
||||
%patch0036 -p1
|
||||
%patch0037 -p1
|
||||
%patch0038 -p1
|
||||
%patch0039 -p1
|
||||
%patch0040 -p1
|
||||
%patch0041 -p1
|
||||
%patch0042 -p1
|
||||
%patch0043 -p1
|
||||
%patch0044 -p1
|
||||
%patch0045 -p1
|
||||
%patch0046 -p1
|
||||
%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
|
||||
@ -470,6 +284,14 @@ done;
|
||||
# no files here
|
||||
|
||||
%changelog
|
||||
* Fri Aug 16 2024 Toshio Kuratomi <toshio@fedoraproject.org> - 0.21.0-1
|
||||
- Rebase to new upstream 0.21.0
|
||||
- Updated leapp data files.
|
||||
- Inhibit the upgrade to RHEL 9.5 on ARM architecture due to
|
||||
incompatibility between the RHEL 8 bootloader and RHEL 9.5 kernel.
|
||||
- Introduce experimental upgrades in 'live' mode for the testing.
|
||||
- Resolves: RHEL-27847, RHEL-52993, RHEL-45280, RHEL-49748, RHEL-52186
|
||||
|
||||
* 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
|
||||
|
2
sources
2
sources
@ -1,2 +1,2 @@
|
||||
SHA512 (deps-pkgs-10.tar.gz) = e63f77e439456e0a8b0fc338b370ee7e2d7824b1d62c75f2209b283905c8c0641d504bfe910021317884fa1662429d952fd4c9b9ee457c48b34182e6f975aa0e
|
||||
SHA512 (leapp-repository-0.20.0.tar.gz) = 8f1732cda85a597e2401a67b69f347398e0270fb2a411079fb9de5261213809bb3323053c0663c0c1f731eb085be6083acabd0a46aaa24d5d3f6b024bd5f0e55
|
||||
SHA512 (leapp-repository-0.21.0.tar.gz) = 57cbc9cf3395ade0f2f0ec90d0000e9bcf3eba7c40473bfe930dac648c7ae21cb07d3a5b30e1eb72c4c3e24a49778d81a5c322a4a5956678a5c1705c524d11f6
|
||||
|
Loading…
Reference in New Issue
Block a user