From 8c81ac18ef416aeb7d0a2baa64d343229b49a67a Mon Sep 17 00:00:00 2001 From: Pavel Moravec Date: Wed, 21 Aug 2024 12:49:59 +0200 Subject: [PATCH] sos updates to RHEL10 Beta Reverting RHEL-22732 patch due to regressions Resolves: RHEL-50589 Signed-off-by: Pavel Moravec --- sos-RHEL-22732-reverted.patch | 77 +++++++++++++++++++++++++++++++++++ sos.spec | 8 +++- 2 files changed, 84 insertions(+), 1 deletion(-) create mode 100644 sos-RHEL-22732-reverted.patch diff --git a/sos-RHEL-22732-reverted.patch b/sos-RHEL-22732-reverted.patch new file mode 100644 index 0000000..2738138 --- /dev/null +++ b/sos-RHEL-22732-reverted.patch @@ -0,0 +1,77 @@ +From 11879fbb1adc33d8abc0cb70dc63e7e88c39fc3f Mon Sep 17 00:00:00 2001 +From: Jose Castillo +Date: Wed, 21 Feb 2024 12:24:37 +0000 +Subject: [PATCH] [redhat|policy] Check for archive size before upload + +The Red Hat Customer Portal has a max limit for +single http requests of 1Gb. From sos side, we never checked this +and so customers had to wait for the whole upload to be attempted +before receiving an error from the portal. +This patch attempts to stop the upload before it starts, informing +customers of such limit, and switching to secure FTP where there's +no limit. + +Related: RHEL-22732 + +Signed-off-by: Jose Castillo +--- + sos/policies/distros/redhat.py | 29 +++++++++++++++++++++++------ + 1 file changed, 23 insertions(+), 6 deletions(-) + +diff --git a/sos/policies/distros/redhat.py b/sos/policies/distros/redhat.py +index edea151e2..2fb0df3fa 100644 +--- a/sos/policies/distros/redhat.py ++++ b/sos/policies/distros/redhat.py +@@ -22,7 +22,7 @@ + from sos.policies.package_managers.rpm import RpmPackageManager + from sos.policies.package_managers.flatpak import FlatpakPackageManager + from sos.policies.package_managers import MultiPackageManager +-from sos.utilities import bold ++from sos.utilities import bold, convert_bytes + from sos import _sos as _ + + try: +@@ -232,6 +232,8 @@ class RHELPolicy(RedHatPolicy): + _upload_url = RH_SFTP_HOST + _upload_method = 'post' + _device_token = None ++ # Max size for an http single request is 1Gb ++ _max_size_request = 1073741824 + + def __init__(self, sysroot=None, init=None, probe_runtime=True, + remote_exec=None): +@@ -429,15 +429,30 @@ support representative. + return super().upload_sftp(user=_user, password=_token) + raise Exception("Could not retrieve valid or anonymous credentials") + ++ def check_file_too_big(self, archive): ++ size = os.path.getsize(archive) ++ # Lets check if the size is bigger than the limit. ++ # There's really no need to transform the size to Gb, ++ # so we don't need to call any size converter implemented ++ # in tools.py ++ if (size >= self._max_size_request): ++ self.ui_log.warning( ++ _("Size of archive is bigger than Red Hat Customer Portal " ++ "limit for uploads of " ++ f"{convert_bytes(self._max_size_request)} " ++ " via sos http upload. \n") ++ ) ++ return RH_SFTP_HOST ++ else: ++ return RH_API_HOST ++ + def upload_archive(self, archive): + """Override the base upload_archive to provide for automatic failover + from RHCP failures to the public RH dropbox + """ + try: +- if self.upload_url and self.upload_url.startswith(RH_API_HOST) and\ +- (not self.get_upload_user() or +- not self.get_upload_password()): +- self.upload_url = RH_SFTP_HOST ++ if self.get_upload_url().startswith(RH_API_HOST): ++ self.upload_url = self.check_file_too_big(archive) + uploaded = super().upload_archive(archive) + except Exception as e: + uploaded = False diff --git a/sos.spec b/sos.spec index ab225f7..d437e5b 100644 --- a/sos.spec +++ b/sos.spec @@ -5,7 +5,7 @@ Summary: A set of tools to gather troubleshooting information from a system Name: sos Version: 4.7.2 -Release: 1%{?dist} +Release: 2%{?dist} Group: Applications/System Source0: https://github.com/sosreport/sos/archive/%{version}/sos-%{version}.tar.gz Source1: sos-audit-%{auditversion}.tgz @@ -22,6 +22,7 @@ Recommends: python3-pexpect Recommends: python3-pyyaml Conflicts: vdsm < 4.40 Obsoletes: sos-collector <= 1.9 +Patch0: sos-RHEL-22732-reverted.patch %description Sos is a set of tools that gathers information about system @@ -32,6 +33,7 @@ support technicians and developers. %prep %setup -qn %{name}-%{version} %setup -T -D -a1 -q +%patch0 -p1 -R %build %py3_build @@ -104,6 +106,10 @@ of the system. Currently storage and filesystem commands are audited. %changelog +* Wed Aug 21 2024 Pavel Moravec = 4.7.2-2 +- Reverting RHEL-22732 patch due to regressions + Resolves: RHEL-50589 + * Mon Jul 29 2024 Brian Stinson - 4.7.2-1 - Update to 4.7.2 in RHEL 10