diff --git a/0001-host-Skip-entire-etc-sos-cleaner-directory.patch b/0001-host-Skip-entire-etc-sos-cleaner-directory.patch new file mode 100644 index 0000000..972e349 --- /dev/null +++ b/0001-host-Skip-entire-etc-sos-cleaner-directory.patch @@ -0,0 +1,34 @@ +From 7ebb2ce0bcd13c1b3aada648aceb20b5aff636d9 Mon Sep 17 00:00:00 2001 +From: Jake Hunsaker +Date: Tue, 15 Feb 2022 14:18:02 -0500 +Subject: [PATCH 01/10] [host] Skip entire /etc/sos/cleaner directory + +While `default_mapping` is typically the only file expected under +`/etc/sos/cleaner/` it is possible for other mapping files (such as +backups) to appear there. + +Make the `add_forbidden_path()` spec here target the entire cleaner +directory to avoid ever capturing these map files. + +Signed-off-by: Jake Hunsaker +Signed-off-by: Sandro Bonazzola +--- + sos/report/plugins/host.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/sos/report/plugins/host.py b/sos/report/plugins/host.py +index 5e21da7b..95a3b9cd 100644 +--- a/sos/report/plugins/host.py ++++ b/sos/report/plugins/host.py +@@ -20,7 +20,7 @@ class Host(Plugin, IndependentPlugin): + + def setup(self): + +- self.add_forbidden_path('/etc/sos/cleaner/default_mapping') ++ self.add_forbidden_path('/etc/sos/cleaner') + + self.add_cmd_output('hostname', root_symlink='hostname') + self.add_cmd_output('uptime', root_symlink='uptime') +-- +2.27.0 + diff --git a/0002-man-Mention-sos-help-in-main-sos-manpage.patch b/0002-man-Mention-sos-help-in-main-sos-manpage.patch new file mode 100644 index 0000000..b41d923 --- /dev/null +++ b/0002-man-Mention-sos-help-in-main-sos-manpage.patch @@ -0,0 +1,35 @@ +From b5389aa195675f473acdd22f20017a8854ff82d0 Mon Sep 17 00:00:00 2001 +From: Pavel Moravec +Date: Wed, 16 Feb 2022 08:43:32 +0100 +Subject: [PATCH 02/10] [man] Mention sos-help in main sos manpage + +Related to #2860 + +Signed-off-by: Pavel Moravec +Signed-off-by: Sandro Bonazzola +--- + man/en/sos.1 | 8 ++++++++ + 1 file changed, 8 insertions(+) + +diff --git a/man/en/sos.1 b/man/en/sos.1 +index ce4918f9..c335b7e1 100644 +--- a/man/en/sos.1 ++++ b/man/en/sos.1 +@@ -67,6 +67,14 @@ May be invoked via either \fBsos clean\fR, \fBsos cleaner\fR, \fBsos mask\fR, + or via the \fB--clean\fR, \fB--cleaner\fR or \fB --mask\fR options + for \fBreport\fR and \fBcollect\fR. + ++.TP ++.B help ++This subcommand is used to retrieve more detailed information on the various SoS ++commands and components than is directly available in either other manpages or ++--help output. ++ ++See \fB sos help --help\fR and \fB man sos-help\fR for more information. ++ + .SH GLOBAL OPTIONS + sos components provide their own set of options, however the following are available + to be set across all components. +-- +2.27.0 + diff --git a/0003-setup-Add-sos-help-to-build-process.patch b/0003-setup-Add-sos-help-to-build-process.patch new file mode 100644 index 0000000..ba356bf --- /dev/null +++ b/0003-setup-Add-sos-help-to-build-process.patch @@ -0,0 +1,40 @@ +From ac4eb48fa35c13b99ada41540831412480babf8d Mon Sep 17 00:00:00 2001 +From: Pavel Moravec +Date: Wed, 16 Feb 2022 08:44:16 +0100 +Subject: [PATCH 03/10] [setup] Add sos-help to build process + +Resolves: #2860 +Closes: #2861 + +Signed-off-by: Pavel Moravec +Signed-off-by: Sandro Bonazzola +--- + setup.py | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +diff --git a/setup.py b/setup.py +index 25e87a71..8db8641f 100644 +--- a/setup.py ++++ b/setup.py +@@ -90,7 +90,7 @@ setup( + ('share/man/man1', ['man/en/sosreport.1', 'man/en/sos-report.1', + 'man/en/sos.1', 'man/en/sos-collect.1', + 'man/en/sos-collector.1', 'man/en/sos-clean.1', +- 'man/en/sos-mask.1']), ++ 'man/en/sos-mask.1', 'man/en/sos-help.1']), + ('share/man/man5', ['man/en/sos.conf.5']), + ('share/licenses/sos', ['LICENSE']), + ('share/doc/sos', ['AUTHORS', 'README.md']), +@@ -102,7 +102,8 @@ setup( + 'sos.policies.package_managers', 'sos.policies.init_systems', + 'sos.report', 'sos.report.plugins', 'sos.collector', + 'sos.collector.clusters', 'sos.collector.transports', 'sos.cleaner', +- 'sos.cleaner.mappings', 'sos.cleaner.parsers', 'sos.cleaner.archives' ++ 'sos.cleaner.mappings', 'sos.cleaner.parsers', 'sos.cleaner.archives', ++ 'sos.help' + ], + cmdclass=cmdclass, + command_options=command_options, +-- +2.27.0 + diff --git a/0004-runtimes-Allow-container-IDs-to-be-used-with-contain.patch b/0004-runtimes-Allow-container-IDs-to-be-used-with-contain.patch new file mode 100644 index 0000000..339fb37 --- /dev/null +++ b/0004-runtimes-Allow-container-IDs-to-be-used-with-contain.patch @@ -0,0 +1,78 @@ +From d0f9d507b0ec63c9e8f3e5d7b6507d9d0f97c038 Mon Sep 17 00:00:00 2001 +From: Jake Hunsaker +Date: Tue, 15 Feb 2022 16:24:47 -0500 +Subject: [PATCH 04/10] [runtimes] Allow container IDs to be used with + `container_exists()` + +As container runtimes can interchange container names and container IDs, +sos should also allow the use of container IDs when checking for the +presence of a given container. + +In particular, this change unblocks the use of `Plugin.exec_cmd()` when +used in conjunction with `Plugin.get_container_by_name()` to pick a +container based on a provided regex that the container name may match. + +Related: #2856 + +Signed-off-by: Jake Hunsaker +Signed-off-by: Sandro Bonazzola +--- + sos/policies/runtimes/__init__.py | 17 +++++++++++++++++ + sos/report/plugins/__init__.py | 6 +++--- + 2 files changed, 20 insertions(+), 3 deletions(-) + +diff --git a/sos/policies/runtimes/__init__.py b/sos/policies/runtimes/__init__.py +index 5ac67354..d2837349 100644 +--- a/sos/policies/runtimes/__init__.py ++++ b/sos/policies/runtimes/__init__.py +@@ -147,6 +147,23 @@ class ContainerRuntime(): + vols.append(ent[-1]) + return vols + ++ def container_exists(self, container): ++ """Check if a given container ID or name exists on the system from the ++ perspective of the container runtime. ++ ++ Note that this will only check _running_ containers ++ ++ :param container: The name or ID of the container ++ :type container: ``str`` ++ ++ :returns: True if the container exists, else False ++ :rtype: ``bool`` ++ """ ++ for _contup in self.containers: ++ if container in _contup: ++ return True ++ return False ++ + def fmt_container_cmd(self, container, cmd, quotecmd): + """Format a command to run inside a container using the runtime + +diff --git a/sos/report/plugins/__init__.py b/sos/report/plugins/__init__.py +index 2988be08..cc5cb65b 100644 +--- a/sos/report/plugins/__init__.py ++++ b/sos/report/plugins/__init__.py +@@ -2593,7 +2593,7 @@ class Plugin(): + """If a container runtime is present, check to see if a container with + a given name is currently running + +- :param name: The name of the container to check presence of ++ :param name: The name or ID of the container to check presence of + :type name: ``str`` + + :returns: ``True`` if `name` exists, else ``False`` +@@ -2601,8 +2601,8 @@ class Plugin(): + """ + _runtime = self._get_container_runtime() + if _runtime is not None: +- con = _runtime.get_container_by_name(name) +- return con is not None ++ return (_runtime.container_exists(name) or ++ _runtime.get_container_by_name(name) is not None) + return False + + def get_all_containers_by_regex(self, regex, get_all=False): +-- +2.27.0 + diff --git a/0005-ovn_central-Rename-container-responsable-of-Red-Hat-.patch b/0005-ovn_central-Rename-container-responsable-of-Red-Hat-.patch new file mode 100644 index 0000000..ff07ec8 --- /dev/null +++ b/0005-ovn_central-Rename-container-responsable-of-Red-Hat-.patch @@ -0,0 +1,77 @@ +From de9b020a72d1ceda39587db4c6d5acf72cd90da2 Mon Sep 17 00:00:00 2001 +From: Fernando Royo +Date: Tue, 15 Feb 2022 10:00:38 +0100 +Subject: [PATCH 05/10] [ovn_central] Rename container responsable of Red Hat + ovn_central plugin + +ovn_central plugin is running by container with +name 'ovn-dbs-bundle*', a typo has been identified and +this cause plugin ovn_central not enabled by default as it +does not recognize any container responsible of this. + +This patch fix this container name match, searching schema db +keeping backward compatibility with openvswitch. + +Signed-off-by: Sandro Bonazzola +--- + sos/report/plugins/ovn_central.py | 23 ++++++++++++----------- + 1 file changed, 12 insertions(+), 11 deletions(-) + +diff --git a/sos/report/plugins/ovn_central.py b/sos/report/plugins/ovn_central.py +index 2f0438df..2f34bff0 100644 +--- a/sos/report/plugins/ovn_central.py ++++ b/sos/report/plugins/ovn_central.py +@@ -24,7 +24,7 @@ class OVNCentral(Plugin): + short_desc = 'OVN Northd' + plugin_name = "ovn_central" + profiles = ('network', 'virt') +- containers = ('ovs-db-bundle.*',) ++ containers = ('ovn-dbs-bundle.*',) + + def get_tables_from_schema(self, filename, skip=[]): + if self._container_name: +@@ -66,7 +66,7 @@ class OVNCentral(Plugin): + cmds.append('%s list %s' % (ovn_cmd, table)) + + def setup(self): +- self._container_name = self.get_container_by_name('ovs-dbs-bundle.*') ++ self._container_name = self.get_container_by_name(self.containers[0]) + + ovs_rundir = os.environ.get('OVS_RUNDIR') + for pidfile in ['ovnnb_db.pid', 'ovnsb_db.pid', 'ovn-northd.pid']: +@@ -110,12 +110,11 @@ class OVNCentral(Plugin): + 'ovn-sbctl get-connection', + ] + +- schema_dir = '/usr/share/openvswitch' +- +- nb_tables = self.get_tables_from_schema(self.path_join( +- schema_dir, 'ovn-nb.ovsschema')) +- +- self.add_database_output(nb_tables, nbctl_cmds, 'ovn-nbctl') ++ # backward compatibility ++ for path in ['/usr/share/openvswitch', '/usr/share/ovn']: ++ nb_tables = self.get_tables_from_schema(self.path_join( ++ path, 'ovn-nb.ovsschema')) ++ self.add_database_output(nb_tables, nbctl_cmds, 'ovn-nbctl') + + cmds = ovsdb_cmds + cmds += nbctl_cmds +@@ -125,9 +124,11 @@ class OVNCentral(Plugin): + format(self.ovn_sbdb_sock_path), + "output": "Leader: self"} + if self.test_predicate(self, pred=SoSPredicate(self, cmd_outputs=co)): +- sb_tables = self.get_tables_from_schema(self.path_join( +- schema_dir, 'ovn-sb.ovsschema'), ['Logical_Flow']) +- self.add_database_output(sb_tables, sbctl_cmds, 'ovn-sbctl') ++ # backward compatibility ++ for path in ['/usr/share/openvswitch', '/usr/share/ovn']: ++ sb_tables = self.get_tables_from_schema(self.path_join( ++ path, 'ovn-sb.ovsschema'), ['Logical_Flow']) ++ self.add_database_output(sb_tables, sbctl_cmds, 'ovn-sbctl') + cmds += sbctl_cmds + + # If OVN is containerized, we need to run the above commands inside +-- +2.27.0 + diff --git a/0006-pulpcore-Stop-collecting-commands-relevant-to-old-ta.patch b/0006-pulpcore-Stop-collecting-commands-relevant-to-old-ta.patch new file mode 100644 index 0000000..e9da405 --- /dev/null +++ b/0006-pulpcore-Stop-collecting-commands-relevant-to-old-ta.patch @@ -0,0 +1,45 @@ +From 751530acad7cb41a461b16bb7bbedf2753847ca4 Mon Sep 17 00:00:00 2001 +From: Pavel Moravec +Date: Thu, 17 Feb 2022 11:51:20 +0100 +Subject: [PATCH 06/10] [pulpcore] Stop collecting commands relevant to old + taskig system + +The reserved resource approach was used by pulp-3 for a sporadic time +in early pulp-3 development only. It is abandoned and should not be +productised anywhere. So it is safe to remove the commands (together +with rq broker status that was in charge of reserved resources). + +Resolves: #2865 + +Signed-off-by: Pavel Moravec +Signed-off-by: Sandro Bonazzola +--- + sos/report/plugins/pulpcore.py | 5 ----- + 1 file changed, 5 deletions(-) + +diff --git a/sos/report/plugins/pulpcore.py b/sos/report/plugins/pulpcore.py +index 7a5d461c..426d4819 100644 +--- a/sos/report/plugins/pulpcore.py ++++ b/sos/report/plugins/pulpcore.py +@@ -91,9 +91,6 @@ class PulpCore(Plugin, IndependentPlugin): + # skip collecting certificate keys + self.add_forbidden_path("/etc/pki/pulp/**/*.key", recursive=True) + +- self.add_cmd_output("rq info -u redis://localhost:6379/8", +- env={"LC_ALL": "en_US.UTF-8"}, +- suggest_filename="rq_info") + self.add_cmd_output("curl -ks https://localhost/pulp/api/v3/status/", + suggest_filename="pulp_status") + dynaconf_env = {"LC_ALL": "en_US.UTF-8", +@@ -105,8 +102,6 @@ class PulpCore(Plugin, IndependentPlugin): + + task_days = self.get_option('task-days') + for table in ['core_task', 'core_taskgroup', +- 'core_reservedresourcerecord', +- 'core_taskreservedresourcerecord', + 'core_groupprogressreport', 'core_progressreport']: + _query = "select * from %s where pulp_last_updated > NOW() - " \ + "interval '%s days' order by pulp_last_updated" % \ +-- +2.27.0 + diff --git a/0007-report-Honor-plugins-hardcoded-plugin_timeout.patch b/0007-report-Honor-plugins-hardcoded-plugin_timeout.patch new file mode 100644 index 0000000..7d3401f --- /dev/null +++ b/0007-report-Honor-plugins-hardcoded-plugin_timeout.patch @@ -0,0 +1,40 @@ +From 7069e99d1c5c443f96a98a7ed6db67fa14683e67 Mon Sep 17 00:00:00 2001 +From: Pavel Moravec +Date: Thu, 17 Feb 2022 09:14:15 +0100 +Subject: [PATCH 07/10] [report] Honor plugins' hardcoded plugin_timeout + +Currently, plugin's plugin_timeout hardcoded default is superseded by +whatever --plugin-timeout value, even when this option is not used and +we eval it to TIMEOUT_DEFAULT. + +In this case of not setting --plugin-timeout either -k plugin.timeout, +honour plugin's plugin_timeout instead. + +Resolves: #2863 +Closes: #2864 + +Signed-off-by: Pavel Moravec +Signed-off-by: Sandro Bonazzola +--- + sos/report/plugins/__init__.py | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/sos/report/plugins/__init__.py b/sos/report/plugins/__init__.py +index cc5cb65b..336b4d22 100644 +--- a/sos/report/plugins/__init__.py ++++ b/sos/report/plugins/__init__.py +@@ -636,7 +636,10 @@ class Plugin(): + if opt_timeout is None: + _timeout = own_timeout + elif opt_timeout is not None and own_timeout == -1: +- _timeout = int(opt_timeout) ++ if opt_timeout == TIMEOUT_DEFAULT: ++ _timeout = default_timeout ++ else: ++ _timeout = int(opt_timeout) + elif opt_timeout is not None and own_timeout > -1: + _timeout = own_timeout + else: +-- +2.27.0 + diff --git a/0008-networking-consistently-list-the-routing-policy-rule.patch b/0008-networking-consistently-list-the-routing-policy-rule.patch new file mode 100644 index 0000000..8364fd0 --- /dev/null +++ b/0008-networking-consistently-list-the-routing-policy-rule.patch @@ -0,0 +1,47 @@ +From b6c51c5fea8115e658a0a696e2f482739441b637 Mon Sep 17 00:00:00 2001 +From: Antoine Tenart +Date: Wed, 16 Feb 2022 17:16:48 +0100 +Subject: [PATCH 08/10] [networking] consistently list the routing policy rules + +The commands used to list the routing policy rules were inconsistent: + +- The IPv6 routing policy rules were not retrieved in namespaces. +- The command used were inconsistent in the file (it's only cosmetic, + but making it consistent helps maintenance). + +Fix this. + +Signed-off-by: Antoine Tenart +Signed-off-by: Sandro Bonazzola +--- + sos/report/plugins/networking.py | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +diff --git a/sos/report/plugins/networking.py b/sos/report/plugins/networking.py +index 8b7f8ee9..69a7e88f 100644 +--- a/sos/report/plugins/networking.py ++++ b/sos/report/plugins/networking.py +@@ -97,8 +97,8 @@ class Networking(Plugin): + "ip -6 route show table all", + "ip -d route show cache", + "ip -d -6 route show cache", +- "ip -4 rule", +- "ip -6 rule", ++ "ip -4 rule list", ++ "ip -6 rule list", + "ip -s -d link", + "ip -d address", + "ifenslave -a", +@@ -209,7 +209,8 @@ class Networking(Plugin): + ns_cmd_prefix + "ip -d address show", + ns_cmd_prefix + "ip route show table all", + ns_cmd_prefix + "ip -s -s neigh show", +- ns_cmd_prefix + "ip rule list", ++ ns_cmd_prefix + "ip -4 rule list", ++ ns_cmd_prefix + "ip -6 rule list", + ns_cmd_prefix + "netstat %s -neopa" % self.ns_wide, + ns_cmd_prefix + "netstat -s", + ns_cmd_prefix + "netstat %s -agn" % self.ns_wide, +-- +2.27.0 + diff --git a/0009-networking-list-VRFs.patch b/0009-networking-list-VRFs.patch new file mode 100644 index 0000000..ec362f6 --- /dev/null +++ b/0009-networking-list-VRFs.patch @@ -0,0 +1,52 @@ +From 2c1d0ff547a0ae3500f7b6d8479f801fd455be00 Mon Sep 17 00:00:00 2001 +From: Antoine Tenart +Date: Wed, 16 Feb 2022 17:42:12 +0100 +Subject: [PATCH 09/10] [networking] list VRFs + +Add command listing VRFs and their associated tables; including in +network namespaces. This information could be retrieved from reading the +`ip -d address show` output, but it is hard to see quickly. As the `ip +vrf show` output is quite small, let's include it. + +If the system has two VRFs, the output will look like: + + Name Table + ----------------------- + vrf0 42 + vrf1 43 + +And if no VRF is defined the output will look like: + + Name Table + ----------------------- + No VRF has been configured + +Signed-off-by: Antoine Tenart +Signed-off-by: Sandro Bonazzola +--- + sos/report/plugins/networking.py | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/sos/report/plugins/networking.py b/sos/report/plugins/networking.py +index 69a7e88f..2ab5d840 100644 +--- a/sos/report/plugins/networking.py ++++ b/sos/report/plugins/networking.py +@@ -99,6 +99,7 @@ class Networking(Plugin): + "ip -d -6 route show cache", + "ip -4 rule list", + "ip -6 rule list", ++ "ip vrf show", + "ip -s -d link", + "ip -d address", + "ifenslave -a", +@@ -211,6 +212,7 @@ class Networking(Plugin): + ns_cmd_prefix + "ip -s -s neigh show", + ns_cmd_prefix + "ip -4 rule list", + ns_cmd_prefix + "ip -6 rule list", ++ ns_cmd_prefix + "ip vrf show", + ns_cmd_prefix + "netstat %s -neopa" % self.ns_wide, + ns_cmd_prefix + "netstat -s", + ns_cmd_prefix + "netstat %s -agn" % self.ns_wide, +-- +2.27.0 + diff --git a/0010-sosnode-Handle-downstream-versioning-for-runtime-opt.patch b/0010-sosnode-Handle-downstream-versioning-for-runtime-opt.patch new file mode 100644 index 0000000..f8de2e7 --- /dev/null +++ b/0010-sosnode-Handle-downstream-versioning-for-runtime-opt.patch @@ -0,0 +1,120 @@ +From 2ae16e0245e1b01b8547e507abb69c11871a8467 Mon Sep 17 00:00:00 2001 +From: Jake Hunsaker +Date: Mon, 21 Feb 2022 14:37:09 -0500 +Subject: [PATCH 10/10] [sosnode] Handle downstream versioning for runtime + option check + +First, adds parsing and formatting for an sos installation's release +version according to the loaded package manager for that node. + +Adds a fallback version check for 4.2-13 for RHEL downstreams that +backport the `container-runtime` option into sos-4.2. + +Carry this in upstream to account for use cases where a workstation used +to run `collect` from may be from a different stream than those used by +cluster nodes. + +Signed-off-by: Jake Hunsaker +Signed-off-by: Sandro Bonazzola +--- + sos/collector/sosnode.py | 60 ++++++++++++++++++++++++++++++++++------ + 1 file changed, 51 insertions(+), 9 deletions(-) + +diff --git a/sos/collector/sosnode.py b/sos/collector/sosnode.py +index 7bbe0cd1..d9b998b0 100644 +--- a/sos/collector/sosnode.py ++++ b/sos/collector/sosnode.py +@@ -275,21 +275,34 @@ class SosNode(): + def _load_sos_info(self): + """Queries the node for information about the installed version of sos + """ ++ ver = None ++ rel = None + if self.host.container_version_command is None: + pkg = self.host.package_manager.pkg_version(self.host.sos_pkg_name) + if pkg is not None: + ver = '.'.join(pkg['version']) +- self.sos_info['version'] = ver ++ if pkg['release']: ++ rel = pkg['release'] ++ + else: + # use the containerized policy's command + pkgs = self.run_command(self.host.container_version_command, + use_container=True, need_root=True) + if pkgs['status'] == 0: +- ver = pkgs['output'].strip().split('-')[1] +- if ver: +- self.sos_info['version'] = ver +- else: +- self.sos_info['version'] = None ++ _, ver, rel = pkgs['output'].strip().split('-') ++ ++ if ver: ++ if len(ver.split('.')) == 2: ++ # safeguard against maintenance releases throwing off the ++ # comparison by LooseVersion ++ ver += '.0' ++ try: ++ ver += '-%s' % rel.split('.')[0] ++ except Exception as err: ++ self.log_debug("Unable to fully parse sos release: %s" % err) ++ ++ self.sos_info['version'] = ver ++ + if self.sos_info['version']: + self.log_info('sos version is %s' % self.sos_info['version']) + else: +@@ -381,9 +394,37 @@ class SosNode(): + """Checks to see if the sos installation on the node is AT LEAST the + given ver. This means that if the installed version is greater than + ver, this will still return True ++ ++ :param ver: Version number we are trying to verify is installed ++ :type ver: ``str`` ++ ++ :returns: True if installed version is at least ``ver``, else False ++ :rtype: ``bool`` + """ +- return self.sos_info['version'] is not None and \ +- LooseVersion(self.sos_info['version']) >= ver ++ def _format_version(ver): ++ # format the version we're checking to a standard form of X.Y.Z-R ++ try: ++ _fver = ver.split('-')[0] ++ _rel = '' ++ if '-' in ver: ++ _rel = '-' + ver.split('-')[-1].split('.')[0] ++ if len(_fver.split('.')) == 2: ++ _fver += '.0' ++ ++ return _fver + _rel ++ except Exception as err: ++ self.log_debug("Unable to format '%s': %s" % (ver, err)) ++ return ver ++ ++ _ver = _format_version(ver) ++ ++ try: ++ _node_ver = LooseVersion(self.sos_info['version']) ++ _test_ver = LooseVersion(_ver) ++ return _node_ver >= _test_ver ++ except Exception as err: ++ self.log_error("Error checking sos version: %s" % err) ++ return False + + def is_installed(self, pkg): + """Checks if a given package is installed on the node""" +@@ -587,7 +628,8 @@ class SosNode(): + sos_opts.append('--cmd-timeout=%s' + % quote(str(self.opts.cmd_timeout))) + +- if self.check_sos_version('4.3'): ++ # handle downstream versions that backported this option ++ if self.check_sos_version('4.3') or self.check_sos_version('4.2-13'): + if self.opts.container_runtime != 'auto': + sos_opts.append( + "--container-runtime=%s" % self.opts.container_runtime +-- +2.27.0 + diff --git a/sos.spec b/sos.spec index 6f4a78a..5e30704 100644 --- a/sos.spec +++ b/sos.spec @@ -3,7 +3,7 @@ Summary: A set of tools to gather troubleshooting information from a system Name: sos Version: 4.3 -Release: 1%{?dist} +Release: 2%{?dist} Source0: https://github.com/sosreport/sos/archive/%{version}.tar.gz License: GPLv2+ BuildArch: noarch @@ -19,6 +19,18 @@ Recommends: python3-pexpect Recommends: python3-requests Obsoletes: sos-collector <= 1.9 +Patch1: 0001-host-Skip-entire-etc-sos-cleaner-directory.patch +Patch2: 0002-man-Mention-sos-help-in-main-sos-manpage.patch +Patch3: 0003-setup-Add-sos-help-to-build-process.patch +Patch4: 0004-runtimes-Allow-container-IDs-to-be-used-with-contain.patch +Patch5: 0005-ovn_central-Rename-container-responsable-of-Red-Hat-.patch +Patch6: 0006-pulpcore-Stop-collecting-commands-relevant-to-old-ta.patch +Patch7: 0007-report-Honor-plugins-hardcoded-plugin_timeout.patch +Patch8: 0008-networking-consistently-list-the-routing-policy-rule.patch +Patch9: 0009-networking-list-VRFs.patch +Patch10: 0010-sosnode-Handle-downstream-versioning-for-runtime-opt.patch + + %description Sos is a set of tools that gathers information about system hardware and configuration. The information can then be used for @@ -27,6 +39,7 @@ support technicians and developers. %prep %setup -qn %{name}-%{version} +%autopatch -p1 %build %py3_build @@ -61,6 +74,9 @@ rm -rf %{buildroot}/usr/config/ %config(noreplace) %{_sysconfdir}/sos/cleaner %changelog +* Mon Feb 28 2022 Sandro Bonazzola - 4.3-2 +- add latest patched including fix for missing help plugin (bz#2058142) + * Tue Feb 15 2022 Sandro Bonazzola - 4.3-1 - Update to 4.3 (#2054895)