Compare commits

...

No commits in common. "c8" and "a9-beta" have entirely different histories.
c8 ... a9-beta

12 changed files with 193 additions and 2460 deletions

4
.gitignore vendored
View File

@ -1,2 +1,2 @@
SOURCES/sos-4.11.2.tar.gz
SOURCES/sos-audit-0.3-1.tgz
SOURCES/sos-4.5.0.tar.gz
SOURCES/sos-audit-0.3.tgz

View File

@ -1,2 +1,2 @@
d8d5e3e1eb124345417341ef9e9aa84f5cae609f SOURCES/sos-4.11.2.tar.gz
00752b68ec5e1141192a9dab7d44377b8d637bf7 SOURCES/sos-audit-0.3-1.tgz
d5e166c75250aef01c86a3a9d8c9fcc8db335f4e SOURCES/sos-4.5.0.tar.gz
9d478b9f0085da9178af103078bbf2fd77b0175a SOURCES/sos-audit-0.3.tgz

View File

@ -1,167 +0,0 @@
--- a/sos/report/plugins/coredump.py
+++ b/sos/report/plugins/coredump.py
@@ -72,8 +72,8 @@
cdump = line.split()
pid = cdump[4]
exe = cdump[-2]
- if regex := self.get_option("executable"):
- if not re.search(regex, exe, re.I):
+ if self.get_option("executable"):
+ if not re.search(self.get_option("executable"), exe, re.I):
continue
cinfo = self.collect_cmd_output(f"coredumpctl info {pid}")
if cinfo['status'] != 0:
--- a/sos/collector/sosnode.py
+++ b/sos/collector/sosnode.py
@@ -372,7 +372,8 @@
for line in result.splitlines():
if not is_list:
try:
- if ls := line.split():
+ ls = line.split()
+ if ls:
res.append(ls[0])
except Exception as err:
self.log_debug(f"Error parsing sos help: {err}")
--- a/sos/report/plugins/mongodb.py 2026-07-02 09:06:03.860609746 +0200
+++ b/sos/report/plugins/mongodb.py 2026-07-02 09:08:00.003595562 +0200
@@ -87,10 +87,13 @@
)
def setup(self):
- if get_juju_info := self.path_exists('/var/lib/juju/db'):
+ get_juju_info = self.path_exists('/var/lib/juju/db')
+ if get_juju_info:
self.db_folder = "/var/lib/juju/db"
- elif get_juju_info := self.path_exists('/var/snap/juju-db/curent/db'):
- self.db_folder = "/var/snap/juju-db/current/db"
+ else:
+ get_juju_info = self.path_exists('/var/snap/juju-db/current/db')
+ if get_juju_info:
+ self.db_folder = "/var/snap/juju-db/current/db"
super().setup()
--- a/sos/report/plugins/loki.py 2025-11-24 11:20:56.237814760 +0100
+++ b/sos/report/plugins/loki.py 2025-11-24 11:28:37.466603011 +0100
@@ -143,7 +143,8 @@
if self.get_option("collect-logs"):
endpoint = self.get_option("endpoint") or "http://localhost:3100"
self.labels = []
- if labels_option := self.get_option("labels"):
+ labels_option = self.get_option("labels")
+ if labels_option:
if isinstance(labels_option, str) and labels_option:
self.labels.extend(labels_option.split(":"))
--- a/sos/cleaner/__init__.py
+++ b/sos/cleaner/__init__.py
@@ -40,6 +40,8 @@ from sos.utilities import (get_human_rea
# an auxiliary method to kick off child processes over its instances
def _obfuscate_arc_files(arc, input_queue, output_queue):
+ arc.soslog = logging.getLogger('sos')
+ arc.ui_log = logging.getLogger('sos_ui')
while True:
try:
file = input_queue.get()
--- a/sos/cleaner/__init__.py 2026-07-01 13:45:34.298955340 +0200
+++ b/sos/cleaner/__init__.py 2026-07-01 13:47:15.978445308 +0200
@@ -795,6 +795,9 @@
# sentinel mark. That triggers the child processes to report back
# to output_queue some stats, and finish.
files_obfuscated_count = total_sub_count = removed_file_count = 0
+ # two nullification required before processes cloning
+ archive.soslog = None
+ archive.ui_log = None
input_queue = multiprocessing.Queue()
output_queue = multiprocessing.Queue()
--- a/sos/collector/sosnode.py 2026-04-02 10:15:34.743009569 +0200
+++ b/sos/collector/sosnode.py 2026-04-02 10:17:42.557250748 +0200
@@ -163,7 +163,8 @@
if not self._sudo_binary:
_bin = self.opts.sudo_binary.split('/')[-1]
# verify the provided binary is at least in our PATH
- if ret := self.run_command(f"command -v {_bin}"):
+ ret = self.run_command(f"command -v {_bin}")
+ if ret:
if not ret['status'] == 0:
err = f"Privilege escalation command not in PATH: {_bin}"
self.log_error(err)
--- a/sos/report/plugins/logs.py 2026-04-02 10:19:59.641196712 +0200
+++ b/sos/report/plugins/logs.py 2026-04-02 10:20:28.313299348 +0200
@@ -38,7 +38,8 @@
# this WILL break on anything other than basic echos
# as shown in the rsyslog documentation
if _ent.startswith('echo '):
- if envc := os.getenv(_ent.split()[1].strip(' $`')):
+ envc = os.getenv(_ent.split()[1].strip(' $`'))
+ if envc:
confs += glob.glob(envc)
else:
confs += glob.glob(_ent)
--- a/sos/report/plugins/charmed_cruise_control.py 2026-07-16 13:00:22.269714807 +0200
+++ b/sos/report/plugins/charmed_cruise_control.py 2026-07-16 13:01:56.710522628 +0200
@@ -35,7 +35,8 @@
) as f:
content = f.read().strip()
- if match := re.match(r"balancer: (?P<pwd>\w+),ADMIN", content):
+ match = re.match(r"balancer: (?P<pwd>\w+),ADMIN", content)
+ if match:
pwd = match.group("pwd")
return f"-u balancer:{pwd}"
--- a/sos/report/plugins/__init__.py
+++ b/sos/report/plugins/__init__.py
@@ -3262,7 +3262,10 @@
# skip forbidden paths; since we might recursivelly copied
# whole directory, we must find the forbidden files in dest
# path and delete the unwanted
- base_dir = dest.removesuffix(f"{path.lstrip('/')}")
+ _suffix = path.lstrip('/')
+ base_dir = (dest[:-len(_suffix)]
+ if dest.endswith(_suffix) and _suffix
+ else dest)
for relname in [file.relative_to(base_dir).as_posix()
for file in Path(dest).rglob('*')]:
absname = f"/{relname}"
--- a/sos/cleaner/__init__.py
+++ b/sos/cleaner/__init__.py
@@ -846,6 +846,8 @@
# *all* mapping.all(item) methods - so replaying this will
# generate the right datasets!
archive.load_parser_entries()
+ archive.soslog = logging.getLogger('sos')
+ archive.ui_log = logging.getLogger('sos_ui')
try:
self.obfuscate_directory_names(archive)
--- a/sos/report/plugins/charmed_mongodb.py 2026-07-16 14:48:09.639484635 +0200
+++ b/sos/report/plugins/charmed_mongodb.py 2026-07-16 14:49:02.337015148 +0200
@@ -122,8 +122,8 @@
encoding="utf-8",
) as f:
data = yaml.safe_load(f)
-
- if sharding_conf := data.get("sharding", {}):
+ sharding_conf = data.get("sharding", {})
+ if sharding_conf:
role = sharding_conf.get("clusterRole", "")
return self._match_role(role)
@@ -144,7 +144,8 @@
return None
data = yaml.safe_load(result.get("output", ""))
- if sharding_conf := data.get("sharding", {}):
+ sharding_conf = data.get("sharding", {})
+ if sharding_conf:
role = sharding_conf.get("clusterRole", "")
return self._match_role(role)

