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/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 <pmoravec@redhat.com>
-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 <pmoravec@redhat.com>
-Signed-off-by: Bryan Quigley <bryan.quigley@canonical.com>
----
- 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 <pmoravec@redhat.com>
-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 <pmoravec@redhat.com>
-Signed-off-by: Bryan Quigley <bryan.quigley@canonical.com>
----
- 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 <pmoravec@redhat.com>
-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 <pmoravec@redhat.com>
-Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
----
- 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 <pmoravec@redhat.com>
-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 <pmoravec@redhat.com>
-Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
----
- 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 <pmoravec@redhat.com>
-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 <pmoravec@redhat.com>
-Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
----
- 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 <pmoravec@redhat.com>
-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 <pmoravec@redhat.com>
-Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
----
- 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 <pmoravec@redhat.com>
-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 <pmoravec@redhat.com>
-Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
----
- 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 <nyewale@redhat.com>
-+
-+# 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 <pmoravec@redhat.com>
-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 <pmoravec@redhat.com>
-Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
----
- 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 <pmoravec@redhat.com>
-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 <pmoravec@redhat.com>
-Signed-off-by: Bryan Quigley <bryan.quigley@canonical.com>
----
- 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 <pmoravec@redhat.com>
-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 <pmoravec@redhat.com>
-Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
----
- 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 <pmoravec@redhat.com>
-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 <pmoravec@redhat.com>
-Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
----
- 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 <pmoravec@redhat.com>
-+
-+# 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 <robb.manes@gmail.com>
-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 <rmanes@redhat.com>
-Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
----
- 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 <pmoravec@redhat.com>
+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 <pmoravec@redhat.com>
+Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
+---
+ 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?= <toke@redhat.com>
-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 <toke@redhat.com>
-Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
----
- 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 <pmoravec@redhat.com>
-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 <pmoravec@redhat.com>
-Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
----
- 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 <mamatha4@linux.vnet.ibm.com>
-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 <mamatha4@linux.vnet.ibm.com>
-Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
----
- 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 <mamatha4@linux.vnet.ibm.com>
-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 <mamatha4@linux.vnet.ibm.com>
-Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
----
- 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 <mamatha4@linux.vnet.ibm.com>
-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 <mamatha4@linux.vnet.ibm.com>
-Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
----
- 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 <mamatha4@linux.vnet.ibm.com>
-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 <mamatha4@linux.vnet.ibm.com>
-Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
----
- 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 <pmoravec@redhat.com>
-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 <pmoravec@redhat.com>
-Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
----
- 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 <eteo@redhat.com>
--
--# 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 <nrwahl@protonmail.com>
-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 <nrwahl@protonmail.com>
-Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
----
- 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-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 <jhunsake@redhat.com>
-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 <jhunsake@redhat.com>
----
- 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 <pmoravec@redhat.com>
-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 <pmoravec@redhat.com>
----
- 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 <jhunsake@redhat.com>
-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 <jhunsake@redhat.com>
----
- 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 <jhunsake@redhat.com>
-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 <jhunsake@redhat.com>
----
- 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 <jjansky@redhat.com>
-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 <jjansky@redhat.com>
-Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
----
- 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 <jjansky@redhat.com>
-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 <jjansky@redhat.com>
-Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
----
- 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 <pmoravec@redhat.com>
-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 <pmoravec@redhat.com>
-Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
----
- 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 <suresh2514@gmail.com>
-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 <suresh2514@gmail.com>
-Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
----
- 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 <dvd@redhat.com>
+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 <dvd@redhat.com>
+Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
+---
+ 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 <mamatha4@linux.vnet.ibm.com>
+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 <mamatha4@linux.vnet.ibm.com>
+Reported-by: Borislav Stoymirski <borislav.stoymirski@bg.ibm.com>
+Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
+---
+ 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 <mamatha4@linux.vnet.ibm.com>
+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 <mamatha4@linux.vnet.ibm.com>
+Reported-by: Borislav Stoymirski <borislav.stoymirski@bg.ibm.com>
+Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
+---
+ 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 <mamatha4@linux.vnet.ibm.com>
+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 <mamatha4@linux.vnet.ibm.com>
+Reported-by: Luciano Chavez <lnx1138@linux.vnet.ibm.com>
+Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
+---
+ 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 <mamatha4@linux.vnet.ibm.com>
+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 <mamatha4@linux.vnet.ibm.com>
+Reported-by: Borislav Stoymirski <borislav.stoymirski@bg.ibm.com>
+Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
+---
+ 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 <mamatha4@linux.vnet.ibm.com>
+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 <mamatha4@linux.vnet.ibm.com>
+Reported-by: Borislav Stoymirski <borislav.stoymirski@bg.ibm.com>
+Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
+---
+ 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..905a00b
--- /dev/null
+++ b/SOURCES/sos-bz1881118-crio-conf-d.patch
@@ -0,0 +1,30 @@
+From 019f7c49768f27ef15f39d80db8a03b2aaa453ee Mon Sep 17 00:00:00 2001
+From: Pavel Moravec <pmoravec@redhat.com>
+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 <pmoravec@redhat.com>
+Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
+---
+ 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
+
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 <jhunsake@redhat.com>
+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 <jhunsake@redhat.com>
+---
+ 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 <jhunsake@redhat.com>
+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 <jhunsake@redhat.com>
+---
+ 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 <jhunsake@redhat.com>
+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 <jhunsake@redhat.com>
+---
+ 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 <pmoravec@redhat.com>
+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 <pmoravec@redhat.com>
+Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
+---
+ 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?= <rmetrich@redhat.com>
+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 <rmetrich@redhat.com>
+Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
+---
+ 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 <jcastillo@redhat.com>
+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 <jcastillo@redhat.com>
+Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
+---
+ 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-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 <pmoravec@redhat.com>
+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 <pmoravec@redhat.com>
+Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
+---
+ 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 <jhunsake@redhat.com>
+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 <jhunsake@redhat.com>
+---
+ 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/SPECS/sos.spec b/SPECS/sos.spec
index 3e43267..6fad6b4 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: 6%{?dist}
+Version: 4.0
+Release: 2%{?dist}
 Group: Applications/System
 Source0: https://github.com/sosreport/sos/archive/%{version}/sos-%{version}.tar.gz
 Source1: sos-audit-%{auditversion}.tgz
