diff --git a/.gitignore b/.gitignore index 9a59ac6..7b4b434 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,2 @@ -SOURCES/sos-3.9.1.tar.gz +SOURCES/sos-4.0.tar.gz SOURCES/sos-audit-0.3.tgz diff --git a/.sos.metadata b/.sos.metadata index 26fd331..bd28d9a 100644 --- a/.sos.metadata +++ b/.sos.metadata @@ -1,2 +1,2 @@ -f96aaefb396a648be21f661b89f13cd9fc257b8a SOURCES/sos-3.9.1.tar.gz +f4850f7d3a4cd3e52f58bbc408e8d5e17df04741 SOURCES/sos-4.0.tar.gz 9d478b9f0085da9178af103078bbf2fd77b0175a SOURCES/sos-audit-0.3.tgz diff --git a/README.debrand b/README.debrand deleted file mode 100644 index 01c46d2..0000000 --- a/README.debrand +++ /dev/null @@ -1,2 +0,0 @@ -Warning: This package was configured for automatic debranding, but the changes -failed to apply. diff --git a/SOURCES/sos-bz1457191-navicli-noniteractively.patch b/SOURCES/sos-bz1457191-navicli-noniteractively.patch deleted file mode 100644 index 70cf21b..0000000 --- a/SOURCES/sos-bz1457191-navicli-noniteractively.patch +++ /dev/null @@ -1,67 +0,0 @@ -From ca24d4602ce46312343f1f6c6f4b270fb6092e21 Mon Sep 17 00:00:00 2001 -From: Pavel Moravec -Date: Wed, 15 Apr 2020 17:09:52 +0200 -Subject: [PATCH] [navicli] replace interactive prompt by plugin option - -List of ClariiOn IP addresses should be provided via --k navicli.ipaddrs plugopt, as a space separated list. - -Closes: #405 -Resolves: #2020 - -Signed-off-by: Pavel Moravec -Signed-off-by: Bryan Quigley ---- - sos/plugins/navicli.py | 30 +++++------------------------- - 1 file changed, 5 insertions(+), 25 deletions(-) - -diff --git a/sos/plugins/navicli.py b/sos/plugins/navicli.py -index 8e5dee50..5b6d766d 100644 ---- a/sos/plugins/navicli.py -+++ b/sos/plugins/navicli.py -@@ -19,6 +19,8 @@ class Navicli(Plugin, RedHatPlugin): - - plugin_name = 'navicli' - profiles = ('storage', 'hardware') -+ option_list = [("ipaddrs", "list of space separated CLARiiON IP addresses", -+ '', "")] - - def check_enabled(self): - return is_executable("navicli") -@@ -57,30 +59,8 @@ class Navicli(Plugin, RedHatPlugin): - - def setup(self): - self.get_navicli_config() -- CLARiiON_IP_address_list = [] -- CLARiiON_IP_loop = "stay_in" -- while CLARiiON_IP_loop == "stay_in": -- try: -- ans = input("CLARiiON SP IP Address or [Enter] to exit: ") -- except Exception: -- return -- if self.exec_cmd("navicli -h %s getsptime" % (ans,))['status']: -- CLARiiON_IP_address_list.append(ans) -- else: -- if ans != "": -- print("The IP address you entered, %s, is not to an " -- "active CLARiiON SP." % ans) -- if ans == "": -- CLARiiON_IP_loop = "get_out" -- # Sort and dedup the list of CLARiiON IP Addresses -- CLARiiON_IP_address_list.sort() -- for SP_address in CLARiiON_IP_address_list: -- if CLARiiON_IP_address_list.count(SP_address) > 1: -- CLARiiON_IP_address_list.remove(SP_address) -- for SP_address in CLARiiON_IP_address_list: -- if SP_address != "": -- print(" Gathering NAVICLI information for %s..." % -- SP_address) -- self.get_navicli_SP_info(SP_address) -+ for ip in set(self.get_option("ipaddrs").split()): -+ if self.exec_cmd("navicli -h %s getsptime" % (ip))['status'] == 0: -+ self.get_navicli_SP_info(ip) - - # vim: set et ts=4 sw=4 : --- -2.21.3 - diff --git a/SOURCES/sos-bz1633006-iptables-kmods.patch b/SOURCES/sos-bz1633006-iptables-kmods.patch deleted file mode 100644 index 7ffaae8..0000000 --- a/SOURCES/sos-bz1633006-iptables-kmods.patch +++ /dev/null @@ -1,78 +0,0 @@ -From 31e0467885ef3986b476ea070941a786b426f298 Mon Sep 17 00:00:00 2001 -From: Pavel Moravec -Date: Fri, 8 May 2020 14:06:41 +0200 -Subject: [PATCH] [networking] collect iptables when proper kernel modules - loaded - -Since kernel-4, iptables / ip6tables is newly provided by nf_tables -kernel module. Therefore, collecting ip[,6]tables commands should -be gated by presence of also this kernel module. - -Resolves: #2054 - -Signed-off-by: Pavel Moravec -Signed-off-by: Bryan Quigley ---- - sos/plugins/networking.py | 23 +++++++++++++---------- - 1 file changed, 13 insertions(+), 10 deletions(-) - -diff --git a/sos/plugins/networking.py b/sos/plugins/networking.py -index cac6ccca..5230303d 100644 ---- a/sos/plugins/networking.py -+++ b/sos/plugins/networking.py -@@ -35,22 +35,24 @@ class Networking(Plugin): - ns_wide = "-W" - - def collect_iptable(self, tablename): -- """ When running the iptables command, it unfortunately auto-loads -- the modules before trying to get output. Some people explicitly -- don't want this, so check if the modules are loaded before running -- the command. If they aren't loaded, there can't possibly be any -- relevant rules in that table """ -+ """ Collecting iptables rules for a table loads either kernel module -+ of the table name (for kernel <= 3), or nf_tables (for kernel >= 4). -+ If neither module is present, the rules must be empty.""" - - modname = "iptable_" + tablename - cmd = "iptables -t " + tablename + " -nvL" -- self.add_cmd_output(cmd, pred=SoSPredicate(self, kmods=[modname])) -+ self.add_cmd_output( -+ cmd, -+ pred=SoSPredicate(self, kmods=[modname, 'nf_tables'])) - - def collect_ip6table(self, tablename): - """ Same as function above, but for ipv6 """ - - modname = "ip6table_" + tablename - cmd = "ip6tables -t " + tablename + " -nvL" -- self.add_cmd_output(cmd, pred=SoSPredicate(self, kmods=[modname])) -+ self.add_cmd_output( -+ cmd, -+ pred=SoSPredicate(self, kmods=[modname, 'nf_tables'])) - - def collect_nftables(self): - """ Collects nftables rulesets with 'nft' commands if the modules -@@ -151,16 +153,17 @@ class Networking(Plugin): - self.add_cmd_output(ss_cmd, pred=ss_pred, changes=True) - - # When iptables is called it will load the modules -- # iptables and iptables_filter if they are not loaded. -+ # iptables_filter (for kernel <= 3) or -+ # nf_tables (for kernel >= 4) if they are not loaded. - # The same goes for ipv6. - self.add_cmd_output( - "iptables -vnxL", -- pred=SoSPredicate(self, kmods=['iptable_filter']) -+ pred=SoSPredicate(self, kmods=['iptable_filter', 'nf_tables']) - ) - - self.add_cmd_output( - "ip6tables -vnxL", -- pred=SoSPredicate(self, kmods=['ip6table_filter']) -+ pred=SoSPredicate(self, kmods=['ip6table_filter', 'nf_tables']) - ) - - # Get ethtool output for every device that does not exist in a --- -2.21.3 - diff --git a/SOURCES/sos-bz1776549-podman-buildah-rootless.patch b/SOURCES/sos-bz1776549-podman-buildah-rootless.patch deleted file mode 100644 index a61c152..0000000 --- a/SOURCES/sos-bz1776549-podman-buildah-rootless.patch +++ /dev/null @@ -1,219 +0,0 @@ -From 1875213788f4472cc11ce8e732cd4780e99ca477 Mon Sep 17 00:00:00 2001 -From: Pavel Moravec -Date: Fri, 8 May 2020 15:38:36 +0200 -Subject: [PATCH] [containers_common] collect rootless containers info - -Add the ability to collect data/info about rootless podman/buildah -containers, in particular: - -- containers_common plugopt 'rootlessusers' as a list of users to inspect -- for each user, collect: - - its containers config - - [podman|buildah] info and [UID|GID] map -- collect user-status and few user-related config files - -Resolves: #2055 - -Signed-off-by: Pavel Moravec -Signed-off-by: Jake Hunsaker ---- - sos/plugins/containers_common.py | 29 +++++++++++++++++++++++++ - 1 file changed, 29 insertions(+) - -diff --git a/sos/plugins/containers_common.py b/sos/plugins/containers_common.py -index 99ae88fe..9a878849 100644 ---- a/sos/plugins/containers_common.py -+++ b/sos/plugins/containers_common.py -@@ -9,6 +9,7 @@ - # See the LICENSE file in the source distribution for further information. - - from sos.plugins import Plugin, RedHatPlugin, UbuntuPlugin -+import os - - - class ContainersCommon(Plugin, RedHatPlugin, UbuntuPlugin): -@@ -17,11 +18,39 @@ class ContainersCommon(Plugin, RedHatPlugin, UbuntuPlugin): - plugin_name = 'containers_common' - profiles = ('container', ) - packages = ('containers-common', ) -+ option_list = [ -+ ('rootlessusers', 'colon-separated list of users\' containers info', -+ '', ''), -+ ] - - def setup(self): - self.add_copy_spec([ - '/etc/containers/*', - '/usr/share/containers/*', -+ '/etc/subuid', -+ '/etc/subgid', - ]) -+ self.add_cmd_output(['loginctl user-status']) -+ -+ users_opt = self.get_option('rootlessusers') -+ users_list = [] -+ if users_opt: -+ users_list = [x for x in users_opt.split(':') if x] -+ -+ user_subcmds = [ -+ 'info', -+ 'unshare cat /proc/self/uid_map', -+ 'unshare cat /proc/self/gid_map' -+ ] -+ for user in users_list: -+ # collect user's containers' config -+ self.add_copy_spec( -+ '%s/.config/containers/' % (os.path.expanduser('~%s') % user)) -+ # collect the user's podman/buildah info and uid/guid maps -+ for binary in ['/usr/bin/podman', '/usr/bin/buildah']: -+ for cmd in user_subcmds: -+ self.add_cmd_output([ -+ 'machinectl -q shell %s@ %s %s' % (user, binary, cmd) -+ ]) - - # vim: set et ts=4 sw=4 : --- -2.21.3 - -From c2d4c7d1f3ecf6ac59c665cb5138cb2ddda71b3d Mon Sep 17 00:00:00 2001 -From: Pavel Moravec -Date: Fri, 22 May 2020 08:17:30 +0200 -Subject: [PATCH] [containers_common] fix user's home expansion - -Apply os.path.expanduser on ~[user], not ~%s . - -Relates to: #2082 - -Signed-off-by: Pavel Moravec -Signed-off-by: Jake Hunsaker ---- - sos/plugins/containers_common.py | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/sos/plugins/containers_common.py b/sos/plugins/containers_common.py -index 9a878849..da360c7e 100644 ---- a/sos/plugins/containers_common.py -+++ b/sos/plugins/containers_common.py -@@ -45,7 +45,7 @@ class ContainersCommon(Plugin, RedHatPlugin, UbuntuPlugin): - for user in users_list: - # collect user's containers' config - self.add_copy_spec( -- '%s/.config/containers/' % (os.path.expanduser('~%s') % user)) -+ '%s/.config/containers/' % (os.path.expanduser('~%s' % user))) - # collect the user's podman/buildah info and uid/guid maps - for binary in ['/usr/bin/podman', '/usr/bin/buildah']: - for cmd in user_subcmds: --- -2.21.3 - -From 569f261801d3a4da2852c0b40be78b701056edaa Mon Sep 17 00:00:00 2001 -From: Pavel Moravec -Date: Fri, 22 May 2020 08:20:11 +0200 -Subject: [PATCH] [containers_common] Call machinectl on foreground - -Commands like: - -machinectl -q shell user1@ .. - -hang if not called on foreground / with terminal. - -Resolves: #2082 - -Signed-off-by: Pavel Moravec -Signed-off-by: Jake Hunsaker ---- - sos/plugins/containers_common.py | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/sos/plugins/containers_common.py b/sos/plugins/containers_common.py -index da360c7e..92c2e9e8 100644 ---- a/sos/plugins/containers_common.py -+++ b/sos/plugins/containers_common.py -@@ -51,6 +51,6 @@ class ContainersCommon(Plugin, RedHatPlugin, UbuntuPlugin): - for cmd in user_subcmds: - self.add_cmd_output([ - 'machinectl -q shell %s@ %s %s' % (user, binary, cmd) -- ]) -+ ], foreground=True) - - # vim: set et ts=4 sw=4 : --- -2.21.3 - -From 2b158a5c2a963c52cf5a96b27cc07c73b5829d59 Mon Sep 17 00:00:00 2001 -From: Pavel Moravec -Date: Thu, 9 Jul 2020 15:38:47 +0200 -Subject: [PATCH] [containers_common] collect user-related commands outputs - -podman and buildah commands should be collected on per-user basis, -as declared by rootlessusers plugin option. - -Resolves: #2145 - -Signed-off-by: Pavel Moravec -Signed-off-by: Jake Hunsaker ---- - sos/plugins/containers_common.py | 36 ++++++++++++++++++------- - 1 file changed, 26 insertions(+), 10 deletions(-) - -diff --git a/sos/plugins/containers_common.py b/sos/plugins/containers_common.py -index 92c2e9e8..08962a94 100644 ---- a/sos/plugins/containers_common.py -+++ b/sos/plugins/containers_common.py -@@ -30,7 +30,6 @@ class ContainersCommon(Plugin, RedHatPlugin, UbuntuPlugin): - '/etc/subuid', - '/etc/subgid', - ]) -- self.add_cmd_output(['loginctl user-status']) - - users_opt = self.get_option('rootlessusers') - users_list = [] -@@ -38,19 +37,36 @@ class ContainersCommon(Plugin, RedHatPlugin, UbuntuPlugin): - users_list = [x for x in users_opt.split(':') if x] - - user_subcmds = [ -- 'info', -- 'unshare cat /proc/self/uid_map', -- 'unshare cat /proc/self/gid_map' -+ 'podman info', -+ 'podman unshare cat /proc/self/uid_map', -+ 'podman unshare cat /proc/self/gid_map', -+ 'podman images', -+ 'podman pod ps', -+ 'podman port --all', -+ 'podman ps', -+ 'podman ps -a', -+ 'podman stats --no-stream --all', -+ 'podman version', -+ 'podman volume ls', -+ 'buildah info', -+ 'buildah unshare cat /proc/self/uid_map', -+ 'buildah unshare cat /proc/self/gid_map', -+ 'buildah containers', -+ 'buildah containers --all', -+ 'buildah images', -+ 'buildah images --all', -+ 'buildah version', - ] - for user in users_list: - # collect user's containers' config - self.add_copy_spec( - '%s/.config/containers/' % (os.path.expanduser('~%s' % user))) -- # collect the user's podman/buildah info and uid/guid maps -- for binary in ['/usr/bin/podman', '/usr/bin/buildah']: -- for cmd in user_subcmds: -- self.add_cmd_output([ -- 'machinectl -q shell %s@ %s %s' % (user, binary, cmd) -- ], foreground=True) -+ # collect user-status -+ self.add_cmd_output('loginctl user-status %s' % user) -+ # collect the user's related commands -+ self.add_cmd_output([ -+ 'machinectl -q shell %s@ /usr/bin/%s' % (user, cmd) -+ for cmd in user_subcmds -+ ], foreground=True) - - # vim: set et ts=4 sw=4 : --- -2.26.2 - diff --git a/SOURCES/sos-bz1785546-nvmetcli.patch b/SOURCES/sos-bz1785546-nvmetcli.patch deleted file mode 100644 index dec2ef6..0000000 --- a/SOURCES/sos-bz1785546-nvmetcli.patch +++ /dev/null @@ -1,68 +0,0 @@ -From 83d56e2b443edc733ffc5a5286ce8392de99586e Mon Sep 17 00:00:00 2001 -From: Pavel Moravec -Date: Mon, 11 May 2020 14:22:18 +0200 -Subject: [PATCH] [nvmetcli] Add new plugin for NVMe Target CLI - -Resolves: #2056 - -Signed-off-by: Pavel Moravec -Signed-off-by: Jake Hunsaker ---- - sos/plugins/nvmetcli.py | 32 ++++++++++++++++++++++++++++++++ - 1 file changed, 32 insertions(+) - create mode 100644 sos/plugins/nvmetcli.py - -diff --git a/sos/plugins/nvmetcli.py b/sos/plugins/nvmetcli.py -new file mode 100644 -index 00000000..b66a3a13 ---- /dev/null -+++ b/sos/plugins/nvmetcli.py -@@ -0,0 +1,32 @@ -+# Copyright (C) 2020 Red Hat, Inc., Nitin Yewale -+ -+# This file is part of the sos project: https://github.com/sosreport/sos -+# -+# This copyrighted material is made available to anyone wishing to use, -+# modify, copy, or redistribute it subject to the terms and conditions of -+# version 2 of the GNU General Public License. -+# -+# See the LICENSE file in the source distribution for further information. -+ -+from sos.plugins import Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin -+ -+ -+class NvmetCli(Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin): -+ -+ short_desc = 'Collect config and system information for nvmetcli' -+ -+ packages = ('nvmetcli', ) -+ profiles = ('storage', ) -+ plugin_name = 'nvmetcli' -+ -+ def setup(self): -+ self.add_cmd_output([ -+ "nvmetcli ls" -+ ]) -+ self.add_journal(units=["nvme", "nvmet", "nvmet_rdma"]) -+ self.add_copy_spec([ -+ "/sys/kernel/config/nvmet", -+ "/etc/nvmet/config.json", -+ ]) -+ -+# vim: set et ts=4 sw=4 : --- -diff --git a/sos/plugins/nvmetcli.py b/sos/plugins/nvmetcli.py ---- a/sos/plugins/nvmetcli.py -+++ b/sos/plugins/nvmetcli.py -@@ -12,6 +12,8 @@ from sos.plugins import Plugin, RedHatPl - - - class NvmetCli(Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin): -+ """Collect config and system information for nvmetcli -+ """ - - short_desc = 'Collect config and system information for nvmetcli' - --- -2.21.3 - diff --git a/SOURCES/sos-bz1814867-insights-archive.patch b/SOURCES/sos-bz1814867-insights-archive.patch deleted file mode 100644 index b36308d..0000000 --- a/SOURCES/sos-bz1814867-insights-archive.patch +++ /dev/null @@ -1,78 +0,0 @@ -From 0766cc739d424932e18c250c88f0227da06ecaed Mon Sep 17 00:00:00 2001 -From: Pavel Moravec -Date: Sun, 19 Apr 2020 16:38:50 +0200 -Subject: [PATCH] [insights] collect insights-client dump - -Collect data of "insights-client --offline" into -sos_commands/insights/insights-client-dump directory. - -Resolves: #2030 - -Signed-off-by: Pavel Moravec -Signed-off-by: Jake Hunsaker ---- - sos/plugins/insights.py | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/sos/plugins/insights.py b/sos/plugins/insights.py -index a8fa4e5f..17b99980 100644 ---- a/sos/plugins/insights.py -+++ b/sos/plugins/insights.py -@@ -31,6 +31,10 @@ class RedHatInsights(Plugin, RedHatPlugin): - else: - self.add_copy_spec("/var/log/insights-client/insights-client.log") - -+ # Collect insights-client report data into given dump dir -+ path = self.get_cmd_output_path(name="insights-client-dump") -+ self.add_cmd_output("insights-client --offline --output-dir %s" % path) -+ - def postproc(self): - for conf in self.config: - self.do_file_sub( --- -2.21.3 - -From f41a12032d1b0caf962145ddd5026b3798931026 Mon Sep 17 00:00:00 2001 -From: Pavel Moravec -Date: Tue, 12 May 2020 09:58:26 +0200 -Subject: [PATCH] [insights] collect insights dump output in deterministic - filename - -Currently, "insights-client --offline" stdout is stored in filename like -insights-client_--offline_--output-dir_.var.tmp.sos.cbl0ox16. (and so on) - -Let make the filename unified and deterministic. - -Also add the trailing vim expand tabs comment. - -Resolves: #2058 - -Signed-off-by: Pavel Moravec -Signed-off-by: Bryan Quigley ---- - sos/plugins/insights.py | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletion(-) - -diff --git a/sos/plugins/insights.py b/sos/plugins/insights.py -index 75d521bc..e50bc8fb 100644 ---- a/sos/plugins/insights.py -+++ b/sos/plugins/insights.py -@@ -33,7 +33,8 @@ class RedHatInsights(Plugin, RedHatPlugin): - - # Collect insights-client report data into given dump dir - path = self.get_cmd_output_path(name="insights-client-dump") -- self.add_cmd_output("insights-client --offline --output-dir %s" % path) -+ self.add_cmd_output("insights-client --offline --output-dir %s" % path, -+ suggest_filename="insights-client-dump.log") - - def postproc(self): - for conf in self.config: -@@ -44,3 +45,5 @@ class RedHatInsights(Plugin, RedHatPlugin): - self.do_file_sub( - conf, r'(proxy[\t\ ]*=.*)(:)(.*)(@.*)', r'\1\2********\4' - ) -+ -+# vim: set et ts=4 sw=4 : --- -2.21.3 - diff --git a/SOURCES/sos-bz1819662-rabbitmqctl-on-foreground.patch b/SOURCES/sos-bz1819662-rabbitmqctl-on-foreground.patch deleted file mode 100644 index c8cb452..0000000 --- a/SOURCES/sos-bz1819662-rabbitmqctl-on-foreground.patch +++ /dev/null @@ -1,34 +0,0 @@ -From c805cd23b8bd73986f2546a711edd42150d855ba Mon Sep 17 00:00:00 2001 -From: Pavel Moravec -Date: Fri, 22 May 2020 12:05:00 +0200 -Subject: [PATCH] [rabbitmq] emulate TTY via timeout foreground - -"docker exec -t" might hang without a terminal. Let emulate TTY via -timeout --foreground instead. - -Resolves: #2083 - -Signed-off-by: Pavel Moravec -Signed-off-by: Jake Hunsaker ---- - sos/plugins/rabbitmq.py | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/sos/plugins/rabbitmq.py b/sos/plugins/rabbitmq.py -index 9ebf6c0b..8d9a16ff 100644 ---- a/sos/plugins/rabbitmq.py -+++ b/sos/plugins/rabbitmq.py -@@ -38,8 +38,8 @@ class RabbitMQ(Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin): - for container in container_names: - self.add_cmd_output('docker logs {0}'.format(container)) - self.add_cmd_output( -- 'docker exec -t {0} rabbitmqctl report' -- .format(container) -+ 'docker exec {0} rabbitmqctl report' -+ .format(container), foreground=True - ) - else: - self.add_cmd_output("rabbitmqctl report") --- -2.21.3 - diff --git a/SOURCES/sos-bz1823488-containers-common.patch b/SOURCES/sos-bz1823488-containers-common.patch deleted file mode 100644 index 7eb2c77..0000000 --- a/SOURCES/sos-bz1823488-containers-common.patch +++ /dev/null @@ -1,107 +0,0 @@ -From 943b3c3cd096f8efaeb4f0f2008391abe4c9f7e2 Mon Sep 17 00:00:00 2001 -From: Pavel Moravec -Date: Sat, 2 May 2020 17:22:35 +0200 -Subject: [PATCH] [containers_common] Add plugin for common containers configs - -Move collection of whole /etc/containers and /usr/share/containers to -one containers_common plugin enabled by the package of the same name. - -Since the package is a common dependency for buildah and podman, no regression -in default data collection happens. - -Resolves: #2040 - -Signed-off-by: Pavel Moravec -Signed-off-by: Jake Hunsaker ---- - sos/plugins/buildah.py | 7 ------- - sos/plugins/containers_common.py | 27 +++++++++++++++++++++++++ - sos/plugins/podman.py | 7 ------- - 3 files changed, 27 insertions(+), 14 deletions(-) - create mode 100644 sos/plugins/containers_common.py - -diff --git a/sos/plugins/buildah.py b/sos/plugins/buildah.py -index 9d237a53..4b8b3b0a 100644 ---- a/sos/plugins/buildah.py -+++ b/sos/plugins/buildah.py -@@ -20,13 +20,6 @@ class Buildah(Plugin, RedHatPlugin): - profiles = ('container',) - - def setup(self): -- self.add_copy_spec([ -- "/etc/containers/registries.conf", -- "/etc/containers/storage.conf", -- "/etc/containers/mounts.conf", -- "/etc/containers/policy.json", -- ]) -- - subcmds = [ - 'containers', - 'containers --all', -diff --git a/sos/plugins/containers_common.py b/sos/plugins/containers_common.py -new file mode 100644 -index 00000000..99ae88fe ---- /dev/null -+++ b/sos/plugins/containers_common.py -@@ -0,0 +1,27 @@ -+# Copyright (C) 2020 Red Hat, Inc., Pavel Moravec -+ -+# This file is part of the sos project: https://github.com/sosreport/sos -+# -+# This copyrighted material is made available to anyone wishing to use, -+# modify, copy, or redistribute it subject to the terms and conditions of -+# version 2 of the GNU General Public License. -+# -+# See the LICENSE file in the source distribution for further information. -+ -+from sos.plugins import Plugin, RedHatPlugin, UbuntuPlugin -+ -+ -+class ContainersCommon(Plugin, RedHatPlugin, UbuntuPlugin): -+ -+ short_desc = 'Common container configs under {/etc,/usr/share}/containers' -+ plugin_name = 'containers_common' -+ profiles = ('container', ) -+ packages = ('containers-common', ) -+ -+ def setup(self): -+ self.add_copy_spec([ -+ '/etc/containers/*', -+ '/usr/share/containers/*', -+ ]) -+ -+# vim: set et ts=4 sw=4 : -diff --git a/sos/plugins/podman.py b/sos/plugins/podman.py -index f6875197..f6632776 100644 ---- a/sos/plugins/podman.py -+++ b/sos/plugins/podman.py -@@ -27,13 +27,6 @@ class Podman(Plugin, RedHatPlugin, UbuntuPlugin): - ] - - def setup(self): -- self.add_copy_spec([ -- "/etc/containers/registries.conf", -- "/etc/containers/storage.conf", -- "/etc/containers/mounts.conf", -- "/etc/containers/policy.json", -- ]) -- - self.add_env_var([ - 'HTTP_PROXY', - 'HTTPS_PROXY', --- -diff --git a/sos/plugins/containers_common.py b/sos/plugins/containers_common.py ---- a/sos/plugins/containers_common.py -+++ b/sos/plugins/containers_common.py -@@ -13,6 +13,8 @@ import os - - - class ContainersCommon(Plugin, RedHatPlugin, UbuntuPlugin): -+ """Common container configs under {/etc,/usr/share}/containers -+ """ - - short_desc = 'Common container configs under {/etc,/usr/share}/containers' - plugin_name = 'containers_common' --- -2.21.3 - diff --git a/SOURCES/sos-bz1825283-env-host-in-container.patch b/SOURCES/sos-bz1825283-env-host-in-container.patch deleted file mode 100644 index 4497123..0000000 --- a/SOURCES/sos-bz1825283-env-host-in-container.patch +++ /dev/null @@ -1,33 +0,0 @@ -From d9dd8ad790b6799491e4891ae19bb85124ab6794 Mon Sep 17 00:00:00 2001 -From: Robert Thomas Manes -Date: Fri, 17 Apr 2020 10:29:47 -0400 -Subject: [PATCH] [redhat] fix RH containers without sysroot Attempting to run - sosreport in a container currently will always traceback unless - ENV_HOST_SYSROOT is set to '/'. - -Allow default NoneType sysroot to function as well. - -Resolves: #2028 - -Signed off by: Robb Manes -Signed-off-by: Jake Hunsaker ---- - sos/policies/redhat.py | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/sos/policies/redhat.py b/sos/policies/redhat.py -index ba9bacf4..16cb23ec 100644 ---- a/sos/policies/redhat.py -+++ b/sos/policies/redhat.py -@@ -144,7 +144,7 @@ class RedHatPolicy(LinuxPolicy): - self._in_container = True - if ENV_HOST_SYSROOT in os.environ: - self._host_sysroot = os.environ[ENV_HOST_SYSROOT] -- use_sysroot = self._in_container and self._host_sysroot != '/' -+ use_sysroot = self._in_container and self._host_sysroot is not None - if use_sysroot: - host_tmp_dir = os.path.abspath(self._host_sysroot + self._tmp_dir) - self._tmp_dir = host_tmp_dir --- -2.21.3 - diff --git a/SOURCES/sos-bz1827801-streamlined-sanitize_item.patch b/SOURCES/sos-bz1827801-streamlined-sanitize_item.patch new file mode 100644 index 0000000..ffae766 --- /dev/null +++ b/SOURCES/sos-bz1827801-streamlined-sanitize_item.patch @@ -0,0 +1,37 @@ +From 086c1c5ca52b0ed8b810ad5a293a574ba990e635 Mon Sep 17 00:00:00 2001 +From: Pavel Moravec +Date: Tue, 13 Oct 2020 20:14:35 +0200 +Subject: [PATCH] [cleaner] more streamlined sanitize_item method + +Remove a duplicate call in both IF branches. + +Resolves: #2272 + +Signed-off-by: Pavel Moravec +Signed-off-by: Jake Hunsaker +--- + sos/cleaner/mappings/ip_map.py | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +diff --git a/sos/cleaner/mappings/ip_map.py b/sos/cleaner/mappings/ip_map.py +index 45fd9739..e6dffd60 100644 +--- a/sos/cleaner/mappings/ip_map.py ++++ b/sos/cleaner/mappings/ip_map.py +@@ -121,13 +121,12 @@ class SoSIPMap(SoSMap): + # network and if it has, replace the default /32 netmask that + # ipaddress applies to no CIDR-notated addresses + self.set_ip_cidr_from_existing_subnet(addr) +- return self.sanitize_ipaddr(addr) + else: + # we have a CIDR notation, so generate an obfuscated network + # address and then generate an IP address within that network's + # range + self.sanitize_network(network) +- return self.sanitize_ipaddr(addr) ++ return self.sanitize_ipaddr(addr) + + def sanitize_network(self, network): + """Obfuscate the network address provided, and if there are host bits +-- +2.26.2 + diff --git a/SOURCES/sos-bz1838123-xdp-plugin.patch b/SOURCES/sos-bz1838123-xdp-plugin.patch deleted file mode 100644 index cb55e32..0000000 --- a/SOURCES/sos-bz1838123-xdp-plugin.patch +++ /dev/null @@ -1,69 +0,0 @@ -From af5597bfa41521e10f4ef5095f137b2ef5bcd661 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Toke=20H=C3=B8iland-J=C3=B8rgensen?= -Date: Wed, 20 May 2020 15:05:03 +0200 -Subject: [PATCH] [xdp] Add XDP plugin -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -This adds a plugin for gathering information about the loaded XDP programs -on a system, using the xdp-loader tool in the xdp-tools package. This is -complementary with the existing eBPF plugin, because this plugin supports -getting status for multiple XDP programs on each interface as supported by -libxdp. - -For now, this just prints the output of 'xdp-loader status' which will list -any XDP programs attached. We don't currently support structured -output (such as JSON) from xdp-tools, but should we add that in the future -we can of course update this plugin. - -Signed-off-by: Toke Høiland-Jørgensen -Signed-off-by: Jake Hunsaker ---- - sos/plugins/xdp.py | 21 +++++++++++++++++++++ - 1 file changed, 21 insertions(+) - create mode 100644 sos/plugins/xdp.py - -diff --git a/sos/plugins/xdp.py b/sos/plugins/xdp.py -new file mode 100644 -index 00000000..2e18048b ---- /dev/null -+++ b/sos/plugins/xdp.py -@@ -0,0 +1,21 @@ -+# This file is part of the sos project: https://github.com/sosreport/sos -+# -+# This copyrighted material is made available to anyone wishing to use, -+# modify, copy, or redistribute it subject to the terms and conditions of -+# version 2 of the GNU General Public License. -+# -+# See the LICENSE file in the source distribution for further information. -+ -+from sos.plugins import Plugin, RedHatPlugin, DebianPlugin, \ -+ UbuntuPlugin -+ -+ -+class Xdp(Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin): -+ -+ short_desc = 'XDP program information' -+ plugin_name = 'xdp' -+ profiles = ('system', 'kernel', 'network') -+ packages = ('xdp-tools',) -+ -+ def setup(self): -+ self.add_cmd_output('xdp-loader status') --- -diff --git a/sos/plugins/xdp.py b/sos/plugins/xdp.py ---- a/sos/plugins/xdp.py -+++ b/sos/plugins/xdp.py -@@ -11,6 +11,8 @@ from sos.plugins import Plugin, RedHatPl - - - class Xdp(Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin): -+ """XDP program information -+ """ - - short_desc = 'XDP program information' - plugin_name = 'xdp' --- -2.21.3 - diff --git a/SOURCES/sos-bz1843562-gluster-volume-specific.patch b/SOURCES/sos-bz1843562-gluster-volume-specific.patch deleted file mode 100644 index c23b3ee..0000000 --- a/SOURCES/sos-bz1843562-gluster-volume-specific.patch +++ /dev/null @@ -1,37 +0,0 @@ -From fc831f0072c8f751f8fc2f46eb5c3e6aa9eba0a9 Mon Sep 17 00:00:00 2001 -From: Pavel Moravec -Date: Mon, 8 Jun 2020 14:58:15 +0200 -Subject: [PATCH] [gluster] fix gluster volume splitlines iteration - -Iterate via "gluster volue info" output split to lines, -and dont truncate the trailing character (a relict from past different -content parsing). - -Resolves: #2106 - -Signed-off-by: Pavel Moravec -Signed-off-by: Jake Hunsaker ---- - sos/plugins/gluster.py | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/sos/plugins/gluster.py b/sos/plugins/gluster.py -index eb236f1e..9540d323 100644 ---- a/sos/plugins/gluster.py -+++ b/sos/plugins/gluster.py -@@ -104,10 +104,10 @@ class Gluster(Plugin, RedHatPlugin): - - volume_cmd = self.collect_cmd_output("gluster volume info") - if volume_cmd['status'] == 0: -- for line in volume_cmd['output']: -+ for line in volume_cmd['output'].splitlines(): - if not line.startswith("Volume Name:"): - continue -- volname = line[12:-1] -+ volname = line[12:] - self.add_cmd_output([ - "gluster volume get %s all" % volname, - "gluster volume geo-replication %s status" % volname, --- -2.26.2 - diff --git a/SOURCES/sos-bz1843754-powerpc-logs-for-components.patch b/SOURCES/sos-bz1843754-powerpc-logs-for-components.patch deleted file mode 100644 index 4e6d8a2..0000000 --- a/SOURCES/sos-bz1843754-powerpc-logs-for-components.patch +++ /dev/null @@ -1,150 +0,0 @@ -From f7292b0121408a77d9e5ee94a046025c256cd021 Mon Sep 17 00:00:00 2001 -From: Mamatha Inamdar -Date: Wed, 20 May 2020 14:07:13 +0530 -Subject: [PATCH] [memory]:Add support to collect memory logs - -This patch updates memory plugin to collect -hugepage memory information - -Resolves: #2078 - -Signed-off-by: Mamatha Inamdar -Signed-off-by: Jake Hunsaker ---- - sos/plugins/memory.py | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/sos/plugins/memory.py b/sos/plugins/memory.py -index aefb27b8..b358e44d 100644 ---- a/sos/plugins/memory.py -+++ b/sos/plugins/memory.py -@@ -27,7 +27,8 @@ class Memory(Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin, CosPlugin): - "/proc/pagetypeinfo", - "/proc/vmallocinfo", - "/sys/kernel/mm/ksm", -- "/sys/kernel/mm/transparent_hugepage/enabled" -+ "/sys/kernel/mm/transparent_hugepage/enabled", -+ "/sys/kernel/mm/hugepages" - ]) - self.add_cmd_output("free", root_symlink="free") - self.add_cmd_output([ --- -2.26.2 - -From 2826d4ad19afaa91e2e25970eafe9353d844bfac Mon Sep 17 00:00:00 2001 -From: Mamatha Inamdar -Date: Wed, 20 May 2020 14:05:48 +0530 -Subject: [PATCH] [scsi]:Add support to collect scsi logs - -This patch updates scsi plugin to collect -virtual I/O server information. - -This patch reads lspath, lsmap and lsnports data -which provides information about virtual device -path, ports and mapping Information - -Related: #2078 - -Signed-off-by: Mamatha Inamdar -Signed-off-by: Jake Hunsaker ---- - sos/plugins/scsi.py | 3 +++ - 1 file changed, 3 insertions(+) - -diff --git a/sos/plugins/scsi.py b/sos/plugins/scsi.py -index bf6c2862..7a8efabb 100644 ---- a/sos/plugins/scsi.py -+++ b/sos/plugins/scsi.py -@@ -30,6 +30,9 @@ class Scsi(Plugin, RedHatPlugin, UbuntuPlugin, DebianPlugin): - - self.add_cmd_output("lsscsi -i", suggest_filename="lsscsi") - self.add_cmd_output("sg_map -x") -+ self.add_cmd_output("lspath") -+ self.add_cmd_output("lsmap -all") -+ self.add_cmd_output("lsnports") - - scsi_hosts = glob("/sys/class/scsi_host/*") - self.add_udev_info(scsi_hosts, attrs=True) --- -2.26.2 - -From 56bfae87ee5e613bb6743026a7285320f19e66d5 Mon Sep 17 00:00:00 2001 -From: Mamatha Inamdar -Date: Wed, 20 May 2020 14:03:58 +0530 -Subject: [PATCH] [infiniband]:Add support to collect InfiniBand logs - -This patch updates Infiniband plugin to collect -InfiniBand switch node information. - -Related: #2078 - -Signed-off-by: Mamatha Inamdar -Signed-off-by: Jake Hunsaker ---- - sos/plugins/infiniband.py | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/sos/plugins/infiniband.py b/sos/plugins/infiniband.py -index 83c32791..670f05b6 100644 ---- a/sos/plugins/infiniband.py -+++ b/sos/plugins/infiniband.py -@@ -33,7 +33,8 @@ class Infiniband(Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin): - "ibv_devices", - "ibv_devinfo -v", - "ibstat", -- "ibstatus" -+ "ibstatus", -+ "ibswitches" - ]) - - # run below commands for every IB device and its active port --- -2.26.2 - -From d8aa0a17d94ec08fc899fce3c343f25d19134eb3 Mon Sep 17 00:00:00 2001 -From: Mamatha Inamdar -Date: Wed, 20 May 2020 14:01:40 +0530 -Subject: [PATCH] [kdump]:Add support to collect kdump & fadump logs - -This patch updates kdump plugin to collect kdump and -fadump information. - -In this patch we are reading, kdump configuration,panic -and kexec_loaded files which are helpful to debug kdump -failure issues - -This patch also reads sys/kernel/fadump_enabled -and /sys/kernel/fadump/enabled both files as there -is upstream work to deprecate these files - -Related: #2078 - -Signed-off-by: Mamatha Inamdar -Signed-off-by: Jake Hunsaker ---- - sos/plugins/kdump.py | 9 +++++++++ - 1 file changed, 9 insertions(+) - -diff --git a/sos/plugins/kdump.py b/sos/plugins/kdump.py -index 5fc25a9b..41d08b5b 100644 ---- a/sos/plugins/kdump.py -+++ b/sos/plugins/kdump.py -@@ -21,6 +21,15 @@ class KDump(Plugin): - def setup(self): - self.add_copy_spec([ - "/proc/cmdline", -+ "/etc/sysconfig/kdump", -+ "/proc/sys/kernel/panic", -+ "/proc/sys/kernel/panic_on_oops", -+ "/sys/kernel/kexec_loaded", -+ "/sys/kernel/fadump_enabled", -+ "/sys/kernel/fadump/enabled", -+ "/sys/kernel/fadump_registered", -+ "/sys/kernel/fadump/registered", -+ "/sys/kernel/fadump/mem_reserved", - "/sys/kernel/kexec_crash_loaded", - "/sys/kernel/kexec_crash_size" - ]) --- -2.26.2 - diff --git a/SOURCES/sos-bz1844853-nfs-etc-exports.patch b/SOURCES/sos-bz1844853-nfs-etc-exports.patch deleted file mode 100644 index c52acf9..0000000 --- a/SOURCES/sos-bz1844853-nfs-etc-exports.patch +++ /dev/null @@ -1,120 +0,0 @@ -From fad72dbacc7e5c3c2721e452823750974ea31550 Mon Sep 17 00:00:00 2001 -From: Pavel Moravec -Date: Mon, 18 May 2020 11:41:17 +0200 -Subject: [PATCH] [nfs] merge nfsserver plugin into nfs one - -nfsserver plugin enabledness relies on legacy init scripts. A more -appropriate way to idenfity a NFS server is via nfs-utils package -(though it could be present also on a NFS client). - -As that package enables nfs plugin, it is reasonable to merge the -plugins into one. - -Closes: #2061 -Resolves: #2073 - -Signed-off-by: Pavel Moravec -Signed-off-by: Jake Hunsaker ---- - sos/plugins/nfs.py | 14 +++++++-- - sos/plugins/nfsserver.py | 54 --------------------------------- - 2 files changed, 12 insertions(+), 56 deletions(-) - delete mode 100644 sos/plugins/nfsserver.py - -diff --git a/sos/plugins/nfs.py b/sos/plugins/nfs.py -index bebe0362..1c0d8fc8 100644 ---- a/sos/plugins/nfs.py -+++ b/sos/plugins/nfs.py -@@ -14,7 +14,7 @@ class Nfs(Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin): - """ - plugin_name = 'nfs' - profiles = ('storage', 'network', 'nfs') -- packages = ['nfs-utils'] -+ packages = ('nfs-utils', ) - - def setup(self): - self.add_copy_spec([ -@@ -24,8 +24,18 @@ class Nfs(Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin): - "/proc/fs/nfsfs/servers", - "/proc/fs/nfsfs/volumes", - "/run/sysconfig/nfs-utils", -+ "/etc/exports", -+ "/etc/exports.d", -+ "/var/lib/nfs/etab", -+ "/var/lib/nfs/xtab", -+ "/var/lib/nfs/rmtab", -+ ]) -+ -+ self.add_cmd_output([ -+ "rpcinfo -p localhost", -+ "nfsstat -o all", -+ "exportfs -v", - ]) -- return - - - # vim: set et ts=4 sw=4 : -diff --git a/sos/plugins/nfsserver.py b/sos/plugins/nfsserver.py -deleted file mode 100644 -index 558ebd5d..00000000 ---- a/sos/plugins/nfsserver.py -+++ /dev/null -@@ -1,55 +0,0 @@ --# Copyright (C) 2007 Red Hat, Inc., Eugene Teo -- --# This file is part of the sos project: https://github.com/sosreport/sos --# --# This copyrighted material is made available to anyone wishing to use, --# modify, copy, or redistribute it subject to the terms and conditions of --# version 2 of the GNU General Public License. --# --# See the LICENSE file in the source distribution for further information. -- --from sos.plugins import Plugin, RedHatPlugin --import os --from stat import ST_SIZE -- -- --class NfsServer(Plugin, RedHatPlugin): -- """NFS server information -- """ -- -- plugin_name = 'nfsserver' -- profiles = ('storage', 'network', 'services', 'nfs') -- -- def check_enabled(self): -- default_runlevel = self.policy.default_runlevel() -- nfs_runlevels = self.policy.runlevel_by_service("nfs") -- if default_runlevel in nfs_runlevels: -- return True -- -- try: -- exports = os.stat("/etc/exports")[ST_SIZE] -- xtab = os.stat("/var/lib/nfs/xtab")[ST_SIZE] -- if exports or xtab: -- return True -- except OSError: -- pass -- -- return False -- -- def setup(self): -- self.add_copy_spec([ -- "/etc/exports", -- "/etc/exports.d", -- "/var/lib/nfs/etab", -- "/var/lib/nfs/xtab", -- "/var/lib/nfs/rmtab" -- ]) -- -- self.add_cmd_output([ -- "rpcinfo -p localhost", -- "nfsstat -o all", -- "exportfs -v" -- ]) -- -- --# vim: set et ts=4 sw=4 : --- -2.26.2 - diff --git a/SOURCES/sos-bz1845386-pacemaker-passwords-with-equal-sign.patch b/SOURCES/sos-bz1845386-pacemaker-passwords-with-equal-sign.patch deleted file mode 100644 index 6550642..0000000 --- a/SOURCES/sos-bz1845386-pacemaker-passwords-with-equal-sign.patch +++ /dev/null @@ -1,46 +0,0 @@ -From b34edec39189d5501b9943f73ec2afa7c7b98d58 Mon Sep 17 00:00:00 2001 -From: Reid wahl -Date: Mon, 8 Jun 2020 22:50:00 -0700 -Subject: [PATCH] [pacemaker] Fix scrubbing when password contains an equal - sign - -If the password contains one or more equal signs ('='), only the substring -after the final equal sign is scrubbed. The rest of the password appears in -plain text. - -This patch modifies the scrub regex to scrub all characters after the first -equal sign. - -Related to RHBZ#1845386. -Resolves: #2109 - -Signed-off-by: Reid Wahl -Signed-off-by: Jake Hunsaker ---- - sos/plugins/pacemaker.py | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/sos/plugins/pacemaker.py b/sos/plugins/pacemaker.py -index 7294c35a..8beec811 100644 ---- a/sos/plugins/pacemaker.py -+++ b/sos/plugins/pacemaker.py -@@ -55,14 +55,14 @@ class Pacemaker(Plugin): - def postproc_crm_shell(self): - self.do_cmd_output_sub( - "crm configure show", -- r"passw(\S*)=\S+", -+ r"passw([^\s=]*)=\S+", - r"passw\1=********" - ) - - def postproc_pcs(self): - self.do_cmd_output_sub( - "pcs config", -- r"passw(\S*)=\S+", -+ r"passw([^\s=]*)=\S+", - r"passw\1=********" - ) - --- -2.26.2 - diff --git a/SOURCES/sos-bz1848095-collect-rhev-pki.patch b/SOURCES/sos-bz1848095-collect-rhev-pki.patch new file mode 100644 index 0000000..959f58c --- /dev/null +++ b/SOURCES/sos-bz1848095-collect-rhev-pki.patch @@ -0,0 +1,42 @@ +From bbd28011f8bb710d64283bd6d3ec68c0fb5430b4 Mon Sep 17 00:00:00 2001 +From: Pavel Moravec +Date: Fri, 6 Nov 2020 21:28:37 +0100 +Subject: [PATCH] [ovirt] collect /etc/pki/ovirt-engine/.truststore + +.truststore contains useful public CAs but a_c_s skips collecting +that hidden file. + +Closes: #2296 +Resolves: #2297 + +Signed-off-by: Pavel Moravec +Signed-off-by: Jake Hunsaker +--- + sos/report/plugins/ovirt.py | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) + +diff --git a/sos/report/plugins/ovirt.py b/sos/report/plugins/ovirt.py +index 4c112cac..127c971c 100644 +--- a/sos/report/plugins/ovirt.py ++++ b/sos/report/plugins/ovirt.py +@@ -137,12 +137,15 @@ class Ovirt(Plugin, RedHatPlugin): + "/var/lib/ovirt-engine-reports/jboss_runtime/config" + ]) + +- # Copying host certs. ++ # Copying host certs; extra copy the hidden .truststore file + self.add_forbidden_path([ + "/etc/pki/ovirt-engine/keys", + "/etc/pki/ovirt-engine/private" + ]) +- self.add_copy_spec("/etc/pki/ovirt-engine/") ++ self.add_copy_spec([ ++ "/etc/pki/ovirt-engine/", ++ "/etc/pki/ovirt-engine/.truststore", ++ ]) + + def postproc(self): + """ +-- +2.26.2 + diff --git a/SOURCES/sos-bz1850554-luks-not-detected.patch b/SOURCES/sos-bz1850554-luks-not-detected.patch deleted file mode 100644 index b8bd7b6..0000000 --- a/SOURCES/sos-bz1850554-luks-not-detected.patch +++ /dev/null @@ -1,29 +0,0 @@ -From b85039b9ed658a4a59c637552a67ca9f2cf843b1 Mon Sep 17 00:00:00 2001 -From: Jake Hunsaker -Date: Wed, 24 Jun 2020 10:06:31 -0400 -Subject: [PATCH] [block] Fix typo in LUKS detection - -Fixes a typo in detecting LUKS partitions for cryptsetup output -collection. - -Signed-off-by: Jake Hunsaker ---- - sos/plugins/block.py | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/sos/plugins/block.py b/sos/plugins/block.py -index 2af25e7a..69548af6 100644 ---- a/sos/plugins/block.py -+++ b/sos/plugins/block.py -@@ -52,7 +52,7 @@ class Block(Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin): - # for LUKS devices, collect cryptsetup luksDump - if lsblk['status'] == 0: - for line in lsblk['output'].splitlines(): -- if 'crypto LUKS' in line: -+ if 'crypto_LUKS' in line: - dev = line.split()[0] - self.add_cmd_output('cryptsetup luksDump /dev/%s' % dev) - --- -2.26.2 - diff --git a/SOURCES/sos-bz1850926-logs-no-journal.patch b/SOURCES/sos-bz1850926-logs-no-journal.patch deleted file mode 100644 index bbe927f..0000000 --- a/SOURCES/sos-bz1850926-logs-no-journal.patch +++ /dev/null @@ -1,54 +0,0 @@ -From 8c2b07adeebed573306bc52a26b37b6def75a925 Mon Sep 17 00:00:00 2001 -From: Pavel Moravec -Date: Tue, 7 Jul 2020 18:57:15 +0200 -Subject: [PATCH] [logs] collect also non-persistent journal logs - -Collect journalctl logs also when journal is configured to store logs -in memory only. - -Further, apply --since option to journal catalog logs. - -Further, when --all-logs is provided, collect the transient logs in -/var/log/journal dir as well. - -Resolves: #2130 - -Signed-off-by: Pavel Moravec ---- - sos/plugins/logs.py | 18 +++++++++++++----- - 1 file changed, 13 insertions(+), 5 deletions(-) - -diff --git a/sos/plugins/logs.py b/sos/plugins/logs.py -index c92cc1f0..e3b6b884 100644 ---- a/sos/plugins/logs.py -+++ b/sos/plugins/logs.py -@@ -59,13 +59,21 @@ class Logs(Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin, CosPlugin): - self.add_cmd_output("journalctl --disk-usage") - self.add_cmd_output('ls -alRh /var/log/') - -- journal = os.path.exists("/var/log/journal/") -- if journal and self.is_installed("systemd"): -+ # collect journal logs if: -+ # - there is some data present, either persistent or runtime only -+ # - systemd-journald service exists -+ # otherwise fallback to collecting few well known logfiles directly -+ journal = any([os.path.exists(p + "/log/journal/") -+ for p in ["/var", "/run"]]) -+ if journal and self.is_service("systemd-journald"): - self.add_journal(since=since) -- self.add_journal(boot="this", catalog=True) -- self.add_journal(boot="last", catalog=True) -+ self.add_journal(boot="this", catalog=True, since=since) -+ self.add_journal(boot="last", catalog=True, since=since) - if self.get_option("all_logs"): -- self.add_copy_spec("/var/log/journal/*") -+ self.add_copy_spec([ -+ "/var/log/journal/*", -+ "/run/log/journal/*" -+ ]) - else: # If not using journal - if not self.get_option("all_logs"): - self.add_copy_spec([ --- -2.26.2 - diff --git a/SOURCES/sos-bz1851923-powerpc-missing-logs.patch b/SOURCES/sos-bz1851923-powerpc-missing-logs.patch deleted file mode 100644 index 8ea8c8d..0000000 --- a/SOURCES/sos-bz1851923-powerpc-missing-logs.patch +++ /dev/null @@ -1,36 +0,0 @@ -From 1368498e8d5c5e2d9cd93c335252efe8e08316a4 Mon Sep 17 00:00:00 2001 -From: Jake Hunsaker -Date: Thu, 30 Apr 2020 14:05:21 -0400 -Subject: [PATCH] [Plugin] Fix enablement triggers when only restriction is - architecture - -When a plugin, such as the `powerpc` plugin, only defines an -architecture enablement trigger and no files, commands, packages, etc... -our current enablement checks would return false. When the 'normal' -trigger restrictions are all empty, but there is an architecture -trigger, now properly enable based solely on that architecture. - -Signed-off-by: Jake Hunsaker ---- - sos/plugins/__init__.py | 5 +++++ - 1 file changed, 5 insertions(+) - -diff --git a/sos/plugins/__init__.py b/sos/plugins/__init__.py -index 011113b0..c632d5e4 100644 ---- a/sos/plugins/__init__.py -+++ b/sos/plugins/__init__.py -@@ -1775,6 +1775,11 @@ class Plugin(object): - return True - - def _check_plugin_triggers(self, files, packages, commands, services): -+ -+ if not any([files, packages, commands, services]): -+ # no checks beyond architecture restrictions -+ return self.check_is_architecture() -+ - return ((any(os.path.exists(fname) for fname in files) or - any(self.is_installed(pkg) for pkg in packages) or - any(is_executable(cmd) for cmd in commands) or --- -2.26.2 - diff --git a/SOURCES/sos-bz1853700-pci-too-strong-condition.patch b/SOURCES/sos-bz1853700-pci-too-strong-condition.patch deleted file mode 100644 index 051cbc5..0000000 --- a/SOURCES/sos-bz1853700-pci-too-strong-condition.patch +++ /dev/null @@ -1,54 +0,0 @@ -From c5a3dd0fb1e256772d83f19bc458e79b2cf5baf7 Mon Sep 17 00:00:00 2001 -From: Jake Hunsaker -Date: Fri, 3 Jul 2020 12:24:10 -0400 -Subject: [PATCH] [pci] Update gating for lspci commands - -It was reported that certain arches may create subdir structures under -/proc/bus/pci differently than others - most notably that the first -device subdir could be '0000:00' instead of just '00'. - -Rather than chase these different layouts, update the gating check for -running `lspci` commands to being that /proc/bus/pci exists and it has -more than just the `devices` file present, as this file may be present -but empty when nothing else exists under `/proc/bus/pci`. - -This is the legacy-3.9 backport from #2138 - -Signed-off-by: Jake Hunsaker ---- - sos/plugins/pci.py | 12 +++++++++++- - 1 file changed, 11 insertions(+), 1 deletion(-) - -diff --git a/sos/plugins/pci.py b/sos/plugins/pci.py -index ac90f09d..053307cd 100644 ---- a/sos/plugins/pci.py -+++ b/sos/plugins/pci.py -@@ -17,6 +17,16 @@ class Pci(Plugin, RedHatPlugin, UbuntuPlugin, DebianPlugin): - plugin_name = "pci" - profiles = ('hardware', 'system') - -+ def check_for_bus_devices(self): -+ if not os.path.isdir('/proc/bus/pci'): -+ return False -+ # ensure that more than just the 'devices' file, which can be empty, -+ # exists in the pci directory. This implies actual devices are present -+ content = os.listdir('/proc/bus/pci') -+ if 'devices' in content: -+ content.remove('devices') -+ return len(content) > 0 -+ - def setup(self): - self.add_copy_spec([ - "/proc/ioports", -@@ -24,7 +34,7 @@ class Pci(Plugin, RedHatPlugin, UbuntuPlugin, DebianPlugin): - "/proc/bus/pci" - ]) - -- if os.path.isdir("/proc/bus/pci/00"): -+ if self.check_for_bus_devices(): - self.add_cmd_output("lspci -nnvv", root_symlink="lspci") - self.add_cmd_output("lspci -tv") - --- -2.26.2 - diff --git a/SOURCES/sos-bz1857590-gluster-removes-sockfiles.patch b/SOURCES/sos-bz1857590-gluster-removes-sockfiles.patch deleted file mode 100644 index 6fffc6c..0000000 --- a/SOURCES/sos-bz1857590-gluster-removes-sockfiles.patch +++ /dev/null @@ -1,82 +0,0 @@ -From 2b46bf710ff266a5727f5c101872c778d470dcb4 Mon Sep 17 00:00:00 2001 -From: Jan Jansky -Date: Wed, 15 Jul 2020 13:38:52 +0200 -Subject: [PATCH] [gluster] remove only dump files - -Removes only dump files and leaving -other files as .socket or sock. - -Resolves: #2152 - -Signed-off-by: Jan Jansky -Signed-off-by: Jake Hunsaker ---- - sos/plugins/gluster.py | 17 ++++++++--------- - 1 file changed, 8 insertions(+), 9 deletions(-) - -diff --git a/sos/plugins/gluster.py b/sos/plugins/gluster.py -index 9540d323..9815bbe7 100644 ---- a/sos/plugins/gluster.py -+++ b/sos/plugins/gluster.py -@@ -40,15 +40,14 @@ class Gluster(Plugin, RedHatPlugin): - ret = string.count(last_line, 'DUMP_END_TIME') - - def postproc(self): -- if not os.path.exists(self.statedump_dir): -- return -- try: -- for dirs in os.listdir(self.statedump_dir): -- os.remove(os.path.join(self.statedump_dir, dirs)) -- os.rmdir(self.statedump_dir) -- os.unlink('/tmp/glusterdump.options') -- except OSError: -- pass -+ if self.get_option("dump"): -+ if not os.path.exists(self.statedump_dir): -+ return -+ try: -+ for name in glob.glob(self.statedump_dir + '/*.dump.[0-9]*'): -+ os.remove(name) -+ except OSError: -+ pass - - def setup(self): - self.add_forbidden_path("/var/lib/glusterd/geo-replication/secret.pem") --- -2.26.2 - -From 7994ea1cc22ae256f08426ef37931b7b58f0fefc Mon Sep 17 00:00:00 2001 -From: Jan Jansky -Date: Thu, 16 Jul 2020 14:34:49 +0200 -Subject: [PATCH] [gluster] remove generated state files - -Remove also generated state files in -/run/gluster. - -Resolves: #2154 - -Signed-off-by: Jan Jansky -Signed-off-by: Jake Hunsaker ---- - sos/plugins/gluster.py | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletion(-) - -diff --git a/sos/plugins/gluster.py b/sos/plugins/gluster.py -index 9815bbe7..7b6a9298 100644 ---- a/sos/plugins/gluster.py -+++ b/sos/plugins/gluster.py -@@ -45,7 +45,10 @@ class Gluster(Plugin, RedHatPlugin): - if not os.path.exists(self.statedump_dir): - return - try: -- for name in glob.glob(self.statedump_dir + '/*.dump.[0-9]*'): -+ remove_files = glob.glob(self.statedump_dir + '/*.dump.[0-9]*') -+ remove_files.extend(glob.glob(self.statedump_dir + -+ '/glusterd_state_[0-9]*_[0-9]*')) -+ for name in remove_files: - os.remove(name) - except OSError: - pass --- -2.26.2 - diff --git a/SOURCES/sos-bz1859888-kubernetes-indexerror-on-nodes.patch b/SOURCES/sos-bz1859888-kubernetes-indexerror-on-nodes.patch deleted file mode 100644 index 06d76c4..0000000 --- a/SOURCES/sos-bz1859888-kubernetes-indexerror-on-nodes.patch +++ /dev/null @@ -1,37 +0,0 @@ -From 482029d991e1aa075aafb122cbeee911afad341c Mon Sep 17 00:00:00 2001 -From: Pavel Moravec -Date: Thu, 23 Jul 2020 15:35:31 +0200 -Subject: [PATCH] [kubernetes] ignore blank+empty lines in "kubectl get nodes" - output - -In a theoretical case when the command output contains empty or blank -line, we must skip them before finding the first word there. - -Resolves: #2162 - -Signed-off-by: Pavel Moravec -Signed-off-by: Jake Hunsaker ---- - sos/plugins/kubernetes.py | 6 +++++- - 1 file changed, 5 insertions(+), 1 deletion(-) - -diff --git a/sos/plugins/kubernetes.py b/sos/plugins/kubernetes.py -index 03f2c498..5f21fa3d 100644 ---- a/sos/plugins/kubernetes.py -+++ b/sos/plugins/kubernetes.py -@@ -105,7 +105,11 @@ class Kubernetes(Plugin): - nodes = self.collect_cmd_output("%s get nodes" % self.kube_cmd) - if nodes['status'] == 0: - for line in nodes['output'].splitlines()[1:]: -- node = line.split()[0] -+ # find first word in the line and ignore empty+blank lines -+ words = line.split() -+ if not words: -+ continue -+ node = words[0] - self.add_cmd_output( - "%s describe node %s" % (self.kube_cmd, node), - subdir='nodes' --- -2.26.2 - diff --git a/SOURCES/sos-bz1869724-ethtool-not-on-bnx2x.patch b/SOURCES/sos-bz1869724-ethtool-not-on-bnx2x.patch deleted file mode 100644 index aa25084..0000000 --- a/SOURCES/sos-bz1869724-ethtool-not-on-bnx2x.patch +++ /dev/null @@ -1,47 +0,0 @@ -From 34c77d6902ee1df403dc3836b4092d413fb95350 Mon Sep 17 00:00:00 2001 -From: suresh2514 -Date: Fri, 14 Aug 2020 22:59:34 +0530 -Subject: [PATCH] [networking] remove 'ethtool -e' option for bnx2x NICs - -Running EEPROM dump (ethtool -e) can result in bnx2x driver NICs to -pause for few seconds and is not recommended in production environment. - -Resolves: #2188 -Resolves: #2200 - -Signed-off-by: suresh2514 -Signed-off-by: Jake Hunsaker ---- - sos/plugins/networking.py | 12 +++++++++++- - 1 file changed, 11 insertions(+), 1 deletion(-) - -diff --git a/sos/plugins/networking.py b/sos/plugins/networking.py -index ba9c0fb11..397549a56 100644 ---- a/sos/plugins/networking.py -+++ b/sos/plugins/networking.py -@@ -182,7 +182,6 @@ def setup(self): - "ethtool -a " + eth, - "ethtool -c " + eth, - "ethtool -g " + eth, -- "ethtool -e " + eth, - "ethtool -P " + eth, - "ethtool -l " + eth, - "ethtool --phy-statistics " + eth, -@@ -189,6 +189,17 @@ class Networking(Plugin): - "ethtool --show-eee " + eth - ]) - -+ # skip EEPROM collection for 'bnx2x' NICs as this command -+ # can pause the NIC and is not production safe. -+ bnx_output = { -+ "cmd": "ethtool -i %s" % eth, -+ "output": "bnx2x" -+ } -+ bnx_pred = SoSPredicate(self, -+ cmd_outputs=bnx_output, -+ required={'cmd_outputs': 'none'}) -+ self.add_cmd_output("ethtool -e %s" % eth, pred=bnx_pred) -+ - # Collect information about bridges (some data already collected via - # "ip .." commands) - self.add_cmd_output([ diff --git a/SOURCES/sos-bz1874295-osp-ironic-inspector-configs.patch b/SOURCES/sos-bz1874295-osp-ironic-inspector-configs.patch new file mode 100644 index 0000000..b9be279 --- /dev/null +++ b/SOURCES/sos-bz1874295-osp-ironic-inspector-configs.patch @@ -0,0 +1,179 @@ +From 4e46e0c8db3e2ecea7279ae7a781ae2e22a81b69 Mon Sep 17 00:00:00 2001 +From: David Vallee Delisle +Date: Mon, 31 Aug 2020 18:58:42 -0400 +Subject: [PATCH] [openstack_ironic] Missing ironic-inspector configs + +We're missing the ironic-inspector configurations, probably because they +were in the RedHatPlugin class, at the bottom of the file and they were +probably missed when updating this plugin. Moving them at the top with +the other `add_copy_spec` will help tracking them in case something +change again. + +Revamping also the way we grab logs to check if we're in a container +first. + +Resolves: #2223 + +Signed-off-by: David Vallee Delisle +Signed-off-by: Jake Hunsaker +--- + sos/report/plugins/openstack_ironic.py | 121 +++++++++++++++++-------- + 1 file changed, 82 insertions(+), 39 deletions(-) + +diff --git a/sos/report/plugins/openstack_ironic.py b/sos/report/plugins/openstack_ironic.py +index 314d2a58..57060a27 100644 +--- a/sos/report/plugins/openstack_ironic.py ++++ b/sos/report/plugins/openstack_ironic.py +@@ -20,41 +20,95 @@ class OpenStackIronic(Plugin): + profiles = ('openstack', 'openstack_undercloud') + + var_puppet_gen = "/var/lib/config-data/puppet-generated/ironic" ++ ins_puppet_gen = var_puppet_gen + "_inspector" + + def setup(self): +- self.conf_list = [ +- "/etc/ironic/*", +- self.var_puppet_gen + "/etc/ironic/*", +- self.var_puppet_gen + "_api/etc/ironic/*" +- ] +- self.add_copy_spec([ +- "/etc/ironic/", +- self.var_puppet_gen + "/etc/xinetd.conf", +- self.var_puppet_gen + "/etc/xinetd.d/", +- self.var_puppet_gen + "/etc/ironic/", +- self.var_puppet_gen + "/etc/httpd/conf/", +- self.var_puppet_gen + "/etc/httpd/conf.d/", +- self.var_puppet_gen + "/etc/httpd/conf.modules.d/*.conf", +- self.var_puppet_gen + "/etc/my.cnf.d/tripleo.cnf", +- self.var_puppet_gen + "_api/etc/ironic/", +- self.var_puppet_gen + "_api/etc/httpd/conf/", +- self.var_puppet_gen + "_api/etc/httpd/conf.d/", +- self.var_puppet_gen + "_api/etc/httpd/conf.modules.d/*.conf", +- self.var_puppet_gen + "_api/etc/my.cnf.d/tripleo.cnf" +- ]) +- +- if self.get_option("all_logs"): ++ ++ in_container = self.container_exists('.*ironic_api') ++ ++ if in_container: ++ self.conf_list = [ ++ self.var_puppet_gen + "/etc/ironic/*", ++ self.var_puppet_gen + "/etc/ironic-inspector/*", ++ self.var_puppet_gen + "_api/etc/ironic/*", ++ self.ins_puppet_gen + "/etc/ironic-inspector/*", ++ self.ins_puppet_gen + "/var/lib/httpboot/inspector.ipxe" ++ ] + self.add_copy_spec([ +- "/var/log/ironic/", ++ "/var/lib/ironic-inspector/", ++ "/var/log/containers/ironic-inspector/ramdisk/", ++ self.var_puppet_gen + "/etc/xinetd.conf", ++ self.var_puppet_gen + "/etc/xinetd.d/", ++ self.var_puppet_gen + "/etc/ironic/", ++ self.var_puppet_gen + "/etc/ironic-inspector/", ++ self.var_puppet_gen + "/etc/httpd/conf/", ++ self.var_puppet_gen + "/etc/httpd/conf.d/", ++ self.var_puppet_gen + "/etc/httpd/conf.modules.d/*.conf", ++ self.var_puppet_gen + "/etc/my.cnf.d/tripleo.cnf", ++ self.var_puppet_gen + "_api/etc/ironic/", ++ self.var_puppet_gen + "_api/etc/httpd/conf/", ++ self.var_puppet_gen + "_api/etc/httpd/conf.d/", ++ self.var_puppet_gen + "_api/etc/httpd/conf.modules.d/*.conf", ++ self.var_puppet_gen + "_api/etc/my.cnf.d/tripleo.cnf", ++ self.ins_puppet_gen + "/etc/ironic-inspector/*", ++ self.ins_puppet_gen + "/var/lib/httpboot/inspector.ipxe" + ]) ++ ++ if self.get_option("all_logs"): ++ self.add_copy_spec([ ++ "/var/log/containers/ironic/", ++ "/var/log/containers/ironic-inspector/" ++ ]) ++ else: ++ self.add_copy_spec([ ++ "/var/log/containers/ironic/*.log", ++ "/var/log/containers/ironic-inspector/*.log", ++ ]) ++ ++ for path in ['/var/lib/ironic', '/httpboot', '/tftpboot', ++ self.ins_puppet_gen + '/var/lib/httpboot/', ++ self.ins_puppet_gen + '/var/lib/tftpboot/']: ++ self.add_cmd_output('ls -laRt %s' % path) ++ self.add_cmd_output('ls -laRt %s' % ++ (self.var_puppet_gen + path)) ++ ++ # Let's get the packages from the containers, always helpful when ++ # troubleshooting. ++ for container_name in ['ironic_inspector_dnsmasq', ++ 'ironic_inspector', 'ironic_pxe_http', ++ 'ironic_pxe_tftp', 'ironic_neutron_agent', ++ 'ironic_conductor', 'ironic_api']: ++ if self.container_exists('.*' + container_name): ++ self.add_cmd_output(self.fmt_container_cmd(container_name, ++ 'rpm -qa')) ++ + else: ++ self.conf_list = [ ++ "/etc/ironic/*", ++ "/etc/ironic-inspector/*", ++ ] + self.add_copy_spec([ +- "/var/log/ironic/*.log", ++ "/etc/ironic/", ++ "/etc/ironic-inspector/", ++ "/var/lib/ironic-inspector/", ++ "/var/log/ironic-inspector/ramdisk/", ++ "/etc/my.cnf.d/tripleo.cnf", ++ "/var/lib/httpboot/inspector.ipxe" + ]) + +- for path in ['/var/lib/ironic', '/httpboot', '/tftpboot']: +- self.add_cmd_output('ls -laRt %s' % path) +- self.add_cmd_output('ls -laRt %s' % (self.var_puppet_gen + path)) ++ if self.get_option("all_logs"): ++ self.add_copy_spec([ ++ "/var/log/ironic/", ++ "/var/log/ironic-inspector/", ++ ]) ++ else: ++ self.add_copy_spec([ ++ "/var/log/ironic/*.log", ++ "/var/log/ironic-inspector/*.log", ++ ]) ++ ++ for path in ['/var/lib/ironic', '/httpboot', '/tftpboot']: ++ self.add_cmd_output('ls -laRt %s' % path) + + vars_all = [p in os.environ for p in [ + 'OS_USERNAME', 'OS_PASSWORD']] +@@ -136,6 +190,7 @@ class RedHatIronic(OpenStackIronic, RedHatPlugin): + def setup(self): + super(RedHatIronic, self).setup() + ++ # ironic-discoverd was renamed to ironic-inspector in Liberty + # is the optional ironic-discoverd service installed? + if any([self.is_installed(p) for p in self.discoverd_packages]): + self.conf_list.append('/etc/ironic-discoverd/*') +@@ -146,18 +201,6 @@ class RedHatIronic(OpenStackIronic, RedHatPlugin): + self.add_journal(units="openstack-ironic-discoverd") + self.add_journal(units="openstack-ironic-discoverd-dnsmasq") + +- # ironic-discoverd was renamed to ironic-inspector in Liberty +- self.conf_list.append('/etc/ironic-inspector/*') +- self.conf_list.append(self.var_puppet_gen + '/etc/ironic-inspector/*') +- self.add_copy_spec('/etc/ironic-inspector/') +- self.add_copy_spec(self.var_puppet_gen + '/etc/ironic-inspector/') +- self.add_copy_spec('/var/lib/ironic-inspector/') +- if self.get_option("all_logs"): +- self.add_copy_spec('/var/log/ironic-inspector/') +- else: +- self.add_copy_spec('/var/log/ironic-inspector/*.log') +- self.add_copy_spec('/var/log/ironic-inspector/ramdisk/') +- + self.add_journal(units="openstack-ironic-inspector-dnsmasq") + + if self.osc_available: +-- +2.26.2 + diff --git a/SOURCES/sos-bz1880372-power-logs.patch b/SOURCES/sos-bz1880372-power-logs.patch new file mode 100644 index 0000000..9c556ae --- /dev/null +++ b/SOURCES/sos-bz1880372-power-logs.patch @@ -0,0 +1,228 @@ +From b8da3e3ed94075fa5ccf74a61ce64812b904d0c5 Mon Sep 17 00:00:00 2001 +From: Mamatha Inamdar +Date: Tue, 25 Aug 2020 14:16:52 +0530 +Subject: [PATCH] [powerpc]Add support to collect hardware component logs + +This patch updates powerpc plugin to collect Hardware and +firmware information. + +In this patch we are reading Hardware and firmware version +details through lsvpd, lscfg and lsmcode commands + +Related: #2213 + +Signed-off-by: Mamatha Inamdar +Reported-by: Borislav Stoymirski +Signed-off-by: Jake Hunsaker +--- + sos/report/plugins/powerpc.py | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/sos/report/plugins/powerpc.py b/sos/report/plugins/powerpc.py +index 6cd8dd14..9f38bd7d 100644 +--- a/sos/report/plugins/powerpc.py ++++ b/sos/report/plugins/powerpc.py +@@ -50,7 +50,10 @@ class PowerPC(Plugin, RedHatPlugin, UbuntuPlugin, DebianPlugin): + "ppc64_cpu --run-mode", + "ppc64_cpu --frequency", + "ppc64_cpu --dscr", +- "diag_encl -v" ++ "diag_encl -v", ++ "lsvpd -D", ++ "lsmcode -A", ++ "lscfg -v" + ]) + + if ispSeries: +-- +2.26.2 + +From 3d25bbfdadf6c5f33dba7522536f744da1940794 Mon Sep 17 00:00:00 2001 +From: Mamatha Inamdar +Date: Tue, 25 Aug 2020 14:21:21 +0530 +Subject: [PATCH] [iprconfig]Add support to collect RAID adapter logs + +This patch updates iprconfig plugin to collect IBM Power +RAID adapter device driver information. + +Related: #2213 + +Signed-off-by: Mamatha Inamdar +Reported-by: Borislav Stoymirski +Signed-off-by: Jake Hunsaker +--- + sos/report/plugins/iprconfig.py | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/sos/report/plugins/iprconfig.py b/sos/report/plugins/iprconfig.py +index 08503a78..f7511a6c 100644 +--- a/sos/report/plugins/iprconfig.py ++++ b/sos/report/plugins/iprconfig.py +@@ -32,6 +32,7 @@ class IprConfig(Plugin, RedHatPlugin, UbuntuPlugin, DebianPlugin): + "iprconfig -c show-af-disks", + "iprconfig -c show-all-af-disks", + "iprconfig -c show-slots", ++ "iprconfig -c dump" + ]) + + show_ioas = self.collect_cmd_output("iprconfig -c show-ioas") +-- +2.26.2 + +From effdb3b84ab80fa68d41af1438bfae465c571127 Mon Sep 17 00:00:00 2001 +From: Mamatha Inamdar +Date: Tue, 25 Aug 2020 14:30:23 +0530 +Subject: [PATCH] [kernel]Add support to collect network debugging logs + +This patch is to collect hybrid network debugging messages + +Related: #2213 + +Signed-off-by: Mamatha Inamdar +Reported-by: Luciano Chavez +Signed-off-by: Jake Hunsaker +--- + sos/report/plugins/kernel.py | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/sos/report/plugins/kernel.py b/sos/report/plugins/kernel.py +index febe2ad0..27e0e4d0 100644 +--- a/sos/report/plugins/kernel.py ++++ b/sos/report/plugins/kernel.py +@@ -106,6 +106,7 @@ class Kernel(Plugin, IndependentPlugin): + "/proc/misc", + "/var/log/dmesg", + "/sys/fs/pstore", ++ "/var/log/hcnmgr", + clocksource_path + "available_clocksource", + clocksource_path + "current_clocksource" + ]) +-- +2.26.2 + +From b3fd83f0cc92b89e7adf8d66c446f3cf5ab1388b Mon Sep 17 00:00:00 2001 +From: Mamatha Inamdar +Date: Mon, 31 Aug 2020 10:56:15 +0530 +Subject: [PATCH] [mvcli]Add support to collect mvCLI PCI adapter infomation + +This patch is to add new plugin mvcli to collect +SATA drives connected to system backplane adapter information. + +infor -o vd ----> If the virtual disk was successfully + created, show a new RAID virtual disk +info -o pd -----> To show all physical disks and IDs: +info -o hba -----> To show all host bus adapters (HBAs): +smart -p 0 -----> To check for errors on a disk: + +Related: #2213 + +Signed-off-by: Mamatha Inamdar +Reported-by: Borislav Stoymirski +Signed-off-by: Jake Hunsaker +--- + sos/report/plugins/mvcli.py | 35 +++++++++++++++++++++++++++++++++++ + 1 file changed, 35 insertions(+) + create mode 100644 sos/report/plugins/mvcli.py + +diff --git a/sos/report/plugins/mvcli.py b/sos/report/plugins/mvcli.py +new file mode 100644 +index 00000000..ce7bf77b +--- /dev/null ++++ b/sos/report/plugins/mvcli.py +@@ -0,0 +1,35 @@ ++# This file is part of the sos project: https://github.com/sosreport/sos ++# ++# This copyrighted material is made available to anyone wishing to use, ++# modify, copy, or redistribute it subject to the terms and conditions of ++# version 2 of the GNU General Public License. ++# ++# See the LICENSE file in the source distribution for further information. ++ ++ ++# This sosreport plugin is meant for sas adapters. ++# This plugin logs inforamtion on each adapter it finds. ++ ++from sos.report.plugins import Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin ++ ++ ++class mvCLI(Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin): ++ ++ short_desc = 'mvCLI Integrated RAID adapter information' ++ ++ plugin_name = "mvcli" ++ commands = ("/opt/marvell/bin/mvcli",) ++ ++ def setup(self): ++ ++ # get list of adapters ++ subcmds = [ ++ 'info -o vd', ++ 'info -o pd', ++ 'info -o hba', ++ 'smart -p 0', ++ ] ++ ++ self.add_cmd_output(["/opt/marvell/bin/mvcli %s" % s for s in subcmds]) ++ ++# vim: et ts=4 sw=4 +-- +2.26.2 + +From 48ac730fbf4b168604079b18675867c5ed6dc1ae Mon Sep 17 00:00:00 2001 +From: Mamatha Inamdar +Date: Mon, 31 Aug 2020 11:54:52 +0530 +Subject: [PATCH] [arcconf]Add support to collect arcconf adapter infomation + +This patch is to add new arcconf plugin to collect +SATA drives connected to system backplane adapter information. + +arcconf getconfig 1 ----> To list the logical drives and + device configurations + +Closes: #2213 + +Signed-off-by: Mamatha Inamdar +Reported-by: Borislav Stoymirski +Signed-off-by: Jake Hunsaker +--- + sos/report/plugins/arcconf.py | 28 ++++++++++++++++++++++++++++ + 1 file changed, 28 insertions(+) + create mode 100644 sos/report/plugins/arcconf.py + +diff --git a/sos/report/plugins/arcconf.py b/sos/report/plugins/arcconf.py +new file mode 100644 +index 00000000..64d6bb1e +--- /dev/null ++++ b/sos/report/plugins/arcconf.py +@@ -0,0 +1,28 @@ ++# This file is part of the sos project: https://github.com/sosreport/sos ++# ++# This copyrighted material is made available to anyone wishing to use, ++# modify, copy, or redistribute it subject to the terms and conditions of ++# version 2 of the GNU General Public License. ++# ++# See the LICENSE file in the source distribution for further information. ++ ++ ++# This sosreport plugin is meant for sas adapters. ++# This plugin logs inforamtion on each adapter it finds. ++ ++from sos.report.plugins import Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin ++ ++ ++class arcconf(Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin): ++ ++ short_desc = 'arcconf Integrated RAID adapter information' ++ ++ plugin_name = "arcconf" ++ commands = ("arcconf",) ++ ++ def setup(self): ++ ++ # get list of adapters ++ self.add_cmd_output("arcconf getconfig 1") ++ ++# vim: et ts=4 sw=4 +-- +2.26.2 + diff --git a/SOURCES/sos-bz1881118-crio-conf-d.patch b/SOURCES/sos-bz1881118-crio-conf-d.patch new file mode 100644 index 0000000..d39b353 --- /dev/null +++ b/SOURCES/sos-bz1881118-crio-conf-d.patch @@ -0,0 +1,70 @@ +From 019f7c49768f27ef15f39d80db8a03b2aaa453ee Mon Sep 17 00:00:00 2001 +From: Pavel Moravec +Date: Mon, 21 Sep 2020 17:33:25 +0200 +Subject: [PATCH] [crio] collect /etc/crio/crio.conf.d/ + +Crio configs can be newly in the dir also. + +Resolves: #2240 + +Signed-off-by: Pavel Moravec +Signed-off-by: Jake Hunsaker +--- + sos/report/plugins/crio.py | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/sos/report/plugins/crio.py b/sos/report/plugins/crio.py +index dacc0745..e8b566c3 100644 +--- a/sos/report/plugins/crio.py ++++ b/sos/report/plugins/crio.py +@@ -31,6 +31,7 @@ class CRIO(Plugin, RedHatPlugin, UbuntuPlugin): + "/etc/crictl.yaml", + "/etc/crio/crio.conf", + "/etc/crio/seccomp.json", ++ "/etc/crio/crio.conf.d/", + "/etc/systemd/system/cri-o.service", + "/etc/sysconfig/crio-*" + ]) +-- +2.26.2 + +From 7f72a36144b3e235159556689b5129b7453294e3 Mon Sep 17 00:00:00 2001 +From: Pavel Moravec +Date: Tue, 15 Dec 2020 14:19:34 +0100 +Subject: [PATCH] [component] Use sysroot from Policy when opts doesn't specify + it + +Until --sysroot option is specified, Archive (sub)classes should +be called with sysroot determined from Policy. + +Resolves: #2346 + +Signed-off-by: Pavel Moravec +Signed-off-by: Jake Hunsaker +--- + sos/component.py | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/sos/component.py b/sos/component.py +index 69d3b755..7774c05a 100644 +--- a/sos/component.py ++++ b/sos/component.py +@@ -246,13 +246,13 @@ class SoSComponent(): + auto_archive = self.policy.get_preferred_archive() + self.archive = auto_archive(archive_name, self.tmpdir, + self.policy, self.opts.threads, +- enc_opts, self.opts.sysroot, ++ enc_opts, self.sysroot, + self.manifest) + + else: + self.archive = TarFileArchive(archive_name, self.tmpdir, + self.policy, self.opts.threads, +- enc_opts, self.opts.sysroot, ++ enc_opts, self.sysroot, + self.manifest) + + self.archive.set_debug(True if self.opts.debug else False) +-- +2.26.2 + diff --git a/SOURCES/sos-bz1882368-upload-functionality-issues.patch b/SOURCES/sos-bz1882368-upload-functionality-issues.patch new file mode 100644 index 0000000..470dce7 --- /dev/null +++ b/SOURCES/sos-bz1882368-upload-functionality-issues.patch @@ -0,0 +1,211 @@ +From a3b493a8accc338158faa53b9e221067323b75f5 Mon Sep 17 00:00:00 2001 +From: Jake Hunsaker +Date: Thu, 24 Sep 2020 10:06:17 -0400 +Subject: [PATCH] [redhat] Ease upload url determination logic + +The logic for determining if an archive should be uploaded to the +Customer Portal was too strict, ease it to now properly only block on a +missing case number since username and passwords may now be provided via +env vars. + +Signed-off-by: Jake Hunsaker +--- + sos/policies/__init__.py | 6 ++++-- + sos/policies/redhat.py | 8 ++++++-- + 2 files changed, 10 insertions(+), 4 deletions(-) + +diff --git a/sos/policies/__init__.py b/sos/policies/__init__.py +index 9a1aac07..215739bd 100644 +--- a/sos/policies/__init__.py ++++ b/sos/policies/__init__.py +@@ -1427,8 +1427,8 @@ class LinuxPolicy(Policy): + """Should be overridden by policies to determine if a password needs to + be provided for upload or not + """ +- if ((not self.upload_password and not self._upload_password) and +- self.upload_user): ++ if not self.get_upload_password() and (self.get_upload_user() != ++ self._upload_user): + msg = ( + "Please provide the upload password for %s: " + % self.upload_user +@@ -1472,7 +1473,8 @@ class LinuxPolicy(Policy): + Print a more human-friendly string than vendor URLs + """ + self.upload_archive = archive +- self.upload_url = self.get_upload_url() ++ if not self.upload_url: ++ self.upload_url = self.get_upload_url() + if not self.upload_url: + raise Exception("No upload destination provided by policy or by " + "--upload-url") +diff --git a/sos/policies/redhat.py b/sos/policies/redhat.py +index 34b421f3..f2f847a5 100644 +--- a/sos/policies/redhat.py ++++ b/sos/policies/redhat.py +@@ -320,12 +320,16 @@ support representative. + "Enter your Red Hat Customer Portal username (empty to use " + "public dropbox): ") + ) ++ if not self.upload_user: ++ self.upload_url = RH_FTP_HOST ++ self.upload_user = self._upload_user + + def get_upload_url(self): ++ if self.upload_url: ++ return self.upload_url + if self.commons['cmdlineopts'].upload_url: + return self.commons['cmdlineopts'].upload_url +- if (not self.case_id or not self.upload_user or not +- self.upload_password): ++ if not self.case_id: + # Cannot use the RHCP. Use anonymous dropbox + self.upload_user = self._upload_user + self.upload_directory = self._upload_directory +-- +2.26.2 + +From 11cc6f478a9b41ce81b5b74faab5ca42930262ee Mon Sep 17 00:00:00 2001 +From: Jake Hunsaker +Date: Thu, 24 Sep 2020 10:17:25 -0400 +Subject: [PATCH] [policy] Use user-provided FTP directory if specified + +Fixes an issue whereby we ignore a user-provided FTP directory. + +Signed-off-by: Jake Hunsaker +--- + sos/policies/__init__.py | 2 +- + sos/policies/redhat.py | 3 ++- + 2 files changed, 3 insertions(+), 2 deletions(-) + +diff --git a/sos/policies/__init__.py b/sos/policies/__init__.py +index 215739bd..32f271d9 100644 +--- a/sos/policies/__init__.py ++++ b/sos/policies/__init__.py +@@ -1677,7 +1677,7 @@ class LinuxPolicy(Policy): + password = self.get_upload_password() + + if not directory: +- directory = self._upload_directory ++ directory = self.upload_directory or self._upload_directory + + try: + session = ftplib.FTP(url, user, password) +diff --git a/sos/policies/redhat.py b/sos/policies/redhat.py +index f2f847a5..d079406f 100644 +--- a/sos/policies/redhat.py ++++ b/sos/policies/redhat.py +@@ -332,7 +332,8 @@ support representative. + if not self.case_id: + # Cannot use the RHCP. Use anonymous dropbox + self.upload_user = self._upload_user +- self.upload_directory = self._upload_directory ++ if self.upload_directory is None: ++ self.upload_directory = self._upload_directory + self.upload_password = None + return RH_FTP_HOST + else: +-- +2.26.2 + +From caa9a2f2a511689080d019ffab61a4de5787d8be Mon Sep 17 00:00:00 2001 +From: Jake Hunsaker +Date: Thu, 24 Sep 2020 10:25:00 -0400 +Subject: [PATCH] [policy] Handle additional failure conditions for FTP uploads + +Adds a timeout and a timeout handler for FTP connections, rather than +letting the connection attempt continue indefinitely. + +Second, adds exception handling for an edge case where the connection to +the FTP server fails, but does not generate an exception from the ftplib +module. + +Additionally, correct the type-ing of the error numbers being checked so +that we actually match them. + +Resolves: #2245 + +Signed-off-by: Jake Hunsaker +--- + sos/policies/__init__.py | 11 ++++++++--- + 1 file changed, 8 insertions(+), 3 deletions(-) + +diff --git a/sos/policies/__init__.py b/sos/policies/__init__.py +index 32f271d9..826d022e 100644 +--- a/sos/policies/__init__.py ++++ b/sos/policies/__init__.py +@@ -1680,15 +1680,20 @@ class LinuxPolicy(Policy): + directory = self.upload_directory or self._upload_directory + + try: +- session = ftplib.FTP(url, user, password) ++ session = ftplib.FTP(url, user, password, timeout=15) ++ if not session: ++ raise Exception("connection failed, did you set a user and " ++ "password?") + session.cwd(directory) ++ except socket.timeout: ++ raise Exception("timeout hit while connecting to %s" % url) + except socket.gaierror: + raise Exception("unable to connect to %s" % url) + except ftplib.error_perm as err: + errno = str(err).split()[0] +- if errno == 503: ++ if errno == '503': + raise Exception("could not login as '%s'" % user) +- if errno == 550: ++ if errno == '550': + raise Exception("could not set upload directory to %s" + % directory) + +-- +2.26.2 + +From 21720a0f8c9cf6739e26470b2280e005f0f3e3f1 Mon Sep 17 00:00:00 2001 +From: Pavel Moravec +Date: Thu, 15 Oct 2020 13:45:37 +0200 +Subject: [PATCH] [policy] Use FTP server when user isnt set in batch mode + +Caling "sos report --upload --case-id=123 --batch" should fallback +to uploading to FTP server as the upload user is unknown and can't +be prompted in batch mode. + +Resolves: #2276 + +Signed-off-by: Pavel Moravec +Signed-off-by: Jake Hunsaker +--- + sos/policies/redhat.py | 12 ++++++++++-- + 1 file changed, 10 insertions(+), 2 deletions(-) + +diff --git a/sos/policies/redhat.py b/sos/policies/redhat.py +index d079406f..3a65b9fa 100644 +--- a/sos/policies/redhat.py ++++ b/sos/policies/redhat.py +@@ -324,13 +324,21 @@ support representative. + self.upload_url = RH_FTP_HOST + self.upload_user = self._upload_user + ++ def _upload_user_set(self): ++ user = self.get_upload_user() ++ return user and (user != 'anonymous') ++ + def get_upload_url(self): + if self.upload_url: + return self.upload_url + if self.commons['cmdlineopts'].upload_url: + return self.commons['cmdlineopts'].upload_url +- if not self.case_id: +- # Cannot use the RHCP. Use anonymous dropbox ++ # anonymous FTP server should be used as fallback when either: ++ # - case id is not set, or ++ # - upload user isn't set AND batch mode prevents to prompt for it ++ if (not self.case_id) or \ ++ ((not self._upload_user_set()) and ++ self.commons['cmdlineopts'].batch): + self.upload_user = self._upload_user + if self.upload_directory is None: + self.upload_directory = self._upload_directory +-- +2.26.2 + diff --git a/SOURCES/sos-bz1886782-exclude-panfs.patch b/SOURCES/sos-bz1886782-exclude-panfs.patch new file mode 100644 index 0000000..357ca2c --- /dev/null +++ b/SOURCES/sos-bz1886782-exclude-panfs.patch @@ -0,0 +1,36 @@ +From 6a4e3fb718a5c3249425dc4ae167b977abdb7f2e Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Renaud=20M=C3=A9trich?= +Date: Thu, 8 Oct 2020 11:51:13 +0200 +Subject: [PATCH] [filesys] never collect content of /proc/fs/panfs +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +panfs (from Panasas company) provides statistics under /proc/fs/panfs +which makes sosreports become several hundreds of GBs. This path must +hence be blacklisted. + +Resolves: #2262 + +Signed-off-by: Renaud Métrich +Signed-off-by: Jake Hunsaker +--- + sos/report/plugins/filesys.py | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/sos/report/plugins/filesys.py b/sos/report/plugins/filesys.py +index 3baec3ce..57f608d0 100644 +--- a/sos/report/plugins/filesys.py ++++ b/sos/report/plugins/filesys.py +@@ -43,6 +43,8 @@ class Filesys(Plugin, DebianPlugin, UbuntuPlugin, CosPlugin): + "lslocks" + ]) + ++ self.add_forbidden_path('/proc/fs/panfs') ++ + if self.get_option('lsof'): + self.add_cmd_output("lsof -b +M -n -l -P", root_symlink="lsof") + +-- +2.26.2 + diff --git a/SOURCES/sos-bz1887390-kdump-logfiles.patch b/SOURCES/sos-bz1887390-kdump-logfiles.patch new file mode 100644 index 0000000..ee95a56 --- /dev/null +++ b/SOURCES/sos-bz1887390-kdump-logfiles.patch @@ -0,0 +1,49 @@ +From be347440d5f8d650791ff044970c5e65ee8ec2a3 Mon Sep 17 00:00:00 2001 +From: Jose Castillo +Date: Mon, 12 Oct 2020 13:47:47 +0100 +Subject: [PATCH] [kdump] Collect new kdump logfiles + +Two new logfiles are available in kdump: + +/var/log/kdump.log +/var/crash/*/kexec-kdump.log + +The path for the second logfile mentioned above is the +default one, but this patch deals with a change in +default directory the same way that we do with the +file vmcore-dmesg.txt. + +Resolves: RHBZ#1817042 and RHBZ#1887390. +Resolves: #2270 + +Signed-off-by: Jose Castillo +Signed-off-by: Jake Hunsaker +--- + sos/report/plugins/kdump.py | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/sos/report/plugins/kdump.py b/sos/report/plugins/kdump.py +index 41d08b5b..4eccb3ff 100644 +--- a/sos/report/plugins/kdump.py ++++ b/sos/report/plugins/kdump.py +@@ -71,7 +71,8 @@ class RedHatKDump(KDump, RedHatPlugin): + self.add_copy_spec([ + "/etc/kdump.conf", + "/etc/udev/rules.d/*kexec.rules", +- "/var/crash/*/vmcore-dmesg.txt" ++ "/var/crash/*/vmcore-dmesg.txt", ++ "/var/log/kdump.log" + ]) + try: + path = self.read_kdump_conffile() +@@ -80,6 +81,7 @@ class RedHatKDump(KDump, RedHatPlugin): + path = "/var/crash" + + self.add_copy_spec("{}/*/vmcore-dmesg.txt".format(path)) ++ self.add_copy_spec("{}/*/kexec-kdump.log".format(path)) + + + class DebianKDump(KDump, DebianPlugin, UbuntuPlugin): +-- +2.26.2 + diff --git a/SOURCES/sos-bz1887402-kexec-logs.patch b/SOURCES/sos-bz1887402-kexec-logs.patch new file mode 100644 index 0000000..670659f --- /dev/null +++ b/SOURCES/sos-bz1887402-kexec-logs.patch @@ -0,0 +1,40 @@ +From a0cb4efb473a553fa034aaa8980635897adf1894 Mon Sep 17 00:00:00 2001 +From: Jose Castillo +Date: Tue, 26 Jan 2021 16:20:44 +0100 +Subject: [PATCH] [kdump] Gather the file kexec-dmesg.log + +Moved the file name from kexec-kdump.log to +the right one, kexec-dmesg.log and +added it to the list of files to gather via +add_copy_spec as per #1546. + +Resolves: RHBZ#1817042 +Resolves: #2386 + +Signed-off-by: Jose Castillo +Signed-off-by: Pavel Moravec +--- + sos/report/plugins/kdump.py | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/sos/report/plugins/kdump.py b/sos/report/plugins/kdump.py +index 4eccb3ffe..6bcb7f74d 100644 +--- a/sos/report/plugins/kdump.py ++++ b/sos/report/plugins/kdump.py +@@ -72,6 +72,7 @@ def setup(self): + "/etc/kdump.conf", + "/etc/udev/rules.d/*kexec.rules", + "/var/crash/*/vmcore-dmesg.txt", ++ "/var/crash/*/kexec-dmesg.log", + "/var/log/kdump.log" + ]) + try: +@@ -81,7 +82,7 @@ def setup(self): + path = "/var/crash" + + self.add_copy_spec("{}/*/vmcore-dmesg.txt".format(path)) +- self.add_copy_spec("{}/*/kexec-kdump.log".format(path)) ++ self.add_copy_spec("{}/*/kexec-dmesg.log".format(path)) + + + class DebianKDump(KDump, DebianPlugin, UbuntuPlugin): diff --git a/SOURCES/sos-bz1888012-stratis-new-feature-output.patch b/SOURCES/sos-bz1888012-stratis-new-feature-output.patch new file mode 100644 index 0000000..f41110c --- /dev/null +++ b/SOURCES/sos-bz1888012-stratis-new-feature-output.patch @@ -0,0 +1,36 @@ +From 22b19739d94f0a40fb8dfd3236e63991a0c027b9 Mon Sep 17 00:00:00 2001 +From: Pavel Moravec +Date: Wed, 14 Oct 2020 08:33:28 +0200 +Subject: [PATCH] [stratis] Collect key list and report engine + +Required for troubleshooting Stratis-engine v. 2.1.0. + +Resolves: #2274 +Closes: #2273 + +Signed-off-by: Pavel Moravec +Signed-off-by: Jake Hunsaker +--- + sos/report/plugins/stratis.py | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/sos/report/plugins/stratis.py b/sos/report/plugins/stratis.py +index b6071d32..a41c9476 100644 +--- a/sos/report/plugins/stratis.py ++++ b/sos/report/plugins/stratis.py +@@ -24,8 +24,11 @@ class Stratis(Plugin, RedHatPlugin): + 'pool list', + 'filesystem list', + 'blockdev list', ++ 'key list', + 'daemon redundancy', +- 'daemon version' ++ 'daemon version', ++ 'report engine_state_report', ++ '--version', + ] + + self.add_cmd_output(["stratis %s" % subcmd for subcmd in subcmds]) +-- +2.26.2 + diff --git a/SOURCES/sos-bz1891562-tmp-dir-relative-path.patch b/SOURCES/sos-bz1891562-tmp-dir-relative-path.patch new file mode 100644 index 0000000..d887f79 --- /dev/null +++ b/SOURCES/sos-bz1891562-tmp-dir-relative-path.patch @@ -0,0 +1,34 @@ +From c07bdbc94269603d2b910ccafa289512478160aa Mon Sep 17 00:00:00 2001 +From: Jake Hunsaker +Date: Mon, 26 Oct 2020 14:11:56 -0400 +Subject: [PATCH] [sos] Fix use of relative paths for --tmp-dir + +Fixes an issue where the use of relative paths for `--tmp-dir` causes a +failure in the building of the final archive. Previously, a relative +path would cause the tarball to be produced in a nested directory under +the temp directory of the same name, which would in turn cause +compression and all further operations for the archive to fail. + +Fix this by converting relative paths in the option to the absolute path +internally. + +Resolves: RHBZ#1891562 + +Signed-off-by: Jake Hunsaker +--- + sos/component.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/sos/component.py b/sos/component.py +index 0aef770c6..b44fdf829 100644 +--- a/sos/component.py ++++ b/sos/component.py +@@ -138,7 +138,7 @@ def get_tmpdir_default(self): + use a standardized env var to redirect to the host's filesystem instead + """ + if self.opts.tmp_dir: +- return self.opts.tmp_dir ++ return os.path.abspath(self.opts.tmp_dir) + + tmpdir = '/var/tmp' + diff --git a/SOURCES/sos-bz1895316-collector--cluster-type.patch b/SOURCES/sos-bz1895316-collector--cluster-type.patch new file mode 100644 index 0000000..03d8646 --- /dev/null +++ b/SOURCES/sos-bz1895316-collector--cluster-type.patch @@ -0,0 +1,32 @@ +From 1c6efee74557f433dfc5b67fb8ab76b0d9e6f988 Mon Sep 17 00:00:00 2001 +From: Pavel Moravec +Date: Tue, 8 Dec 2020 20:02:37 +0100 +Subject: [PATCH] [collector] allow overriding plain --cluster-type + +In few user scenarios, it is useful to force sos collect to override +cluster type, but let it generate list of nodes by itself. For that, +it is sufficient to set the self.cluster_type accordingly. + +Resolves: #2331 + +Signed-off-by: Pavel Moravec +Signed-off-by: Jake Hunsaker +--- + sos/collector/__init__.py | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/sos/collector/__init__.py b/sos/collector/__init__.py +index 1abb08ae..bd84acaf 100644 +--- a/sos/collector/__init__.py ++++ b/sos/collector/__init__.py +@@ -764,6 +764,7 @@ class SoSCollector(SoSComponent): + self.cluster = self.clusters['jbon'] + else: + self.cluster = self.clusters[self.opts.cluster_type] ++ self.cluster_type = self.opts.cluster_type + self.cluster.master = self.master + + else: +-- +2.26.2 + diff --git a/SOURCES/sos-bz1904045-preset-ignores-verbosity.patch b/SOURCES/sos-bz1904045-preset-ignores-verbosity.patch new file mode 100644 index 0000000..608403d --- /dev/null +++ b/SOURCES/sos-bz1904045-preset-ignores-verbosity.patch @@ -0,0 +1,53 @@ +From 169898b47b26734a8cdcb748157f7314f7f8821b Mon Sep 17 00:00:00 2001 +From: Erik Bernoth +Date: Tue, 10 Nov 2020 18:32:40 +0100 +Subject: [PATCH] [component] Add log verbosity from presets + +Closes: #2289 + +The main problem this tries to solve was that preset verbosity was +ignored in logging. + +With a simple test this could be reproduced: +sudo sh -c "source /path/to/repo/sosreport/venv/bin/activate; \ + cd /tmp/foo; sos report --preset sostestpreset; cd -" + +The bug is that without a change of code there are no messages from the +plugin `host` (no lines of output start wiht "[plugin:host]"). + +The problem is that the logging is set in the inherited __init__() method +from Component, but the presets are only handled afterwards in the +Report's __init__(). + +Since it is good to have logging configured from the beginning, the +only option is to reconfigure it after the preset config is known. + +The simplest method is to reinitialize the logging, although maybe not +the most efficient. + +Signed-off-by: Erik Bernoth +Signed-off-by: Jake Hunsaker +--- + sos/report/__init__.py | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/sos/report/__init__.py b/sos/report/__init__.py +index 2e97010b..c6b0c21c 100644 +--- a/sos/report/__init__.py ++++ b/sos/report/__init__.py +@@ -153,6 +153,12 @@ class SoSReport(SoSComponent): + self.opts.merge(self.preset.opts) + # re-apply any cmdline overrides to the preset + self.opts = self.apply_options_from_cmdline(self.opts) ++ if hasattr(self.preset.opts, 'verbosity') and \ ++ self.preset.opts.verbosity > 0: ++ print('\nWARNING: It is not recommended to set verbosity via the ' ++ 'preset as it might have\nunforseen consequences for your ' ++ 'report logs.\n') ++ self._setup_logging() + + self._set_directories() + +-- +2.26.2 + diff --git a/SOURCES/sos-bz1905657-empty-file-stops-zero-sizelimit.patch b/SOURCES/sos-bz1905657-empty-file-stops-zero-sizelimit.patch new file mode 100644 index 0000000..13c05ed --- /dev/null +++ b/SOURCES/sos-bz1905657-empty-file-stops-zero-sizelimit.patch @@ -0,0 +1,56 @@ +From c2ddb50fbbb045daffa6fe5cf489fe47aeef4590 Mon Sep 17 00:00:00 2001 +From: Jake Hunsaker +Date: Wed, 9 Dec 2020 10:21:32 -0500 +Subject: [PATCH] [options] Fix --log-size=0 being ignored and unreported + otherwise + +The `--log-size` option was being silently ignored, due to a too-loose +conditional in `Component.apply_options_from_cmdline()` which was +inadvertently filtering out the option when a user set it to 0. Note +that this did not affect `sos.conf` settings for this same value. + +Similarly, reporting the effective options after preset and cmdline +merging was skipping log-size when it was set to 0, since we normally +want to filter out null-value options (which imply they were not +invoked). Adding an explicit check for `log-size` here is the easiest +route forward to allow the reporting we expect. + +Closes: #2334 +Resolves: #2335 + +Signed-off-by: Jake Hunsaker +--- + sos/component.py | 2 +- + sos/options.py | 3 +++ + 2 files changed, 4 insertions(+), 1 deletion(-) + +diff --git a/sos/component.py b/sos/component.py +index 00f27f5e..69d3b755 100644 +--- a/sos/component.py ++++ b/sos/component.py +@@ -192,7 +192,7 @@ class SoSComponent(): + for opt, val in codict.items(): + if opt not in cmdopts.arg_defaults.keys(): + continue +- if val and val != opts.arg_defaults[opt]: ++ if val is not None and val != opts.arg_defaults[opt]: + setattr(opts, opt, val) + + return opts +diff --git a/sos/options.py b/sos/options.py +index ba3db130..b82a7d36 100644 +--- a/sos/options.py ++++ b/sos/options.py +@@ -282,6 +282,9 @@ class SoSOptions(): + """ + if name in ("add_preset", "del_preset", "desc", "note"): + return False ++ # Exception list for options that still need to be reported when 0 ++ if name in ['log_size', 'plugin_timeout'] and value == 0: ++ return True + return has_value(name, value) + + def argify(name, value): +-- +2.26.2 + diff --git a/SOURCES/sos-bz1906598-collect-broken-symlinks.patch b/SOURCES/sos-bz1906598-collect-broken-symlinks.patch new file mode 100644 index 0000000..2b324b7 --- /dev/null +++ b/SOURCES/sos-bz1906598-collect-broken-symlinks.patch @@ -0,0 +1,56 @@ +From 15e54577289a29e72c636f8987859e91c3a55a7c Mon Sep 17 00:00:00 2001 +From: Pavel Moravec +Date: Thu, 10 Dec 2020 20:23:03 +0100 +Subject: [PATCH] [report] collect broken symlinks + +Information about broken symlink destination is useful information +that sos report should collect. Currently it stops doing so as +stat-ing the symlink to determine filesize fails. + +Closes: #2333 +Resolves: #2338 + +Signed-off-by: Pavel Moravec +Signed-off-by: Jake Hunsaker +--- + sos/report/plugins/__init__.py | 16 ++++++++++------ + 1 file changed, 10 insertions(+), 6 deletions(-) + +diff --git a/sos/report/plugins/__init__.py b/sos/report/plugins/__init__.py +index 510e116e..1527caea 100644 +--- a/sos/report/plugins/__init__.py ++++ b/sos/report/plugins/__init__.py +@@ -1449,11 +1449,16 @@ class Plugin(object): + continue + + try: +- filestat = os.stat(_file) ++ file_size = os.stat(_file)[stat.ST_SIZE] + except OSError: +- self._log_info("failed to stat '%s'" % _file) +- continue +- current_size += filestat[stat.ST_SIZE] ++ # if _file is a broken symlink, we should collect it, ++ # otherwise skip it ++ if os.path.islink(_file): ++ file_size = 0 ++ else: ++ self._log_info("failed to stat '%s', skipping" % _file) ++ continue ++ current_size += file_size + + if sizelimit and current_size > sizelimit: + limit_reached = True +@@ -1467,8 +1472,7 @@ class Plugin(object): + strfile = ( + file_name.replace(os.path.sep, ".") + ".tailed" + ) +- add_size = (sizelimit + filestat[stat.ST_SIZE] +- - current_size) ++ add_size = sizelimit + file_size - current_size + self.add_string_as_file(tail(_file, add_size), strfile) + rel_path = os.path.relpath('/', os.path.dirname(_file)) + link_path = os.path.join(rel_path, 'sos_strings', +-- +2.26.2 + diff --git a/SOURCES/sos-bz1912821-sos-collector-declare-sysroot.patch b/SOURCES/sos-bz1912821-sos-collector-declare-sysroot.patch new file mode 100644 index 0000000..569d680 --- /dev/null +++ b/SOURCES/sos-bz1912821-sos-collector-declare-sysroot.patch @@ -0,0 +1,32 @@ +From debb61f8137c53bdaf8d4473756c68c5e4d5cca2 Mon Sep 17 00:00:00 2001 +From: Pavel Moravec +Date: Tue, 5 Jan 2021 13:35:34 +0100 +Subject: [PATCH] [collector] declare sysroot for each component + +Commit 7f72a36 requires self.sysroot to exist for each component, +but it is not set for sos-collector. Let pre-fill self.sysroot +every time. + +Resolves: #2358 + +Signed-off-by: Pavel Moravec +Signed-off-by: Jake Hunsaker +--- + sos/component.py | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/sos/component.py b/sos/component.py +index bd008761..223c3812 100644 +--- a/sos/component.py ++++ b/sos/component.py +@@ -108,6 +108,7 @@ class SoSComponent(): + try: + import sos.policies + self.policy = sos.policies.load(sysroot=self.opts.sysroot) ++ self.sysroot = self.policy.host_sysroot() + except KeyboardInterrupt: + self._exit(0) + self._is_root = self.policy.is_root() +-- +2.26.2 + diff --git a/SOURCES/sos-bz1912889-plugopts-ignored-in-configfile.patch b/SOURCES/sos-bz1912889-plugopts-ignored-in-configfile.patch new file mode 100644 index 0000000..7a26fac --- /dev/null +++ b/SOURCES/sos-bz1912889-plugopts-ignored-in-configfile.patch @@ -0,0 +1,33 @@ +From cd56e096afc8ef06c215c45cbf025bda60f0169c Mon Sep 17 00:00:00 2001 +From: Pavel Moravec +Date: Tue, 5 Jan 2021 15:06:24 +0100 +Subject: [PATCH] [component] honour plugopts from config file + +Currently, config file plugopts are ignored as we overwrite it +in apply_options_from_cmdline by empty list default value from +cmdline. + +Resolves: #2359 + +Signed-off-by: Pavel Moravec +Signed-off-by: Jake Hunsaker +--- + sos/component.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/sos/component.py b/sos/component.py +index 7774c05a..bd008761 100644 +--- a/sos/component.py ++++ b/sos/component.py +@@ -192,7 +192,7 @@ class SoSComponent(): + for opt, val in codict.items(): + if opt not in cmdopts.arg_defaults.keys(): + continue +- if val is not None and val != opts.arg_defaults[opt]: ++ if val not in [None, [], ''] and val != opts.arg_defaults[opt]: + setattr(opts, opt, val) + + return opts +-- +2.26.2 + diff --git a/SOURCES/sos-bz1912910-empty-file-stops-collecting.patch b/SOURCES/sos-bz1912910-empty-file-stops-collecting.patch new file mode 100644 index 0000000..82ba360 --- /dev/null +++ b/SOURCES/sos-bz1912910-empty-file-stops-collecting.patch @@ -0,0 +1,33 @@ +From 03642cf2e5619f11c762b63c61c9c69fb2b00cdf Mon Sep 17 00:00:00 2001 +From: Pavel Moravec +Date: Tue, 8 Dec 2020 19:33:07 +0100 +Subject: [PATCH] [plugins] Dont stop collecting by empty specfile when + sizelimit=0 + +When sizelimit=0, collecting an empty file would set limit_reached +wrongly and stop collecting further files. Let fix this corner case. + +Resolves: #2330 + +Signed-off-by: Pavel Moravec +Signed-off-by: Jake Hunsaker +--- + sos/report/plugins/__init__.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/sos/report/plugins/__init__.py b/sos/report/plugins/__init__.py +index deb46c93..510e116e 100644 +--- a/sos/report/plugins/__init__.py ++++ b/sos/report/plugins/__init__.py +@@ -1483,7 +1483,7 @@ class Plugin(object): + self._add_copy_paths([_file]) + # in the corner case we just reached the sizelimit, we + # should collect the whole file and stop +- limit_reached = (current_size == sizelimit) ++ limit_reached = (sizelimit and current_size == sizelimit) + if self.manifest: + self.manifest.files.append({ + 'specification': copyspec, +-- +2.26.2 + diff --git a/SOURCES/sos-bz1916729-ftp-upload-no-passwd.patch b/SOURCES/sos-bz1916729-ftp-upload-no-passwd.patch new file mode 100644 index 0000000..6b2b2fc --- /dev/null +++ b/SOURCES/sos-bz1916729-ftp-upload-no-passwd.patch @@ -0,0 +1,35 @@ +From 486a7918934041306bae8ccc11da2196e8f4c9bb Mon Sep 17 00:00:00 2001 +From: Jake Hunsaker +Date: Wed, 13 Jan 2021 10:57:58 -0500 +Subject: [PATCH] [Policy] Handle additional FTP authentication issues + +It was found that some implementations will return a 530 rather than a +503 as the more specific error for incorrect passwords. Handle this +error code explicitly, and then also add a catch-all for any other +ftplib errors that may get raised. + +Resolves: #2368 + +Signed-off-by: Jake Hunsaker +--- + sos/policies/__init__.py | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/sos/policies/__init__.py b/sos/policies/__init__.py +index c5fb4801e..a4f550c96 100644 +--- a/sos/policies/__init__.py ++++ b/sos/policies/__init__.py +@@ -477,9 +477,13 @@ def upload_ftp(self, url=None, directory=None, user=None, password=None): + errno = str(err).split()[0] + if errno == '503': + raise Exception("could not login as '%s'" % user) ++ if errno == '530': ++ raise Exception("invalid password for user '%s'" % user) + if errno == '550': + raise Exception("could not set upload directory to %s" + % directory) ++ raise Exception("error trying to establish session: %s" ++ % str(err)) + + try: + with open(self.upload_archive, 'rb') as _arcfile: diff --git a/SOURCES/sos-bz1917196-networking-ethtool-e-conditionally.patch b/SOURCES/sos-bz1917196-networking-ethtool-e-conditionally.patch new file mode 100644 index 0000000..c64ffa7 --- /dev/null +++ b/SOURCES/sos-bz1917196-networking-ethtool-e-conditionally.patch @@ -0,0 +1,60 @@ +From aca8bd83117e177f2beac6b9434d36d446a7de64 Mon Sep 17 00:00:00 2001 +From: Pavel Moravec +Date: Mon, 18 Jan 2021 22:45:43 +0100 +Subject: [PATCH] [networking] Collect 'ethtool -e ' conditionally only + +EEPROM dump collection might hang on specific types of devices, or +negatively impact the system otherwise. As a safe option, sos report +should collect the command when explicitly asked via a plugopt only. + +Resolves: #2376 + +Signed-off-by: Pavel Moravec +Signed-off-by: Jake Hunsaker +--- + sos/report/plugins/networking.py | 22 +++++++++++----------- + 1 file changed, 11 insertions(+), 11 deletions(-) + +diff --git a/sos/report/plugins/networking.py b/sos/report/plugins/networking.py +index e4236ed9..5bdb697e 100644 +--- a/sos/report/plugins/networking.py ++++ b/sos/report/plugins/networking.py +@@ -27,7 +27,8 @@ class Networking(Plugin): + ("namespaces", "Number of namespaces to collect, 0 for unlimited. " + + "Incompatible with the namespace_pattern plugin option", "slow", 0), + ("ethtool_namespaces", "Define if ethtool commands should be " + +- "collected for namespaces", "slow", True) ++ "collected for namespaces", "slow", True), ++ ("eepromdump", "collect 'ethtool -e' for all devices", "slow", False) + ] + + # switch to enable netstat "wide" (non-truncated) output mode +@@ -141,16 +142,15 @@ class Networking(Plugin): + "ethtool --show-eee " + eth + ], tags=eth) + +- # skip EEPROM collection for 'bnx2x' NICs as this command +- # can pause the NIC and is not production safe. +- bnx_output = { +- "cmd": "ethtool -i %s" % eth, +- "output": "bnx2x" +- } +- bnx_pred = SoSPredicate(self, +- cmd_outputs=bnx_output, +- required={'cmd_outputs': 'none'}) +- self.add_cmd_output("ethtool -e %s" % eth, pred=bnx_pred) ++ # skip EEPROM collection by default, as it might hang or ++ # negatively impact the system on some device types ++ if self.get_option("eepromdump"): ++ cmd = "ethtool -e %s" % eth ++ self._log_warn("WARNING (about to collect '%s'): collecting " ++ "an eeprom dump is known to cause certain NIC " ++ "drivers (e.g. bnx2x/tg3) to interrupt device " ++ "operation" % cmd) ++ self.add_cmd_output(cmd) + + # Collect information about bridges (some data already collected via + # "ip .." commands) +-- +2.26.2 + diff --git a/SOURCES/sos-bz1925419-gluster-pubkeys-statusfile.patch b/SOURCES/sos-bz1925419-gluster-pubkeys-statusfile.patch new file mode 100644 index 0000000..4a5a448 --- /dev/null +++ b/SOURCES/sos-bz1925419-gluster-pubkeys-statusfile.patch @@ -0,0 +1,95 @@ +From 51e8213fd3a83e717fe7ef35d48d5c541b077c5f Mon Sep 17 00:00:00 2001 +From: Jose Castillo +Date: Mon, 8 Feb 2021 16:25:34 +0100 +Subject: [PATCH] [gluster] Add glusterd public keys and status files + +This patch helps capture some missing files in the +gluster plugin, i.e.: + +Files inside /var/lib/glusterd/glusterfind, like +*.status files, that store the required timestamps, +*.pem.pub files, that store ssh public keys. +We also need to omit the glusterfind_*_secret.pem, +which contains the openssh private key. + +Files inside /var/lib/glusterd/.keys, that contains +*.pem.pub, the ssh public key. + +Closes: RHBZ#1925035, RHBZ#1925419 + +Resolves: #2411 + +Signed-off-by: Jose Castillo +Signed-off-by: Jake Hunsaker +--- + sos/report/plugins/gluster.py | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +diff --git a/sos/report/plugins/gluster.py b/sos/report/plugins/gluster.py +index 7b6a9298..e1a89df2 100644 +--- a/sos/report/plugins/gluster.py ++++ b/sos/report/plugins/gluster.py +@@ -55,6 +55,9 @@ class Gluster(Plugin, RedHatPlugin): + + def setup(self): + self.add_forbidden_path("/var/lib/glusterd/geo-replication/secret.pem") ++ self.add_forbidden_path( ++ "/var/lib/glusterd/glusterfind/glusterfind_*_secret.pem" ++ ) + + self.add_cmd_output([ + "gluster peer status", +@@ -72,7 +75,10 @@ class Gluster(Plugin, RedHatPlugin): + "/etc/glusterfs", + "/var/lib/glusterd/", + # collect nfs-ganesha related configuration +- "/run/gluster/shared_storage/nfs-ganesha/" ++ "/run/gluster/shared_storage/nfs-ganesha/", ++ # collect status files and public ssh keys ++ "/var/lib/glusterd/.keys/", ++ "/var/lib/glusterd/glusterfind/" + ] + glob.glob('/run/gluster/*tier-dht/*')) + + if not self.get_option("all_logs"): +-- +2.26.2 + +From 4fb834ec862228afb276ccbd45aa86c66044ea66 Mon Sep 17 00:00:00 2001 +From: Pavel Moravec +Date: Mon, 15 Mar 2021 09:09:51 +0100 +Subject: [PATCH] [gluster] collect public keys from the right dir + +Collection of glusterfind dir is achieved by /var/lib/gluster +so it doesn't be collected explicitly. + +/var/lib/glusterd/glusterfind/.keys/ subdir is required to be +explicitly collected, as add_copy_spec uses glob.glob() that skips +hidden files. + +Resolves: #2451 + +Signed-off-by: Pavel Moravec +Signed-off-by: Jake Hunsaker +--- + sos/report/plugins/gluster.py | 5 ++--- + 1 file changed, 2 insertions(+), 3 deletions(-) + +diff --git a/sos/report/plugins/gluster.py b/sos/report/plugins/gluster.py +index e1a89df2..952cab63 100644 +--- a/sos/report/plugins/gluster.py ++++ b/sos/report/plugins/gluster.py +@@ -76,9 +76,8 @@ class Gluster(Plugin, RedHatPlugin): + "/var/lib/glusterd/", + # collect nfs-ganesha related configuration + "/run/gluster/shared_storage/nfs-ganesha/", +- # collect status files and public ssh keys +- "/var/lib/glusterd/.keys/", +- "/var/lib/glusterd/glusterfind/" ++ # collect public ssh keys (a_s_c skips implicit hidden files) ++ "/var/lib/glusterd/glusterfind/.keys/", + ] + glob.glob('/run/gluster/*tier-dht/*')) + + if not self.get_option("all_logs"): +-- +2.26.2 + diff --git a/SOURCES/sos-bz1928627-networking-ethtool-e-conditionally.patch b/SOURCES/sos-bz1928627-networking-ethtool-e-conditionally.patch deleted file mode 100644 index 38a454e..0000000 --- a/SOURCES/sos-bz1928627-networking-ethtool-e-conditionally.patch +++ /dev/null @@ -1,60 +0,0 @@ -From aca8bd83117e177f2beac6b9434d36d446a7de64 Mon Sep 17 00:00:00 2001 -From: Pavel Moravec -Date: Mon, 18 Jan 2021 22:45:43 +0100 -Subject: [PATCH] [networking] Collect 'ethtool -e ' conditionally only - -EEPROM dump collection might hang on specific types of devices, or -negatively impact the system otherwise. As a safe option, sos report -should collect the command when explicitly asked via a plugopt only. - -Resolves: #2376 - -Signed-off-by: Pavel Moravec -Signed-off-by: Jake Hunsaker ---- - sos/plugins/networking.py | 22 +++++++++++----------- - 1 file changed, 11 insertions(+), 11 deletions(-) - -diff --git a/sos/plugins/networking.py b/sos/plugins/networking.py -index e4236ed9..5bdb697e 100644 ---- a/sos/plugins/networking.py -+++ b/sos/plugins/networking.py -@@ -27,7 +27,8 @@ class Networking(Plugin): - ("namespaces", "Number of namespaces to collect, 0 for unlimited. " + - "Incompatible with the namespace_pattern plugin option", "slow", 0), - ("ethtool_namespaces", "Define if ethtool commands should be " + -- "collected for namespaces", "slow", True) -+ "collected for namespaces", "slow", True), -+ ("eepromdump", "collect 'ethtool -e' for all devices", "slow", False) - ] - - # switch to enable netstat "wide" (non-truncated) output mode -@@ -141,16 +142,15 @@ class Networking(Plugin): - "ethtool --show-eee " + eth - ]) - -- # skip EEPROM collection for 'bnx2x' NICs as this command -- # can pause the NIC and is not production safe. -- bnx_output = { -- "cmd": "ethtool -i %s" % eth, -- "output": "bnx2x" -- } -- bnx_pred = SoSPredicate(self, -- cmd_outputs=bnx_output, -- required={'cmd_outputs': 'none'}) -- self.add_cmd_output("ethtool -e %s" % eth, pred=bnx_pred) -+ # skip EEPROM collection by default, as it might hang or -+ # negatively impact the system on some device types -+ if self.get_option("eepromdump"): -+ cmd = "ethtool -e %s" % eth -+ self._log_warn("WARNING (about to collect '%s'): collecting " -+ "an eeprom dump is known to cause certain NIC " -+ "drivers (e.g. bnx2x/tg3) to interrupt device " -+ "operation" % cmd) -+ self.add_cmd_output(cmd) - - # Collect information about bridges (some data already collected via - # "ip .." commands) --- -2.26.2 - diff --git a/SOURCES/sos-bz1928650-powerpc-nhv-scsi-logs.patch b/SOURCES/sos-bz1928650-powerpc-nhv-scsi-logs.patch new file mode 100644 index 0000000..46bc02c --- /dev/null +++ b/SOURCES/sos-bz1928650-powerpc-nhv-scsi-logs.patch @@ -0,0 +1,101 @@ +From 271c35b9be95cf4957150fd702823fbb46ddaa6b Mon Sep 17 00:00:00 2001 +From: Mamatha Inamdar +Date: Tue, 19 Jan 2021 19:54:26 +0530 +Subject: [PATCH 1/2] [powerpc]:Add support to collect HNV infomation + +This patch is to update powerpc plugin to collect +Hyper-V Network Virtualization information. + +/var/log/hcnmgr -- hybridnetwork debugging messages. Must collect +/var/ct/IBM.DRM.stderr -- DynamicRM log messages +/var/ct/IW/log/mc/IBM.DRM/trace* -- IBM DRM traces +lsdevinfo +ournalctl + +Signed-off-by: Mamatha Inamdar +--- + sos/report/plugins/kernel.py | 1 - + sos/report/plugins/powerpc.py | 9 +++++++-- + 2 files changed, 7 insertions(+), 3 deletions(-) + +diff --git a/sos/report/plugins/kernel.py b/sos/report/plugins/kernel.py +index 27e0e4d00..febe2ad0a 100644 +--- a/sos/report/plugins/kernel.py ++++ b/sos/report/plugins/kernel.py +@@ -106,7 +106,6 @@ def setup(self): + "/proc/misc", + "/var/log/dmesg", + "/sys/fs/pstore", +- "/var/log/hcnmgr", + clocksource_path + "available_clocksource", + clocksource_path + "current_clocksource" + ]) +diff --git a/sos/report/plugins/powerpc.py b/sos/report/plugins/powerpc.py +index d29eb0a63..c63551cad 100644 +--- a/sos/report/plugins/powerpc.py ++++ b/sos/report/plugins/powerpc.py +@@ -63,7 +63,10 @@ def setup(self): + "/proc/ppc64/systemcfg", + "/var/log/platform", + "/var/log/drmgr", +- "/var/log/drmgr.0" ++ "/var/log/drmgr.0", ++ "/var/log/hcnmgr", ++ "/var/ct/IBM.DRM.stderr", ++ "/var/ct/IW/log/mc/IBM.DRM/trace*" + ]) + ctsnap_path = self.get_cmd_output_path(name="ctsnap", make=True) + self.add_cmd_output([ +@@ -74,8 +77,10 @@ def setup(self): + "serv_config -l", + "bootlist -m both -r", + "lparstat -i", +- "ctsnap -xrunrpttr -d %s" % (ctsnap_path) ++ "ctsnap -xrunrpttr -d %s" % (ctsnap_path), ++ "lsdevinfo" + ]) ++ self.add_service_status("hcn-init") + + if isPowerNV: + self.add_copy_spec([ + +From 692eba8eeec6254bdb356a6bfdc8cfa1f77bfbbc Mon Sep 17 00:00:00 2001 +From: Mamatha Inamdar +Date: Tue, 19 Jan 2021 19:58:53 +0530 +Subject: [PATCH 2/2] [scsi]:Add support to collect SCSI debugging logs + +This patch updates scsi plugin to collect +additional logs for SCSI devices + +Signed-off-by: Mamatha Inamdar +--- + sos/report/plugins/scsi.py | 16 ++++++++++++---- + 1 file changed, 12 insertions(+), 4 deletions(-) + +diff --git a/sos/report/plugins/scsi.py b/sos/report/plugins/scsi.py +index 50cfca0f7..28d1396c6 100644 +--- a/sos/report/plugins/scsi.py ++++ b/sos/report/plugins/scsi.py +@@ -29,10 +29,18 @@ def setup(self): + ]) + + self.add_cmd_output("lsscsi -i", suggest_filename="lsscsi") +- self.add_cmd_output("sg_map -x") +- self.add_cmd_output("lspath") +- self.add_cmd_output("lsmap -all") +- self.add_cmd_output("lsnports") ++ ++ self.add_cmd_output([ ++ "sg_map -x", ++ "lspath", ++ "lsmap -all", ++ "lsnports", ++ "lsscsi -H", ++ "lsscsi -g", ++ "lsscsi -d", ++ "lsscsi -s", ++ "lsscsi -L" ++ ]) + + scsi_hosts = glob("/sys/class/scsi_host/*") + self.add_blockdev_cmd("udevadm info -a %(dev)s", devices=scsi_hosts, diff --git a/SPECS/sos.spec b/SPECS/sos.spec index 6fbe967..831a5e3 100644 --- a/SPECS/sos.spec +++ b/SPECS/sos.spec @@ -4,8 +4,8 @@ Summary: A set of tools to gather troubleshooting information from a system Name: sos -Version: 3.9.1 -Release: 7%{?dist} +Version: 4.0 +Release: 11%{?dist} Group: Applications/System Source0: https://github.com/sosreport/sos/archive/%{version}/sos-%{version}.tar.gz Source1: sos-audit-%{auditversion}.tgz @@ -13,34 +13,36 @@ License: GPLv2+ BuildArch: noarch Url: http://github.com/sosreport/sos BuildRequires: python3-devel -BuildRequires: python3-six BuildRequires: gettext Requires: libxml2-python3 Requires: bzip2 Requires: xz -Requires: python3-six Conflicts: vdsm < 4.40 -Patch1: sos-bz1825283-env-host-in-container.patch -Patch2: sos-bz1823488-containers-common.patch -Patch3: sos-bz1819662-rabbitmqctl-on-foreground.patch -Patch4: sos-bz1814867-insights-archive.patch -Patch5: sos-bz1785546-nvmetcli.patch -Patch6: sos-bz1776549-podman-buildah-rootless.patch -Patch7: sos-bz1633006-iptables-kmods.patch -Patch8: sos-bz1457191-navicli-noniteractively.patch -Patch9: sos-bz1838123-xdp-plugin.patch -Patch10: sos-bz1843562-gluster-volume-specific.patch -Patch11: sos-bz1844853-nfs-etc-exports.patch -Patch12: sos-bz1845386-pacemaker-passwords-with-equal-sign.patch -Patch13: sos-bz1843754-powerpc-logs-for-components.patch -Patch14: sos-bz1850926-logs-no-journal.patch -Patch15: sos-bz1850554-luks-not-detected.patch -Patch16: sos-bz1851923-powerpc-missing-logs.patch -Patch17: sos-bz1853700-pci-too-strong-condition.patch -Patch18: sos-bz1857590-gluster-removes-sockfiles.patch -Patch19: sos-bz1859888-kubernetes-indexerror-on-nodes.patch -Patch20: sos-bz1869724-ethtool-not-on-bnx2x.patch -Patch21: sos-bz1928627-networking-ethtool-e-conditionally.patch +Obsoletes: sos-collector +Recommends: python3-pexpect +Patch1: sos-bz1827801-streamlined-sanitize_item.patch +Patch2: sos-bz1874295-osp-ironic-inspector-configs.patch +Patch3: sos-bz1880372-power-logs.patch +Patch4: sos-bz1881118-crio-conf-d.patch +Patch5: sos-bz1882368-upload-functionality-issues.patch +Patch6: sos-bz1886782-exclude-panfs.patch +Patch7: sos-bz1887390-kdump-logfiles.patch +Patch8: sos-bz1888012-stratis-new-feature-output.patch +Patch9: sos-bz1891562-tmp-dir-relative-path.patch +Patch10: sos-bz1848095-collect-rhev-pki.patch +Patch11: sos-bz1895316-collector--cluster-type.patch +Patch12: sos-bz1904045-preset-ignores-verbosity.patch +Patch13: sos-bz1905657-empty-file-stops-zero-sizelimit.patch +Patch14: sos-bz1906598-collect-broken-symlinks.patch +Patch15: sos-bz1912889-plugopts-ignored-in-configfile.patch +Patch16: sos-bz1912821-sos-collector-declare-sysroot.patch +Patch17: sos-bz1912910-empty-file-stops-collecting.patch +Patch18: sos-bz1917196-networking-ethtool-e-conditionally.patch +Patch19: sos-bz1887402-kexec-logs.patch +Patch20: sos-bz1916729-ftp-upload-no-passwd.patch +Patch21: sos-bz1925419-gluster-pubkeys-statusfile.patch +Patch22: sos-bz1928650-powerpc-nhv-scsi-logs.patch + %description Sos is a set of tools that gathers information about system @@ -50,6 +52,7 @@ support technicians and developers. %prep %setup -qn %{name}-%{version} +%setup -T -D -a1 -q %patch1 -p1 %patch2 -p1 %patch3 -p1 @@ -71,7 +74,7 @@ support technicians and developers. %patch19 -p1 %patch20 -p1 %patch21 -p1 -%setup -T -D -a1 -q +%patch22 -p1 %build %py3_build @@ -79,7 +82,7 @@ support technicians and developers. %install %py3_install '--install-scripts=%{_sbindir}' -install -Dm644 %{name}.conf %{buildroot}%{_sysconfdir}/%{name}.conf +install -Dm644 %{name}.conf %{buildroot}%{_sysconfdir}/%{name}/%{name}.conf %find_lang %{name} || echo 0 @@ -87,14 +90,25 @@ cd %{name}-audit-%{auditversion} DESTDIR=%{buildroot} ./install.sh cd .. +mkdir -p %{buildroot}%{_sysconfdir}/sos/cleaner + %files -f %{name}.lang %{_sbindir}/sosreport +%{_sbindir}/sos +%{_sbindir}/sos-collector %{python3_sitelib}/* %{_mandir}/man1/sosreport.1.gz +%{_mandir}/man1/sos-clean.1.gz +%{_mandir}/man1/sos-collect.1.gz +%{_mandir}/man1/sos-collector.1.gz +%{_mandir}/man1/sos-mask.1.gz +%{_mandir}/man1/sos-report.1.gz +%{_mandir}/man1/sos.1.gz %{_mandir}/man5/sos.conf.5.gz %doc AUTHORS README.md %license LICENSE -%config(noreplace) %{_sysconfdir}/sos.conf +%config(noreplace) %{_sysconfdir}/sos/sos.conf +%config(noreplace) %{_sysconfdir}/sos/cleaner %package audit Summary: Audit use of some commands for support purposes @@ -123,12 +137,79 @@ of the system. Currently storage and filesystem commands are audited. %ghost /etc/audit/rules.d/40-sos-storage.rules %changelog -* Tue Apr 06 2021 CentOS Sources - 3.9.1-7.el8.centos -- Apply debranding changes +* Wed Mar 17 2021 Pavel Moravec = 4.0-11 +- [gluster] collect public keys from the right dir + Resolves: bz1925419 + +* Thu Mar 11 2021 Pavel Moravec = 4.0-10 +- [powerpc] Collect logs for power specific components (HNV and SCSI) + Resolves: bz1928650 + +* Fri Mar 05 2021 Pavel Moravec = 4.0-9 +- [gluster] Add glusterd public keys and status files + Resolves: bz1925419 + +* Tue Feb 16 2021 Pavel Moravec = 4.0-8 +- Automatically create directory for sos-cleaner default_mapping + Resolves: bz1923937 + +* Fri Jan 29 2021 Pavel Moravec = 4.0-7 +- [kdump] Gather the file kexec-dmesg.log + Resolves: bz1887402 +- [Policy] Handle additional FTP authentication issues + Resolves: bz1916729 -* Mon Feb 15 2021 Pavel Moravec = 3.9.1-7 +* Thu Jan 21 2021 Pavel Moravec = 4.0-6 - [networking] Collect 'ethtool -e ' conditionally only - Resolves: bz1928627 + Resolves: bz1917196 + +* Wed Jan 06 2021 Pavel Moravec = 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 = 4.0-4 +- [component] Use sysroot from Policy when opts doesn't specify it + Resolves: bz1881118 + +* Mon Dec 14 2020 Pavel Moravec = 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 = 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 = 4.0-1 +- Rebase on upstream 4.0 + Resolves: bz1827801 * Wed Aug 19 2020 Pavel Moravec = 3.9.1-6 - [networking] remove 'ethtool -e' option for bnx2x NICs