File diff suppressed because it is too large Load Diff

View File

@ -1,27 +0,0 @@
--- /dev/null 2025-10-28 14:11:21.494784405 +0100
+++ sos-4.10.1/bin/sosreport 2025-12-04 08:46:53.277857061 +0100
@@ -0,0 +1,5 @@
+#!/bin/bash
+echo "sosreport binary is deprecated, use 'sos report' instead"
+exec sos report "$@"
+
+# vim:ts=4 et sw=4
--- /dev/null 2025-10-28 14:11:21.494784405 +0100
+++ sos-4.10.1/bin/sos-collector 2025-12-04 08:48:04.661880220 +0100
@@ -0,0 +1,5 @@
+#!/bin/bash
+echo "sos-collector binary is deprecated, use 'sos collector' instead"
+exec sos collector "$@"
+
+# vim:ts=4 et sw=4
--- sos-4.10.1/setup.py 2025-04-15 15:17:21.938635468 +0200
+++ sos-4.10.1/setup.py 2025-04-15 15:17:41.328198501 +0200
@@ -34,7 +34,7 @@
maintainer_email='jacob.r.hunsaker@gmail.com',
url='https://github.com/sosreport/sos',
license="GPLv2+",
- scripts=['bin/sos'],
+ scripts=['bin/sos', 'bin/sosreport', 'bin/sos-collector'],
data_files=data_files,
packages=find_packages(include=['sos', 'sos.*'])
)

View File

@ -1,121 +0,0 @@
diff --git a/sos/upload/targets/__init__.py b/sos/upload/targets/__init__.py
index 9e905e1063..6f72d963ea 100644
--- a/sos/upload/targets/__init__.py
+++ b/sos/upload/targets/__init__.py
@@ -540,36 +540,7 @@ def upload_sftp(self, user=None, password=None, user_dir=None):
raise Exception("Unable to connect via SFTP to "
f"{self.get_upload_url_string()}")
- # user_dir indicates that we need to switch into a specific user
- # directory. If ChRootDirectory is set, this happens automatically
- # so check if the PWD contains the user. If it does, we are
- # already in the user directory so set user_dir to None
- if user_dir:
- user_match = False
- ret.sendline('pwd')
- pwd_expects = [
- 'sftp>',
- 'Invalid command.',
- pexpect.TIMEOUT,
- pexpect.EOF
- ]
- pwd_cmd = ret.expect(pwd_expects, timeout=10) == 0
- if pwd_cmd:
- # Extract the path from child.before
- raw_output = ret.before
- user_match = re.search(user, raw_output)
- else:
- self.ui_log.warning("This server does not support the PWD "
- "command - unable to verify user "
- "directory. Attempting upload without "
- "changing to user directory.")
- user_dir = None
-
- if user_match:
- user_dir = None
-
# certain implementations require file to be put in the user dir
- # so we prepend the user directory to the file path
put_cmd = (
f"put {self.upload_archive_name} "
f"{f'{user_dir}/' if user_dir else ''}"
diff --git a/sos/upload/targets/redhat.py b/sos/upload/targets/redhat.py
index 636a645fe6..0cfb80eecd 100644
--- a/sos/upload/targets/redhat.py
+++ b/sos/upload/targets/redhat.py
@@ -158,7 +158,6 @@ def upload_sftp(self, user=None, password=None, user_dir=None):
" for obtaining SFTP auth token.")
_token = None
_user = None
- _user_dir = None
# We may have a device token already if we attempted
# to upload via http but the upload failed. So
@@ -192,7 +191,6 @@ def upload_sftp(self, user=None, password=None, user_dir=None):
# credentials are valid
_user = json.loads(ret.text)['username']
_token = json.loads(ret.text)['token']
- _user_dir = f"/users/{_user}"
else:
self.ui_log.debug(
f"DEBUG: auth attempt failed (status: {ret.status_code}): "
@@ -220,7 +218,7 @@ def upload_sftp(self, user=None, password=None, user_dir=None):
)
if _user and _token:
return super().upload_sftp(user=_user, password=_token,
- user_dir=_user_dir)
+ user_dir=_user)
raise Exception("Could not retrieve valid or anonymous credentials")
def check_file_too_big(self, archive):
--
2.47.0
--- a/sos/upload/targets/__init__.py 2025-09-16 19:57:27.294642506 +0200
+++ b/sos/upload/targets/__init__.py 2025-09-16 19:59:44.498573843 +0200
@@ -465,7 +465,7 @@
self.upload_password or
self._upload_password)
- def upload_sftp(self, user=None, password=None, user_dir=None):
+ def upload_sftp(self, user=None, password=None):
"""Attempts to upload the archive to an SFTP location.
Due to the lack of well maintained, secure, and generally widespread
@@ -540,13 +540,10 @@
raise Exception("Unable to connect via SFTP to "
f"{self.get_upload_url_string()}")
- # certain implementations require file to be put in the user dir
- put_cmd = (
- f"put {self.upload_archive_name} "
- f"{f'{user_dir}/' if user_dir else ''}"
- f"{self._get_sftp_upload_name()}"
- )
+ put_cmd = (f'put {self.upload_archive_name} '
+ f'{self._get_sftp_upload_name()}')
ret.sendline(put_cmd)
+
put_expects = [
'100%',
pexpect.TIMEOUT,
--- a/sos/upload/targets/redhat.py 2025-09-16 19:57:36.804628207 +0200
+++ b/sos/upload/targets/redhat.py 2025-09-16 20:00:52.578728154 +0200
@@ -145,7 +145,7 @@
return fname
# pylint: disable=too-many-branches
- def upload_sftp(self, user=None, password=None, user_dir=None):
+ def upload_sftp(self, user=None, password=None):
"""Override the base upload_sftp to allow for setting an on-demand
generated anonymous login for the RH SFTP server if a username and
password are not given
@@ -217,8 +217,7 @@
f"{anon.status_code}): {anon.json()}"
)
if _user and _token:
- return super().upload_sftp(user=_user, password=_token,
- user_dir=_user)
+ return super().upload_sftp(user=_user, password=_token)
raise Exception("Could not retrieve valid or anonymous credentials")
def check_file_too_big(self, archive):

View File

