From 432b9a22f955f6209dada5f4c32cd1e55b06f644 Mon Sep 17 00:00:00 2001 From: Petr Stodulka Date: Thu, 2 Nov 2023 17:41:29 +0100 Subject: [PATCH] Fix the upgrade for systems without subscription-manager package Resolves: RHEL-14901 --- ...ngling-symlinks-for-containerized-RH.patch | 62 +++++++++++++++++++ leapp-repository.spec | 8 ++- 2 files changed, 69 insertions(+), 1 deletion(-) create mode 100644 0002-Do-not-create-dangling-symlinks-for-containerized-RH.patch diff --git a/0002-Do-not-create-dangling-symlinks-for-containerized-RH.patch b/0002-Do-not-create-dangling-symlinks-for-containerized-RH.patch new file mode 100644 index 0000000..7739103 --- /dev/null +++ b/0002-Do-not-create-dangling-symlinks-for-containerized-RH.patch @@ -0,0 +1,62 @@ +From d1f28cbd143f2dce85f7f175308437954847aba8 Mon Sep 17 00:00:00 2001 +From: Petr Stodulka +Date: Thu, 2 Nov 2023 14:20:11 +0100 +Subject: [PATCH] Do not create dangling symlinks for containerized RHSM + +When setting RHSM into the container mode, we are creating symlinks +to /etc/rhsm and /etc/pki/entitlement directories. However, this +creates dangling symlinks if RHSM is not installed or user manually +removes one of these dirs. + +If any of these directories is missing, skip other actions and +log the warning. Usually it means that RHSM is not actually used +or installed at all, so in these cases we can do the skip. The +only corner case when system could use RHSM without +/etc/pki/entitlement is when RHSM is configured to put these +certificate on a different path, and we do not support nor cover +such a scenario as we are not scanning the RHSM configuration at +all. + +This also solves the problems on systems that does not have RHSM +available at all. +--- + repos/system_upgrade/common/libraries/rhsm.py | 16 ++++++++++++++++ + 1 file changed, 16 insertions(+) + +diff --git a/repos/system_upgrade/common/libraries/rhsm.py b/repos/system_upgrade/common/libraries/rhsm.py +index 18842021..eb388829 100644 +--- a/repos/system_upgrade/common/libraries/rhsm.py ++++ b/repos/system_upgrade/common/libraries/rhsm.py +@@ -325,6 +325,11 @@ def set_container_mode(context): + could be affected and the generated repo file in the container could be + affected as well (e.g. when the release is set, using rhsm, on the host). + ++ We want to put RHSM into the container mode always when /etc/rhsm and ++ /etc/pki/entitlement directories exists, even when leapp is executed with ++ --no-rhsm option. If any of these directories are missing, skip other ++ actions - most likely RHSM is not installed in such a case. ++ + :param context: An instance of a mounting.IsolatedActions class + :type context: mounting.IsolatedActions class + """ +@@ -332,6 +337,17 @@ def set_container_mode(context): + api.current_logger().error('Trying to set RHSM into the container mode' + 'on host. Skipping the action.') + return ++ # TODO(pstodulk): check "rhsm identity" whether system is registered ++ # and the container mode should be required ++ if (not os.path.exists(context.full_path('/etc/rhsm')) ++ or not os.path.exists(context.full_path('/etc/pki/entitlement'))): ++ api.current_logger().warning( ++ 'Cannot set the container mode for the subscription-manager as' ++ ' one of required directories is missing. Most likely RHSM is not' ++ ' installed. Skipping other actions.' ++ ) ++ return ++ + try: + context.call(['ln', '-s', '/etc/rhsm', '/etc/rhsm-host']) + context.call(['ln', '-s', '/etc/pki/entitlement', '/etc/pki/entitlement-host']) +-- +2.41.0 + diff --git a/leapp-repository.spec b/leapp-repository.spec index 1bf7140..8ba4345 100644 --- a/leapp-repository.spec +++ b/leapp-repository.spec @@ -42,7 +42,7 @@ py2_byte_compile "%1" "%2"} Name: leapp-repository Version: 0.19.0 -Release: 3%{?dist} +Release: 4%{?dist} Summary: Repositories for leapp License: ASL 2.0 @@ -56,6 +56,7 @@ BuildArch: noarch ### PATCHES HERE # Patch0001: filename.patch Patch0001: 0001-RHSM-Adjust-the-switch-to-container-mode-for-new-RHS.patch +Patch0002: 0002-Do-not-create-dangling-symlinks-for-containerized-RH.patch %description @@ -199,6 +200,7 @@ Requires: python3-gobject-base # APPLY PATCHES HERE # %%patch0001 -p1 %patch0001 -p1 +%patch0002 -p1 %build @@ -276,6 +278,10 @@ done; # no files here %changelog +* Thu Nov 02 2023 Petr Stodulka - 0.19.0-4 +- Fix the upgrade for systems without subscription-manager package +- Resolves: RHEL-14901 + * Tue Oct 31 2023 Petr Stodulka - 0.19.0-3 - Fix the upgrade when the release is locked by new subscription-manager - Resolves: RHEL-14901