@@ -20,26 +20,16 @@ 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
+Obsoletes: sos-collector
+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
 
 %description
 Sos is a set of tools that gathers information about system
@@ -49,6 +39,7 @@ support technicians and developers.
 
 %prep
 %setup -qn %{name}-%{version}
+%setup -T -D -a1 -q
 %patch1 -p1
 %patch2 -p1
 %patch3 -p1
@@ -58,18 +49,6 @@ support technicians and developers.
 %patch7 -p1
 %patch8 -p1
 %patch9 -p1
-%patch10 -p1
-%patch11 -p1
-%patch12 -p1
-%patch13 -p1
-%patch14 -p1
-%patch15 -p1
-%patch16 -p1
-%patch17 -p1
-%patch18 -p1
-%patch19 -p1
-%patch20 -p1
-%setup -T -D -a1 -q
 
 %build
 %py3_build
@@ -87,8 +66,16 @@ cd ..
 
 %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
@@ -121,6 +108,30 @@ of the system.  Currently storage and filesystem commands are audited.
 %ghost /etc/audit/rules.d/40-sos-storage.rules
 
 %changelog
+* Thu Oct 29 2020 Pavel Moravec <pmoravec@redhat.com> = 4.0-2
+- [cleaner] more streamlined sanitize_item method
+  Resolves: bz1827801
+- [openstack_ironic] Missing ironic-inspector configs
+  Resolves: bz1874295
+- Add support to collect hardware component logs
+  Resolves: bz1880372
+- [crio] collect /etc/crio/crio.conf.d/
+  Resolves: bz1881118
+- [policy] Handle additional failure conditions for FTP uploads
+  Resolves: bz1882368
+- [filesys] never collect content of /proc/fs/panfs
+  Resolves: bz1886782
+- [kdump] Collect new kdump logfiles
+  Resolves: bz1887390
+- [stratis] Collect key list and report engine
+  Resolves: bz1888012
+- return tmp-dir with absolute path
+  Resolves: bz1891562
+
+* Tue Oct 13 2020 Pavel Moravec <pmoravec@redhat.com> = 4.0-1
+- Rebase on upstream 4.0
+  Resolves: bz1827801
+
 * Wed Aug 19 2020 Pavel Moravec <pmoravec@redhat.com> = 3.9.1-6
 - [networking] remove 'ethtool -e' option for bnx2x NICs
   Resolves: bz1869724