@ -1,37 +0,0 @@
From 2fab657e3909f76e31bc6c56a5ad26f86a9925e5 Mon Sep 17 00:00:00 2001
From: Pavel Moravec <pmoravec@redhat.com>
Date: Tue, 23 Jun 2026 17:17:01 +0200
Subject: [PATCH] [foreman-installer] Scrub secrets in CLI arg dumps
Installer logs dump CLI args we need to scrub.
Closes: #4367
Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
---
sos/report/plugins/foreman_installer.py | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/sos/report/plugins/foreman_installer.py b/sos/report/plugins/foreman_installer.py
index f55cde23..89eef2e4 100644
--- a/sos/report/plugins/foreman_installer.py
+++ b/sos/report/plugins/foreman_installer.py
@@ -54,11 +54,12 @@ class ForemanInstaller(Plugin, DebianPlugin, UbuntuPlugin):
r"::(.*(token|secret|key|passw).*)\") value:) "
r"(.*)")
self.do_path_regex_sub(install_logs, logs_debug_reg, r"\1 \2 ********")
- # also hide passwords in yet different formats
+ # also hide passwords in yet different formats, including CLI arg dumps
self.do_path_regex_sub(
install_logs,
- r"password(\", \"|=|\" value: \"|\": \")(.*?)(\", \".*|\"]]|\"|$)",
- r"password\1********\3")
+ r"((?:password|consumer-key|consumer-secret|key-secret|secret-key|"
+ r"oauth-key|oauth-secret)(?:\", \"|\": \"|=))([^\"\n]*)(\"|$)",
+ r"\1********\3")
self.do_path_regex_sub(
"/var/log/foreman-installer/foreman-proxy*",
r"(\s*proxy_password\s=) (.*)",
--
2.54.0

View File

@ -1,97 +0,0 @@
From 5e7a01d9df2bc4e1f2659ace959ea52228ee1eee Mon Sep 17 00:00:00 2001
From: akumari <akumari@redhat.com>
Date: Wed, 1 Jul 2026 09:26:52 +0530
Subject: [PATCH 1/2] [foremanctl] Enable plugin for containerized deployments
The plugin required foremanctl package which doesn't exist in
containerized mode. Add container detection to enable the plugin
and collect foremanctl health diagnostics for support cases.
Signed-off-by: akumari <akumari@redhat.com>
---
sos/report/plugins/foremanctl.py | 29 +++++++++++++++++++++++++----
1 file changed, 25 insertions(+), 4 deletions(-)
diff --git a/sos/report/plugins/foremanctl.py b/sos/report/plugins/foremanctl.py
index 1b6ba4a4..0425cc05 100644
--- a/sos/report/plugins/foremanctl.py
+++ b/sos/report/plugins/foremanctl.py
@@ -19,6 +19,7 @@ class Foremanctl(Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin):
plugin_name = 'foremanctl'
profiles = ('sysmgmt',)
packages = ('foremanctl', )
+ containers = ('foreman', 'foreman-proxy',)
def setup(self):
self.add_copy_spec([
@@ -29,14 +30,34 @@ class Foremanctl(Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin):
self.add_cmd_output([
"foremanctl features",
+ "foremanctl health",
])
self.add_dir_listing(["/var/lib/foremanctl/"], recursive=True)
def postproc(self):
- self.do_path_regex_sub("/var/lib/foremanctl/parameters.yaml",
- r"(foreman_initial_admin_password:\s*)(.*)",
- r"\1********")
-
+ # Scrub passwords, credentials, tokens, secrets, and keys
+ self.do_path_regex_sub(
+ "/var/lib/foremanctl/parameters.yaml",
+ r"((.*)?(passw|cred|token|secret|key).*(\:\s|=))(.*)",
+ r"\1********")
+
+ # Scrub passwords from foremanctl logs - Pattern 1: key=value format
+ self.do_path_regex_sub(
+ "/var/log/foremanctl/foremanctl.*log*",
+ r"((passw|cred|token|secret|key)\w*\s*=\s*)(.*?)(\s|,|\"|'|$)",
+ r"\1********\4")
+
+ # Scrub passwords from foremanctl logs - Pattern 2: "password something" format
+ self.do_path_regex_sub(
+ "/var/log/foremanctl/foremanctl.*log*",
+ r"(password\s+)(.*?)(\s|,|\"|$)",
+ r"\1********\3")
+
+ # Scrub admin credentials in username:password format
+ self.do_path_regex_sub(
+ "/var/log/foremanctl/foremanctl.*log*",
+ r"(Admin credentials:\s+\w+:)(.*?)(\"|,|$)",
+ r"\1********\3")
# vim: set et ts=4 sw=4 :
--
2.54.0
From 3b6bbcb819e05aecf0fec4767588ea0376c9f218 Mon Sep 17 00:00:00 2001
From: akumari <akumari@redhat.com>
Date: Tue, 7 Jul 2026 14:06:40 +0530
Subject: [PATCH 2/2] [valkey] Add container support for containerized
deployments
Adds container support to the valkey plugin to enable it
for containerized deployments using foremanctl/quadlet.
Signed-off-by: akumari <akumari@redhat.com>
---
sos/report/plugins/valkey.py | 1 +
1 file changed, 1 insertion(+)
diff --git a/sos/report/plugins/valkey.py b/sos/report/plugins/valkey.py
index 26a74a56..f7b49253 100644
--- a/sos/report/plugins/valkey.py
+++ b/sos/report/plugins/valkey.py
@@ -19,6 +19,7 @@ class Valkey(Plugin, IndependentPlugin):
profiles = ('services',)
packages = ('valkey',)
+ containers = ('valkey',)
var_puppet_gen = "/var/lib/config-data/puppet-generated/valkey"
--
2.54.0

View File

@ -1,74 +0,0 @@
From 6085b2580173a7a43de8b541584c82481c617aa2 Mon Sep 17 00:00:00 2001
From: asadawar <asadawar@users.noreply.github.com>
Date: Mon, 27 Jul 2026 17:50:42 +0530
Subject: [PATCH] [policies] Prefer most specific policy when multiple match
When multiple policies within the same module return True from
check(), the policy loader now selects the most specific one
(deepest in the class hierarchy) instead of whichever happens
to sort first alphabetically.
Previously, import_policy() returned classes sorted by name via
inspect.getmembers(), and load() picked the first match. This
caused RHELPolicy to always win over RedHatCoreOSPolicy inside
a toolbox container on RHCOS, because uppercase 'H' sorts before
lowercase 'e' in ASCII. Both policies return True in that context
(RHEL for the container's /etc/redhat-release, RHCOS for the
host's /host/etc/os-release), but the more specific RHCOS policy
was never reached.
This has existed since RedHatCoreOSPolicy was introduced in 2019
(commit fa06bc09c95c) but was never visible because RHCOS had no
behavioral differences from RHEL until the archive naming change
in commit 0e919b6.
The fix collects all matching policies from a module and sorts by
MRO depth (descending), so a subclass is always preferred over
its parent. This is safe because a subclass that returns True from
check() is by definition a more precise match than its parent.
Assisted-by: Claude Code <https://claude.ai/code>
Signed-off-by: asadawar <asadawar@users.noreply.github.com>
---
sos/policies/__init__.py | 18 +++++++++++-------
1 file changed, 11 insertions(+), 7 deletions(-)
diff --git a/sos/policies/__init__.py b/sos/policies/__init__.py
index 35b3a532..b4920e82 100644
--- a/sos/policies/__init__.py
+++ b/sos/policies/__init__.py
@@ -29,20 +29,24 @@ def import_policy(name):
return None
-def load(cache={}, sysroot=None, init=None, probe_runtime=True,
+def load(cache=None, sysroot=None, init=None, probe_runtime=True,
remote_exec=None, remote_check=''):
+ if cache is None:
+ cache = {}
if 'policy' in cache:
return cache.get('policy')
import sos.policies.distros
helper = ImporterHelper(sos.policies.distros)
+ matches = []
for module in helper.get_modules():
- for policy in import_policy(module):
- if policy.check(remote=remote_check):
- cache['policy'] = policy(sysroot=sysroot, init=init,
- probe_runtime=probe_runtime,
- remote_exec=remote_exec)
- break
+ matches.extend([policy for policy in (import_policy(module) or [])
+ if policy.check(remote=remote_check)])
+ if matches:
+ matches.sort(key=lambda p: len(p.__mro__), reverse=True)
+ cache['policy'] = matches[0](sysroot=sysroot, init=init,
+ probe_runtime=probe_runtime,
+ remote_exec=remote_exec)
if sys.platform != 'linux':
raise Exception("SoS is not supported on this platform")
--
2.55.0

View File

@ -1,90 +0,0 @@
From d94095e55d69d5e4135df0193c9726c2789526ab Mon Sep 17 00:00:00 2001
From: Pavel Moravec <pmoravec@redhat.com>
Date: Wed, 29 Jul 2026 10:46:25 +0200
Subject: [PATCH] [processor] Limit /sys/devices/system/cpu/cpu* subdirs
collected
For systems with >500 CPUs, collecting all such directories means
millions of files to be collected, what excessivelly slows down the
plugin until its timeout.
Limit the default number of such directories to 64, configurable via a
plugin option.
Resolves: #4399
Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
---
sos/report/plugins/processor.py | 41 ++++++++++++++++++++++++++++++++-
1 file changed, 40 insertions(+), 1 deletion(-)
diff --git a/sos/report/plugins/processor.py b/sos/report/plugins/processor.py
index 9375b5a1..593bd36b 100644
--- a/sos/report/plugins/processor.py
+++ b/sos/report/plugins/processor.py
@@ -6,7 +6,9 @@
#
# See the LICENSE file in the source distribution for further information.
-from sos.report.plugins import Plugin, IndependentPlugin, SoSPredicate
+import re
+from sos.report.plugins import (Plugin, IndependentPlugin, SoSPredicate,
+ PluginOpt)
from sos.policies.distros.ubuntu import UbuntuPolicy
@@ -18,6 +20,11 @@ class Processor(Plugin, IndependentPlugin):
profiles = ('system', 'hardware', 'memory')
files = ('/proc/cpuinfo',)
packages = ('cpufreq-utils', 'cpuid')
+ option_list = [
+ PluginOpt('max_cpu_dirs', default=64, val_type=int,
+ desc='Maximum number of cpu[0-9]+ directories '
+ 'to collect from /sys/devices/system/cpu'),
+ ]
cpu_kmods = []
@@ -43,7 +50,39 @@ class Processor(Plugin, IndependentPlugin):
# copy /sys/devices/system/cpu/cpuX with separately applied sizelimit
# this is required for systems with tens/hundreds of CPUs where the
# cumulative directory size exceeds 25MB or even 100MB.
+ # Limit cpu[0-9]* directories to avoid excessive collection.
+ # All non-cpu* directories are always collected.
+ max_cpu_dirs = self.get_option('max_cpu_dirs')
+ if max_cpu_dirs < 0:
+ self._log_info(f"Invalid max_cpu_dirs={max_cpu_dirs} value "
+ f"provided, replacing by 0."
+ )
+ max_cpu_dirs = 0
cdirs = self.listdir('/sys/devices/system/cpu')
+
+ if len(cdirs) > max_cpu_dirs:
+ # separate cpu from non-cpu, then limit cpu dirs
+ cpu_pattern = re.compile(r'cpu(\d+)')
+ cpu_dirs = []
+ other_dirs = []
+
+ for cdir in cdirs:
+ if cpu_pattern.fullmatch(cdir):
+ cpu_dirs.append(cdir)
+ else:
+ other_dirs.append(cdir)
+
+ # Only limit if cpu_dirs specifically exceeds max
+ if len(cpu_dirs) > max_cpu_dirs:
+ self._log_info(
+ f"Limiting cpu directories from {len(cpu_dirs)} to "
+ f"{max_cpu_dirs} (use '-k processor.max_cpu_dirs=N' "
+ f"to change)."
+ )
+ cpu_dirs = sorted(cpu_dirs)[:max_cpu_dirs]
+
+ cdirs = other_dirs + cpu_dirs
+
self.add_copy_spec([
self.path_join('/sys/devices/system/cpu', cdir) for cdir in cdirs
])
--
2.55.0

View File

@ -0,0 +1,36 @@
diff -aruN sos-4.3/sos/policies/distros/redhat.py sos-4.3.alma/sos/policies/distros/redhat.py
--- sos-4.3/sos/policies/distros/redhat.py 2022-02-15 07:20:20.000000000 +0300
+++ sos-4.3.alma/sos/policies/distros/redhat.py 2022-10-24 10:54:24.000000000 +0300
@@ -435,6 +435,16 @@
vendor_urls = [('Community Website', 'https://www.centos.org/')]
+class AlmaLinuxPolicy(RHELPolicy):
+ distro = "AlmaLinux"
+ vendor = "AlmaLinux OS Foundation"
+ vendor_urls = [
+ ('Distribution Website', 'https://www.almalinux.org/'),
+ ('Commercial Support', 'https://tuxcare.com/linux-support-services/')
+ ]
+
+
+
class RedHatAtomicPolicy(RHELPolicy):
distro = "Red Hat Atomic Host"
msg = _("""\
@@ -592,6 +602,15 @@
vendor_urls = [('Community Website', 'https://www.centos.org/')]
+class AlmaLinuxAtomicPolicy(RedHatAtomicPolicy):
+ distro = "AlmaLinux Atomic Host"
+ vendor = "AlmaLinux OS Foundation"
+ vendor_urls = [
+ ('Distribution Website', 'https://www.almalinux.org/'),
+ ('Commercial Support', 'https://tuxcare.com/linux-support-services/')
+ ]
+
+
class FedoraPolicy(RedHatPolicy):
"""
The policy for Fedora based systems, regardless of spin/edition. This

View File

@ -1,35 +1,34 @@
%{!?python_sitelib: %define python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib()")}
%global auditversion 0.3-1
%global auditversion 0.3
Summary: A set of tools to gather troubleshooting information from a system
Name: sos
Version: 4.11.2
Release: 4%{?dist}
Version: 4.5.0
Release: 1%{?dist}.alma
Group: Applications/System
Source0: https://github.com/sosreport/sos/archive/%{version}/sos-%{version}.tar.gz
Source1: sos-audit-%{auditversion}.tgz
License: GPL-2.0-or-later
License: GPLv2+
BuildArch: noarch
Url: https://github.com/sosreport/sos
BuildRequires: python3-devel
BuildRequires: gettext
BuildRequires: python3-setuptools
Requires: tar
Requires: bzip2
Requires: xz
Requires: python3-requests
Requires: python3-setuptools
Recommends: python3-magic
Recommends: python3-pexpect
Recommends: python3-pyyaml
Conflicts: vdsm < 4.40
Obsoletes: sos-collector
Patch1: 0001-python3-walrus-operator-and-rhel8-changes-only.patch
Patch2: 0002-remove-unsupported-python36-plugins.patch
Patch3: 0003-sosreport-binary.patch
Patch4: 0004-revert-PR4092-and-PR4275.patch
Patch5: 0005-foreman-installer-Scrub-secrets-in-CLI-arg-dumps.patch
Patch6: 0006-foremanctl-valkey-PR4376.patch
Patch7: 0007-policies-Prefer-most-specific-policy-when-multiple-m.patch
Patch8: 0008-processor-Limit-sys-devices-system-cpu-cpu-subdirs-c.patch
Obsoletes: sos-collector <= 1.9
# almalinux
Patch1000: sos-almalinux-branding.patch
%description
Sos is a set of tools that gathers information about system
@ -40,25 +39,25 @@ support technicians and developers.
%prep
%setup -qn %{name}-%{version}
%setup -T -D -a1 -q
%patch -P 1 -p1
%patch -P 2 -p1
%patch -P 3 -p1
%patch -P 4 -p1
%patch -P 5 -p1
%patch -P 6 -p1
%patch -P 7 -p1
%patch -P 8 -p1
# almalinux
%patch1000 -p1
%build
%py3_build
%install
%py3_install '--install-scripts=%{_sbindir}'
rm -f %{buildroot}/usr/config/sos.conf
rm -f %{buildroot}/usr/config/tmpfilesd-sos-rh.conf
install -Dm644 %{name}.conf %{buildroot}%{_sysconfdir}/%{name}/%{name}.conf
install -d -m 755 %{buildroot}%{_sysconfdir}/tmpfiles.d/
install -m 644 tmpfiles/tmpfilesd-sos-rh.conf %{buildroot}%{_sysconfdir}/tmpfiles.d/%{name}.conf
install -d -m 755 %{buildroot}%{_sysconfdir}/%{name}
install -d -m 700 %{buildroot}%{_sysconfdir}/%{name}/cleaner
install -d -m 755 %{buildroot}%{_sysconfdir}/%{name}/presets.d
install -d -m 755 %{buildroot}%{_sysconfdir}/%{name}/groups.d
install -d -m 755 %{buildroot}%{_sysconfdir}/%{name}/extras.d
install -m 644 %{name}.conf %{buildroot}%{_sysconfdir}/%{name}/%{name}.conf
rm -rf %{buildroot}/usr/config/
%find_lang %{name} || echo 0
@ -66,42 +65,35 @@ cd %{name}-audit-%{auditversion}
DESTDIR=%{buildroot} ./install.sh
cd ..
mkdir -p %{buildroot}%{_sysconfdir}/sos/{cleaner,presets.d,extras.d,groups.d}
# internationalization is currently broken. Uncomment this line once fixed.
# %%files -f %%{name}.lang
%files
%{_sbindir}/sos
%{_sbindir}/sosreport
%{_sbindir}/sos-collector
#%dir /etc/sos/cleaner
%dir /etc/sos/presets.d
%dir /etc/sos/extras.d
%dir /etc/sos/groups.d
/etc/tmpfiles.d/%{name}.conf
%{python3_sitelib}/*
%{_mandir}/man1/sos-clean.1.gz
%{_mandir}/man1/sos-upload.1.gz
%{_mandir}/man1/sos-collect.1.gz
%{_mandir}/man1/sos-help.1.gz
%{_mandir}/man1/sos-mask.1.gz
%{_mandir}/man1/sos-report.1.gz
%{_mandir}/man1/sos.1.gz
%{_mandir}/man1/*
%{_mandir}/man5/sos.conf.5.gz
%doc AUTHORS README.md
%license LICENSE
%config(noreplace) %{_sysconfdir}/sos/sos.conf
%config(noreplace) %{_sysconfdir}/sos/cleaner
%package audit
Summary: Audit use of some commands for support purposes
License: GPL-2.0-or-later
License: GPLv2+
Group: Application/System
%description audit
Sos-audit provides configuration files for the Linux Auditing System
to track the use of some commands capable of changing the configuration
of the system. Currently storage and filesystem commands are audited.
of the system. Currently storage and filesystem commands are audited.
%post audit
%{_sbindir}/sos-audit.sh
@ -117,492 +109,246 @@ of the system. Currently storage and filesystem commands are audited.
%{_mandir}/man8/sos-audit.sh.8.gz
%ghost /etc/audit/rules.d/40-sos-filesystem.rules
%ghost /etc/audit/rules.d/40-sos-storage.rules
%license LICENSE
%changelog
* Wed Aug 05 2026 Jan Jansky <jjansky@redhat.com> = 4.11.2-4
- Update to 4.11.2-4
* Fri Jul 17 2026 Jan Jansky <jjansky@redhat.com> = 4.11.2-2
- Update to 4.11.2-2
* Wed Jul 15 2026 Jan Jansky <jjansky@redhat.com> = 4.11.2-1
- Update to 4.11.2-1
* Thu Apr 02 2026 Jan Jansky <jjansky@redhat.com> = 4.11.0-1
- Update to 4.11.0-1
Resolves: RHEL-157813
* Thu Feb 26 2026 Jan Jansky <jjansky@redhat.com> = 4.10.2-2
- Update to 4.10.2-2
Resolves: RHEL-142630
* Thu Jan 22 2026 Jan Jansky <jjansky@redhat.com> = 4.10.2-1
- Update to 4.10.2-1
Resolves: RHEL-142630
* Fri Dec 05 2025 Jan Jansky <jjansky@redhat.com> = 4.10.1-2
- Fixing sosreport and sos-collector binary
Resolves: RHEL-121468
* Tue Nov 25 2025 Jan Jansky <jjansky@redhat.com> = 4.10.1-1
- Update to 4.10.1-1
Resolves: RHEL-121468
* Tue Sep 23 2025 Jan Jansky <jjansky@redhat.com> = 4.10.0-4
- Update to 4.10.0-4
Resolves: RHEL-112413
* Wed Sep 17 2025 Jan Jansky <jjansky@redhat.com> = 4.10.0-2
- Update to 4.10.0-2
Resolves: RHEL-112413
* Thu Aug 21 2025 Jan Jansky <jjansky@redhat.com> = 4.10.0-1
- Update to 4.10.0
Resolves: RHEL-110499
* Fri Jul 04 2025 Jan Jansky <jjansky@redhat.com> = 4.9.2-1
- Update to 4.9.2 in RHEL 8
Resolves: RHEL-101716
* Fri May 30 2025 Jan Jansky <jjansky@redhat.com> = 4.9.1-2
- Update to 4.9.1-2 in RHEL 8
Resolves: RHEL-86645
* Tue Apr 15 2025 Jan Jansky <jjansky@redhat.com> = 4.9.1-1
- Update to 4.9.1 in RHEL 8
Resolves: RHEL-86645
* Tue Jan 07 2025 Jan Jansky <jjansky@redhat.com> = 4.8.2-1
- Update to 4.8.2 in RHEL 8
Resolves: RHEL-72941
* Wed Oct 23 2024 Jan Jansky <jjansky@redhat.com> = 4.8.1-1
- Update to 4.8.1 in RHEL 8
Resolves: RHEL-64160
* Fri Sep 27 2024 Jan Jansky <jjansky@redhat.com> = 4.8.0-3
- Added credentials obfuscation from multiple files
Resolves: RHEL-58097
* Sat Sep 14 2024 Pierguido Lambri <plambri@redhat.com> = 4.8.0-2
- Resolves: RHEL-22732
Fix wrong formatting
* Mon Sep 09 2024 Pierguido Lambri <plambri@redhat.com> = 4.8.0-1
- New upstream release
Resolves: RHEL-58097
* Wed Aug 21 2024 Pavel Moravec <pmoravec@redhat.com> = 4.7.2-2
- reverting RHEL-22732 patch due to regressions
Resolves: RHEL-49779
* Fri Jun 21 2024 Pierguido Lambri <plambri@redhat.com> = 4.7.2-1
- New upstream release
Resolves: RHEL-40871
Resolves: RHEL-33703
Resolves: RHEL-22732
* Thu May 09 2024 Pavel Moravec <pmoravec@redhat.com> = 4.7.1-3
- [archive] Fix get_archive_root after files reordering
Resolves: RHEL-35945
* Mon Apr 08 2024 Jan Jansky <jjansky@redhat.com> = 4.7.1-1
- rebase to upstream 4.7.1
Resolves: RHEL-32104
* Tue Feb 20 2024 Jan Jansky <jjansky@redhat.com> = 4.7.0-1
- rebase to upstream 4.7.0
Resolves: RHEL-26111
* Thu Jan 11 2024 Pavel Moravec <pmoravec@redhat.com> = 4.6.1-1
- rebase to upstream 4.6.1
Resolves: RHEL-21173
- [redhat] Change authentication method for RHEL
Resolves: RHEL-21177
* Wed Oct 18 2023 Pavel Moravec <pmoravec@redhat.com> = 4.6.0-5
[pulpcore] Scrub AUTH_LDAP_BIND_PASSWORD value
Resolves: RHEL-13697
* Tue Oct 17 2023 Pavel Moravec <pmoravec@redhat.com> = 4.6.0-4
- [pulp] Fix dynaconf obfuscation and add AUTH_LDAP_BIND_PASSWORD
Resolves: RHEL-13697
* Fri Sep 01 2023 Pavel Moravec <pmoravec@redhat.com> = 4.6.0-2
- [openshift_ovn] Collect additional ovnkube node logs
Resolves: SUPDEV145
* Wed Aug 23 2023 Jan Jansky <jjansky@redhat.com> = 4.6.0-1
- [cleaner] Use data filter for extraction
Resolves: bz2218873
* Thu Jul 27 2023 Pavel Moravec <pmoravec@redhat.com> = 4.5.6-1
- Rebase sos to 4.5.6
Resolves: bz2226724
* Fri Jul 14 2023 Jan Jansky <jjansky@redhat.com> = 4.5.5-2
- Adding patch for mac obfuscation
Resolves: bz2218279
Resolves: bz2216608
Resolves: bz2207562
* Mon Jul 03 2023 Jan Jansky <jjansky@redhat.com> = 4.5.5-1
- [clean] Respect permissions of sanitised files
Resolves: bz2218279
- [plugin] Fix exception when calling os.makedirs
Resolves: bz2216608
- [cleaner] Enhance trailing characters list after AMC address
Resolves: bz2207562
* Thu Jun 01 2023 Pavel Moravec <pmoravec@redhat.com> = 4.5.4-1
- [plugins] collect strings before commands
Resolves: bz2203141
- [collector] collect report from primary node if in node_list
Resolves: bz2186460
- [powerpc] collect invscout logs
Resolves: bz2210543
- [rhc] New plugin for RHC
Resolves: bz2196649
* Fri May 05 2023 Jan Jansky <jjansky@redhat.com> = 4.5.3-1
- [report] Ignore case when scrubbing via do_file_sub
Resolves: bz2143272
- [subscription_manager] Scrub proxy passwords from repo_server_val
Resolves: bz2177282
- [virsh] Scrub passwords in virt-manager logs
Resolves: bz2184062
* Wed Mar 08 2023 Pavel Moravec <pmoravec@redhat.com> = 4.5.1-3
- Rebase on upstream 4.5.1
Resolves: bz2175806
- [composer] Capure /etc/osbuild-composer file
Resolves: bz2169776
- [ostree] Collect "ostree fsck" under plugin specific opt
Resolves: bz2161533
- [iprconfig] guard whole plugin by sg kmod predicate
Resolves: bz2176086
- [cleaner] dont clean sys_tmp from final_path
Resolves: bz2176218
* Wed Mar 29 2023 Eduard Abdullin <eabdullin@almalinux.org> - 4.5.0-1.alma
- Debrand for AlmaLinux
* Tue Feb 07 2023 Pavel Moravec <pmoravec@redhat.com> = 4.5.0-1
- Rebase on upstream 4.5.0
Resolves: bz2082614
Resolves: bz2082615
* Thu Nov 03 2022 Pavel Moravec <pmoravec@redhat.com> = 4.4-4
- [ocp] Add newly required labels to temp OCP namespace
Resolves: bz2130922
Resolves: bz2130976
* Fri Oct 28 2022 Pavel Moravec <pmoravec@redhat.com> = 4.4-3
- [cleaner] Apply compile_regexes after a regular parse line
Resolves: bz2138173
Resolves: bz2138174
* Thu Sep 22 2022 Pavel Moravec <pmoravec@redhat.com> = 4.4-2
- [utilities] Relax from hard dependency of python3-magic
Resolves: bz2129038
Resolves: bz2126089
- [dnf] Collect legacy yum config symlinks, properly obfuscate pwds
Resolves: bz2100154
Resolves: bz2125499
* Fri Sep 09 2022 Pavel Moravec <pmoravec@redhat.com> = 4.4-1
- Rebase on upstream 4.4
Resolves: bz2082614
Resolves: bz2082615
- [redhat] Honour credential-less --upload-url on RedHat distro properly
Resolves: bz2059572
- [sos] Fix unhandled exception when concurrently removing temp dir
Resolves: bz2088439
- [specfile] drop python3-libxml2 dependency
Resolves: bz2125486
Resolves: bz2059573
- [md] Restrict data capture to raid members
Resolves: bz2125485
- [cleaner] Use compiled regex lists for parsers by default
Resolves: bz2043233
- [cgroups] not collect memory.kmem.slabinfo
Resolves: bz1995120
- [report] Fix loop devices data gathering
Resolves: bz2010735
- [insights] Collect /var/lib/insights
Resolves: bz2103233
- [candlepin] collect information about SCA
Resolves: bz2060925
- [manpages] Clarify --upload-directory applicable to FTP protocol only
Resolves: bz2063259
- [cleaner] Dont obfuscate tmpdir path of local private_map
Resolves: bz2064815
- [fibrechannel] collect Cisco fnic statistics
Resolves: bz2074715
- [pulpcore] Collect db_tables_sizes
Resolves: bz2081433
- [fibrechannel]: Update fibrechannel plugin to collect HBA logs
Resolves: bz2089591
- [arcconf]: Update arcconf plugin to collect UART logs
Resolves: bz2090283
- [pulpcore] Stop collecting commands relevant to old taskig system
Resolves: bz2093191
- [dnf,yum] Merge plugins into dnf, remove yum plugin
Resolves: bz2100154
- [policies] Simplify flow in _container_init()
Resolves: bz2100480
- [pacemaker] Update collect cluster profile for pacemaker
Resolves: bz2065821
Resolves: bz2062283
- [sos] Fix unhandled exception when concurrently removing temp dir
Resolves: bz2088440
* Mon Aug 29 2022 Pavel Moravec <pmoravec@redhat.com> = 4.3-3
- [vdsm] Set LVM option use_devicesfile=0
Resolves: bz2093993
Resolves: bz2122355
- [Plugin] Make forbidden path checks more efficient
Resolves: bz2099598
Resolves: bz2122354
* Thu Jun 16 2022 Pavel Moravec <pmoravec@redhat.com> = 4.3-2
- [ovirt] answer files: Filter out all password keys
Resolves: bz2095263
- [plugins] Allow 'str' PlugOpt type to accept any value
Resolves: bz2079485
- [tigervnc] Update collections for newer versions of TigerVNC
Resolves: bz2062908
- [pacemaker] Redesign node enumeration logic
Resolves: bz2065805
- crio: switch from parsing output in table format to json
Resolves: bz2092969
- [report] Honor plugins' hardcoded plugin_timeout
Resolves: bz2079187
- [report] --list-plugins should report used, not default,
Resolves: bz2079484
- [ocp, openshift] Re-align API collection options and rename
Resolves: bz2065563
- [utilities] Close file only when storing to file
Resolves: bz2079486
- [presets] Adjust OCP preset options, more OCP backports
Resolves: bz2058279
Resolves: bz2079492
- [report] --list-plugins should report used, not default,
Resolves: bz2079490
- [report] Honor plugins' hardcoded plugin_timeout
Resolves: bz2079188
- crio: switch from parsing output in table format to json
Resolves: bz2097674
- [pacemaker] Redesign node enumeration logic
Resolves: bz2082914
- [tigervnc] Update collections for newer versions of TigerVNC
Resolves: bz2066181
- [plugins] Allow 'str' PlugOpt type to accept any value
Resolves: bz2079491
- [ovirt] answer files: Filter out all password keys
Resolves: bz2095267
* Mon Apr 04 2022 Pavel Moravec <pmoravec@redhat.com> = 4.3-1
* Thu Mar 24 2022 Pavel Moravec <pmoravec@redhat.com> = 4.3-1
- Rebase on upstream 4.3
Resolves: bz2055002
Resolves: 2055003
- [sapnw] Fix IndexError exception
Resolves: bz1992938
Resolves: 2065551
- [subscription_manager] collect syspurpose data via sub-man
Resolves: 2002333
- [Plugin, utilities] Allow writing command output directly to disk
Resolves: bz1726023
Resolves: 2065564
- [Ceph] Add support for containerized Ceph setup
Resolves: bz1882544
Resolves: 2065562
- [unbound] Add new plugin for Unbound DNS resolver
Resolves: bz2018228
Resolves: 2065560
- [discovery] Add new discovery plugin
Resolves: bz2018549
- [vdsm] Exclude /var/lib/vdsm/storage/transient_disks
Resolves: bz2029154
Resolves: 2065558
- [system] Collect glibc tuning decisions
Resolves: 2032913
* Wed Feb 23 2022 Pavel Moravec <pmoravec@redhat.com> = 4.2-15
- [sosnode] Handle downstream versioning for runtime option
Resolves: bz2036697
Resolves: bz2037350
- [options] Fix logging on plugopts in effective sos command
Resolves: bz2054882
Resolves: bz2054883
- [report] Honor plugins' hardcoded plugin_timeout
Resolves: bz2055547
Resolves: bz2055548
- [policies] Set fallback to None sysroot, don't chroot to '/'
Resolves: bz1873185
Resolves: bz2011537
- [ovn_central] Rename container responsable of Red Hat
Resolves: bz2042966
Resolves: bz2043488
* Wed Jan 26 2022 Pavel Moravec <pmoravec@redhat.com> = 4.2-13
- [virsh] Catch parsing exception
Resolves: bz2041488
Resolves: bz2041855
* Tue Jan 25 2022 Pavel Moravec <pmoravec@redhat.com> = 4.2-12
- [foreman] Use psql-msgpack-decode wrapper for dynflow >= 1.6
Resolves: bz2043102
Resolves: bz2043104
- [virsh] Call virsh commands in the foreground / with a TTY
Resolves: bz2041488
Resolves: bz2041855
- [ovn_central] Account for Red Hat ovn package naming
Resolves: bz2042966
Resolves: bz2043488
- [clean,parsers] Build regex lists for static items only once
Resolves: bz2036697
Resolves: bz2037350
* Mon Jan 10 2022 Pavel Moravec <pmoravec@redhat.com> = 4.2-11
- [report] Add journal logs for NetworkManager plugin
Resolves: bz2036697
Resolves: bz2037350
* Fri Jan 07 2022 Pavel Moravec <pmoravec@redhat.com> = 4.2-9
- add oc transport, backport various PRs for OCP
Resolves: bz2036697
Resolves: bz2037350
- [report] Provide better warning about estimate-mode
Resolves: bz1873185
Resolves: bz2011537
- [hostname] Fix loading and detection of long base domains
Resolves: bz2023867
Resolves: bz2024893
* Sun Dec 19 2021 Pavel Moravec <pmoravec@redhat.com> = 4.2-8
- [rhui] New log folder
Resolves: bz2030741
Resolves: bz2031777
- nvidia]:Patch to update nvidia plugin for GPU info
Resolves: bz2025403
Resolves: bz2034001
- [hostname] Fix edge case for new hosts in a known subdomain
Resolves: bz2023867
Resolves: bz2024893
* Wed Dec 08 2021 Pavel Moravec <pmoravec@redhat.com> = 4.2-7
- [hostname] Simplify case matching for domains
Resolves: bz2023867
Resolves: bz2024893
* Tue Nov 30 2021 Pavel Moravec <pmoravec@redhat.com> = 4.2-6
- [redhat] Fix broken URI to upload to customer portal
Resolves: bz2025610
Resolves: bz2025611
* Mon Nov 22 2021 Pavel Moravec <pmoravec@redhat.com> = 4.2-5
- [clean,hostname_parser] Source /etc/hosts for obfuscation
Resolves: bz2023867
Resolves: bz2024893
- [clean, hostname] Fix unintentionally case sensitive
Resolves: bz2023863
Resolves: bz2024892
- [redhat] update SFTP API version to v2
Resolves: bz2025610
Resolves: bz2025611
* Tue Nov 16 2021 Pavel Moravec <pmoravec@redhat.com> = 4.2-4
- [report] Calculate sizes of dirs, symlinks and manifest in
Resolves: bz1873185
Resolves: bz2011537
- [report] shutdown threads for timeouted plugins
Resolves: bz2012857
Resolves: bz2012859
- [report] fix filter_namespace per pattern
Resolves: bz2020777
Resolves: bz2020778
- Ensure specific plugin timeouts are only set
Resolves: bz2018033
Resolves: bz2023481
* Wed Nov 03 2021 Pavel Moravec <pmoravec@redhat.com> = 4.2-2
- [firewall_tables] call iptables -t <table> based on nft
Resolves: bz2005195
Resolves: bz2011536
- [report] Count with sos_logs and sos_reports in
Resolves: bz1873185
Resolves: bz2011537
- [foreman] Collect puma status and stats
Resolves: bz2011506
Resolves: bz2011507
- [report] Overwrite pred=None before refering predicate
Resolves: bz2012856
Resolves: bz2012858
- [openvswitch] add commands for offline analysis
Resolves: bz2004929
Resolves: bz2019697
* Wed Oct 06 2021 Pavel Moravec <pmoravec@redhat.com> = 4.2-1
- Rebase on upstream 4.2
Resolves: bz1998133
Resolves: bz1998134
- [report] Implement --estimate-only
Resolves: bz1873185
Resolves: bz2011537
- [omnipath_client] Opacapture to run only with allow changes
Resolves: bz1998433
Resolves: bz2011534
- [unpackaged] deal with recursive loop of symlinks properly
Resolves: bz1998521
Resolves: bz2011533
- [networking] prevent iptables-save commands to load nf_tables
Resolves: bz2001096
Resolves: bz2011538
- [kernel] Capture Pressure Stall Information
Resolves: bz2002145
Resolves: bz2011535
- [processor] Apply sizelimit to /sys/devices/system/cpu/cpuX
Resolves: bz2011413
Resolves: bz1869561
* Wed Aug 11 2021 Pavel Moravec <pmoravec@redhat.com> = 4.1-5
* Wed Aug 11 2021 Pavel Moravec <pmoravec@redhat.com> = 4.1-8
- [report,collect] unify --map-file arguments
Resolves: bz1923938
Resolves: bz1985985
- [rhui] add new plugin for RHUI 4
Resolves: bz1665947
Resolves: bz1992859
- [username parser] Load usernames from `last` for LDAP users
Resolves: bz1985037
Resolves: bz1992861
* Mon Jul 26 2021 Pavel Moravec <pmoravec@redhat.com> = 4.1-4
- [options] allow variant option names in config file
Resolves: bz1923938
- [plugins] Set default predicate instead of None
Resolves: bz1985986
- [MigrationResults] collect info about conversions
Resolves: bz1959598
* Tue Aug 10 2021 Mohan Boddu <mboddu@redhat.com> - 4.1-7
- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags
Related: rhbz#1991688
* Mon Jun 21 2021 Pavel Moravec <pmoravec@redhat.com> = 4.1-3
- [gluster] collect public keys from the right dir
Resolves: bz1925419
- [cleaner] Only skip packaging-based files for the IP parse
Resolves: bz1964499
* Tue Jul 27 2021 Pavel Moravec <pmoravec@redhat.com> - 4.1-6
- [networking] collect also tc filter show ingress
Resolves: bz1886711
- [archive] skip copying SELinux context for /proc and /sys
Resolves: bz1965001
Resolves: bz1985976
- [cleaner] Only skip packaging-based files for the IP parser
Resolves: bz1985982
- [sssd] sssd plugin when sssd-common
Resolves: bz1967613
Resolves: bz1967718
- Various OCP/cluster/cleanup enhancements
Resolves: bz1973675
Resolves: bz1985983
- [options] allow variant option names in config file
Resolves: bz1985985
- [plugins] Set default predicate instead of None
Resolves: bz1938874
- [MigrationResults] collect info about conversions and
Resolves: bz1959779
* Tue May 18 2021 Pavel Moravec <pmoravec@redhat.com> = 4.1-2
* Wed Jun 02 2021 Pavel Moravec <pmoravec@redhat.com> - 4.1-4
- [archive] skip copying SELinux context for /proc and /sys everytime
Resolves: bz1965002
- Load maps from all archives before obfuscation
Resolves: bz1930181
Resolves: bz1967110
- Multiple fixes in man pages
Resolves: bz1935603
Resolves: bz1967111
- [ds] Mask password and encryption keys in ldif files
Resolves: bz1937298
Resolves: bz1967112
- [report] add --cmd-timeout option
Resolves: bz1937418
Resolves: bz1967113
- [cups] Add gathering cups-browsed logs
Resolves: bz1939963
Resolves: bz1967114
- [sssd] Collect memory cache / individual logfiles
Resolves: bz1940502
Resolves: bz1967115
- Collect ibmvNIC dynamic_debugs
Resolves: bz1942276
Resolves: bz1967116
- [pulpcore] add plugin for pulp-3
Resolves: bz1956673
Resolves: bz1967117
- [saphana] remove redundant unused argument of get_inst_info
Resolves: bz1959413
Resolves: bz1967118
- [networking] Add nstat command support
Resolves: bz1961458
Resolves: bz1967119
- [snapper] add a new plugin
Resolves: bz1961229
Resolves: bz1967120
* Mon Apr 26 2021 Pavel Moravec <pmoravec@redhat.com> = 4.1-1
- Rebase on upstream 4.1
Resolves: bz1928679
* Fri Apr 16 2021 Mohan Boddu <mboddu@redhat.com> - 4.1-4
- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937
* Tue Feb 16 2021 Pavel Moravec <pmoravec@redhat.com> = 4.0-8
- Automatically create directory for sos-cleaner default_mapping
Resolves: bz1923937
* Thu Apr 01 2021 Pavel Moravec <pmoravec@redhat.com> - 4.1-3
- adding sos-audit
- [gluster] Add glusterd public keys and status files
Resolves: bz1925419
* Fri Jan 29 2021 Pavel Moravec <pmoravec@redhat.com> = 4.0-7
- [kdump] Gather the file kexec-dmesg.log
Resolves: bz1887402
- [Policy] Handle additional FTP authentication issues
Resolves: bz1916729
* Wed Mar 10 2021 Sandro Bonazzola <sbonazzo@redhat.com> - 4.1-1
- Rebase to 4.1
* Thu Jan 21 2021 Pavel Moravec <pmoravec@redhat.com> = 4.0-6
- [networking] Collect 'ethtool -e <device>' conditionally only
Resolves: bz1917196
* Wed Jan 06 2021 Pavel Moravec <pmoravec@redhat.com> = 4.0-5
- [component] honour plugopts from config file
Resolves: bz1912889
- [collector] declare sysroot for each component
Resolves: bz1912821
- [plugins] Dont stop collecting by empty specfile when sizelimit=0
Resolves: bz1912910
* Mon Jan 04 2021 Pavel Moravec <pmoravec@redhat.com> = 4.0-4
- [component] Use sysroot from Policy when opts doesn't specify it
Resolves: bz1881118
* Mon Dec 14 2020 Pavel Moravec <pmoravec@redhat.com> = 4.0-3
- [ovirt] collect /etc/pki/ovirt-engine/.truststore
Resolves: bz1848095
- [collector] allow overriding plain --cluster-type
Resolves: bz1895316
- [component] Add log verbosity from presets
Resolves: bz1904045
- [options] Fix --log-size=0 being ignored and unreported
Resolves: bz1905657
- [report] collect broken symlinks
Resolves: bz1906598
* Thu Oct 29 2020 Pavel Moravec <pmoravec@redhat.com> = 4.0-2
- [cleaner] more streamlined sanitize_item method
Resolves: bz1827801
- [openstack_ironic] Missing ironic-inspector configs
Resolves: bz1874295
- Add support to collect hardware component logs
Resolves: bz1880372
- [crio] collect /etc/crio/crio.conf.d/
Resolves: bz1881118
- [policy] Handle additional failure conditions for FTP uploads
Resolves: bz1882368
- [filesys] never collect content of /proc/fs/panfs
Resolves: bz1886782
- [kdump] Collect new kdump logfiles
Resolves: bz1887390
- [stratis] Collect key list and report engine
Resolves: bz1888012
- return tmp-dir with absolute path
Resolves: bz1891562
* Tue Oct 13 2020 Pavel Moravec <pmoravec@redhat.com> = 4.0-1
- Rebase on upstream 4.0
Resolves: bz1827801