diff --git a/.gitignore b/.gitignore
index 1b546cb..f9c6614 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1 @@
-SOURCES/sos-3.2.tar.gz
+SOURCES/3.3.tar.gz
diff --git a/.sos.metadata b/.sos.metadata
index 43e2b07..96cfd56 100644
--- a/.sos.metadata
+++ b/.sos.metadata
@@ -1 +1 @@
-305adf65f683708e42114bea2d01ad8c795e2503 SOURCES/sos-3.2.tar.gz
+e2272fd13fb18c4a8b1bef690286ea3dacd4c407 SOURCES/3.3.tar.gz
diff --git a/SOURCES/skip-generating-doc.patch b/SOURCES/skip-generating-doc.patch
new file mode 100644
index 0000000..6508f3c
--- /dev/null
+++ b/SOURCES/skip-generating-doc.patch
@@ -0,0 +1,25 @@
+diff -rup a/Makefile b/Makefile
+--- a/Makefile	2016-06-29 20:24:47.000000000 +0200
++++ b/Makefile	2016-06-30 11:10:15.471685702 +0200
+@@ -9,7 +9,7 @@ MINOR   := $(shell echo $(VERSION) | cut
+ RELEASE := $(shell echo `awk '/^Release:/ {gsub(/\%.*/,""); print $2}' sos.spec`)
+ REPO = https://github.com/sosreport/sos
+ 
+-SUBDIRS = po sos sos/plugins sos/policies docs
++SUBDIRS = po sos sos/plugins sos/policies #docs
+ PYFILES = $(wildcard *.py)
+ # OS X via brew
+ # MSGCAT = /usr/local/Cellar/gettext/0.18.1.1/bin/msgcat
+@@ -30,9 +30,9 @@ DEB_ARCHIVE_DIR = $(DIST_BUILD_DIR)/$(NA
+ SRC_BUILD = $(DIST_BUILD_DIR)/sdist
+ PO_DIR = $(SRC_BUILD)/sos/po
+ 
+-.PHONY: docs
+-docs:
+-	make -C docs html man
++#.PHONY: docs
++#docs:
++#	make -C docs html man
+ 
+ build:
+ 	for d in $(SUBDIRS); do make -C $$d; [ $$? = 0 ] || exit 1 ; done
diff --git a/SOURCES/sos-bz1026962-ctdb-fix-redhatplugin-tagging-use.patch b/SOURCES/sos-bz1026962-ctdb-fix-redhatplugin-tagging-use.patch
deleted file mode 100644
index 9164028..0000000
--- a/SOURCES/sos-bz1026962-ctdb-fix-redhatplugin-tagging-use.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From 12ec2a4643c844a7a9bf46f3d9557e38f0ae7403 Mon Sep 17 00:00:00 2001
-From: "Bryn M. Reeves" <bmr@redhat.com>
-Date: Mon, 19 Jan 2015 18:47:03 +0000
-Subject: [PATCH] [ctdb] fix RedHatPlugin tagging use
-
-The generic Ctdb class is tagged with RedHatPlugin. This causes
-the RedHatCtdb to not execute (since only the first matching class
-is instantiated).
-
-Remove the RedHatPlugin tag from the Ctdb class and fix the
-former's call to Ctdb.setup().
-
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/plugins/ctdb.py | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/sos/plugins/ctdb.py b/sos/plugins/ctdb.py
-index 443181c..e1bd78e 100644
---- a/sos/plugins/ctdb.py
-+++ b/sos/plugins/ctdb.py
-@@ -16,7 +16,7 @@
- from sos.plugins import Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin
- 
- 
--class Ctdb(Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin):
-+class Ctdb(Plugin, DebianPlugin, UbuntuPlugin):
-     """Samba Clustered TDB
-     """
-     packages = ('ctdb',)
-@@ -45,7 +45,7 @@ class Ctdb(Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin):
- 
- class RedHatCtdb(Ctdb, RedHatPlugin):
-     def setup(self):
--        super(RedHatCtdb, self).super()
-+        super(RedHatCtdb, self).setup()
-         self.add_copy_spec("/etc/sysconfig/ctdb")
- 
- # vim: et ts=4 sw=4
--- 
-1.9.3
-
diff --git a/SOURCES/sos-bz1026962-plugin-limit-names-to-pc_name_max.patch b/SOURCES/sos-bz1026962-plugin-limit-names-to-pc_name_max.patch
deleted file mode 100644
index fca14ce..0000000
--- a/SOURCES/sos-bz1026962-plugin-limit-names-to-pc_name_max.patch
+++ /dev/null
@@ -1,118 +0,0 @@
-From 48a99c95078bab306cb56bb1a05420d88bf15a64 Mon Sep 17 00:00:00 2001
-From: "Bryn M. Reeves" <bmr@redhat.com>
-Date: Mon, 20 Oct 2014 16:12:01 +0100
-Subject: [PATCH] [plugin] limit names to PC_NAME_MAX
-
-Commit 8bf7b0c removed the truncation of mangled command names to
-64 chars. This causes problems for some plugins (e.g. Issue #415)
-that generate long enough command lines to hit system name length
-limits.
-
-Instead of arbitrarily limiting to 64 characters limit to the
-lesser of the archive format limit (if present) or the value of
-PC_NAME_MAX for any intermediate FileCacheArchive path.
-
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/archive.py          | 18 ++++++++++++++++++
- sos/plugins/__init__.py |  7 ++++---
- tests/plugin_tests.py   | 12 ++++++++----
- 3 files changed, 30 insertions(+), 7 deletions(-)
-
-diff --git a/sos/archive.py b/sos/archive.py
-index 2e42bbd..6063625 100644
---- a/sos/archive.py
-+++ b/sos/archive.py
-@@ -98,6 +98,12 @@ class Archive(object):
-         to be included in the generated archive."""
-         raise NotImplementedError
- 
-+    def name_max(self):
-+        """Return the maximum file name length this archive can support.
-+        This is the lesser of the name length limit of the archive
-+        format and any temporary file system based cache."""
-+        raise NotImplementedError
-+
-     def get_archive_path(self):
-         """Return a string representing the path to the temporary
-         archive. For archive classes that implement in-line handling
-@@ -206,6 +212,13 @@ class FileCacheArchive(Archive):
-     def _makedirs(self, path, mode=0o700):
-         os.makedirs(path, mode)
- 
-+    def name_max(self):
-+        if 'PC_NAME_MAX' in os.pathconf_names:
-+            pc_name_max = os.pathconf_names['PC_NAME_MAX']
-+            return os.pathconf(self._archive_root, pc_name_max)
-+        else:
-+            return 255
-+
-     def get_tmp_dir(self):
-         return self._archive_root
- 
-@@ -355,6 +368,11 @@ class TarFileArchive(FileCacheArchive):
-     def name(self):
-         return "%s.%s" % (self._name, self._suffix)
- 
-+    def name_max(self):
-+        # GNU Tar format supports unlimited file name length. Just return
-+        # the limit of the underlying FileCacheArchive.
-+        return super(TarFileArchive, self).name_max()
-+
-     def _build_archive(self):
-         # python2.6 TarFile lacks the filter parameter
-         if not six.PY3 and sys.version_info[1] < 7:
-diff --git a/sos/plugins/__init__.py b/sos/plugins/__init__.py
-index 3e39100..b289144 100644
---- a/sos/plugins/__init__.py
-+++ b/sos/plugins/__init__.py
-@@ -42,11 +42,11 @@ def regex_findall(regex, fname):
-         return []
- 
- 
--def _mangle_command(command):
--    # FIXME: this can be improved
-+def _mangle_command(command, name_max):
-     mangledname = re.sub(r"^/(usr/|)(bin|sbin)/", "", command)
-     mangledname = re.sub(r"[^\w\-\.\/]+", "_", mangledname)
-     mangledname = re.sub(r"/", ".", mangledname).strip(" ._-")
-+    mangledname = mangledname[0:name_max]
-     return mangledname
- 
- 
-@@ -518,7 +518,8 @@ class Plugin(object):
-         return grep(regexp, *fnames)
- 
-     def _mangle_command(self, exe):
--        return _mangle_command(exe)
-+        name_max = self.archive.name_max()
-+        return _mangle_command(exe, name_max)
- 
-     def _make_command_filename(self, exe):
-         """The internal function to build up a filename based on a command."""
-diff --git a/tests/plugin_tests.py b/tests/plugin_tests.py
-index 817e4f2..f73a003 100644
---- a/tests/plugin_tests.py
-+++ b/tests/plugin_tests.py
-@@ -115,10 +115,14 @@ class PluginToolTests(unittest.TestCase):
-         self.assertEquals(matches, [])
- 
-     def test_mangle_command(self):
--        self.assertEquals("foo", _mangle_command("/usr/bin/foo"))
--        self.assertEquals("foo_-x", _mangle_command("/usr/bin/foo -x"))
--        self.assertEquals("foo_--verbose", _mangle_command("/usr/bin/foo --verbose"))
--        self.assertEquals("foo_.path.to.stuff", _mangle_command("/usr/bin/foo /path/to/stuff"))
-+        name_max = 255
-+        self.assertEquals("foo", _mangle_command("/usr/bin/foo", name_max))
-+        self.assertEquals("foo_-x", _mangle_command("/usr/bin/foo -x", name_max))
-+        self.assertEquals("foo_--verbose", _mangle_command("/usr/bin/foo --verbose", name_max))
-+        self.assertEquals("foo_.path.to.stuff", _mangle_command("/usr/bin/foo /path/to/stuff", name_max))
-+        longcmd ="foo is " + "a" * 256 + " long_command"
-+        expected = longcmd[0:name_max].replace(' ', '_')
-+        self.assertEquals(expected, _mangle_command(longcmd, name_max))
- 
- 
- class PluginTests(unittest.TestCase):
--- 
-1.9.3
-
diff --git a/SOURCES/sos-bz1026962-sosreport-fix-silent-exception-handling.patch b/SOURCES/sos-bz1026962-sosreport-fix-silent-exception-handling.patch
deleted file mode 100644
index b3daec4..0000000
--- a/SOURCES/sos-bz1026962-sosreport-fix-silent-exception-handling.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-diff -up sos-3.2/sos/sosreport.py.orig sos-3.2/sos/sosreport.py
---- sos-3.2/sos/sosreport.py.orig	2015-01-20 14:39:34.149596845 +0000
-+++ sos-3.2/sos/sosreport.py	2015-01-20 14:39:56.132654519 +0000
-@@ -1131,11 +1131,13 @@ class SoSReport(object):
-                                       % e.strerror)
-                     self.ui_log.error("")
-                     self._exit(1)
-+                if self.raise_plugins:
-+                    raise
-+                self._log_plugin_exception(plugname, "setup")
-             except:
-                 if self.raise_plugins:
-                     raise
--                else:
--                    self._log_plugin_exception(plugname, "setup")
-+                self._log_plugin_exception(plugname, "setup")
- 
-     def version(self):
-         """Fetch version information from all plugins and store in the report
-@@ -1177,11 +1179,13 @@ class SoSReport(object):
-                                       % e.strerror)
-                     self.ui_log.error("")
-                     self._exit(1)
-+                if self.raise_plugins:
-+                    raise
-+                self._log_plugin_exception(plugname, "collect")
-             except:
-                 if self.raise_plugins:
-                     raise
--                else:
--                    self._log_plugin_exception(plugname, "collect")
-+                self._log_plugin_exception(plugname, "collect")
-         self.ui_log.info("")
- 
-     def report(self):
-@@ -1324,12 +1328,13 @@ class SoSReport(object):
-                                       % e.strerror)
-                     self.ui_log.error("")
-                     self._exit(1)
-+                if self.raise_plugins:
-+                    raise
-+                self._log_plugin_exception(plugname, "postproc")
-             except:
-                 if self.raise_plugins:
-                     raise
--                else:
--                    self._log_plugin_exception(plugname, "postproc")
--
-+                self._log_plugin_exception(plugname, "postproc")
- 
-     def final_work(self):
-         # this must come before archive creation to ensure that log
diff --git a/SOURCES/sos-bz1026962-sosreport-log-plugin-exceptions-to-file.patch b/SOURCES/sos-bz1026962-sosreport-log-plugin-exceptions-to-file.patch
deleted file mode 100644
index 069f186..0000000
--- a/SOURCES/sos-bz1026962-sosreport-log-plugin-exceptions-to-file.patch
+++ /dev/null
@@ -1,67 +0,0 @@
-From 8b49485153cc7dc03cd974dbc3a100c81ef04720 Mon Sep 17 00:00:00 2001
-From: "Bryn M. Reeves" <bmr@redhat.com>
-Date: Mon, 19 Jan 2015 19:40:06 +0000
-Subject: [PATCH] [sosreport] log plugin exceptions to a file
-
-Add exception logging for the Plugin.postproc() method and move
-plugin exceptions into a separate per-plugin log file. This is
-less cluttered than pushing a multi-line traceback through the
-soslog.error logger and matches the behaviour of older releases.
-
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/sosreport.py | 17 +++++++++++++----
- 1 file changed, 13 insertions(+), 4 deletions(-)
-
-diff --git a/sos/sosreport.py b/sos/sosreport.py
-index 3c0397c..f17194a 100644
---- a/sos/sosreport.py
-+++ b/sos/sosreport.py
-@@ -1071,8 +1071,14 @@ class SoSReport(object):
-                 self.ui_log.info("")
-                 self._exit()
- 
--    def _log_plugin_exception(self, plugin_name):
--        self.soslog.error("%s\n%s" % (plugin_name, traceback.format_exc()))
-+    def _log_plugin_exception(self, plugin, method):
-+        trace = traceback.format_exc()
-+        msg = "caught exception in plugin method"
-+        plugin_err_log = "%s-plugin-errors.txt" % plugin
-+        logpath = os.path.join(self.logdir, plugin_err_log)
-+        self.soslog.error('%s "%s.%s()"' % (msg, plugin, method))
-+        self.soslog.error('writing traceback to %s' % logpath)
-+        self.archive.add_string("%s\n" % trace, logpath)
- 
-     def prework(self):
-         self.policy.pre_work()
-@@ -1129,7 +1135,7 @@ class SoSReport(object):
-                 if self.raise_plugins:
-                     raise
-                 else:
--                    self._log_plugin_exception(plugname)
-+                    self._log_plugin_exception(plugname, "setup")
- 
-     def version(self):
-         """Fetch version information from all plugins and store in the report
-@@ -1175,7 +1181,7 @@ class SoSReport(object):
-                 if self.raise_plugins:
-                     raise
-                 else:
--                    self._log_plugin_exception(plugname)
-+                    self._log_plugin_exception(plugname, "collect")
-         self.ui_log.info("")
- 
-     def report(self):
-@@ -1321,6 +1327,9 @@ class SoSReport(object):
-             except:
-                 if self.raise_plugins:
-                     raise
-+                else:
-+                    self._log_plugin_exception(plugname, "postproc")
-+
- 
-     def final_work(self):
-         # this must come before archive creation to ensure that log
--- 
-1.9.3
-
diff --git a/SOURCES/sos-bz1026962-squid-collect-var-log-squid.patch b/SOURCES/sos-bz1026962-squid-collect-var-log-squid.patch
deleted file mode 100644
index 0ad4c03..0000000
--- a/SOURCES/sos-bz1026962-squid-collect-var-log-squid.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From d0408ac43e1ec3b114e69b2950202f87f2fcd250 Mon Sep 17 00:00:00 2001
-From: "Bryn M. Reeves" <bmr@redhat.com>
-Date: Mon, 19 Jan 2015 18:12:15 +0000
-Subject: [PATCH] [squid] collect logs from /var/log/squid
-
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/plugins/squid.py | 8 ++++++--
- 1 file changed, 6 insertions(+), 2 deletions(-)
-
-diff --git a/sos/plugins/squid.py b/sos/plugins/squid.py
-index 0d596e5..f1aea73 100644
---- a/sos/plugins/squid.py
-+++ b/sos/plugins/squid.py
-@@ -29,8 +29,12 @@ class RedHatSquid(Squid, RedHatPlugin):
-     packages = ('squid',)
- 
-     def setup(self):
--        self.add_copy_spec_limit("/etc/squid/squid.conf",
--                                 sizelimit=self.get_option('log_size'))
-+        log_size = self.get_option('log_size')
-+        log_path = "/var/log/squid/"
-+        self.add_copy_spec_limit("/etc/squid/squid.conf", sizelimit=log_size)
-+        self.add_copy_spec_limit(log_path + "access.log", sizelimit=log_size)
-+        self.add_copy_spec_limit(log_path + "cache.log", sizelimit=log_size)
-+        self.add_copy_spec_limit(log_path + "squid.out", sizelimit=log_size)
- 
- 
- class DebianSquid(Squid, DebianPlugin, UbuntuPlugin):
--- 
-1.9.3
-
diff --git a/SOURCES/sos-bz1083656-cluster-data-ownership.patch b/SOURCES/sos-bz1083656-cluster-data-ownership.patch
deleted file mode 100644
index 0ccabaa..0000000
--- a/SOURCES/sos-bz1083656-cluster-data-ownership.patch
+++ /dev/null
@@ -1,188 +0,0 @@
-From bb1e81e0d3d738f2f333175fc32987ed473edd8d Mon Sep 17 00:00:00 2001
-From: Shane Bradley <sbradley@redhat.com>
-Date: Fri, 6 Feb 2015 11:24:26 -0500
-Subject: [PATCH] [cluster] remove some files and commands that are no longer
- needed
-
-Removed some of the files and commands that are no longer needed on
-RHEL6+.  In addition, the gfs_lockdump option did not capture gfs2 lock
-dumps.  The option is now called gfs2_lockdump and will mount the
-/sys/kernel/debug directory and the gfs2 lockdumps will be copied from
-that mount point.
-
-In addition added a couple files that are needed for pacemaker/dlm.
-
-Resolves: rhbz#1083656
-
-Signed-off-by: Shane Bradley <sbradley@redhat.com>
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/plugins/cluster.py | 66 +++++++++++++++++++++++++++++---------------------
- 1 file changed, 39 insertions(+), 27 deletions(-)
-
-diff --git a/sos/plugins/cluster.py b/sos/plugins/cluster.py
-index 9b5eb22..a84d3e2 100644
---- a/sos/plugins/cluster.py
-+++ b/sos/plugins/cluster.py
-@@ -14,18 +14,19 @@
- 
- from sos.plugins import Plugin, RedHatPlugin
- import re
-+import os.path
- from glob import glob
- from datetime import datetime, timedelta
- 
- 
- class Cluster(Plugin, RedHatPlugin):
--    """Red Hat Cluster Suite and GFS
-+    """Red Hat Cluster High Availability and GFS2
-     """
- 
-     plugin_name = 'cluster'
-     profiles = ('cluster',)
-     option_list = [
--        ("gfslockdump", 'gather output of gfs lockdumps', 'slow', False),
-+        ("gfs2lockdump", 'gather output of gfs2 lockdumps', 'slow', False),
-         ("crm_from", 'specify the start time for crm_report', 'fast', False),
-         ('lockdump', 'gather dlm lockdumps', 'slow', False)
-     ]
-@@ -42,12 +43,16 @@ class Cluster(Plugin, RedHatPlugin):
- 
-     files = ["/etc/cluster/cluster.conf"]
- 
-+    debugfs_path = "/sys/kernel/debug"
-+    _debugfs_cleanup = False
-+
-     def setup(self):
- 
-         self.add_copy_spec([
-             "/etc/cluster.conf",
--            "/etc/cluster.xml",
-             "/etc/cluster",
-+            "/etc/sysconfig/dlm",
-+            "/etc/sysconfig/pacemaker",
-             "/etc/sysconfig/cluster",
-             "/etc/sysconfig/cman",
-             "/etc/fence_virt.conf",
-@@ -56,12 +61,12 @@ class Cluster(Plugin, RedHatPlugin):
-             "/var/lib/luci/etc",
-             "/var/log/cluster",
-             "/var/log/luci",
--            "/etc/fence_virt.conf",
-             "/sys/fs/gfs2/*/withdraw"
-         ])
- 
--        if self.get_option('gfslockdump'):
--            self.do_gfslockdump()
-+        if self.get_option('gfs2lockdump'):
-+            if self._mount_debug():
-+                self.add_copy_spec(["/sys/kernel/debug/gfs2/*"])
- 
-         if self.get_option('lockdump'):
-             self.do_lockdump()
-@@ -81,7 +86,6 @@ class Cluster(Plugin, RedHatPlugin):
-             "corosync-quorumtool -s",
-             "corosync-cpgtool",
-             "corosync-objctl",
--            "group_tool ls -g1",
-             "gfs_control ls -n",
-             "gfs_control dump",
-             "fence_tool dump",
-@@ -108,26 +112,29 @@ class Cluster(Plugin, RedHatPlugin):
-                             % (crm_dest, crm_from))
- 
-     def do_lockdump(self):
--        dlm_tool = "dlm_tool ls"
--        result = self.call_ext_prog(dlm_tool)
--        if result['status'] != 0:
--            return
--
--        lock_exp = r'^name\s+([^\s]+)$'
--        lock_re = re.compile(lock_exp, re.MULTILINE)
--        for lockspace in lock_re.findall(result['output']):
--            self.add_cmd_output(
--                "dlm_tool lockdebug -svw '%s'" % lockspace,
--                suggest_filename="dlm_locks_%s" % lockspace
--            )
--
--    def do_gfslockdump(self):
--        mnt_exp = r'^\S+\s+([^\s]+)\s+gfs\s+.*$'
--        for mnt in self.do_regex_find_all(mnt_exp, "/proc/mounts"):
--            self.add_cmd_output(
--                "gfs_tool lockdump %s" % mnt,
--                suggest_filename="gfs_lockdump_" + self.mangle_command(mnt)
--            )
-+        if self._mount_debug():
-+            dlm_tool = "dlm_tool ls"
-+            result = self.call_ext_prog(dlm_tool)
-+            if result['status'] != 0:
-+                return
-+
-+            lock_exp = r'^name\s+([^\s]+)$'
-+            lock_re = re.compile(lock_exp, re.MULTILINE)
-+            for lockspace in lock_re.findall(result['output']):
-+                self.add_cmd_output(
-+                    "dlm_tool lockdebug -svw '%s'" % lockspace,
-+                    suggest_filename="dlm_locks_%s" % lockspace
-+                )
-+
-+    def _mount_debug(self):
-+        if not os.path.ismount(self.debugfs_path):
-+            self._debugfs_cleanup = True
-+            r = self.call_ext_prog("mount -t debugfs debugfs %s"
-+                                   % self.debugfs_path)
-+            if r['status'] != 0:
-+                self._log_error("debugfs not mounted and mount attempt failed")
-+                self._debugfs_cleanup = False
-+        return os.path.ismount(self.debugfs_path)
- 
-     def postproc(self):
-         for cluster_conf in glob("/etc/cluster/cluster.conf*"):
-@@ -148,6 +155,11 @@ class Cluster(Plugin, RedHatPlugin):
-             r"(.*fence.*\.passwd=)(.*)",
-             r"\1******"
-         )
-+        if self._debugfs_cleanup and os.path.ismount(self.debugfs_path):
-+            r = self.call_ext_prog("umount %s" % self.debugfs_path)
-+            if r['status'] != 0:
-+                self._log_error("could not unmount %s" % self.debugfs_path)
-+
-         return
- 
- # vim: et ts=4 sw=4
--- 
-1.8.3.1
-
-From 55aebeabb2d2c87c695041cff426afaa6bd2808a Mon Sep 17 00:00:00 2001
-From: Shane Bradley <sbradley@redhat.com>
-Date: Tue, 17 Feb 2015 13:54:01 -0500
-Subject: [PATCH] [cluster] add a couple pcs commands to the cluster plugin
-
-There are 3 pcs commands added to cluster plugin to get
-information about the status of pacemaker cluster.
-
-Signed-off-by: Shane Bradley <sbradley@redhat.com>
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/plugins/cluster.py | 5 ++++-
- 1 file changed, 4 insertions(+), 1 deletion(-)
-
-diff --git a/sos/plugins/cluster.py b/sos/plugins/cluster.py
-index 7aeed44..bd2cf8a 100644
---- a/sos/plugins/cluster.py
-+++ b/sos/plugins/cluster.py
-@@ -92,7 +92,10 @@ class Cluster(Plugin, RedHatPlugin):
-             "fence_tool dump",
-             "dlm_tool dump",
-             "dlm_tool ls -n",
--            "mkqdisk -L"
-+            "mkqdisk -L",
-+            "pcs config",
-+            "pcs status",
-+            "pcs property list --all"
-         ])
- 
-         # crm_report needs to be given a --from "YYYY-MM-DD HH:MM:SS" start
--- 
-1.8.3.1
-
diff --git a/SOURCES/sos-bz1087515-corosync-add-postprocessing-for-corosync-objctl.patch b/SOURCES/sos-bz1087515-corosync-add-postprocessing-for-corosync-objctl.patch
deleted file mode 100644
index f76548b..0000000
--- a/SOURCES/sos-bz1087515-corosync-add-postprocessing-for-corosync-objctl.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From 77ea53cf7c13c59c2a1f4608d59e1b9e8f4da835 Mon Sep 17 00:00:00 2001
-From: "Bryn M. Reeves" <bmr@redhat.com>
-Date: Wed, 15 Oct 2014 15:57:47 +0100
-Subject: [PATCH] [corosync] add postprocessing for corosync-objctl output
-
-The corosync-objctl command may include fence device passwords in
-its output. Remove them with the same postprocessing regex as the
-cluster plugin uses.
-
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/plugins/corosync.py | 7 +++++++
- 1 file changed, 7 insertions(+)
-
-diff --git a/sos/plugins/corosync.py b/sos/plugins/corosync.py
-index 2cd22c3..db9b547 100644
---- a/sos/plugins/corosync.py
-+++ b/sos/plugins/corosync.py
-@@ -40,6 +40,13 @@ class Corosync(Plugin):
-         ])
-         self.call_ext_prog("killall -USR2 corosync")
- 
-+    def postproc(self):
-+        self.do_cmd_output_sub(
-+            "corosync-objctl",
-+            r"(.*fence.*\.passwd=)(.*)",
-+            r"\1******"
-+        )
-+
- 
- class RedHatCorosync(Corosync, RedHatPlugin):
- 
--- 
-1.9.3
-
diff --git a/SOURCES/sos-bz1087977-sosreport-catch-oserror-in-execute.patch b/SOURCES/sos-bz1087977-sosreport-catch-oserror-in-execute.patch
deleted file mode 100644
index a516793..0000000
--- a/SOURCES/sos-bz1087977-sosreport-catch-oserror-in-execute.patch
+++ /dev/null
@@ -1,71 +0,0 @@
-From 95bb5df9eda253afed15fa81340d31e03c40fe94 Mon Sep 17 00:00:00 2001
-From: "Bryn M. Reeves" <bmr@redhat.com>
-Date: Tue, 13 Jan 2015 17:10:06 +0000
-Subject: [PATCH] [sosreport] catch OSError exceptions in SoSReport.execute()
-
-OSError exceptions during logging setup and tear down are not
-currently handled:
-
-  Traceback (most recent call last):
-    File "/usr/sbin/sosreport", line 25, in <module>
-      main(sys.argv[1:])
-    File "/usr/lib/python2.7/site-packages/sos/sosreport.py", line 1409, in main
-      sos.execute()
-    File "/usr/lib/python2.7/site-packages/sos/sosreport.py", line 1366, in execute
-      self._setup_logging()
-    File "/usr/lib/python2.7/site-packages/sos/sosreport.py", line 739, in _setup_logging
-      self.sos_log_file = self.get_temp_file()
-    File "/usr/lib/python2.7/site-packages/sos/sosreport.py", line 670, in get_temp_file
-      return self.tempfile_util.new()
-    File "/usr/lib/python2.7/site-packages/sos/sosreport.py", line 82, in new
-      fd, fname = tempfile.mkstemp(dir=self.tmp_dir)
-    File "/usr/lib64/python2.7/tempfile.py", line 304, in mkstemp
-      return _mkstemp_inner(dir, prefix, suffix, flags)
-    File "/usr/lib64/python2.7/tempfile.py", line 239, in _mkstemp_inner
-      fd = _os.open(file, flags, 0600)
-  OSError: [Errno 28] No space left on device: '/tmp/tmp.4ejNitjwcr/nospace_tmp/tmpBjPTOm'
-
-Address this by adding OSError to the list of caught exceptions
-in the main SoSReport.execute() method. Wrap the exception branch
-clean up in a try/except block to catch additional exceptions
-while attempting to clean up (e.g. unlink failures following an
-EROFS on the temporary archive path).
-
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/sosreport.py | 19 +++++++++++++------
- 1 file changed, 13 insertions(+), 6 deletions(-)
-
-diff --git a/sos/sosreport.py b/sos/sosreport.py
-index 0dd26ad..2a16555 100644
---- a/sos/sosreport.py
-+++ b/sos/sosreport.py
-@@ -1395,12 +1395,19 @@ class SoSReport(object):
-             self.version()
- 
-             return self.final_work()
--        except (SystemExit, KeyboardInterrupt):
--            if self.archive:
--                self.archive.cleanup()
--            if self.tempfile_util:
--                self.tempfile_util.clean()
--            return False
-+
-+        except (OSError, SystemExit, KeyboardInterrupt):
-+            try:
-+                # archive and tempfile cleanup may fail due to a fatal
-+                # OSError exception (ENOSPC, EROFS etc.).
-+                if self.archive:
-+                    self.archive.cleanup()
-+                if self.tempfile_util:
-+                    self.tempfile_util.clean()
-+            except:
-+                pass
-+
-+        return False
- 
- 
- def main(args):
--- 
-1.9.3
-
diff --git a/SOURCES/sos-bz1087977-sosreport-do-not-make-logging-calls-after-oserror.patch b/SOURCES/sos-bz1087977-sosreport-do-not-make-logging-calls-after-oserror.patch
deleted file mode 100644
index 6a3b057..0000000
--- a/SOURCES/sos-bz1087977-sosreport-do-not-make-logging-calls-after-oserror.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From ed44939d5988098feb3f3ddededd68a0a4b9a9df Mon Sep 17 00:00:00 2001
-From: "Bryn M. Reeves" <bmr@redhat.com>
-Date: Tue, 13 Jan 2015 17:26:33 +0000
-Subject: [PATCH] [sosreport] do not make logging calls after OSError
-
-Following an OSError during archive setup the logging subsystem
-is potentially in an inconsistent or unusable state (e.g. due to
-a readonly file system error).
-
-Use the print function directly since we just need to report the
-error and exit.
-
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/sosreport.py | 9 ++++++---
- 1 file changed, 6 insertions(+), 3 deletions(-)
-
-diff --git a/sos/sosreport.py b/sos/sosreport.py
-index 2a16555..3c0397c 100644
---- a/sos/sosreport.py
-+++ b/sos/sosreport.py
-@@ -1091,10 +1091,13 @@ class SoSReport(object):
-             self._make_archive_paths()
-             return
-         except (OSError, IOError) as e:
-+            # we must not use the logging subsystem here as it is potentially
-+            # in an inconsistent or unreliable state (e.g. an EROFS for the
-+            # file system containing our temporary log files).
-             if e.errno in fatal_fs_errors:
--                self.ui_log.error("")
--                self.ui_log.error(" %s while setting up archive" % e.strerror)
--                self.ui_log.error("")
-+                print("")
-+                print(" %s while setting up archive" % e.strerror)
-+                print("")
-             else:
-                 raise e
-         except Exception as e:
--- 
-1.9.3
-
diff --git a/SOURCES/sos-bz1110918-fix-kpatch-force-enabled.patch b/SOURCES/sos-bz1110918-fix-kpatch-force-enabled.patch
deleted file mode 100644
index aa8ef94..0000000
--- a/SOURCES/sos-bz1110918-fix-kpatch-force-enabled.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From 6b43c42078604b0551923c2801108848e97ba3b9 Mon Sep 17 00:00:00 2001
-From: "Bryn M. Reeves" <bmr@redhat.com>
-Date: Tue, 14 Oct 2014 15:43:20 +0100
-Subject: [PATCH] [kpatch] do not try to read kpatch data if it could not be
- run
-
-Everything the kpatch plugin does requires the list of available
-kpatch patches obtained from 'kpatch list'. If this fails return
-immediately from the setup method.
-
-Fixes #417.
-
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/plugins/kpatch.py | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/sos/plugins/kpatch.py b/sos/plugins/kpatch.py
-index 7909926..6ef557e 100644
---- a/sos/plugins/kpatch.py
-+++ b/sos/plugins/kpatch.py
-@@ -27,6 +27,8 @@ class Kpatch(Plugin, RedHatPlugin):
- 
-     def setup(self):
-         kpatch_list = self.get_cmd_output_now("kpatch list")
-+        if not kpatch_list:
-+            return
-         kpatches = open(kpatch_list, "r").read().splitlines()
-         for patch in kpatches:
-             if not re.match("^kpatch-.*\(.*\)", patch):
--- 
-1.9.3
-
diff --git a/SOURCES/sos-bz1112175-anaconda-make-useradd-password-regex-tolerant.patch b/SOURCES/sos-bz1112175-anaconda-make-useradd-password-regex-tolerant.patch
deleted file mode 100644
index e7b5f5e..0000000
--- a/SOURCES/sos-bz1112175-anaconda-make-useradd-password-regex-tolerant.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From 5a97e0e2571b948f1f7bc602e6f190976de99eee Mon Sep 17 00:00:00 2001
-From: "Bryn M. Reeves" <bmr@redhat.com>
-Date: Tue, 13 Jan 2015 16:31:58 +0000
-Subject: [PATCH] [anaconda] make useradd password regex tolerant of whitespace
-
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/plugins/anaconda.py | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/sos/plugins/anaconda.py b/sos/plugins/anaconda.py
-index 08d300b..aea3300 100644
---- a/sos/plugins/anaconda.py
-+++ b/sos/plugins/anaconda.py
-@@ -54,7 +54,7 @@ class Anaconda(Plugin, RedHatPlugin):
-         )
-         self.do_file_sub(
-             "/root/anaconda-ks.cfg",
--            r"(user.*--password=*)(\S*)",
-+            r"(user.*--password=*\s*)\s*(\S*)",
-             r"\1********"
-         )
- 
--- 
-1.9.3
-
diff --git a/SOURCES/sos-bz1116349-call-rhsm-debug-with-no-subscriptions.patch b/SOURCES/sos-bz1116349-call-rhsm-debug-with-no-subscriptions.patch
deleted file mode 100644
index 4e97a53..0000000
--- a/SOURCES/sos-bz1116349-call-rhsm-debug-with-no-subscriptions.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From e8428d458cfd65bdc34d69f32db0bf4f5aca7540 Mon Sep 17 00:00:00 2001
-From: "Bryn M. Reeves" <bmr@redhat.com>
-Date: Thu, 2 Oct 2014 17:16:55 +0100
-Subject: [PATCH] [yum] call rhsm-debug with --no-subscriptions
-
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/plugins/yum.py | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/sos/plugins/yum.py b/sos/plugins/yum.py
-index 7dac5e4..816e2b0 100644
---- a/sos/plugins/yum.py
-+++ b/sos/plugins/yum.py
-@@ -54,7 +54,7 @@ class Yum(Plugin, RedHatPlugin):
-             "subscription-manager list --consumed"
-         ])
-         self.add_cmd_output("rhsm-debug system --sos --no-archive "
--                            "--destination %s"
-+                            "--no-subscriptions --destination %s"
-                             % self.get_cmd_output_path())
- 
-         if self.get_option("yumlist"):
--- 
-1.9.3
-
diff --git a/SOURCES/sos-bz1116670-grub2-mkconfig-dont-load-kernel-modules.patch b/SOURCES/sos-bz1116670-grub2-mkconfig-dont-load-kernel-modules.patch
new file mode 100644
index 0000000..0eb586e
--- /dev/null
+++ b/SOURCES/sos-bz1116670-grub2-mkconfig-dont-load-kernel-modules.patch
@@ -0,0 +1,191 @@
+From 27f5e7152444df82eb7a560b1ccef78d40f16296 Mon Sep 17 00:00:00 2001
+From: Pavel Moravec <pmoravec@redhat.com>
+Date: Fri, 19 Aug 2016 11:19:45 +0200
+Subject: [PATCH 1/2] [general] call a command with specified environment
+
+Enable calling commands via add_cmd_output with the possibility to
+update environmental variables.
+
+New option 'env' added (None or a dict). When set, it appends to or
+overrides os.environ used when calling the command from add_cmd_output.
+
+Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
+---
+ sos/plugins/__init__.py | 31 ++++++++++++++++++-------------
+ sos/utilities.py        |  6 +++++-
+ 2 files changed, 23 insertions(+), 14 deletions(-)
+
+diff --git a/sos/plugins/__init__.py b/sos/plugins/__init__.py
+index 6f86553..c6f1fd7 100644
+--- a/sos/plugins/__init__.py
++++ b/sos/plugins/__init__.py
+@@ -561,14 +561,15 @@ class Plugin(object):
+             self._log_info("added copyspec '%s'" % copy_paths)
+ 
+     def get_command_output(self, prog, timeout=300, stderr=True,
+-                           chroot=True, runat=None):
++                           chroot=True, runat=None, env=None):
+         if chroot or self.commons['cmdlineopts'].chroot == 'always':
+             root = self.sysroot
+         else:
+             root = None
+ 
+         result = sos_get_command_output(prog, timeout=timeout, stderr=stderr,
+-                                        chroot=root, chdir=runat)
++                                        chroot=root, chdir=runat,
++                                        env=env)
+ 
+         if result['status'] == 124:
+             self._log_warn("command '%s' timed out after %ds"
+@@ -582,7 +583,8 @@ class Plugin(object):
+                                "re-trying in host root"
+                                % (prog.split()[0], root))
+                 return self.get_command_output(prog, timeout=timeout,
+-                                               chroot=False, runat=runat)
++                                               chroot=False, runat=runat,
++                                               env=env)
+             self._log_debug("could not run '%s': command not found" % prog)
+         return result
+ 
+@@ -603,14 +605,14 @@ class Plugin(object):
+ 
+     def _add_cmd_output(self, cmd, suggest_filename=None,
+                         root_symlink=None, timeout=300, stderr=True,
+-                        chroot=True, runat=None):
++                        chroot=True, runat=None, env=None):
+         """Internal helper to add a single command to the collection list."""
+         cmdt = (
+             cmd, suggest_filename,
+             root_symlink, timeout, stderr,
+-            chroot, runat
++            chroot, runat, env
+         )
+-        _tuplefmt = "('%s', '%s', '%s', %s, '%s', '%s', '%s')"
++        _tuplefmt = "('%s', '%s', '%s', %s, '%s', '%s', '%s', '%s')"
+         _logstr = "packed command tuple: " + _tuplefmt
+         self._log_debug(_logstr % cmdt)
+         self.collect_cmds.append(cmdt)
+@@ -618,7 +620,7 @@ class Plugin(object):
+ 
+     def add_cmd_output(self, cmds, suggest_filename=None,
+                        root_symlink=None, timeout=300, stderr=True,
+-                       chroot=True, runat=None):
++                       chroot=True, runat=None, env=None):
+         """Run a program or a list of programs and collect the output"""
+         if isinstance(cmds, six.string_types):
+             cmds = [cmds]
+@@ -627,7 +629,7 @@ class Plugin(object):
+         for cmd in cmds:
+             self._add_cmd_output(cmd, suggest_filename,
+                                  root_symlink, timeout, stderr,
+-                                 chroot, runat)
++                                 chroot, runat, env)
+ 
+     def get_cmd_output_path(self, name=None, make=True):
+         """Return a path into which this module should store collected
+@@ -679,13 +681,14 @@ class Plugin(object):
+ 
+     def get_cmd_output_now(self, exe, suggest_filename=None,
+                            root_symlink=False, timeout=300, stderr=True,
+-                           chroot=True, runat=None):
++                           chroot=True, runat=None, env=None):
+         """Execute a command and save the output to a file for inclusion in the
+         report.
+         """
+         start = time()
+         result = self.get_command_output(exe, timeout=timeout, stderr=stderr,
+-                                         chroot=chroot, runat=runat)
++                                         chroot=chroot, runat=runat,
++                                         env=env)
+         # 126 means 'found but not executable'
+         if result['status'] == 126 or result['status'] == 127:
+             return None
+@@ -807,15 +810,17 @@ class Plugin(object):
+                 suggest_filename, root_symlink,
+                 timeout,
+                 stderr,
+-                chroot, runat
++                chroot, runat,
++                env
+             ) = progs[0]
+             self._log_debug("unpacked command tuple: " +
+-                            "('%s', '%s', '%s', %s, '%s', '%s', '%s')" %
++                            "('%s', '%s', '%s', %s, '%s', '%s', '%s', '%s')" %
+                             progs[0])
+             self._log_info("collecting output of '%s'" % prog)
+             self.get_cmd_output_now(prog, suggest_filename=suggest_filename,
+                                     root_symlink=root_symlink, timeout=timeout,
+-                                    stderr=stderr, chroot=chroot, runat=runat)
++                                    stderr=stderr, chroot=chroot, runat=runat,
++                                    env=env)
+ 
+     def _collect_strings(self):
+         for string, file_name in self.copy_strings:
+diff --git a/sos/utilities.py b/sos/utilities.py
+index 588cb3f..bc998fa 100644
+--- a/sos/utilities.py
++++ b/sos/utilities.py
+@@ -110,7 +110,7 @@ def is_executable(command):
+ 
+ 
+ def sos_get_command_output(command, timeout=300, stderr=False,
+-                           chroot=None, chdir=None):
++                           chroot=None, chdir=None, env=None):
+     """Execute a command and return a dictionary of status and output,
+     optionally changing root or current working directory before
+     executing command.
+@@ -127,6 +127,10 @@ def sos_get_command_output(command, timeout=300, stderr=False,
+     cmd_env = os.environ
+     # ensure consistent locale for collected command output
+     cmd_env['LC_ALL'] = 'C'
++    # optionally add an environment change for the command
++    if env:
++        for key, value in env.iteritems():
++            cmd_env[key] = value
+     # use /usr/bin/timeout to implement a timeout
+     if timeout and is_executable("timeout"):
+         command = "timeout %ds %s" % (timeout, command)
+-- 
+2.4.11
+
+From 57fdeaaad3436f374f4a68dbfef686c5dd8b4d5b Mon Sep 17 00:00:00 2001
+From: Pavel Moravec <pmoravec@redhat.com>
+Date: Fri, 19 Aug 2016 11:20:55 +0200
+Subject: [PATCH 2/2] [grub2] grub2-mkconfig loads ext4 and brctl kernel
+ modules
+
+Call grub2-mkconfig with GRUB_DISABLE_OS_PROBER=true to prevent
+explicit loading of the kernel modules.
+
+Resolves: #822
+
+Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
+---
+ sos/plugins/grub2.py | 11 +++++++----
+ 1 file changed, 7 insertions(+), 4 deletions(-)
+
+diff --git a/sos/plugins/grub2.py b/sos/plugins/grub2.py
+index d321494..a98d3d0 100644
+--- a/sos/plugins/grub2.py
++++ b/sos/plugins/grub2.py
+@@ -33,10 +33,13 @@ class Grub2(Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin):
+             "/etc/grub2.cfg",
+             "/etc/grub.d"
+         ])
+-        self.add_cmd_output([
+-            "ls -lanR /boot",
+-            "grub2-mkconfig"
+-        ])
++
++        self.add_cmd_output("ls -lanR /boot")
++        # call grub2-mkconfig with GRUB_DISABLE_OS_PROBER=true to prevent
++        # possible unwanted loading of some kernel modules
++        env = {}
++        env['GRUB_DISABLE_OS_PROBER'] = 'true'
++        self.add_cmd_output("grub2-mkconfig", env=env)
+ 
+     def postproc(self):
+         # the trailing space is required; python treats '_' as whitespace
+-- 
+2.4.11
+
diff --git a/SOURCES/sos-bz1118152-disable-the-zip-compression-type.patch b/SOURCES/sos-bz1118152-disable-the-zip-compression-type.patch
deleted file mode 100644
index 7d3dfd7..0000000
--- a/SOURCES/sos-bz1118152-disable-the-zip-compression-type.patch
+++ /dev/null
@@ -1,60 +0,0 @@
-From 081e1ce9f9ad7570d057babd81b474fd407149d7 Mon Sep 17 00:00:00 2001
-From: "Bryn M. Reeves" <bmr@redhat.com>
-Date: Tue, 9 Dec 2014 17:32:45 +0000
-Subject: [PATCH] [sosreport] disable the 'zip' compression type
-
-The Zip archive format is little used and has been broken for
-some time:
-
-   Unexpected exception setting up archive:
-  Traceback (most recent call last):
-    File "/usr/lib/python2.7/site-packages/sos/sosreport.py", line 1092, in prework
-      self._set_archive()
-    File "/usr/lib/python2.7/site-packages/sos/sosreport.py", line 679, in _set_archive
-      self.archive = ZipFileArchive(archive_name, self.tmpdir)
-  TypeError: __init__() takes exactly 2 arguments (3 given)
-  __init__() takes exactly 2 arguments (3 given)
-
-Remove it from the allowed options list for --compression-type.
-
-The supporting Archive classes can be removed in a separate commit.
-
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/sosreport.py | 6 ++----
- 1 file changed, 2 insertions(+), 4 deletions(-)
-
-diff --git a/sos/sosreport.py b/sos/sosreport.py
-index 99b5f47..a697380 100644
---- a/sos/sosreport.py
-+++ b/sos/sosreport.py
-@@ -599,7 +599,7 @@ class SoSOptions(object):
-                           dest="report",
-                           help="Disable HTML/XML reporting", default=False)
-         parser.add_option("-z", "--compression-type", dest="compression_type",
--                          help="compression technology to use [auto, zip, "
-+                          help="compression technology to use [auto, "
-                                "gzip, bzip2, xz] (default=auto)",
-                           default="auto")
- 
-@@ -675,8 +675,6 @@ class SoSReport(object):
-         if self.opts.compression_type == 'auto':
-             auto_archive = self.policy.get_preferred_archive()
-             self.archive = auto_archive(archive_name, self.tmpdir)
--        elif self.opts.compression_type == 'zip':
--            self.archive = ZipFileArchive(archive_name, self.tmpdir)
-         else:
-             self.archive = TarFileArchive(archive_name, self.tmpdir)
-         self.archive.set_debug(True if self.opts.debug else False)
-@@ -1080,7 +1078,7 @@ class SoSReport(object):
-         self.policy.pre_work()
-         try:
-             self.ui_log.info(_(" Setting up archive ..."))
--            compression_methods = ('auto', 'zip', 'bzip2', 'gzip', 'xz')
-+            compression_methods = ('auto', 'bzip2', 'gzip', 'xz')
-             method = self.opts.compression_type
-             if method not in compression_methods:
-                 compression_list = ', '.join(compression_methods)
--- 
-1.9.3
-
diff --git a/SOURCES/sos-bz1126001-mysql-fix-command-line-dbpass-handling.patch b/SOURCES/sos-bz1126001-mysql-fix-command-line-dbpass-handling.patch
deleted file mode 100644
index 1cfa94e..0000000
--- a/SOURCES/sos-bz1126001-mysql-fix-command-line-dbpass-handling.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From db9ac3fb615b731be87b4116a8939105bf5ced56 Mon Sep 17 00:00:00 2001
-From: "Bryn M. Reeves" <bmr@redhat.com>
-Date: Tue, 23 Dec 2014 14:40:50 +0000
-Subject: [PATCH] [mysql] fix command-line dbpass handling
-
-The logic for chosing between a command-line and environment
-variable passed password in the MySQL plugin was incorrect. This
-prevents a database dump from being collected when a password is
-given on the command line.
-
-Altough use of the command line to pass authentication tokens
-is discouraged we should ensure the case works.
-
-Fixes #456.
-
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/plugins/mysql.py | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/sos/plugins/mysql.py b/sos/plugins/mysql.py
-index d148472..edab6d0 100644
---- a/sos/plugins/mysql.py
-+++ b/sos/plugins/mysql.py
-@@ -45,9 +45,9 @@ class Mysql(Plugin):
-         if self.get_option("dbdump"):
-             dbuser = self.get_option("dbuser")
-             dbpass = self.get_option("dbpass")
--            if dbpass is False and 'MYSQL_PWD' in os.environ:
-+            if 'MYSQL_PWD' in os.environ:
-                 dbpass = os.environ['MYSQL_PWD']
--            else:
-+            if not dbpass or dbpass is False:
-                 # no MySQL password
-                 return
-             os.environ['MYSQL_PWD'] = dbpass
--- 
-1.9.3
-
diff --git a/SOURCES/sos-bz1126001-obtain-mysql-password-from-env.patch b/SOURCES/sos-bz1126001-obtain-mysql-password-from-env.patch
deleted file mode 100644
index fcd3980..0000000
--- a/SOURCES/sos-bz1126001-obtain-mysql-password-from-env.patch
+++ /dev/null
@@ -1,89 +0,0 @@
-From 3d4cf0365d520be81abfe3435fa9a8a56a933961 Mon Sep 17 00:00:00 2001
-From: "Bryn M. Reeves" <bmr@redhat.com>
-Date: Mon, 20 Oct 2014 09:31:32 +0100
-Subject: [PATCH 1/2] [mysql] obtain dbpass from the environment
-
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/plugins/mysql.py | 13 ++++++++++---
- 1 file changed, 10 insertions(+), 3 deletions(-)
-
-diff --git a/sos/plugins/mysql.py b/sos/plugins/mysql.py
-index 8bc6e72..1203f5c 100644
---- a/sos/plugins/mysql.py
-+++ b/sos/plugins/mysql.py
-@@ -13,7 +13,7 @@
- # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- 
- from sos.plugins import Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin
--
-+import os
- 
- class Mysql(Plugin):
-     """MySQL and MariaDB RDBMS
-@@ -25,7 +25,7 @@ class Mysql(Plugin):
- 
-     option_list = [
-         ("dbuser", "username for database dumps", "", "mysql"),
--        ("dbpass", "password for database dumps", "", ""),
-+        ("dbpass", "password for database dumps", "", False),
-         ("dbdump", "collect a database dump", "", False)
-     ]
- 
-@@ -44,7 +44,14 @@ class Mysql(Plugin):
-         if self.get_option("dbdump"):
-             dbuser = self.get_option("dbuser")
-             dbpass = self.get_option("dbpass")
--            opts = "--user=%s --password=%s --all-databases" % (dbuser, dbpass)
-+            if dbpass == False and 'MYSQL_PWD' in os.environ:
-+                dbpass = os.environ['MYSQL_PWD']
-+            else:
-+                # no MySQL password
-+                return
-+            os.environ['MYSQL_PWD'] = dbpass
-+
-+            opts = "--user=%s --all-databases" % dbuser
-             name = "mysqldump_--all-databases"
-             self.add_cmd_output("mysqldump %s" % opts, suggest_filename=name)
- 
--- 
-1.9.3
-
-
-From 6ce502113f550c027424fa477edc091283c32e50 Mon Sep 17 00:00:00 2001
-From: "Bryn M. Reeves" <bmr@redhat.com>
-Date: Mon, 20 Oct 2014 14:33:57 +0100
-Subject: [PATCH 2/2] [mysql] fix pep8 violations
-
-The previous commit had a couple of pep8 errors that were fixed
-in the working tree but not added to the commit; fix them.
-
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/plugins/mysql.py | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/sos/plugins/mysql.py b/sos/plugins/mysql.py
-index 1203f5c..d148472 100644
---- a/sos/plugins/mysql.py
-+++ b/sos/plugins/mysql.py
-@@ -15,6 +15,7 @@
- from sos.plugins import Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin
- import os
- 
-+
- class Mysql(Plugin):
-     """MySQL and MariaDB RDBMS
-     """
-@@ -44,7 +45,7 @@ class Mysql(Plugin):
-         if self.get_option("dbdump"):
-             dbuser = self.get_option("dbuser")
-             dbpass = self.get_option("dbpass")
--            if dbpass == False and 'MYSQL_PWD' in os.environ:
-+            if dbpass is False and 'MYSQL_PWD' in os.environ:
-                 dbpass = os.environ['MYSQL_PWD']
-             else:
-                 # no MySQL password
--- 
-1.9.3
-
diff --git a/SOURCES/sos-bz1135317-sat6-capsule-debug.patch b/SOURCES/sos-bz1135317-sat6-capsule-debug.patch
deleted file mode 100644
index 470eb29..0000000
--- a/SOURCES/sos-bz1135317-sat6-capsule-debug.patch
+++ /dev/null
@@ -1,92 +0,0 @@
-From 5cc06136d68536b806ce09ce61f800d9a7938790 Mon Sep 17 00:00:00 2001
-From: Lukas Zapletal <lzap+git@redhat.com>
-Date: Tue, 3 Feb 2015 16:42:11 +0100
-Subject: [PATCH] [foreman] Skip collection of generic resources
-
-New option was added to foreman-debug (-g) to skip collecting of generic
-resources (firewall, selinux, cpu, memory). This patch leverages that.
-
-https://github.com/theforeman/foreman/blob/develop/script/foreman-debug
-
-Since katello-debug is now part of foreman-debug (as a plugin), there is no
-need of separate sosreport plugin.
-
-https://github.com/Katello/katello/blob/master/deploy/script/katello-debug.sh
-
-New subpackage called foreman-debug was introduced. It is present in both
-upstream Foreman and Katello installations as well as on both Satellite 6 main
-node and capsule instances. It can be used to detect if foreman-debug script is
-present.
-
-Signed-off-by: Lukas Zapletal <lzap+git@redhat.com>
----
- sos/plugins/foreman.py |  6 +++---
- sos/plugins/katello.py | 32 --------------------------------
- 2 files changed, 3 insertions(+), 35 deletions(-)
- delete mode 100644 sos/plugins/katello.py
-
-diff --git a/sos/plugins/foreman.py b/sos/plugins/foreman.py
-index 896add1..e50cbdf 100644
---- a/sos/plugins/foreman.py
-+++ b/sos/plugins/foreman.py
-@@ -18,16 +18,16 @@ from sos.plugins import Plugin, RedHatPlugin
- 
- 
- class Foreman(Plugin, RedHatPlugin):
--    """Foreman systems management
-+    """Foreman/Satellite 6 systems management
-     """
- 
-     plugin_name = 'foreman'
-     profiles = ('sysmgmt',)
--    packages = ('foreman')
-+    packages = ('foreman-debug')
- 
-     def setup(self):
-         cmd = "foreman-debug"
-         path = self.get_cmd_output_path(name="foreman-debug")
--        self.add_cmd_output("%s -q -a -d %s" % (cmd, path))
-+        self.add_cmd_output("%s -g -q -a -d %s" % (cmd, path))
- 
- # vim: et ts=4 sw=4
-diff --git a/sos/plugins/katello.py b/sos/plugins/katello.py
-deleted file mode 100644
-index 795c07e..0000000
---- a/sos/plugins/katello.py
-+++ /dev/null
-@@ -1,32 +0,0 @@
--# Copyright (C) 2013 Red Hat, Inc., Lukas Zapletal <lzap@redhat.com>
--
--# This program is free software; you can redistribute it and/or modify
--# it under the terms of the GNU General Public License as published by
--# the Free Software Foundation; either version 2 of the License, or
--# (at your option) any later version.
--
--# This program is distributed in the hope that it will be useful,
--# but WITHOUT ANY WARRANTY; without even the implied warranty of
--# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--# GNU General Public License for more details.
--
--# You should have received a copy of the GNU General Public License
--# along with this program; if not, write to the Free Software
--# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
--
--from sos.plugins import Plugin, RedHatPlugin
--
--
--class Katello(Plugin, RedHatPlugin):
--    """Katello systems management
--    """
--
--    plugin_name = 'katello'
--    profiles = ('sysmgmt',)
--    packages = ('katello', 'katello-common', 'katello-headpin')
--
--    def setup(self):
--        self.add_cmd_output("katello-debug --notar -d %s"
--                            % self.get_cmd_output_path(name="katello-debug"))
--
--# vim: et ts=4 sw=4
--- 
-1.8.3.1
-
diff --git a/SOURCES/sos-bz1140427-powerpc-allow-powerpc-plugin-to-run-on-ppc64le.patch b/SOURCES/sos-bz1140427-powerpc-allow-powerpc-plugin-to-run-on-ppc64le.patch
deleted file mode 100644
index 4bf9824..0000000
--- a/SOURCES/sos-bz1140427-powerpc-allow-powerpc-plugin-to-run-on-ppc64le.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From 988fee7e6d0c2c91cf1f2c9363d4e3cea7244163 Mon Sep 17 00:00:00 2001
-From: "Bryn M. Reeves" <bmr@redhat.com>
-Date: Thu, 2 Oct 2014 17:25:17 +0100
-Subject: [PATCH] [powerpc] allow PowerPC plugin to run on ppc64le
-
-The plugin currently tests whether policy().get_arch() is equal
-to "ppc64". On little endian PowerPC machines this method returns
-"ppc64le". Change the check_enabled() method to test whether the
-returned string contains "ppc64".
-
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/plugins/powerpc.py | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/sos/plugins/powerpc.py b/sos/plugins/powerpc.py
-index 896d1d4..39b52f6 100644
---- a/sos/plugins/powerpc.py
-+++ b/sos/plugins/powerpc.py
-@@ -27,7 +27,7 @@ class PowerPC(Plugin, RedHatPlugin, UbuntuPlugin, DebianPlugin):
-     profiles = ('system', 'hardware')
- 
-     def check_enabled(self):
--        return (self.policy().get_arch() == "ppc64")
-+        return "ppc64" in self.policy().get_arch()
- 
-     def setup(self):
-         try:
--- 
-1.9.3
-
diff --git a/SOURCES/sos-bz1148375-add-support-for-tomcat7.patch b/SOURCES/sos-bz1148375-add-support-for-tomcat7.patch
deleted file mode 100644
index 372e887..0000000
--- a/SOURCES/sos-bz1148375-add-support-for-tomcat7.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-From 874cc7d0889adf32b8c36bb218212d3304d43d5b Mon Sep 17 00:00:00 2001
-From: "Bryn M. Reeves" <bmr@redhat.com>
-Date: Mon, 20 Oct 2014 09:13:07 +0100
-Subject: [PATCH] [tomcat] add support for tomcat7 and log size limits
-
-Based on a patch from Pavel Moravec in Issue #412.
-
-Fixes #412.
-
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/plugins/tomcat.py | 14 +++++++++-----
- 1 file changed, 9 insertions(+), 5 deletions(-)
-
-diff --git a/sos/plugins/tomcat.py b/sos/plugins/tomcat.py
-index b7aea2c..4f78c1d 100644
---- a/sos/plugins/tomcat.py
-+++ b/sos/plugins/tomcat.py
-@@ -22,17 +22,21 @@ class Tomcat(Plugin, RedHatPlugin):
-     plugin_name = 'tomcat'
-     profiles = ('webserver', 'java', 'services')
- 
--    packages = ('tomcat6',)
-+    packages = ('tomcat6', 'tomcat')
- 
-     def setup(self):
-         self.add_copy_spec([
--            "/etc/tomcat6",
--            "/var/log/tomcat6/catalina.out"
-+            "/etc/tomcat",
-+            "/etc/tomcat6"
-         ])
- 
-+        limit = self.get_option("log_size")
-+        log_glob = "/var/log/tomcat*/catalina.out"
-+        self.add_copy_spec_limit(log_glob, sizelimit=limit)
-+
-     def postproc(self):
--        self.do_file_sub(
--            "/etc/tomcat6/tomcat-users.xml",
-+        self.do_path_regex_sub(
-+            r"\/etc\/tomcat.*\/tomcat-users.xml",
-             r"password=(\S*)",
-             r'password="********"'
-         )
--- 
-1.9.3
-
diff --git a/SOURCES/sos-bz1148551-ovirt_hosted_engine-fix-exception-when-force-enabled.patch b/SOURCES/sos-bz1148551-ovirt_hosted_engine-fix-exception-when-force-enabled.patch
deleted file mode 100644
index c94d710..0000000
--- a/SOURCES/sos-bz1148551-ovirt_hosted_engine-fix-exception-when-force-enabled.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From f9aefde0d7f74867031a00b52f72d0ad1ff9463b Mon Sep 17 00:00:00 2001
-From: "Bryn M. Reeves" <bmr@redhat.com>
-Date: Wed, 15 Oct 2014 15:51:13 +0100
-Subject: [PATCH] [ovirt_hosted_engine] fix exception when force-enabled
-
-Fixes #416.
-
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/plugins/ovirt_hosted_engine.py | 5 +++--
- 1 file changed, 3 insertions(+), 2 deletions(-)
-
-diff --git a/sos/plugins/ovirt_hosted_engine.py b/sos/plugins/ovirt_hosted_engine.py
-index aee8bc0..02cb2b6 100644
---- a/sos/plugins/ovirt_hosted_engine.py
-+++ b/sos/plugins/ovirt_hosted_engine.py
-@@ -56,8 +56,9 @@ class OvirtHostedEngine(Plugin, RedHatPlugin):
- 
-         all_setup_logs = glob.glob(self.SETUP_LOG_GLOB)
-         all_setup_logs.sort(reverse=True)
--        # Add latest ovirt-hosted-engine-setup log file
--        self.add_copy_spec(all_setup_logs[0])
-+        if len(all_setup_logs):
-+            # Add latest ovirt-hosted-engine-setup log file
-+            self.add_copy_spec(all_setup_logs[0])
-         # Add older ovirt-hosted-engine-setup log files only if requested
-         if self.get_option('all_logs'):
-             self.add_copy_spec_limit(
--- 
-1.9.3
-
diff --git a/SOURCES/sos-bz1158891-sosreport-fix-archive-permissions-regression.patch b/SOURCES/sos-bz1158891-sosreport-fix-archive-permissions-regression.patch
deleted file mode 100644
index 7540058..0000000
--- a/SOURCES/sos-bz1158891-sosreport-fix-archive-permissions-regression.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From d7759d3ddae5fe99a340c88a1d370d65cfa73fd6 Mon Sep 17 00:00:00 2001
-From: "Bryn M. Reeves" <bmr@redhat.com>
-Date: Thu, 30 Oct 2014 16:46:01 +0000
-Subject: [PATCH] [sosreport] fix archive permissions regression
-
-Restore the umask save/restore around archive creation and ensure
-the effective umask is 077 at the time of archive creation.
-
-Fixes #425.
-
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/sosreport.py | 3 +++
- 1 file changed, 3 insertions(+)
-
-diff --git a/sos/sosreport.py b/sos/sosreport.py
-index 664414f..99b5f47 100644
---- a/sos/sosreport.py
-+++ b/sos/sosreport.py
-@@ -1327,6 +1327,7 @@ class SoSReport(object):
-         self._finish_logging()
-         # package up the results for the support organization
-         if not self.opts.build:
-+            old_umask = os.umask(0o077)
-             if not self.opts.quiet:
-                 print(_("Creating compressed archive..."))
-             # compression could fail for a number of reasons
-@@ -1345,6 +1346,8 @@ class SoSReport(object):
-                     raise
-                 else:
-                     return False
-+            finally:
-+                os.umask(old_umask)
-         else:
-             final_filename = self.archive.get_archive_path()
-         self.policy.display_results(final_filename, build=self.opts.build)
--- 
-1.9.3
-
diff --git a/SOURCES/sos-bz1162788-ovirt-engine-remove-password-leak.patch b/SOURCES/sos-bz1162788-ovirt-engine-remove-password-leak.patch
deleted file mode 100644
index 4d86ae5..0000000
--- a/SOURCES/sos-bz1162788-ovirt-engine-remove-password-leak.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From 0aec209ec6870c6ec3cbb6e2209d35adb2b62009 Mon Sep 17 00:00:00 2001
-From: Sandro Bonazzola <sbonazzo redhat com>
-Date: Tue, 16 Dec 2014 12:29:57 +0000
-Subject: [PATCH] [ovirt] remove ovirt-engine setup answer file password leak
-
-Signed-off-by: Sandro Bonazzola <sbonazzo@redhat.com>
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/plugins/ovirt.py | 15 +++++++++++++++
- 1 file changed, 15 insertions(+)
-
-diff --git a/sos/plugins/ovirt.py b/sos/plugins/ovirt.py
-index b169b90..407c918 100644
---- a/sos/plugins/ovirt.py
-+++ b/sos/plugins/ovirt.py
-@@ -171,4 +171,19 @@ class Ovirt(Plugin, RedHatPlugin):
-                 r'{key}=********'.format(key=key)
-             )
- 
-+        # Answer files contain passwords
-+        for key in (
-+            'OVESETUP_CONFIG/adminPassword',
-+            'OVESETUP_CONFIG/remoteEngineHostRootPassword',
-+            'OVESETUP_DWH_DB/password',
-+            'OVESETUP_DB/password',
-+            'OVESETUP_REPORTS_CONFIG/adminPassword',
-+            'OVESETUP_REPORTS_DB/password',
-+        ):
-+            self.do_path_regex_sub(
-+                r'/var/lib/ovirt-engine/setup/answers/.*',
-+                r'{key}=(.*)'.format(key=key),
-+                r'{key}=********'.format(key=key)
-+            )
-+
- # vim: expandtab tabstop=4 shiftwidth=4
--- 
-1.8.3.1
-
diff --git a/SOURCES/sos-bz1164267-sos-unicode-use-errors-ignore.patch b/SOURCES/sos-bz1164267-sos-unicode-use-errors-ignore.patch
deleted file mode 100644
index 1e9f66b..0000000
--- a/SOURCES/sos-bz1164267-sos-unicode-use-errors-ignore.patch
+++ /dev/null
@@ -1,61 +0,0 @@
-diff -up sos-3.2/sos/archive.py.orig sos-3.2/sos/archive.py
---- sos-3.2/sos/archive.py.orig	2014-12-17 13:08:57.492362543 +0000
-+++ sos-3.2/sos/archive.py	2014-12-17 13:09:22.256522491 +0000
-@@ -388,9 +388,9 @@ class TarFileArchive(FileCacheArchive):
-                           close_fds=True)
-                 stdout, stderr = p.communicate()
-                 if stdout:
--                    self.log_info(stdout.decode('utf-8'))
-+                    self.log_info(stdout.decode('utf-8', 'ignore'))
-                 if stderr:
--                    self.log_error(stderr.decode('utf-8'))
-+                    self.log_error(stderr.decode('utf-8', 'ignore'))
-                 self._suffix += suffix
-                 return self.name()
-             except Exception as e:
-diff -up sos-3.2/sos/plugins/__init__.py.orig sos-3.2/sos/plugins/__init__.py
---- sos-3.2/sos/plugins/__init__.py.orig	2014-12-17 13:08:57.493362550 +0000
-+++ sos-3.2/sos/plugins/__init__.py	2014-12-17 13:09:22.257522498 +0000
-@@ -541,7 +541,7 @@ class Plugin(object):
-     def add_string_as_file(self, content, filename):
-         """Add a string to the archive as a file named `filename`"""
-         self.copy_strings.append((content, filename))
--        content = "..." + (content.splitlines()[0]).decode('utf8')
-+        content = "..." + (content.splitlines()[0]).decode('utf8', 'ignore')
-         self._log_debug("added string '%s' as '%s'" % (content, filename))
- 
-     def get_cmd_output_now(self, exe, suggest_filename=None,
-@@ -610,7 +610,8 @@ class Plugin(object):
- 
-     def _collect_strings(self):
-         for string, file_name in self.copy_strings:
--            content = "..." + (string.splitlines()[0]).decode('utf8')
-+            content = "..."
-+            content += (string.splitlines()[0]).decode('utf8', 'ignore')
-             self._log_info("collecting string '%s' as '%s'"
-                            % (content, file_name))
-             try:
-diff -up sos-3.2/sos/utilities.py.orig sos-3.2/sos/utilities.py
---- sos-3.2/sos/utilities.py.orig	2014-12-17 13:09:16.709486664 +0000
-+++ sos-3.2/sos/utilities.py	2014-12-17 13:09:22.257522498 +0000
-@@ -140,7 +140,7 @@ def sos_get_command_output(command, time
- 
-     # shlex.split() reacts badly to unicode on older python runtimes.
-     if not six.PY3:
--        command = command.encode('utf-8')
-+        command = command.encode('utf-8', 'ignore')
-     args = shlex.split(command)
-     try:
-         p = Popen(args, shell=False, stdout=PIPE, stderr=STDOUT,
-@@ -159,7 +159,10 @@ def sos_get_command_output(command, time
-     if p.returncode == 126 or p.returncode == 127:
-         stdout = six.binary_type(b"")
- 
--    return {'status': p.returncode, 'output': stdout.decode('utf-8')}
-+    return {
-+        'status': p.returncode,
-+        'output': stdout.decode('utf-8', 'ignore')
-+    }
- 
- 
- def import_module(module_fqname, superclasses=None):
diff --git a/SOURCES/sos-bz1164864-cluster-crm-report-password-sanitize.patch b/SOURCES/sos-bz1164864-cluster-crm-report-password-sanitize.patch
deleted file mode 100644
index a860393..0000000
--- a/SOURCES/sos-bz1164864-cluster-crm-report-password-sanitize.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-From 0d2dd0d9ccc3242dd2dd4513924c8f308000242e Mon Sep 17 00:00:00 2001
-From: Shane Bradley <sbradley@redhat.com>
-Date: Wed, 6 May 2015 15:47:07 -0400
-Subject: [PATCH] [cluster] enable crm_report password scrubbing
-
-Default to specifying a password pattern of 'passw.*' when calling
-the crm_report script. This causes matching strings to be elided
-from the report data.
-
-Since this scrubbing can affect the use of pacemaker state machine
-snapshots for debugging the behaviour is controlled by a new option
-that defaults to enabled: cluster.crm_scrub
-
-This can be used to obtain an sosreport containing virgin crm_report
-data with no password scrubbing:
-
-  # sosreport -k cluster.crm_scrub=False
-
-Signed-off-by: Shane Bradley <sbradley@redhat.com>
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/plugins/cluster.py | 14 +++++++++++---
- 1 file changed, 11 insertions(+), 3 deletions(-)
-
-diff --git a/sos/plugins/cluster.py b/sos/plugins/cluster.py
-index 8dd9a4d..084c030 100644
---- a/sos/plugins/cluster.py
-+++ b/sos/plugins/cluster.py
-@@ -25,10 +25,12 @@ class Cluster(Plugin, RedHatPlugin):
- 
-     plugin_name = 'cluster'
-     profiles = ('cluster',)
-+
-     option_list = [
-         ("gfs2lockdump", 'gather output of gfs2 lockdumps', 'slow', False),
-         ("crm_from", 'specify the start time for crm_report', 'fast', False),
--        ('lockdump', 'gather dlm lockdumps', 'slow', False)
-+        ('lockdump', 'gather dlm lockdumps', 'slow', False),
-+        ('crm_scrub', 'enable password scrubbing for crm_report', '', True),
-     ]
- 
-     packages = [
-@@ -112,8 +114,14 @@ class Cluster(Plugin, RedHatPlugin):
-                     "default" % self.get_option('crm_from'))
- 
-         crm_dest = self.get_cmd_output_path(name='crm_report', make=False)
--        self.add_cmd_output('crm_report -S -d --dest %s --from "%s"'
--                            % (crm_dest, crm_from))
-+        crm_scrub = '-p "passw.*"'
-+        if not self.get_option("crm_scrub"):
-+            crm_scrub = ''
-+            self._log_warn("scrubbing of crm passwords has been disabled:")
-+            self._log_warn("data collected by crm_report may contain"
-+                           " sensitive values.")
-+        self.add_cmd_output('crm_report %s -S -d --dest %s --from "%s"'
-+                            % (crm_scrub, crm_dest, crm_from))
- 
-     def do_lockdump(self):
-         if self._mount_debug():
--- 
-1.8.3.1
-
diff --git a/SOURCES/sos-bz1165418-chrony-new-plugin.patch b/SOURCES/sos-bz1165418-chrony-new-plugin.patch
deleted file mode 100644
index 53e40df..0000000
--- a/SOURCES/sos-bz1165418-chrony-new-plugin.patch
+++ /dev/null
@@ -1,64 +0,0 @@
-From b6e6a4d1ce4beae74cb0123bd7c48d0828d120ec Mon Sep 17 00:00:00 2001
-From: Justin Stephenson <jstephen@redhat.com>
-Date: Sun, 29 Mar 2015 22:58:42 +0200
-Subject: [PATCH] [chrony] add chrony plugin
-
-Resolves #539
-
-Signed-off-by: Justin Stephenson <jstephen@redhat.com>
-Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/plugins/chrony.py | 40 ++++++++++++++++++++++++++++++++++++++++
- 1 file changed, 40 insertions(+)
- create mode 100644 sos/plugins/chrony.py
-
-diff --git a/sos/plugins/chrony.py b/sos/plugins/chrony.py
-new file mode 100644
-index 0000000..d2404d4
---- /dev/null
-+++ b/sos/plugins/chrony.py
-@@ -0,0 +1,40 @@
-+# This program is free software; you can redistribute it and/or modify
-+# it under the terms of the GNU General Public License as published by
-+# the Free Software Foundation; either version 2 of the License, or
-+# (at your option) any later version.
-+
-+# This program is distributed in the hope that it will be useful,
-+# but WITHOUT ANY WARRANTY; without even the implied warranty of
-+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+# GNU General Public License for more details.
-+
-+# You should have received a copy of the GNU General Public License
-+# along with this program; if not, write to the Free Software
-+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-+
-+from sos.plugins import Plugin, RedHatPlugin
-+
-+
-+class Chrony(Plugin, RedHatPlugin):
-+    """Chrony clock (for Network time protocol)
-+    """
-+
-+    plugin_name = "chrony"
-+    profiles = ('system', 'services')
-+
-+    packages = ('chrony',)
-+
-+    def setup(self):
-+        self.add_copy_spec([
-+            "/etc/chrony.conf",
-+            "/var/lib/chrony/drift"
-+        ])
-+        self.add_cmd_output([
-+            "chronyc tracking",
-+            "chronyc sources",
-+            "chronyc sourcestats",
-+            "chronyc clients",
-+            "journalctl -u chronyd"
-+        ])
-+
-+# vim: et ts=4 sw=4
--- 
-1.8.3.1
-
diff --git a/SOURCES/sos-bz1166039-navicli-catch-unreadable-stdin.patch b/SOURCES/sos-bz1166039-navicli-catch-unreadable-stdin.patch
deleted file mode 100644
index 44c2667..0000000
--- a/SOURCES/sos-bz1166039-navicli-catch-unreadable-stdin.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From 465746d768ce69684eee57eaa3509d9ae898fee2 Mon Sep 17 00:00:00 2001
-From: "Bryn M. Reeves" <bmr@redhat.com>
-Date: Wed, 17 Dec 2014 12:39:05 +0000
-Subject: [PATCH] [navicli] catch exception if input is unreadable
-
-CLARiiON SP IP Address or [Enter] to exit: Traceback (most recent call last):
-  File "/usr/sbin/sosreport", line 25, in <module>
-    main(sys.argv[1:])
-  File "/usr/lib/python2.7/site-packages/sos/sosreport.py", line 1408, in main
-    sos.execute()
-  File "/usr/lib/python2.7/site-packages/sos/sosreport.py", line 1387, in execute
-    self.setup()
-  File "/usr/lib/python2.7/site-packages/sos/sosreport.py", line 1117, in setup
-    plug.setup()
-  File "/usr/lib/python2.7/site-packages/sos/plugins/navicli.py", line 72, in setup
-    ans = input("CLARiiON SP IP Address or [Enter] to exit: ")
-EOFError: EOF when reading a line
-
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/plugins/navicli.py | 5 ++++-
- 1 file changed, 4 insertions(+), 1 deletion(-)
-
-diff --git a/sos/plugins/navicli.py b/sos/plugins/navicli.py
-index 5175f89..3ee7d50 100644
---- a/sos/plugins/navicli.py
-+++ b/sos/plugins/navicli.py
-@@ -69,7 +69,10 @@ class Navicli(Plugin, RedHatPlugin):
-         CLARiiON_IP_address_list = []
-         CLARiiON_IP_loop = "stay_in"
-         while CLARiiON_IP_loop == "stay_in":
--            ans = input("CLARiiON SP IP Address or [Enter] to exit: ")
-+            try:
-+                ans = input("CLARiiON SP IP Address or [Enter] to exit: ")
-+            except:
-+                return
-             if self.check_ext_prog("navicli -h %s getsptime" % (ans,)):
-                 CLARiiON_IP_address_list.append(ans)
-             else:
--- 
-1.9.3
-
diff --git a/SOURCES/sos-bz1171658-docs-update-man-page-for-new-options.patch b/SOURCES/sos-bz1171658-docs-update-man-page-for-new-options.patch
deleted file mode 100644
index a05d692..0000000
--- a/SOURCES/sos-bz1171658-docs-update-man-page-for-new-options.patch
+++ /dev/null
@@ -1,91 +0,0 @@
-From 0be76caf77b53ce2726cb419262ceb8f52081c9e Mon Sep 17 00:00:00 2001
-From: "Bryn M. Reeves" <bmr@redhat.com>
-Date: Wed, 17 Dec 2014 13:01:03 +0000
-Subject: [PATCH] [docs] update man page for new options
-
-The man page was missing:
-
-  --verify
-  --all-logs
-  --log-size
-  --plugin-option
-
-And listed the old '--ticket' (now --ticket-number).
-
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- man/en/sosreport.1 | 29 +++++++++++++++++++++++++----
- 1 file changed, 25 insertions(+), 4 deletions(-)
-
-diff --git a/man/en/sosreport.1 b/man/en/sosreport.1
-index 88589cf..1066b1d 100644
---- a/man/en/sosreport.1
-+++ b/man/en/sosreport.1
-@@ -8,14 +8,19 @@ sosreport \- Collect and package diagnostic and support data
-           [-e|--enable-plugins plugin-names]\fR
-           [-o|--only-plugins plugin-names]\fR
-           [-a|--alloptions] [-v|--verbose]\fR
-+          [-k plug.opt|--plugin-option plug.opt]\fR
-           [--no-report] [--config-file conf]\fR
-           [--batch] [--build] [--debug]\fR
-           [--name name] [--case-id id] [--ticket-number nr]
-           [--tmp-dir directory]\fR
-           [-p|--profile profile-name]\fR
-           [--list-profiles]\fR
-+          [--verify]\fR
-+          [--log-size]\fR
-+          [--all-logs]\fR
-           [-z|--compression-type method]\fR
--          [--help]\fR
-+          [-h|--help]\fR
-+
- .SH DESCRIPTION
- \fBsosreport\fR generates an archive of configuration and diagnostic
- information from the running system. The archive may be stored locally
-@@ -46,7 +51,7 @@ Enable the specified plugin(s) only (all other plugins should be
- disabled). Multiple plugins may be specified by repeating the option
- or as a comma-separated list.
- .TP
--.B \-k PLUGNAME.PLUGOPT[=VALUE]
-+.B \-k PLUGNAME.PLUGOPT[=VALUE], \--plugin-option=PLUGNAME.PLUGOPT[=VALUE]
- Specify plug-in options. The option PLUGOPT is enabled, or set to the
- specified value in the plug-in PLUGNAME.
- .TP
-@@ -81,6 +86,22 @@ profiles include: boot, cluster, desktop, debug, hardware, identity,
- network, openstack, packagemanager, security, services, storage,
- sysmgmt, system, performance, virt, and webserver.
- .TP
-+.B \--verify
-+Instructs plugins to perform plugin-specific verification during data
-+collection. This may include package manager verification, log integrity
-+testing or other plugin defined behaviour. Use of \--verify may cause
-+the time taken to generate a report to be considerably longer.
-+.TP
-+.B \--log-size
-+Places a global limit on the size of any collected set of logs. The
-+limit is applied separately for each set of logs collected by any
-+plugin.
-+.TP
-+.B \--all-logs
-+Tell plugins to collect all possible log data ignoring any size limits
-+and including logs in non-default locations. This option may significantly
-+increase the size of reports.
-+.TP
- .B \-z, \--compression-type METHOD
- Override the default compression type specified by the active policy.
- .TP
-@@ -94,9 +115,9 @@ Specify a name to be used for the archive.
- .B \--case-id NUMBER
- Specify a case identifier to associate with the archive.
- Identifiers may include alphanumeric characters, commas and periods ('.').
--Synonymous with \--ticket, \--ticket-number.
-+Synonymous with \--ticket-number.
- .TP
--.B \--ticket, \--ticket-number NUMBER
-+.B \--ticket-number NUMBER
- Specify a ticket number or other identifier to associate with the archive.
- Identifiers may include alphanumeric characters, commas and periods ('.').
- Synonymous with \--case-id.
--- 
-1.9.3
-
diff --git a/SOURCES/sos-bz1176159-mysql-improve-dbuser-dbpass-handling.patch b/SOURCES/sos-bz1176159-mysql-improve-dbuser-dbpass-handling.patch
deleted file mode 100644
index e6f2d49..0000000
--- a/SOURCES/sos-bz1176159-mysql-improve-dbuser-dbpass-handling.patch
+++ /dev/null
@@ -1,80 +0,0 @@
-From 7c12e6c994b3320ef57a13e06f5c445b6bca7935 Mon Sep 17 00:00:00 2001
-From: "Bryn M. Reeves" <bmr@redhat.com>
-Date: Thu, 22 Jan 2015 15:37:15 +0000
-Subject: [PATCH] [mysql] improve handling of dbuser, dbpass and MYSQL_PWD
-
-Make sure that the mysql plugin behaves correctly when given
-different combinations of values for dbuser, dbpass and MYSQL_PWD.
-
-* If dbdump is set then either dbpass or MYSQL_PWD must be set
-* Warn if dbdump is set and dbuser or dbpass is True/False/null
-  (indicates either 'sosreport -a' or '-k mysql.dbpass')
-
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/plugins/mysql.py | 24 ++++++++++++++++++++----
- 1 file changed, 20 insertions(+), 4 deletions(-)
-
-diff --git a/sos/plugins/mysql.py b/sos/plugins/mysql.py
-index dd899a3..8dba204 100644
---- a/sos/plugins/mysql.py
-+++ b/sos/plugins/mysql.py
-@@ -24,35 +24,51 @@ class Mysql(Plugin):
-     profiles = ('services',)
-     mysql_cnf = "/etc/my.cnf"
- 
-+    pw_warn_text = " (password visible in process listings)"
-+
-     option_list = [
-         ("dbuser", "username for database dumps", "", "mysql"),
--        ("dbpass", "password for database dumps", "", False),
-+        ("dbpass", "password for database dumps" + pw_warn_text, "", False),
-         ("dbdump", "collect a database dump", "", False)
-     ]
- 
-     def setup(self):
-         super(Mysql, self).setup()
-+
-         self.add_copy_spec([
-             self.mysql_cnf,
-             "/var/log/mysql/mysqld.log",
-             "/var/log/mariadb/mariadb.log",
-         ])
-+
-         if self.get_option("all_logs"):
-             self.add_copy_spec([
-                 "/var/log/mysql*",
-                 "/var/log/mariadb*"
-             ])
-+
-         if self.get_option("dbdump"):
-+            msg = "database user name and password must be supplied"
-+            dbdump_err = "mysql.dbdump: %s" % msg
-+
-             dbuser = self.get_option("dbuser")
-             dbpass = self.get_option("dbpass")
--            if isinstance(dbuser, bool) or isinstance(dbpass, bool):
--                # sosreport -a
--                return
-+
-             if 'MYSQL_PWD' in os.environ:
-                 dbpass = os.environ['MYSQL_PWD']
-+
-+            if dbuser is True or dbpass is True:
-+                # sosreport -a or -k mysql.{dbuser,dbpass}
-+                self.soslog.warning(dbdump_err)
-+                return
-+
-             if not dbpass or dbpass is False:
-                 # no MySQL password
-+                self.soslog.warning(dbdump_err)
-                 return
-+
-+            # no need to save/restore as this variable is private to
-+            # the mysql plugin.
-             os.environ['MYSQL_PWD'] = dbpass
- 
-             opts = "--user=%s --all-databases" % dbuser
--- 
-1.9.3
-
diff --git a/SOURCES/sos-bz1180919-mysql-test-for-boolean-values.patch b/SOURCES/sos-bz1180919-mysql-test-for-boolean-values.patch
deleted file mode 100644
index 8eecd34..0000000
--- a/SOURCES/sos-bz1180919-mysql-test-for-boolean-values.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-From 05466cd6d9d70321fc7a0097334ef36af8dfeb43 Mon Sep 17 00:00:00 2001
-From: "Bryn M. Reeves" <bmr@redhat.com>
-Date: Tue, 20 Jan 2015 16:16:17 +0000
-Subject: [PATCH] [mysql] test for boolean values in user and password options
-
-If sosreport is run with '-a' all options will be set to boolean
-True. This causes an exception if an attempt is made to set an
-environment variable to the option value:
-
-  Traceback (most recent call last):
-    File "/usr/sbin/sosreport", line 25, in <module>
-      main(sys.argv[1:])
-    File "/usr/lib/python2.7/site-packages/sos/sosreport.py", line 1435, in main
-      sos.execute()
-  TypeError: must be string, not bool
-
-  > /usr/lib64/python2.7/os.py(471)__setitem__()
-  -> putenv(key, item)
-
-Test both values with isinstance(val, bool) and do not attempt to
-collect a database dump if either is a boolean.
-
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/plugins/mysql.py | 3 +++
- 1 file changed, 3 insertions(+)
-
-diff --git a/sos/plugins/mysql.py b/sos/plugins/mysql.py
-index edab6d0..dd899a3 100644
---- a/sos/plugins/mysql.py
-+++ b/sos/plugins/mysql.py
-@@ -45,6 +45,9 @@ class Mysql(Plugin):
-         if self.get_option("dbdump"):
-             dbuser = self.get_option("dbuser")
-             dbpass = self.get_option("dbpass")
-+            if isinstance(dbuser, bool) or isinstance(dbpass, bool):
-+                # sosreport -a
-+                return
-             if 'MYSQL_PWD' in os.environ:
-                 dbpass = os.environ['MYSQL_PWD']
-             if not dbpass or dbpass is False:
--- 
-1.9.3
-
diff --git a/SOURCES/sos-bz1183265-httpd-collect-conf-modules.patch b/SOURCES/sos-bz1183265-httpd-collect-conf-modules.patch
deleted file mode 100644
index 7f8801f..0000000
--- a/SOURCES/sos-bz1183265-httpd-collect-conf-modules.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From b43460ecaeb7e332a993fb6ea19f4808d759711f Mon Sep 17 00:00:00 2001
-From: Coty Sutherland <sutherland.coty@gmail.com>
-Date: Thu, 28 May 2015 10:22:39 -0400
-Subject: [PATCH] [apache] Added collection of conf.modules.d dir for httpd 2.4
-
-Signed-off-by: Coty Sutherland <sutherland.coty@gmail.com>
-Signed-off-by: Adam Stokes <adam.stokes@ubuntu.com>
----
- sos/plugins/apache.py | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/sos/plugins/apache.py b/sos/plugins/apache.py
-index dc700cb..551b062 100644
---- a/sos/plugins/apache.py
-+++ b/sos/plugins/apache.py
-@@ -34,7 +34,8 @@ class RedHatApache(Apache, RedHatPlugin):
- 
-         self.add_copy_spec([
-             "/etc/httpd/conf/httpd.conf",
--            "/etc/httpd/conf.d/*.conf"
-+            "/etc/httpd/conf.d/*.conf",
-+            "/etc/httpd/conf.modules.d/*.conf"
-         ])
- 
-         self.add_forbidden_path("/etc/httpd/conf/password.conf")
--- 
-1.8.3.1
-
diff --git a/SOURCES/sos-bz1183297-pcp-collect-config.patch b/SOURCES/sos-bz1183297-pcp-collect-config.patch
deleted file mode 100644
index 009c234..0000000
--- a/SOURCES/sos-bz1183297-pcp-collect-config.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From 9cf393ac27728287927d2c1400e046a8c16679e7 Mon Sep 17 00:00:00 2001
-From: "Bryn M. Reeves" <bmr@redhat.com>
-Date: Wed, 11 Feb 2015 21:17:11 +0000
-Subject: [PATCH] [pcp] collect /etc/pcp.conf
-
-The file /etc/pcp.conf is added to list of lists that will be collected.
-
-Signed-off-by: Shane Bradley <sbradley@redhat.com>
-
-Fixes #465.
-
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/plugins/pcp.py | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/sos/plugins/pcp.py b/sos/plugins/pcp.py
-index a696908..69872a3 100644
---- a/sos/plugins/pcp.py
-+++ b/sos/plugins/pcp.py
-@@ -89,6 +89,7 @@ class Pcp(Plugin, RedHatPlugin, DebianPlugin):
-         var_conf_dir = os.path.join(self.pcp_var_dir, 'config')
-         self.add_copy_spec([
-             self.pcp_sysconf_dir,
-+            self.pcp_conffile,
-             var_conf_dir
-         ])
- 
--- 
-1.8.3.1
-
diff --git a/SOURCES/sos-bz1183768-puppet-collect-config.patch b/SOURCES/sos-bz1183768-puppet-collect-config.patch
deleted file mode 100644
index 6677894..0000000
--- a/SOURCES/sos-bz1183768-puppet-collect-config.patch
+++ /dev/null
@@ -1,68 +0,0 @@
-From c5f969e8a79a2bc7e0280e11e4a02599552b326f Mon Sep 17 00:00:00 2001
-From: Shane Bradley <sbradley@redhat.com>
-Date: Tue, 20 Jan 2015 11:33:31 -0500
-Subject: [PATCH] [puppet] adding new plugin for puppet
-
-Added a new plugin to collect files for puppet.
-
-Fixes: #473.
-
-Signed-off-by: Shane Bradley <sbradley@redhat.com>
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/plugins/puppet.py | 43 +++++++++++++++++++++++++++++++++++++++++++
- 1 file changed, 43 insertions(+)
- create mode 100644 sos/plugins/puppet.py
-
-diff --git a/sos/plugins/puppet.py b/sos/plugins/puppet.py
-new file mode 100644
-index 0000000..4da95a2
---- /dev/null
-+++ b/sos/plugins/puppet.py
-@@ -0,0 +1,43 @@
-+# This program is free software; you can redistribute it and/or modify
-+# it under the terms of the GNU General Public License as published by
-+# the Free Software Foundation; either version 2 of the License, or
-+# (at your option) any later version.
-+
-+# This program is distributed in the hope that it will be useful,
-+# but WITHOUT ANY WARRANTY; without even the implied warranty of
-+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+# GNU General Public License for more details.
-+
-+# You should have received a copy of the GNU General Public License
-+# along with this program; if not, write to the Free Software
-+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-+
-+from sos.plugins import Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin
-+from glob import glob
-+
-+
-+class Puppet(Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin):
-+    """Puppet service
-+    """
-+
-+    plugin_name = 'puppet'
-+    profiles = ('services',)
-+
-+    def setup(self):
-+        self.add_copy_spec([
-+            "/etc/puppet/*.conf",
-+            "/etc/puppet/rack/*",
-+            "/etc/puppet/manifests/*",
-+            "/var/log/puppet/*.log",
-+        ])
-+
-+    def postproc(self):
-+        for device_conf in glob("/etc/puppet/device.conf*"):
-+            self.do_file_sub(
-+                device_conf,
-+                r"(.*url*.ssh://.*:).*(@.*)",
-+                r"\1%s\2" % ('***')
-+            )
-+
-+        return
-+# vim: et ts=4 sw=4
--- 
-1.8.3.1
-
diff --git a/SOURCES/sos-bz1183770-parted-no-human-readable.patch b/SOURCES/sos-bz1183770-parted-no-human-readable.patch
deleted file mode 100644
index 6ae4b3e..0000000
--- a/SOURCES/sos-bz1183770-parted-no-human-readable.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From c77c14ecd3e7e35a331cef169b08ffcb318952c2 Mon Sep 17 00:00:00 2001
-From: Shane Bradley <sbradley@redhat.com>
-Date: Tue, 20 Jan 2015 11:08:59 -0500
-Subject: [PATCH] [block] don't use parted human readable output
-
-Changed the parted command to return data in sectors units
-instead of human readable form.
-
-Fixes #471.
-
-Signed-off-by: Shane Bradley <sbradley@redhat.com>
-Signed-off-by: Bryn M. Reeves <bmr@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 7984f0d..e02304c 100644
---- a/sos/plugins/block.py
-+++ b/sos/plugins/block.py
-@@ -46,7 +46,7 @@ class Block(Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin):
-                 disk_path = os.path.join('/dev/', disk)
-                 self.add_cmd_output([
-                     "udevadm info -ap /sys/block/%s" % (disk),
--                    "parted -s %s print" % (disk_path),
-+                    "parted -s %s unit s print" % (disk_path),
-                     "fdisk -l %s" % disk_path
-                 ])
- 
--- 
-1.8.3.1
-
diff --git a/SOURCES/sos-bz1184602-sos-verify-profile-for-valid-plugins-only.patch b/SOURCES/sos-bz1184602-sos-verify-profile-for-valid-plugins-only.patch
deleted file mode 100644
index fbd5109..0000000
--- a/SOURCES/sos-bz1184602-sos-verify-profile-for-valid-plugins-only.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-From df219b43b5edab9868cb7d7511f7da1c1f5e225a Mon Sep 17 00:00:00 2001
-From: "Bryn M. Reeves" <bmr@redhat.com>
-Date: Wed, 1 Jul 2015 14:18:50 +0100
-Subject: [PATCH] [general] verify --profile contains valid plugins only
-
-If --profile contains an invalid profile name, stop, and
-print the list of available profiles as well as the offending
-profile name (helpful when multiple profiles have been specified).
-
-E.g.:
-
-sosreport (version 3.2)
-
-Unknown or inactive profile(s) provided: virtuous
-The following profiles are available:
-
- boot            boot, startup, systemd, udev
- cluster
-[...]
-
-Based on a patch from Pavel Moravec.
-
-Fixes #505.
-
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/sosreport.py | 10 ++++++++++
- 1 file changed, 10 insertions(+)
-
-diff --git a/sos/sosreport.py.orig b/sos/sosreport.py
-index 7ea7b33..2af9de5 100644
---- a/sos/sosreport.py.orig
-+++ b/sos/sosreport.py
-@@ -844,6 +844,7 @@ class SoSReport(object):
-         self.plugin_names = deque()
-         self.profiles = set()
-         using_profiles = len(self.opts.profiles)
-+        remaining_profiles = list(self.opts.profiles)
-         # validate and load plugins
-         for plug in plugins:
-             plugbase, ext = os.path.splitext(plug)
-@@ -896,12 +897,21 @@ class SoSReport(object):
-                     self._skip(plugin_class, _("not specified"))
-                     continue
- 
-+                for i in plugin_class.profiles:
-+                    if i in remaining_profiles:
-+                        remaining_profiles.remove(i)
-+
-                 self._load(plugin_class)
-             except Exception as e:
-                 self.soslog.warning(_("plugin %s does not install, "
-                                     "skipping: %s") % (plug, e))
-                 if self.raise_plugins:
-                     raise
-+        if len(remaining_profiles) > 0:
-+            self.soslog.error(_("Unknown or inactive profile(s) provided:"
-+                                " %s") % ", ".join(remaining_profiles))
-+            self.list_profiles()
-+            self._exit(1)
- 
-     def _set_all_options(self):
-         if self.opts.usealloptions:
diff --git a/SOURCES/sos-bz1185093-sos-ticket-number-name-params.patch b/SOURCES/sos-bz1185093-sos-ticket-number-name-params.patch
deleted file mode 100644
index ed6c475..0000000
--- a/SOURCES/sos-bz1185093-sos-ticket-number-name-params.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-From 75901ef7906690aadaabc8925ac9a2e8523ed1a3 Mon Sep 17 00:00:00 2001
-From: Pavel Moravec <pmoravec@redhat.com>
-Date: Sun, 1 Feb 2015 13:40:18 +0100
-Subject: [PATCH] [general] Better handling --name and --ticket-number in
- interactive mode
-
-Carry forward values from the CLI options into the interactive mode,
-resolves #485
-
-Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
----
- sos/policies/__init__.py | 19 +++++++++++--------
- 1 file changed, 11 insertions(+), 8 deletions(-)
-
-diff --git a/sos/policies/__init__.py b/sos/policies/__init__.py
-index 34a2f6a..4c42d02 100644
---- a/sos/policies/__init__.py
-+++ b/sos/policies/__init__.py
-@@ -402,17 +402,20 @@ class LinuxPolicy(Policy):
-     def pre_work(self):
-         # this method will be called before the gathering begins
- 
--        localname = self.get_local_name()
-+        cmdline_opts = self.commons['cmdlineopts']
-+        customer_name = cmdline_opts.customer_name
-+        localname = customer_name if customer_name else self.get_local_name()
-+        caseid = cmdline_opts.case_id if cmdline_opts.case_id else ""
- 
--        if not self.commons['cmdlineopts'].batch and not \
--                self.commons['cmdlineopts'].quiet:
-+        if not cmdline_opts.batch and not \
-+                cmdline_opts.quiet:
-             try:
-                 self.report_name = input(_("Please enter your first initial "
-                                          "and last name [%s]: ") % localname)
- 
-                 self.case_id = input(_("Please enter the case id "
-                                        "that you are generating this "
--                                       "report for: "))
-+                                       "report for [%s]: ") % caseid)
-                 self._print()
-             except:
-                 self._print()
-@@ -421,11 +424,11 @@ class LinuxPolicy(Policy):
-         if len(self.report_name) == 0:
-             self.report_name = localname
- 
--        if self.commons['cmdlineopts'].customer_name:
--            self.report_name = self.commons['cmdlineopts'].customer_name
-+        if customer_name:
-+            self.report_name = customer_name
- 
--        if self.commons['cmdlineopts'].case_id:
--            self.case_id = self.commons['cmdlineopts'].case_id
-+        if cmdline_opts.case_id:
-+            self.case_id = cmdline_opts.case_id
- 
-         self.report_name = self.sanitize_report_name(self.report_name)
-         if self.case_id:
--- 
-1.8.3.1
-
diff --git a/SOURCES/sos-bz1185990-sos-inside-container.patch b/SOURCES/sos-bz1185990-sos-inside-container.patch
deleted file mode 100644
index 213a75b..0000000
--- a/SOURCES/sos-bz1185990-sos-inside-container.patch
+++ /dev/null
@@ -1,2458 +0,0 @@
-From cb3d265849771f7e53b0587196930328005414e0 Mon Sep 17 00:00:00 2001
-From: "Bryn M. Reeves" <bmr@redhat.com>
-Date: Mon, 19 Jan 2015 18:54:09 +0000
-Subject: [PATCH 01/38] [sosreport] add --sysroot option
-
-Add a --sysroot=SYSROOT option to specify that the root file system to
-be inspected is mounted at SYSROOT.
-
-This allows basic support for container environments where sos is
-running in a container and inspecting the containing host and its
-environment ('superspection').
-
-For this to work currently the following conditions must be met:
-
-- sos is sufficiently privileged to read and search relevant file
-  system paths within SYSROOT
-
-- sos must share the PID and network namespace of the target host
-
-- binaries called by sos must be present and executable in the
-  SYSROOT inherited by sos. If PATH includes paths inside SYSROOT
-  appropriate values must be set for LD_LIBRARY_PATH to allow
-  shared executables to be linked.
-
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/sosreport.py | 16 +++++++++++++++-
- 1 file changed, 15 insertions(+), 1 deletion(-)
-
-diff --git a/sos/sosreport.py b/sos/sosreport.py
-index 9a0cf6c..47eddc9 100644
---- a/sos/sosreport.py
-+++ b/sos/sosreport.py
-@@ -529,6 +529,17 @@ class SoSOptions(object):
-         self._report = value
- 
-     @property
-+    def sysroot(self):
-+        if self._options is not None:
-+            return self._options.sysroot
-+        return self._sysroot
-+
-+    @sysroot.setter
-+    def sysroot(self, value):
-+        self._check_options_initialized()
-+        self._sysroot = value
-+
-+    @property
-     def compression_type(self):
-         if self._options is not None:
-             return self._options.compression_type
-@@ -615,6 +626,9 @@ class SoSOptions(object):
-         parser.add_option("--no-report", action="store_true",
-                           dest="report",
-                           help="Disable HTML/XML reporting", default=False)
-+        parser.add_option("-s", "--sysroot", action="store", dest="sysroot",
-+                          help="system root directory path (default='/')",
-+                          default="/")
-         parser.add_option("-z", "--compression-type", dest="compression_type",
-                           help="compression technology to use [auto, "
-                                "gzip, bzip2, xz] (default=auto)",
--- 
-1.8.3.1
-
-
-From 3eed62e132f67930bb1cf5c9eaa5927083011043 Mon Sep 17 00:00:00 2001
-From: "Bryn M. Reeves" <bmr@redhat.com>
-Date: Fri, 23 Jan 2015 15:24:00 +0000
-Subject: [PATCH 02/38] [plugins] propagate sysroot to Plugin via commons
-
-Although plugins should generally be unaware that they are being
-run with an alternate sysroot the generic plugin IO code must
-peform the appropriate path prefixing when sysroot is not '/'.
-
-Propagate sysroot to plugin classes via the commons dictionary.
-
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/sosreport.py | 6 ++++++
- 1 file changed, 6 insertions(+)
-
-diff --git a/sos/sosreport.py b/sos/sosreport.py
-index 47eddc9..580b5bd 100644
---- a/sos/sosreport.py
-+++ b/sos/sosreport.py
-@@ -651,6 +651,7 @@ class SoSReport(object):
-         self.archive = None
-         self.tempfile_util = None
-         self._args = args
-+        self.sysroot = "/"
- 
-         try:
-             import signal
-@@ -681,6 +682,10 @@ class SoSReport(object):
-         self.tempfile_util = TempFileUtil(self.tmpdir)
-         self._set_directories()
- 
-+        # set alternate system root directory
-+        if self.opts.sysroot:
-+            self.sysroot = self.opts.sysroot
-+
-     def print_header(self):
-         self.ui_log.info("\n%s\n" % _("sosreport (version %s)" %
-                          (__version__,)))
-@@ -693,6 +698,7 @@ class SoSReport(object):
-             'tmpdir': self.tmpdir,
-             'soslog': self.soslog,
-             'policy': self.policy,
-+            'sysroot': self.sysroot,
-             'verbosity': self.opts.verbosity,
-             'xmlreport': self.xml_report,
-             'cmdlineopts': self.opts,
--- 
-1.8.3.1
-
-
-From b1f3b3373e8ef3e94238760a3e7e78d95c564260 Mon Sep 17 00:00:00 2001
-From: "Bryn M. Reeves" <bmr@redhat.com>
-Date: Fri, 23 Jan 2015 23:17:34 +0000
-Subject: [PATCH 03/38] [plugins] prefix target paths with self.sysroot
-
-Prefix copyspecs with self.sysroot when using an alternate root
-path. Prefixes are applied before expanding copyspecs and the
-prefixed paths are stored as the 'srcpath' attribute in the
-archive. Destination paths in the report archive do not include
-the prefix.
-
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/plugins/__init__.py | 50 +++++++++++++++++++++++++++++++++++--------
- tests/option_tests.py   |  3 ++-
- tests/plugin_tests.py   | 57 ++++++++++++++++++++++++++++++++-----------------
- 3 files changed, 81 insertions(+), 29 deletions(-)
-
-diff --git a/sos/plugins/__init__.py b/sos/plugins/__init__.py
-index 413ee73..790338b 100644
---- a/sos/plugins/__init__.py
-+++ b/sos/plugins/__init__.py
-@@ -101,6 +101,7 @@ class Plugin(object):
-     files = ()
-     archive = None
-     profiles = ()
-+    sysroot = '/'
- 
-     def __init__(self, commons):
-         if not getattr(self, "option_list", False):
-@@ -117,6 +118,7 @@ class Plugin(object):
-         self.copy_paths = set()
-         self.copy_strings = []
-         self.collect_cmds = []
-+        self.sysroot = commons['sysroot']
- 
-         self.soslog = self.commons['soslog'] if 'soslog' in self.commons \
-             else logging.getLogger('sos')
-@@ -154,6 +156,19 @@ class Plugin(object):
-     def policy(self):
-         return self.commons["policy"]
- 
-+    def join_sysroot(self, path):
-+        if path[0] == os.sep:
-+            path = path[1:]
-+        return os.path.join(self.sysroot, path)
-+
-+    def strip_sysroot(self, path):
-+        if path.startswith(self.sysroot):
-+            return path[len(self.sysroot):]
-+        return path
-+
-+    def use_sysroot(self):
-+        return self.sysroot != os.path.abspath(os.sep)
-+
-     def is_installed(self, package_name):
-         '''Is the package $package_name installed?'''
-         return self.policy().pkg_by_name(package_name) is not None
-@@ -207,6 +222,7 @@ class Plugin(object):
-         '''
-         try:
-             path = self._get_dest_for_srcpath(srcpath)
-+            self._log_debug("substituting scrpath '%s'" % srcpath)
-             self._log_debug("substituting '%s' for '%s' in '%s'"
-                             % (subst, regexp, path))
-             if not path:
-@@ -257,8 +273,9 @@ class Plugin(object):
-         self._log_debug("copying link '%s' pointing to '%s' with isdir=%s"
-                         % (srcpath, linkdest, os.path.isdir(absdest)))
- 
-+        dstpath = self.strip_sysroot(srcpath)
-         # use the relative target path in the tarball
--        self.archive.add_link(reldest, srcpath)
-+        self.archive.add_link(reldest, dstpath)
- 
-         if os.path.isdir(absdest):
-             self._log_debug("link '%s' is a directory, skipping..." % linkdest)
-@@ -277,7 +294,7 @@ class Plugin(object):
-         self._do_copy_path(absdest)
- 
-         self.copied_files.append({'srcpath': srcpath,
--                                  'dstpath': srcpath,
-+                                  'dstpath': dstpath,
-                                   'symlink': "yes",
-                                   'pointsto': linkdest})
- 
-@@ -288,6 +305,8 @@ class Plugin(object):
-             self._do_copy_path(os.path.join(srcpath, afile), dest=None)
- 
-     def _get_dest_for_srcpath(self, srcpath):
-+        if self.use_sysroot():
-+            srcpath = self.join_sysroot(srcpath)
-         for copied in self.copied_files:
-             if srcpath == copied["srcpath"]:
-                 return copied["dstpath"]
-@@ -315,6 +334,9 @@ class Plugin(object):
-         if not dest:
-             dest = srcpath
- 
-+        if self.use_sysroot():
-+            dest = self.strip_sysroot(dest)
-+
-         try:
-             st = os.lstat(srcpath)
-         except (OSError, IOError):
-@@ -333,7 +355,7 @@ class Plugin(object):
-         if not (stat.S_ISREG(st.st_mode) or stat.S_ISDIR(st.st_mode)):
-             ntype = _node_type(st)
-             self._log_debug("creating %s node at archive:'%s'"
--                            % (ntype, srcpath))
-+                            % (ntype, dest))
-             self._copy_node(srcpath, st)
-             return
- 
-@@ -347,9 +369,11 @@ class Plugin(object):
-         else:
-             self.archive.add_file(srcpath, dest)
- 
--        self.copied_files.append({'srcpath': srcpath,
--                                  'dstpath': dest,
--                                  'symlink': "no"})
-+        self.copied_files.append({
-+            'srcpath': srcpath,
-+            'dstpath': dest,
-+            'symlink': "no"
-+        })
- 
-     def add_forbidden_path(self, forbiddenPath):
-         """Specify a path to not copy, even if it's part of a copy_specs[]
-@@ -416,6 +440,9 @@ class Plugin(object):
-         except Exception:
-             return default
- 
-+    def _add_copy_paths(self, copy_paths):
-+        self.copy_paths.update(copy_paths)
-+
-     def add_copy_spec_limit(self, copyspec, sizelimit=None, tailit=True):
-         """Add a file or glob but limit it to sizelimit megabytes. If fname is
-         a single file the file will be tailed to meet sizelimit. If the first
-@@ -424,10 +451,13 @@ class Plugin(object):
-         if not (copyspec and len(copyspec)):
-             return False
- 
-+        if self.use_sysroot():
-+            copyspec = self.join_sysroot(copyspec)
-         files = glob.glob(copyspec)
-         files.sort()
-         if len(files) == 0:
-             return
-+
-         current_size = 0
-         limit_reached = False
-         sizelimit *= 1024 * 1024  # in MB
-@@ -438,7 +468,7 @@ class Plugin(object):
-             if sizelimit and current_size > sizelimit:
-                 limit_reached = True
-                 break
--            self.add_copy_spec(_file)
-+            self._add_copy_paths([_file])
- 
-         if limit_reached and tailit:
-             file_name = _file
-@@ -459,12 +489,14 @@ class Plugin(object):
-         if isinstance(copyspecs, six.string_types):
-             copyspecs = [copyspecs]
-         for copyspec in copyspecs:
-+            if self.use_sysroot():
-+                copyspec = self.join_sysroot(copyspec)
-             if not (copyspec and len(copyspec)):
-                 self._log_warn("added null or empty copy spec")
-                 return False
-             copy_paths = self._expand_copy_spec(copyspec)
--            self.copy_paths.update(copy_paths)
--            self._log_info("added copyspec '%s'" % copyspec)
-+            self._add_copy_paths(copy_paths)
-+            self._log_info("added copyspec '%s'" % copy_paths)
- 
-     def get_command_output(self, prog, timeout=300, runat=None, stderr=True):
-         result = sos_get_command_output(prog, timeout=timeout, runat=runat,
-diff --git a/tests/option_tests.py b/tests/option_tests.py
-index fe37ccf..e8a26e2 100644
---- a/tests/option_tests.py
-+++ b/tests/option_tests.py
-@@ -8,10 +8,11 @@ class GlobalOptionTest(unittest.TestCase):
- 
-     def setUp(self):
-         self.commons = {
-+            'sysroot': '/',
-             'global_plugin_options': {
-                 'test_option': 'foobar',
-                 'baz': None,
--                'empty_global': True,
-+                'empty_global': True
-             },
-         }
-         self.plugin = Plugin(self.commons)
-diff --git a/tests/plugin_tests.py b/tests/plugin_tests.py
-index e30ded5..14d3b49 100644
---- a/tests/plugin_tests.py
-+++ b/tests/plugin_tests.py
-@@ -127,50 +127,53 @@ class PluginToolTests(unittest.TestCase):
- 
- class PluginTests(unittest.TestCase):
- 
-+    sysroot = os.getcwd()
-+
-     def setUp(self):
-         self.mp = MockPlugin({
--            'cmdlineopts': MockOptions()
-+            'cmdlineopts': MockOptions(),
-+            'sysroot': self.sysroot
-         })
-         self.mp.archive = MockArchive()
- 
-     def test_plugin_default_name(self):
--        p = MockPlugin({})
-+        p = MockPlugin({'sysroot': self.sysroot})
-         self.assertEquals(p.name(), "mockplugin")
- 
-     def test_plugin_set_name(self):
--        p = NamedMockPlugin({})
-+        p = NamedMockPlugin({'sysroot': self.sysroot})
-         self.assertEquals(p.name(), "testing")
- 
-     def test_plugin_no_descrip(self):
--        p = MockPlugin({})
-+        p = MockPlugin({'sysroot': self.sysroot})
-         self.assertEquals(p.get_description(), "<no description available>")
- 
-     def test_plugin_no_descrip(self):
--        p = NamedMockPlugin({})
-+        p = NamedMockPlugin({'sysroot': self.sysroot})
-         self.assertEquals(p.get_description(), "This plugin has a description.")
- 
-     def test_set_plugin_option(self):
--        p = MockPlugin({})
-+        p = MockPlugin({'sysroot': self.sysroot})
-         p.set_option("opt", "testing")
-         self.assertEquals(p.get_option("opt"), "testing")
- 
-     def test_set_nonexistant_plugin_option(self):
--        p = MockPlugin({})
-+        p = MockPlugin({'sysroot': self.sysroot})
-         self.assertFalse(p.set_option("badopt", "testing"))
- 
-     def test_get_nonexistant_plugin_option(self):
--        p = MockPlugin({})
-+        p = MockPlugin({'sysroot': self.sysroot})
-         self.assertEquals(p.get_option("badopt"), 0)
- 
-     def test_get_unset_plugin_option(self):
--        p = MockPlugin({})
-+        p = MockPlugin({'sysroot': self.sysroot})
-         self.assertEquals(p.get_option("opt"), 0)
- 
-     def test_get_unset_plugin_option_with_default(self):
-         # this shows that even when we pass in a default to get,
-         # we'll get the option's default as set in the plugin
-         # this might not be what we really want
--        p = MockPlugin({})
-+        p = MockPlugin({'sysroot': self.sysroot})
-         self.assertEquals(p.get_option("opt", True), True)
- 
-     def test_get_unset_plugin_option_with_default_not_none(self):
-@@ -178,20 +181,20 @@ class PluginTests(unittest.TestCase):
-         # if the plugin default is not None
-         # we'll get the option's default as set in the plugin
-         # this might not be what we really want
--        p = MockPlugin({})
-+        p = MockPlugin({'sysroot': self.sysroot})
-         self.assertEquals(p.get_option("opt2", True), False)
- 
-     def test_get_option_as_list_plugin_option(self):
--        p = MockPlugin({})
-+        p = MockPlugin({'sysroot': self.sysroot})
-         p.set_option("opt", "one,two,three")
-         self.assertEquals(p.get_option_as_list("opt"), ['one', 'two', 'three'])
- 
-     def test_get_option_as_list_plugin_option_default(self):
--        p = MockPlugin({})
-+        p = MockPlugin({'sysroot': self.sysroot})
-         self.assertEquals(p.get_option_as_list("opt", default=[]), [])
- 
-     def test_get_option_as_list_plugin_option_not_list(self):
--        p = MockPlugin({})
-+        p = MockPlugin({'sysroot': self.sysroot})
-         p.set_option("opt", "testing")
-         self.assertEquals(p.get_option_as_list("opt"), ['testing'])
- 
-@@ -205,7 +208,8 @@ class PluginTests(unittest.TestCase):
- 
-     def test_copy_dir_forbidden_path(self):
-         p = ForbiddenMockPlugin({
--            'cmdlineopts': MockOptions()
-+            'cmdlineopts': MockOptions(),
-+            'sysroot': self.sysroot
-         })
-         p.archive = MockArchive()
-         p.setup()
-@@ -219,12 +223,18 @@ class AddCopySpecTests(unittest.TestCase):
- 
-     def setUp(self):
-         self.mp = MockPlugin({
--            'cmdlineopts': MockOptions()
-+            'cmdlineopts': MockOptions(),
-+            'sysroot': os.getcwd()
-         })
-         self.mp.archive = MockArchive()
- 
-     def assert_expect_paths(self):
--        self.assertEquals(self.mp.copy_paths, self.expect_paths)
-+        def pathmunge(path):
-+            if path[0] == '/':
-+                path = path[1:]
-+            return os.path.join(self.mp.sysroot, path)
-+        expected_paths = set(map(pathmunge, self.expect_paths))
-+        self.assertEquals(self.mp.copy_paths, expected_paths)
-         
-     # add_copy_spec()
- 
-@@ -242,6 +252,7 @@ class AddCopySpecTests(unittest.TestCase):
-     # add_copy_spec_limit()
- 
-     def test_single_file_over_limit(self):
-+        self.mp.sysroot = '/'
-         fn = create_file(2) # create 2MB file, consider a context manager
-         self.mp.add_copy_spec_limit(fn, 1)
-         content, fname = self.mp.copy_strings[0]
-@@ -252,10 +263,12 @@ class AddCopySpecTests(unittest.TestCase):
-         os.unlink(fn)
- 
-     def test_bad_filename(self):
-+        self.mp.sysroot = '/'
-         self.assertFalse(self.mp.add_copy_spec_limit('', 1))
-         self.assertFalse(self.mp.add_copy_spec_limit(None, 1))
- 
-     def test_glob_file_over_limit(self):
-+        self.mp.sysroot = '/'
-         # assume these are in /tmp
-         fn = create_file(2)
-         fn2 = create_file(2)
-@@ -271,7 +284,10 @@ class AddCopySpecTests(unittest.TestCase):
- class CheckEnabledTests(unittest.TestCase):
- 
-     def setUp(self):
--        self.mp = EnablerPlugin({'policy': sos.policies.load()})
-+        self.mp = EnablerPlugin({
-+            'policy': sos.policies.load(),
-+            'sysroot': os.getcwd()
-+        })
- 
-     def test_checks_for_file(self):
-         f = j("tail_test.txt")
-@@ -296,7 +312,8 @@ class RegexSubTests(unittest.TestCase):
- 
-     def setUp(self):
-         self.mp = MockPlugin({
--            'cmdlineopts': MockOptions()
-+            'cmdlineopts': MockOptions(),
-+            'sysroot': os.getcwd()
-         })
-         self.mp.archive = MockArchive()
- 
-@@ -310,6 +327,8 @@ class RegexSubTests(unittest.TestCase):
-         self.assertEquals(0, replacements)
- 
-     def test_replacements(self):
-+        # test uses absolute paths
-+        self.mp.sysroot = '/'
-         self.mp.add_copy_spec(j("tail_test.txt"))
-         self.mp.collect()
-         replacements = self.mp.do_file_sub(j("tail_test.txt"), r"(tail)", "foobar")
--- 
-1.8.3.1
-
-
-From c4957d8aa4ea35f879639726267043f6bb46cc7c Mon Sep 17 00:00:00 2001
-From: "Bryn M. Reeves" <bmr@redhat.com>
-Date: Sat, 24 Jan 2015 00:35:09 +0000
-Subject: [PATCH 04/38] [docs] add -s/--sysroot to sosreport.1
-
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- man/en/sosreport.1 | 5 +++++
- 1 file changed, 5 insertions(+)
-
-diff --git a/man/en/sosreport.1 b/man/en/sosreport.1
-index c2b60d8..b0a86f2 100644
---- a/man/en/sosreport.1
-+++ b/man/en/sosreport.1
-@@ -12,6 +12,7 @@ sosreport \- Collect and package diagnostic and support data
-           [--no-report] [--config-file conf]\fR
-           [--batch] [--build] [--debug]\fR
-           [--name name] [--case-id id] [--ticket-number nr]
-+          [-s|--sysroot]\fR
-           [--tmp-dir directory]\fR
-           [-p|--profile profile-name]\fR
-           [--list-profiles]\fR
-@@ -72,6 +73,10 @@ Disable HTML/XML report writing.
- .B \--config-file CONFIG
- Specify alternate configuration file.
- .TP
-+.B \-s, \--sysroot SYSROOT
-+Specify an alternate root file system path. Useful for collecting
-+reports from containers and images.
-+.TP
- .B \--tmp-dir DIRECTORY
- Specify alternate temporary directory to copy data as well as the
- compressed report.
--- 
-1.8.3.1
-
-
-From 4a0a3f9607006d402713320fc31780fb54556e6a Mon Sep 17 00:00:00 2001
-From: "Bryn M. Reeves" <bmr@redhat.com>
-Date: Sun, 25 Jan 2015 14:20:10 +0000
-Subject: [PATCH 05/38] [utilities] add chroot support to
- sos_get_command_output()
-
-Allow callers of sos_get_command_output() to specify a path to
-chroot into before executing command.
-
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/plugins/__init__.py  |  2 +-
- sos/utilities.py         | 27 ++++++++++++++++-----------
- tests/utilities_tests.py |  5 +++++
- 3 files changed, 22 insertions(+), 12 deletions(-)
-
-diff --git a/sos/plugins/__init__.py b/sos/plugins/__init__.py
-index 790338b..137e1a1 100644
---- a/sos/plugins/__init__.py
-+++ b/sos/plugins/__init__.py
-@@ -499,7 +499,7 @@ class Plugin(object):
-             self._log_info("added copyspec '%s'" % copy_paths)
- 
-     def get_command_output(self, prog, timeout=300, runat=None, stderr=True):
--        result = sos_get_command_output(prog, timeout=timeout, runat=runat,
-+        result = sos_get_command_output(prog, timeout=timeout, chdir=runat,
-                                         stderr=stderr)
-         if result['status'] == 124:
-             self._log_warn("command '%s' timed out after %ds"
-diff --git a/sos/utilities.py b/sos/utilities.py
-index dfe6128..a82ac7c 100644
---- a/sos/utilities.py
-+++ b/sos/utilities.py
-@@ -120,15 +120,20 @@ def is_executable(command):
-     return any(os.access(path, os.X_OK) for path in candidates)
- 
- 
--def sos_get_command_output(command, timeout=300, runat=None, stderr=True):
--    """Execute a command through the system shell. First checks to see if the
--    requested command is executable. Returns (returncode, stdout, 0)"""
--    def _child_chdir():
--        if(runat):
--            try:
--                os.chdir(runat)
--            except:
--                self.log_error("failed to chdir to '%s'" % runat)
-+def sos_get_command_output(command, timeout=300, stderr=False,
-+                           chroot=None, chdir=None):
-+    """Execute a command and return a dictionary of status and output,
-+    optionally changing root or current working directory before
-+    executing command.
-+    """
-+    # Change root or cwd for child only. Exceptions in the prexec_fn
-+    # closure are caught in the parent (chroot and chdir are bound from
-+    # the enclosing scope).
-+    def _child_prep_fn():
-+        if (chroot):
-+                os.chroot(chroot)
-+        if (chdir):
-+                os.chdir(chdir)
- 
-     cmd_env = os.environ
-     # ensure consistent locale for collected command output
-@@ -145,7 +150,7 @@ def sos_get_command_output(command, timeout=300, runat=None, stderr=True):
-         p = Popen(args, shell=False, stdout=PIPE,
-                   stderr=STDOUT if stderr else PIPE,
-                   bufsize=-1, env=cmd_env, close_fds=True,
--                  preexec_fn=_child_chdir)
-+                  preexec_fn=_child_prep_fn)
-     except OSError as e:
-         if e.errno == errno.ENOENT:
-             return {'status': 127, 'output': ""}
-@@ -185,7 +190,7 @@ def shell_out(cmd, timeout=30, runat=None):
-     """Shell out to an external command and return the output or the empty
-     string in case of error.
-     """
--    return sos_get_command_output(cmd, timeout=timeout, runat=runat)['output']
-+    return sos_get_command_output(cmd, timeout=timeout, chdir=runat)['output']
- 
- 
- class ImporterHelper(object):
-diff --git a/tests/utilities_tests.py b/tests/utilities_tests.py
-index 607056e..9327b1f 100644
---- a/tests/utilities_tests.py
-+++ b/tests/utilities_tests.py
-@@ -68,6 +68,11 @@ class ExecutableTest(unittest.TestCase):
-         self.assertEquals(result['status'], 127)
-         self.assertEquals(result['output'], "")
- 
-+    def test_output_chdir(self):
-+        result = sos_get_command_output("/usr/bin/pwd", chdir=TEST_DIR)
-+        self.assertEquals(result['status'], 0)
-+        self.assertEquals(result['output'].strip(), TEST_DIR)
-+
-     def test_shell_out(self):
-         path = os.path.join(TEST_DIR, 'test_exe.py')
-         self.assertEquals("executed\n", shell_out(path))
--- 
-1.8.3.1
-
-
-From 9a87cb3415a7a9587828ee40d689439949def1be Mon Sep 17 00:00:00 2001
-From: "Bryn M. Reeves" <bmr@redhat.com>
-Date: Sun, 25 Jan 2015 14:30:13 +0000
-Subject: [PATCH 06/38] [sosreport] add --chroot option
-
-Add a --chroot option to sosreport to control command chrooting.
-
-The option takes one of three values:
-
-  * auto   - Allow callers of the API to control chroot behaviour
-  * always - Always chroot external commands to --sysroot
-  * never  - Never chroot external commands
-
-This is a fairly low-level option and may not be exposed to the
-user in a final release; for now it will allow tests in container
-environments to control the chrooting behaviour used for a run.
-
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/sosreport.py         | 19 +++++++++++++++++++
- tests/utilities_tests.py |  4 +++-
- 2 files changed, 22 insertions(+), 1 deletion(-)
-
-diff --git a/sos/sosreport.py b/sos/sosreport.py
-index 580b5bd..d9abcb8 100644
---- a/sos/sosreport.py
-+++ b/sos/sosreport.py
-@@ -540,6 +540,21 @@ class SoSOptions(object):
-         self._sysroot = value
- 
-     @property
-+    def chroot(self):
-+        if self._options is not None:
-+            return self._options.chroot
-+        return self._chroot
-+
-+    @chroot.setter
-+    def chroot(self, value):
-+        self._check_options_initialized()
-+        if value not in ["auto", "always", "never"]:
-+            msg = "SoSOptions.chroot '%s' is not a valid chroot mode: "
-+            msg += "('auto', 'always', 'never')"
-+            raise ValueError(msg % value)
-+        self._chroot = value
-+
-+    @property
-     def compression_type(self):
-         if self._options is not None:
-             return self._options.compression_type
-@@ -630,6 +645,10 @@ class SoSOptions(object):
-         parser.add_option("-s", "--sysroot", action="store", dest="sysroot",
-                           help="system root directory path (default='/')",
-                           default="/")
-+        parser.add_option("-c", "--chroot", action="store", dest="chroot",
-+                          help="chroot executed commands to SYSROOT "
-+                               "[auto, always, never] (default=auto)",
-+                               default="auto")
-         parser.add_option("-z", "--compression-type", dest="compression_type",
-                           help="compression technology to use [auto, "
-                                "gzip, bzip2, xz] (default=auto)",
-diff --git a/tests/utilities_tests.py b/tests/utilities_tests.py
-index 9327b1f..c464692 100644
---- a/tests/utilities_tests.py
-+++ b/tests/utilities_tests.py
-@@ -69,7 +69,9 @@ class ExecutableTest(unittest.TestCase):
-         self.assertEquals(result['output'], "")
- 
-     def test_output_chdir(self):
--        result = sos_get_command_output("/usr/bin/pwd", chdir=TEST_DIR)
-+        cmd = "/bin/bash -c 'echo $PWD'"
-+        result = sos_get_command_output(cmd, chdir=TEST_DIR)
-+        print(result)
-         self.assertEquals(result['status'], 0)
-         self.assertEquals(result['output'].strip(), TEST_DIR)
- 
--- 
-1.8.3.1
-
-
-From 0d060dc3aa5e90373e7bb55f9310b4cf9db0dad4 Mon Sep 17 00:00:00 2001
-From: "Bryn M. Reeves" <bmr@redhat.com>
-Date: Sun, 25 Jan 2015 15:04:29 +0000
-Subject: [PATCH 07/38] [plugins] implement --chroot for command callouts
-
-When --chroot=always is given chroot all commands to SYSROOT.
-
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/plugins/__init__.py | 8 ++++++--
- 1 file changed, 6 insertions(+), 2 deletions(-)
-
-diff --git a/sos/plugins/__init__.py b/sos/plugins/__init__.py
-index 137e1a1..10fdae5 100644
---- a/sos/plugins/__init__.py
-+++ b/sos/plugins/__init__.py
-@@ -499,8 +499,12 @@ class Plugin(object):
-             self._log_info("added copyspec '%s'" % copy_paths)
- 
-     def get_command_output(self, prog, timeout=300, runat=None, stderr=True):
--        result = sos_get_command_output(prog, timeout=timeout, chdir=runat,
--                                        stderr=stderr)
-+        if self.commons['cmdlineopts'].chroot == 'always':
-+            root = self.sysroot
-+        else:
-+            root = None
-+        result = sos_get_command_output(prog, timeout=timeout, stderr=stderr
-+                                        chroot=root, chdir=runat)
-         if result['status'] == 124:
-             self._log_warn("command '%s' timed out after %ds"
-                            % (prog, timeout))
--- 
-1.8.3.1
-
-
-From f6f7934c7d3e7f6cb41879fc0625b06d0468af4e Mon Sep 17 00:00:00 2001
-From: "Bryn M. Reeves" <bmr@redhat.com>
-Date: Sun, 25 Jan 2015 19:32:04 +0000
-Subject: [PATCH 08/38] [plugin] fix chrooted symlink handling
-
-_copy_symlink() needs to strip_sysroot(), not join_sysroot(), on
-a link target before handing it to _do_copy_path().
-
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/plugins/__init__.py | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/sos/plugins/__init__.py b/sos/plugins/__init__.py
-index 10fdae5..9d04939 100644
---- a/sos/plugins/__init__.py
-+++ b/sos/plugins/__init__.py
-@@ -294,7 +294,7 @@ class Plugin(object):
-         # to absolute paths to pass to _do_copy_path.
-         self._log_debug("normalized link target '%s' as '%s'"
-                         % (linkdest, absdest))
--        self._do_copy_path(absdest)
-+        self._do_copy_path(self.strip_sysroot(absdest))
- 
-         self.copied_files.append({'srcpath': srcpath,
-                                   'dstpath': dstpath,
--- 
-1.8.3.1
-
-
-From b16fbf3911c6256674e072cff6fa706050861993 Mon Sep 17 00:00:00 2001
-From: "Bryn M. Reeves" <bmr@redhat.com>
-Date: Sun, 25 Jan 2015 21:54:19 +0000
-Subject: [PATCH 09/38] [sosreport] check for valid CHROOT values
-
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/sosreport.py | 16 +++++++++++++---
- 1 file changed, 13 insertions(+), 3 deletions(-)
-
-diff --git a/sos/sosreport.py b/sos/sosreport.py
-index d9abcb8..a0b89e7 100644
---- a/sos/sosreport.py
-+++ b/sos/sosreport.py
-@@ -225,6 +225,10 @@ class XmlReport(object):
-         outf.close()
- 
- 
-+# valid modes for --chroot
-+chroot_modes = ["auto", "always", "never"]
-+
-+
- class SoSOptions(object):
-     _list_plugins = False
-     _noplugins = []
-@@ -548,7 +552,7 @@ class SoSOptions(object):
-     @chroot.setter
-     def chroot(self, value):
-         self._check_options_initialized()
--        if value not in ["auto", "always", "never"]:
-+        if value not in chroot_modes:
-             msg = "SoSOptions.chroot '%s' is not a valid chroot mode: "
-             msg += "('auto', 'always', 'never')"
-             raise ValueError(msg % value)
-@@ -705,6 +709,14 @@ class SoSReport(object):
-         if self.opts.sysroot:
-             self.sysroot = self.opts.sysroot
- 
-+        self._setup_logging()
-+
-+        if self.opts.chroot not in chroot_modes:
-+            self.soslog.error("invalid chroot mode: %s" % self.opts.chroot)
-+            logging.shutdown()
-+            self.tempfile_util.clean()
-+            self._exit(1)
-+
-     def print_header(self):
-         self.ui_log.info("\n%s\n" % _("sosreport (version %s)" %
-                          (__version__,)))
-@@ -1205,7 +1217,6 @@ class SoSReport(object):
-                     self.ui_log.error(" %s while setting up plugins"
-                                       % e.strerror)
-                     self.ui_log.error("")
--                    self._exit(1)
-                 if self.raise_plugins:
-                     raise
-                 self._log_plugin_exception(plugname, "setup")
-@@ -1455,7 +1466,6 @@ class SoSReport(object):
- 
-     def execute(self):
-         try:
--            self._setup_logging()
-             self.policy.set_commons(self.get_commons())
-             self.print_header()
-             self.load_plugins()
--- 
-1.8.3.1
-
-
-From f06efd6fa7bbb0c81ce0461d4eaeed225d6f04a2 Mon Sep 17 00:00:00 2001
-From: "Bryn M. Reeves" <bmr@redhat.com>
-Date: Sun, 25 Jan 2015 23:03:08 +0000
-Subject: [PATCH 10/38] [plugins] add chroot parameter to callout APIs
-
-Expose sos_get_command_output()'s chroot support to plugins via
-add_cmd_output(), get_command_output(), call_ext_prog() and
-related Plugin methods.
-
-'chroot' is a boolean indicating whether the command should run
-in the chroot (True) or in the host namespace (False).
-
-Has no effect when Plugin.use_sysroot() is False.
-
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/plugins/__init__.py | 50 ++++++++++++++++++++++++++++---------------------
- 1 file changed, 29 insertions(+), 21 deletions(-)
-
-diff --git a/sos/plugins/__init__.py b/sos/plugins/__init__.py
-index 9d04939..c1b659d 100644
---- a/sos/plugins/__init__.py
-+++ b/sos/plugins/__init__.py
-@@ -498,12 +498,13 @@ class Plugin(object):
-             self._add_copy_paths(copy_paths)
-             self._log_info("added copyspec '%s'" % copy_paths)
- 
--    def get_command_output(self, prog, timeout=300, runat=None, stderr=True):
--        if self.commons['cmdlineopts'].chroot == 'always':
-+    def get_command_output(self, prog, timeout=300, stderr=True,
-+                           chroot=True, runat=None):
-+        if chroot or self.commons['cmdlineopts'].chroot == 'always':
-             root = self.sysroot
-         else:
-             root = None
--        result = sos_get_command_output(prog, timeout=timeout, stderr=stderr
-+        result = sos_get_command_output(prog, timeout=timeout, stderr=stderr,
-                                         chroot=root, chdir=runat)
-         if result['status'] == 124:
-             self._log_warn("command '%s' timed out after %ds"
-@@ -513,12 +514,13 @@ class Plugin(object):
-             self._log_debug("could not run '%s': command not found" % prog)
-         return result
- 
--    def call_ext_prog(self, prog, timeout=300, runat=None, stderr=True):
-+    def call_ext_prog(self, prog, timeout=300, stderr=True,
-+                      chroot=True, runat=None):
-         """Execute a command independantly of the output gathering part of
-         sosreport.
-         """
--        return self.get_command_output(prog, timeout=timeout, runat=runat,
--                                       stderr=True)
-+        return self.get_command_output(prog, timeout=timeout, stderr=stderr,
-+                                       chroot=chroot, runat=runat)
- 
-     def check_ext_prog(self, prog):
-         """Execute a command independently of the output gathering part of
-@@ -528,8 +530,8 @@ class Plugin(object):
-         return self.call_ext_prog(prog)['status'] == 0
- 
-     def add_cmd_output(self, cmds, suggest_filename=None,
--                       root_symlink=None, timeout=300, runat=None,
--                       stderr=True):
-+                       root_symlink=None, timeout=300, stderr=True,
-+                       chroot=True, runat=None):
-         """Run a program or a list of programs and collect the output"""
-         if isinstance(cmds, six.string_types):
-             cmds = [cmds]
-@@ -537,9 +539,10 @@ class Plugin(object):
-             self._log_warn("ambiguous filename or symlink for command list")
-         for cmd in cmds:
-             cmdt = (
--                cmd, suggest_filename, root_symlink, timeout, runat, stderr
-+                cmd, suggest_filename, root_symlink, timeout, stderr,
-+                chroot, runat
-             )
--            _tuplefmt = "('%s', '%s', '%s', %s, '%s', '%s')"
-+            _tuplefmt = "('%s', '%s', '%s', %s, '%s', '%s', '%s')"
-             _logstr = "packed command tuple: " + _tuplefmt
-             self._log_debug(_logstr % cmdt)
-             self.collect_cmds.append(cmdt)
-@@ -594,14 +597,14 @@ class Plugin(object):
-         self._log_debug("added string '%s' as '%s'" % (content, filename))
- 
-     def get_cmd_output_now(self, exe, suggest_filename=None,
--                           root_symlink=False, timeout=300,
--                           runat=None, stderr=True):
-+                           root_symlink=False, timeout=300, stderr=True,
-+                           chroot=True, runat=None):
-         """Execute a command and save the output to a file for inclusion in the
-         report.
-         """
-         start = time()
--        result = self.get_command_output(exe, timeout=timeout, runat=runat,
--                                         stderr=stderr)
-+        result = self.get_command_output(exe, timeout=timeout, stderr=stderr,
-+                                         chroot=chroot, runat=runat)
-         # 126 means 'found but not executable'
-         if result['status'] == 126 or result['status'] == 127:
-             return None
-@@ -650,15 +653,20 @@ class Plugin(object):
- 
-     def _collect_cmd_output(self):
-         for progs in zip(self.collect_cmds):
--            (prog, suggest_filename, root_symlink, timeout, runat, stderr
--             ) = progs[0]
--            self._log_debug("unpacked command tuple: "
--                            + "('%s', '%s', '%s', %s, '%s', %s)" % progs[0])
-+            (
-+                prog,
-+                suggest_filename, root_symlink,
-+                timeout,
-+                stderr,
-+                chroot, runat
-+            ) = progs[0]
-+            self._log_debug("unpacked command tuple: " +
-+                            "('%s', '%s', '%s', %s, '%s', '%s', '%s')" %
-+                            progs[0])
-             self._log_info("collecting output of '%s'" % prog)
-             self.get_cmd_output_now(prog, suggest_filename=suggest_filename,
--                                    root_symlink=root_symlink,
--                                    timeout=timeout, runat=runat,
--                                    stderr=stderr)
-+                                    root_symlink=root_symlink, timeout=timeout,
-+                                    chroot=chroot, runat=runat)
- 
-     def _collect_strings(self):
-         for string, file_name in self.copy_strings:
--- 
-1.8.3.1
-
-
-From 3390d070b2945715a15f74462c511df2b2941ef5 Mon Sep 17 00:00:00 2001
-From: "Bryn M. Reeves" <bmr@redhat.com>
-Date: Sun, 25 Jan 2015 23:08:37 +0000
-Subject: [PATCH 11/38] [plugin] add tmp_in_sysroot() method
-
-Add a method that plugins can test to determine whether the
-archive's temporary directory is inside sysroot. This is always
-true when sysroot is '/'. When sysroot is a subdirectory of root
-the temporary directory may be inaccessible from the chroot
-namespace. Plugins can test this method to determine where to
-write output.
-
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/plugins/__init__.py | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/sos/plugins/__init__.py b/sos/plugins/__init__.py
-index c1b659d..49f62bf 100644
---- a/sos/plugins/__init__.py
-+++ b/sos/plugins/__init__.py
-@@ -169,6 +169,10 @@ class Plugin(object):
-     def use_sysroot(self):
-         return self.sysroot != os.path.abspath(os.sep)
- 
-+    def tmp_in_sysroot(self):
-+        paths = [self.sysroot, self.archive.get_tmp_dir()]
-+        return os.path.commonprefix(paths) == self.sysroot
-+
-     def is_installed(self, package_name):
-         '''Is the package $package_name installed?'''
-         return self.policy().pkg_by_name(package_name) is not None
--- 
-1.8.3.1
-
-
-From 5ae1b392d1f081bcb43e91a572342d6f02e4728d Mon Sep 17 00:00:00 2001
-From: "Bryn M. Reeves" <bmr@redhat.com>
-Date: Sun, 25 Jan 2015 23:27:51 +0000
-Subject: [PATCH 12/38] [plugin] enforce forbidden paths when --sysroot is set
-
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/plugins/__init__.py | 10 +++++++---
- 1 file changed, 7 insertions(+), 3 deletions(-)
-
-diff --git a/sos/plugins/__init__.py b/sos/plugins/__init__.py
-index 49f62bf..fd1acb5 100644
---- a/sos/plugins/__init__.py
-+++ b/sos/plugins/__init__.py
-@@ -317,6 +317,8 @@ class Plugin(object):
-         return None
- 
-     def _is_forbidden_path(self, path):
-+        if self.use_sysroot():
-+            path = self.join_sysroot(path)
-         return _path_in_path_list(path, self.forbidden_paths)
- 
-     def _copy_node(self, path, st):
-@@ -379,13 +381,15 @@ class Plugin(object):
-             'symlink': "no"
-         })
- 
--    def add_forbidden_path(self, forbiddenPath):
-+    def add_forbidden_path(self, forbidden):
-         """Specify a path to not copy, even if it's part of a copy_specs[]
-         entry.
-         """
-+        if self.use_sysroot():
-+            forbidden = self.join_sysroot(forbidden)
-         # Glob case handling is such that a valid non-glob is a reduced glob
--        for filespec in glob.glob(forbiddenPath):
--            self.forbidden_paths.append(filespec)
-+        for path in glob.glob(forbidden):
-+            self.forbidden_paths.append(path)
- 
-     def get_all_options(self):
-         """return a list of all options selected"""
--- 
-1.8.3.1
-
-
-From e18d25a0e0c10a2702893f7bae2530dc2a41a394 Mon Sep 17 00:00:00 2001
-From: "Bryn M. Reeves" <bmr@redhat.com>
-Date: Mon, 26 Jan 2015 00:00:08 +0000
-Subject: [PATCH 13/38] [cluster] handle crm_report with --sysroot
-
-Don't attempt to run crm_report in the chroot if tmp is not a
-subdirectory of sysroot.
-
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/plugins/cluster.py | 5 +++--
- 1 file changed, 3 insertions(+), 2 deletions(-)
-
-diff --git a/sos/plugins/cluster.py b/sos/plugins/cluster.py
-index ea5dbae..f52f154 100644
---- a/sos/plugins/cluster.py
-+++ b/sos/plugins/cluster.py
-@@ -120,8 +120,9 @@ class Cluster(Plugin, RedHatPlugin):
-             self._log_warn("scrubbing of crm passwords has been disabled:")
-             self._log_warn("data collected by crm_report may contain"
-                            " sensitive values.")
--        self.add_cmd_output('crm_report %s -S -d --dest %s --from "%s"'
--                            % (crm_scrub, crm_dest, crm_from))
-+        self.add_cmd_output('crm_report %s -S -d --dest %s --from "%s"' %
-+                            (crm_scrub, crm_dest, crm_from),
-+                            chroot=self.tmp_in_sysroot())
- 
-     def do_lockdump(self):
-         if self._mount_debug():
--- 
-1.8.3.1
-
-
-From 2ca9c74454699ba6ecad21d6b0c0809333d729aa Mon Sep 17 00:00:00 2001
-From: "Bryn M. Reeves" <bmr@redhat.com>
-Date: Mon, 26 Jan 2015 00:02:35 +0000
-Subject: [PATCH 14/38] [dmraid] don't chroot if tmp is not inside sysroot
-
-To dump metadata dmraid needs to chdir to the temporary archive
-directory. Don't attempt to chroot into sysroot if the temporary
-directory is not a subdirectory of it.
-
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/plugins/dmraid.py | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/sos/plugins/dmraid.py b/sos/plugins/dmraid.py
-index b7c0b42..87381a0 100644
---- a/sos/plugins/dmraid.py
-+++ b/sos/plugins/dmraid.py
-@@ -39,6 +39,7 @@ class Dmraid(Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin):
-             self.add_cmd_output("dmraid -%s" % (opt,))
-         if self.get_option("metadata"):
-             metadata_path = self.get_cmd_output_path("metadata")
--            self.add_cmd_output("dmraid -rD", runat=metadata_path)
-+            self.add_cmd_output("dmraid -rD", runat=metadata_path,
-+                                chroot=self.tmp_in_sysroot())
- 
- # vim: et ts=4 sw=4
--- 
-1.8.3.1
-
-
-From 4ae09ee0ed25d771cc6cc8a013837ed4c647b3ed Mon Sep 17 00:00:00 2001
-From: "Bryn M. Reeves" <bmr@redhat.com>
-Date: Mon, 26 Jan 2015 00:04:15 +0000
-Subject: [PATCH 15/38] [foreman] don't chroot if tmp is not inside sysroot
-
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/plugins/foreman.py | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
-
-diff --git a/sos/plugins/foreman.py b/sos/plugins/foreman.py
-index 9d1cbad..363b9d6 100644
---- a/sos/plugins/foreman.py
-+++ b/sos/plugins/foreman.py
-@@ -27,7 +27,9 @@ class Foreman(Plugin, RedHatPlugin):
- 
-     def setup(self):
-         cmd = "foreman-debug"
-+
-         path = self.get_cmd_output_path(name="foreman-debug")
--        self.add_cmd_output("%s -g -q -a -d %s" % (cmd, path))
-+        self.add_cmd_output("%s -g -q -a -d %s" % (cmd, path),
-+                            chroot=self.tmp_in_sysroot())
- 
- # vim: et ts=4 sw=4
--- 
-1.8.3.1
-
-
-From 78761114ea9cc1b33233db2186a5ff762e1ac2f2 Mon Sep 17 00:00:00 2001
-From: "Bryn M. Reeves" <bmr@redhat.com>
-Date: Mon, 26 Jan 2015 00:07:12 +0000
-Subject: [PATCH 16/38] [libvirt] use join_sysroot() before calling
- os.path.exists
-
-The libvirt plugin tests for the presence of files. Use
-join_sysroot() to ensure the correct path is tested.
-
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/plugins/libvirt.py | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/sos/plugins/libvirt.py b/sos/plugins/libvirt.py
-index aaf862b..295c8eb 100644
---- a/sos/plugins/libvirt.py
-+++ b/sos/plugins/libvirt.py
-@@ -56,7 +56,7 @@ class Libvirt(Plugin, RedHatPlugin, UbuntuPlugin, DebianPlugin):
-         else:
-             self.add_copy_spec("/var/log/libvirt")
- 
--        if os.path.exists(libvirt_keytab):
-+        if os.path.exists(self.join_sysroot(libvirt_keytab)):
-             self.add_cmd_output("klist -ket %s" % libvirt_keytab)
- 
-         self.add_cmd_output("ls -lR /var/lib/libvirt/qemu")
--- 
-1.8.3.1
-
-
-From b34ea0c6ea5449bbd2f4f9624e1644dc01b07e9d Mon Sep 17 00:00:00 2001
-From: "Bryn M. Reeves" <bmr@redhat.com>
-Date: Mon, 26 Jan 2015 00:09:11 +0000
-Subject: [PATCH 17/38] [logs] fix do_regex_find_all() use for --sysroot
-
-The logs plugin searches syslog configuration files. When using
---sysroot the plugin needs to use join_sysroot() to open the
-correct path.
-
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/plugins/logs.py | 8 ++++----
- 1 file changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/sos/plugins/logs.py b/sos/plugins/logs.py
-index 2f86acc..7957898 100644
---- a/sos/plugins/logs.py
-+++ b/sos/plugins/logs.py
-@@ -38,12 +38,12 @@ class Logs(Plugin):
-         ])
- 
-         if self.get_option('all_logs'):
--            logs = self.do_regex_find_all("^\S+\s+(-?\/.*$)\s+",
--                                          "/etc/syslog.conf")
-+            syslog_conf = self.join_sysroot("/etc/syslog.conf")
-+            logs = self.do_regex_find_all("^\S+\s+(-?\/.*$)\s+", syslog_conf)
-             if self.is_installed("rsyslog") \
-                     or os.path.exists("/etc/rsyslog.conf"):
-                 logs += self.do_regex_find_all("^\S+\s+(-?\/.*$)\s+",
--                                               "/etc/rsyslog.conf")
-+                                               rsyslog_conf)
-             for i in logs:
-                 if i.startswith("-"):
-                     i = i[1:]
-@@ -74,7 +74,7 @@ class RedHatLogs(Logs, RedHatPlugin):
-         messages = "/var/log/messages"
-         self.add_copy_spec_limit("/var/log/secure*", sizelimit=self.limit)
-         self.add_copy_spec_limit(messages + "*", sizelimit=self.limit)
--        # collect five days worth of logs by default if the system is
-+        # collect three days worth of logs by default if the system is
-         # configured to use the journal and not /var/log/messages
-         if not os.path.exists(messages) and self.is_installed("systemd"):
-             try:
--- 
-1.8.3.1
-
-
-From 534eb7fe732ec366292ec582ec2891ef0648ffcb Mon Sep 17 00:00:00 2001
-From: "Bryn M. Reeves" <bmr@redhat.com>
-Date: Mon, 26 Jan 2015 00:11:15 +0000
-Subject: [PATCH 18/38] [lvm2] don't chroot if tmp is not inside sysroot
-
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/plugins/lvm2.py | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/sos/plugins/lvm2.py b/sos/plugins/lvm2.py
-index dd10fa7..c626231 100644
---- a/sos/plugins/lvm2.py
-+++ b/sos/plugins/lvm2.py
-@@ -37,7 +37,7 @@ class Lvm2(Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin):
-             lvmdump_opts = "-a -m"
-         cmd = lvmdump_cmd % (lvmdump_opts,
-                              self.get_cmd_output_path(name="lvmdump"))
--        self.add_cmd_output(cmd)
-+        self.add_cmd_output(cmd, chroot=self.tmp_in_sysroot())
- 
-     def setup(self):
-         # use locking_type 0 (no locks) when running LVM2 commands,
--- 
-1.8.3.1
-
-
-From f4218ff5bab93908ca3d0804c9d837bdfa57f654 Mon Sep 17 00:00:00 2001
-From: "Bryn M. Reeves" <bmr@redhat.com>
-Date: Mon, 26 Jan 2015 00:37:32 +0000
-Subject: [PATCH 19/38] [docs] add --chroot to sosreport.1
-
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- man/en/sosreport.1 | 8 ++++++++
- 1 file changed, 8 insertions(+)
-
-diff --git a/man/en/sosreport.1 b/man/en/sosreport.1
-index b0a86f2..f36f845 100644
---- a/man/en/sosreport.1
-+++ b/man/en/sosreport.1
-@@ -13,6 +13,7 @@ sosreport \- Collect and package diagnostic and support data
-           [--batch] [--build] [--debug]\fR
-           [--name name] [--case-id id] [--ticket-number nr]
-           [-s|--sysroot]\fR
-+          [-c|--chroot {auto|always|never}\fR
-           [--tmp-dir directory]\fR
-           [-p|--profile profile-name]\fR
-           [--list-profiles]\fR
-@@ -77,6 +78,13 @@ Specify alternate configuration file.
- Specify an alternate root file system path. Useful for collecting
- reports from containers and images.
- .TP
-+.B \-c, \--chroot {auto|always|never}
-+Set the chroot mode. When \--sysroot is used commands default to
-+executing with SYSROOT as the root directory (unless disabled by
-+a specific plugin). This can be overriden by setting \--chroot to
-+"always" (alwyas chroot) or "never" (always run in the host
-+namespace).
-+.TP
- .B \--tmp-dir DIRECTORY
- Specify alternate temporary directory to copy data as well as the
- compressed report.
--- 
-1.8.3.1
-
-
-From fb1b4a8b6793611ed91f43f6d3553351c704f50f Mon Sep 17 00:00:00 2001
-From: "Bryn M. Reeves" <bmr@redhat.com>
-Date: Mon, 26 Jan 2015 14:57:01 +0000
-Subject: [PATCH 20/38] [plugin] handle ELOOP in _copy_dir()
-
-A problem with systemd's management of the binfmt_misc automount
-point in Atomic environments causes attempts to access this path to
-fail with ELOOP:
-
-  >>> import os
-  >>> os.listdir("/host/proc/sys/fs/binfmt_misc/")
-  Traceback (most recent call last):
-    File "<stdin>", line 1, in <module>
-  OSError: [Errno 2] No such file or directory: '/host/proc/sys/fs/binfmt_misc/'
-
-For reasons that are not yet clear this causes the entire sos
-process to immediately terminate.
-
-For now avoid the problem by enclosing the problem os.listdir in
-a try/except block that explicitly handles the one errno value
-implicated here.
-
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/plugins/__init__.py | 16 ++++++++++++----
- 1 file changed, 12 insertions(+), 4 deletions(-)
-
-diff --git a/sos/plugins/__init__.py b/sos/plugins/__init__.py
-index fd1acb5..b206470 100644
---- a/sos/plugins/__init__.py
-+++ b/sos/plugins/__init__.py
-@@ -27,6 +27,7 @@ import stat
- from time import time
- import logging
- import fnmatch
-+import errno
- 
- # PYCOMPAT
- import six
-@@ -303,10 +304,17 @@ class Plugin(object):
-                                   'pointsto': linkdest})
- 
-     def _copy_dir(self, srcpath):
--        for afile in os.listdir(srcpath):
--            self._log_debug("recursively adding '%s' from '%s'"
--                            % (afile, srcpath))
--            self._do_copy_path(os.path.join(srcpath, afile), dest=None)
-+        try:
-+            for afile in os.listdir(srcpath):
-+                self._log_debug("recursively adding '%s' from '%s'"
-+                                % (afile, srcpath))
-+                self._do_copy_path(os.path.join(srcpath, afile), dest=None)
-+        except OSError as e:
-+            if e.errno == errno.ELOOP:
-+                msg = "Too many levels of symbolic links copying"
-+                self._log_error("_copy_dir: %s '%s'" % (msg, srcpath))
-+                return
-+            raise e
- 
-     def _get_dest_for_srcpath(self, srcpath):
-         if self.use_sysroot():
--- 
-1.8.3.1
-
-
-From 2c1af0457b668acb99129ed1f6dedcf7cdaa0eea Mon Sep 17 00:00:00 2001
-From: Neependra Khare <nkhare@redhat.com>
-Date: Mon, 26 Jan 2015 15:04:07 +0000
-Subject: [PATCH 21/38] [kubernetes] new plugin
-
-Add a plugin for Kubernetes support.
-
-Signed-off-by: Neependra Khare <nkhare@redhat.com>
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/plugins/kubernetes.py | 46 ++++++++++++++++++++++++++++++++++++++++++++++
- 1 file changed, 46 insertions(+)
- create mode 100644 sos/plugins/kubernetes.py
-
-diff --git a/sos/plugins/kubernetes.py b/sos/plugins/kubernetes.py
-new file mode 100644
-index 0000000..af3f3a6
---- /dev/null
-+++ b/sos/plugins/kubernetes.py
-@@ -0,0 +1,46 @@
-+# Copyright (C) 2014 Red Hat, Inc. Neependra Khare <nkhare@redhat.com>
-+# Copyright (C) 2014 Red Hat, Inc. Bryn M. Reeves <bmr@redhat.com>
-+# This program is free software; you can redistribute it and/or modify
-+# it under the terms of the GNU General Public License as published by
-+# the Free Software Foundation; either version 2 of the License, or
-+# (at your option) any later version.
-+
-+# This program is distributed in the hope that it will be useful,
-+# but WITHOUT ANY WARRANTY; without even the implied warranty of
-+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+# GNU General Public License for more details.
-+
-+# You should have received a copy of the GNU General Public License
-+# along with this program; if not, write to the Free Software
-+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-+
-+from sos.plugins import Plugin, RedHatPlugin
-+
-+
-+class kubernetes(Plugin, RedHatPlugin):
-+
-+    """Kubernetes plugin
-+    """
-+
-+    def setup(self):
-+        self.add_copy_spec("/etc/kubernetes")
-+        self.add_copy_spec("/etc/etcd")
-+        self.add_copy_spec("/var/run/flannel")
-+
-+        # Kubernetes master info
-+        self.add_cmd_output("kubectl version")
-+        self.add_cmd_output("kubectl get -o json pods")
-+        self.add_cmd_output("kubectl get -o json minions")
-+        self.add_cmd_output("kubectl get -o json replicationController")
-+        self.add_cmd_output("kubectl get -o json events")
-+        self.add_cmd_output("journalctl -r -u kubelet")
-+
-+        # etcd
-+        self.add_cmd_output("curl http://127.0.0.1:4001/version")
-+        self.add_cmd_output("curl http://127.0.0.1:4001/v2/members")
-+        self.add_cmd_output("curl http://127.0.0.1:4001/v2/stats/leader")
-+        self.add_cmd_output("curl http://127.0.0.1:4001/v2/stats/self")
-+        self.add_cmd_output("curl http://127.0.0.1:4001/v2/stats/store")
-+
-+
-+# vim: et ts=5 sw=4
--- 
-1.8.3.1
-
-
-From 550dda69c6c5d527498ad928a29c466fad4e250e Mon Sep 17 00:00:00 2001
-From: "Bryn M. Reeves" <bmr@redhat.com>
-Date: Mon, 26 Jan 2015 17:32:35 +0000
-Subject: [PATCH 22/38] [docs] fix documentation of --sysroot parameter
-
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- man/en/sosreport.1 | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/man/en/sosreport.1 b/man/en/sosreport.1
-index f36f845..eac9047 100644
---- a/man/en/sosreport.1
-+++ b/man/en/sosreport.1
-@@ -12,7 +12,7 @@ sosreport \- Collect and package diagnostic and support data
-           [--no-report] [--config-file conf]\fR
-           [--batch] [--build] [--debug]\fR
-           [--name name] [--case-id id] [--ticket-number nr]
--          [-s|--sysroot]\fR
-+          [-s|--sysroot SYSROOT]\fR
-           [-c|--chroot {auto|always|never}\fR
-           [--tmp-dir directory]\fR
-           [-p|--profile profile-name]\fR
--- 
-1.8.3.1
-
-
-From d7cf8535a3403fe6050e0905bef2b4429e595664 Mon Sep 17 00:00:00 2001
-From: "Bryn M. Reeves" <bmr@redhat.com>
-Date: Mon, 26 Jan 2015 15:32:03 -0500
-Subject: [PATCH 23/38] [utilities] add chroot support to shell_out()
-
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/utilities.py | 5 +++--
- 1 file changed, 3 insertions(+), 2 deletions(-)
-
-diff --git a/sos/utilities.py b/sos/utilities.py
-index a82ac7c..6475619 100644
---- a/sos/utilities.py
-+++ b/sos/utilities.py
-@@ -186,11 +186,12 @@ def import_module(module_fqname, superclasses=None):
-     return modules
- 
- 
--def shell_out(cmd, timeout=30, runat=None):
-+def shell_out(cmd, timeout=30, chroot=None, runat=None):
-     """Shell out to an external command and return the output or the empty
-     string in case of error.
-     """
--    return sos_get_command_output(cmd, timeout=timeout, chdir=runat)['output']
-+    return sos_get_command_output(cmd, timeout=timeout,
-+                                  chroot=chroot, chdir=runat)['output']
- 
- 
- class ImporterHelper(object):
--- 
-1.8.3.1
-
-
-From a1a1fd6cfcdb62d7af7744bb5710a2c7d5b4262a Mon Sep 17 00:00:00 2001
-From: "Bryn M. Reeves" <bmr@redhat.com>
-Date: Mon, 26 Jan 2015 15:33:18 -0500
-Subject: [PATCH 24/38] [policies] make PackageManager and Policy sysroot-aware
-
-Add methods to Policy to get the host root file system path and
-to test if sos is running in a container and allow Policy classes
-to pass a chroot path into the PackageManager constructor in order
-to obtain package data from the chroot.
-
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/policies/__init__.py | 22 ++++++++++++++++++++--
- 1 file changed, 20 insertions(+), 2 deletions(-)
-
-diff --git a/sos/policies/__init__.py b/sos/policies/__init__.py
-index 4657614..cea4c09 100644
---- a/sos/policies/__init__.py
-+++ b/sos/policies/__init__.py
-@@ -57,11 +57,14 @@ class PackageManager(object):
- 
-     query_command = None
-     timeout = 30
-+    chroot = None
- 
--    def __init__(self, query_command=None):
-+    def __init__(self, query_command=None, chroot=None):
-         self.packages = {}
-         if query_command:
-             self.query_command = query_command
-+        if chroot:
-+            self.chroot = chroot
- 
-     def all_pkgs_by_name(self, name):
-         """
-@@ -93,7 +96,11 @@ class PackageManager(object):
-                           version': 'major.minor.version'}}
-         """
-         if self.query_command:
--            pkg_list = shell_out(self.query_command, self.timeout).splitlines()
-+            cmd = self.query_command
-+            pkg_list = shell_out(
-+                cmd, timeout=self.timeout, chroot=self.chroot
-+            ).splitlines()
-+
-             for pkg in pkg_list:
-                 if '|' not in pkg:
-                     continue
-@@ -145,6 +152,9 @@ No changes will be made to system configuration.
-     vendor_text = ""
-     PATH = ""
- 
-+    _in_container = False
-+    _host_sysroot = '/'
-+
-     def __init__(self):
-         """Subclasses that choose to override this initializer should call
-         super() to ensure that they get the required platform bits attached.
-@@ -180,6 +190,14 @@ No changes will be made to system configuration.
-         """
-         return False
- 
-+    def in_container(self):
-+        """ Returns True if sos is running inside a container environment.
-+        """
-+        return self._in_container
-+
-+    def host_sysroot(self):
-+        return self._host_sysroot
-+
-     def dist_version(self):
-         """
-         Return the OS version
--- 
-1.8.3.1
-
-
-From 63805ed15d63ddfebb06cd03f96f310bbf60d3b2 Mon Sep 17 00:00:00 2001
-From: "Bryn M. Reeves" <bmr@redhat.com>
-Date: Mon, 26 Jan 2015 15:36:40 -0500
-Subject: [PATCH 25/38] [policies] add container support to Red Hat policy
-
-Check for the presence of container-specific environment variables
-and set _host_sysroot if present:
-
-  container_uuid=UUID
-  HOST=/path
-
-If both a container environment variable and HOST are present run
-the PackageManager query command in a chroot.
-
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/policies/redhat.py | 23 +++++++++++++++++++++--
- 1 file changed, 21 insertions(+), 2 deletions(-)
-
-diff --git a/sos/policies/redhat.py b/sos/policies/redhat.py
-index d2f8db0..f1db8ac 100644
---- a/sos/policies/redhat.py
-+++ b/sos/policies/redhat.py
-@@ -38,13 +38,17 @@ class RedHatPolicy(LinuxPolicy):
-     vendor = "Red Hat"
-     vendor_url = "http://www.redhat.com/"
-     _tmp_dir = "/var/tmp"
-+    _rpmq_cmd = 'rpm -qa --queryformat "%{NAME}|%{VERSION}\\n"'
-+    _in_container = False
-+    _host_sysroot = '/'
- 
-     def __init__(self):
-         super(RedHatPolicy, self).__init__()
-         self.report_name = ""
-         self.ticket_number = ""
--        self.package_manager = PackageManager(
--            'rpm -qa --queryformat "%{NAME}|%{VERSION}\\n"')
-+        # need to set _host_sysroot before PackageManager()
-+        sysroot = self._container_init()
-+        self.package_manager = PackageManager(self._rpmq_cmd, chroot=sysroot)
-         self.valid_subclasses = [RedHatPlugin]
- 
-         pkgs = self.package_manager.all_pkgs()
-@@ -70,6 +74,17 @@ class RedHatPolicy(LinuxPolicy):
-         Fedora, RHEL or other Red Hat distribution or False otherwise."""
-         return False
- 
-+    def _container_init(self):
-+        """Check if sos is running in a container and if a host sysroot
-+        has been passed in the environment.
-+        """
-+        if ENV_CONTAINER_UUID in os.environ:
-+            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 != '/'
-+        return self._host_sysroot if use_sysroot else None
-+
-     def runlevel_by_service(self, name):
-         from subprocess import Popen, PIPE
-         ret = []
-@@ -100,6 +115,10 @@ class RedHatPolicy(LinuxPolicy):
-     def get_local_name(self):
-         return self.host_name()
- 
-+# Container environment variables on Red Hat systems.
-+ENV_CONTAINER_UUID = 'container_uuid'
-+ENV_HOST_SYSROOT = 'HOST'
-+
- 
- class RHELPolicy(RedHatPolicy):
-     distro = "Red Hat Enterprise Linux"
--- 
-1.8.3.1
-
-
-From f8a1746a871e560e548d21f1fc68067d452140a0 Mon Sep 17 00:00:00 2001
-From: "Bryn M. Reeves" <bmr@redhat.com>
-Date: Mon, 26 Jan 2015 15:39:16 -0500
-Subject: [PATCH 26/38] [sosreport] set SYSROOT by policy
-
-If --sysroot is not given on the command line and
-Policy.in_container() is True set sysroot automatically if
-Policy.get_host_sysroot() is not '/'.
-
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/sosreport.py | 13 ++++++++++---
- 1 file changed, 10 insertions(+), 3 deletions(-)
-
-diff --git a/sos/sosreport.py b/sos/sosreport.py
-index a0b89e7..835d828 100644
---- a/sos/sosreport.py
-+++ b/sos/sosreport.py
-@@ -648,7 +648,7 @@ class SoSOptions(object):
-                           help="Disable HTML/XML reporting", default=False)
-         parser.add_option("-s", "--sysroot", action="store", dest="sysroot",
-                           help="system root directory path (default='/')",
--                          default="/")
-+                          default=None)
-         parser.add_option("-c", "--chroot", action="store", dest="chroot",
-                           help="chroot executed commands to SYSROOT "
-                                "[auto, always, never] (default=auto)",
-@@ -705,11 +705,18 @@ class SoSReport(object):
-         self.tempfile_util = TempFileUtil(self.tmpdir)
-         self._set_directories()
- 
-+        self._setup_logging()
-+
-+        msg = "default"
-+        host_sysroot = self.policy.host_sysroot()
-         # set alternate system root directory
-         if self.opts.sysroot:
-+            msg = "cmdline"
-             self.sysroot = self.opts.sysroot
--
--        self._setup_logging()
-+        elif self.policy.in_container() and host_sysroot != os.sep:
-+            msg = "policy"
-+            self.sysroot = host_sysroot
-+        self.soslog.debug("set sysroot to '%s' (%s)" % (self.sysroot, msg))
- 
-         if self.opts.chroot not in chroot_modes:
-             self.soslog.error("invalid chroot mode: %s" % self.opts.chroot)
--- 
-1.8.3.1
-
-
-From fac57721ae10dafec909c4fac408f42ebe23d4ac Mon Sep 17 00:00:00 2001
-From: "Bryn M. Reeves" <bmr@redhat.com>
-Date: Mon, 26 Jan 2015 16:14:01 -0500
-Subject: [PATCH 27/38] [firewalld] work around command hangs in container
- environments
-
-Add a 10s timeout to firewalld-cmd execution to avoid long dbus
-timeouts in docker containers.
-
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/plugins/firewalld.py | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
-
-diff --git a/sos/plugins/firewalld.py b/sos/plugins/firewalld.py
-index 98d011b..8eeb2b6 100644
---- a/sos/plugins/firewalld.py
-+++ b/sos/plugins/firewalld.py
-@@ -35,9 +35,11 @@ class FirewallD(Plugin, RedHatPlugin):
-             "/etc/sysconfig/firewalld"
-         ])
- 
-+        # use a 10s timeout to workaround dbus problems in
-+        # docker containers.
-         self.add_cmd_output([
-             "firewall-cmd --list-all-zones",
-             "firewall-cmd --permanent --list-all-zones"
--        ])
-+        ], timeout=10)
- 
- # vim: et ts=4 sw=4
--- 
-1.8.3.1
-
-
-From 6a239ddeb5de9a04e7e7081ea6425d89dddda3f5 Mon Sep 17 00:00:00 2001
-From: "Bryn M. Reeves" <bmr@redhat.com>
-Date: Mon, 26 Jan 2015 17:13:24 -0500
-Subject: [PATCH 28/38] [policies] pass --sysroot down to policy classes
-
-Policies that don't auto-detect a container environment with a
-host file system need to pass the value of --sysroot down to the
-PackageManager class in order to obtain package details from the
-chroot environment.
-
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/policies/__init__.py | 11 ++++++-----
- sos/policies/debian.py   |  4 ++--
- sos/policies/redhat.py   | 18 +++++++++++-------
- sos/policies/ubuntu.py   |  4 ++--
- sos/sosreport.py         |  2 +-
- 5 files changed, 22 insertions(+), 17 deletions(-)
-
-diff --git a/sos/policies/__init__.py b/sos/policies/__init__.py
-index cea4c09..a403bb9 100644
---- a/sos/policies/__init__.py
-+++ b/sos/policies/__init__.py
-@@ -28,7 +28,7 @@ def import_policy(name):
-         return None
- 
- 
--def load(cache={}):
-+def load(cache={}, sysroot=None):
-     if 'policy' in cache:
-         return cache.get('policy')
- 
-@@ -37,7 +37,7 @@ def load(cache={}):
-     for module in helper.get_modules():
-         for policy in import_policy(module):
-             if policy.check():
--                cache['policy'] = policy()
-+                cache['policy'] = policy(sysroot=sysroot)
- 
-     if 'policy' not in cache:
-         cache['policy'] = GenericPolicy()
-@@ -155,7 +155,7 @@ No changes will be made to system configuration.
-     _in_container = False
-     _host_sysroot = '/'
- 
--    def __init__(self):
-+    def __init__(self, sysroot=None):
-         """Subclasses that choose to override this initializer should call
-         super() to ensure that they get the required platform bits attached.
-         super(SubClass, self).__init__(). Policies that require runtime
-@@ -167,6 +167,7 @@ No changes will be made to system configuration.
-         self.package_manager = PackageManager()
-         self._valid_subclasses = []
-         self.set_exec_path()
-+        self._host_sysroot = sysroot
- 
-     def get_valid_subclasses(self):
-         return [IndependentPlugin] + self._valid_subclasses
-@@ -372,8 +373,8 @@ class LinuxPolicy(Policy):
-     vendor = "None"
-     PATH = "/bin:/sbin:/usr/bin:/usr/sbin"
- 
--    def __init__(self):
--        super(LinuxPolicy, self).__init__()
-+    def __init__(self, sysroot=None):
-+        super(LinuxPolicy, self).__init__(sysroot=sysroot)
- 
-     def get_preferred_hash_algorithm(self):
-         checksum = "md5"
-diff --git a/sos/policies/debian.py b/sos/policies/debian.py
-index acb5b85..e56e546 100644
---- a/sos/policies/debian.py
-+++ b/sos/policies/debian.py
-@@ -16,8 +16,8 @@ class DebianPolicy(LinuxPolicy):
-     PATH = "/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games" \
-            + ":/usr/local/sbin:/usr/local/bin"
- 
--    def __init__(self):
--        super(DebianPolicy, self).__init__()
-+    def __init__(self, sysroot=None):
-+        super(DebianPolicy, self).__init__(sysroot=sysroot)
-         self.report_name = ""
-         self.ticket_number = ""
-         self.package_manager = PackageManager(
-diff --git a/sos/policies/redhat.py b/sos/policies/redhat.py
-index f1db8ac..f20359d 100644
---- a/sos/policies/redhat.py
-+++ b/sos/policies/redhat.py
-@@ -42,12 +42,16 @@ class RedHatPolicy(LinuxPolicy):
-     _in_container = False
-     _host_sysroot = '/'
- 
--    def __init__(self):
--        super(RedHatPolicy, self).__init__()
-+    def __init__(self, sysroot=None):
-+        super(RedHatPolicy, self).__init__(sysroot=sysroot)
-         self.report_name = ""
-         self.ticket_number = ""
-         # need to set _host_sysroot before PackageManager()
--        sysroot = self._container_init()
-+        if sysroot:
-+            self._container_init()
-+            self._host_sysroot = sysroot
-+        else:
-+            sysroot = self._container_init()
-         self.package_manager = PackageManager(self._rpmq_cmd, chroot=sysroot)
-         self.valid_subclasses = [RedHatPlugin]
- 
-@@ -145,8 +149,8 @@ No changes will be made to system configuration.
- %(vendor_text)s
- """)
- 
--    def __init__(self):
--        super(RHELPolicy, self).__init__()
-+    def __init__(self, sysroot=None):
-+        super(RHELPolicy, self).__init__(sysroot=sysroot)
- 
-     @classmethod
-     def check(self):
-@@ -192,8 +196,8 @@ class FedoraPolicy(RedHatPolicy):
-     vendor = "the Fedora Project"
-     vendor_url = "https://fedoraproject.org/"
- 
--    def __init__(self):
--        super(FedoraPolicy, self).__init__()
-+    def __init__(self, sysroot=None):
-+        super(FedoraPolicy, self).__init__(sysroot=sysroot)
- 
-     @classmethod
-     def check(self):
-diff --git a/sos/policies/ubuntu.py b/sos/policies/ubuntu.py
-index 0dd2ea2..f236421 100644
---- a/sos/policies/ubuntu.py
-+++ b/sos/policies/ubuntu.py
-@@ -9,8 +9,8 @@ class UbuntuPolicy(DebianPolicy):
-     vendor = "Ubuntu"
-     vendor_url = "http://www.ubuntu.com/"
- 
--    def __init__(self):
--        super(UbuntuPolicy, self).__init__()
-+    def __init__(self, sysroot=None):
-+        super(UbuntuPolicy, self).__init__(sysroot=sysroot)
-         self.valid_subclasses = [UbuntuPlugin, DebianPlugin]
- 
-     @classmethod
-diff --git a/sos/sosreport.py b/sos/sosreport.py
-index 835d828..ad13a2d 100644
---- a/sos/sosreport.py
-+++ b/sos/sosreport.py
-@@ -687,7 +687,7 @@ class SoSReport(object):
-         self._read_config()
- 
-         try:
--            self.policy = sos.policies.load()
-+            self.policy = sos.policies.load(sysroot=self.opts.sysroot)
-         except KeyboardInterrupt:
-             self._exit(0)
- 
--- 
-1.8.3.1
-
-
-From d34bf4982f8a627901f6538be3b9e52cc30fe91b Mon Sep 17 00:00:00 2001
-From: "Bryn M. Reeves" <bmr@redhat.com>
-Date: Tue, 27 Jan 2015 11:40:06 +0000
-Subject: [PATCH 29/38] [sosoptions] ensure '_sysroot' and '_chroot' are
- initialised
-
-Make sure the sysroot and chroot members of the SoSOptions object
-are initialised to prevent exceptions when these are not set on
-the command line:
-
-  sosreport
-  Traceback (most recent call last):
-    File "/usr/sbin/sosreport", line 25, in <module>
-      main(sys.argv[1:])
-    File "/usr/lib/python2.7/site-packages/sos/sosreport.py", line 1490, in main
-      sos = SoSReport(args)
-    File "/usr/lib/python2.7/site-packages/sos/sosreport.py", line 673, in __init__
-      self.policy = sos.policies.load(sysroot=self.opts.sysroot)
-    File "/usr/lib/python2.7/site-packages/sos/policies/__init__.py", line 40, in load
-      cache['policy'] = policy(sysroot=sysroot)
-    File "/usr/lib/python2.7/site-packages/sos/policies/redhat.py", line 192, in __init__
-      super(FedoraPolicy, self).__init__(sysroot=sysroot)
-    File "/usr/lib/python2.7/site-packages/sos/policies/redhat.py", line 58, in __init__
-      if self.package_manager.all_pkgs()['filesystem']['version'][0] == '3':
-    File "/usr/lib/python2.7/site-packages/sos/policies/__init__.py", line 116, in all_pkgs
-      self.packages = self.get_pkg_list()
-    File "/usr/lib/python2.7/site-packages/sos/policies/__init__.py", line 99, in get_pkg_list
-      pkg_list = shell_out(cmd, chroot=self.chroot).splitlines()
-    File "/usr/lib/python2.7/site-packages/sos/utilities.py", line 191, in shell_out
-      return sos_get_command_output(cmd, chroot=chroot, chdir=runat)['output']
-    File "/usr/lib/python2.7/site-packages/sos/utilities.py", line 156, in sos_get_command_output
-      raise e
-  OSError: [Errno 1] Operation not permitted: '/'
-
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/sosreport.py | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/sos/sosreport.py b/sos/sosreport.py
-index ad13a2d..27c756f 100644
---- a/sos/sosreport.py
-+++ b/sos/sosreport.py
-@@ -251,6 +251,8 @@ class SoSOptions(object):
-     _config_file = ""
-     _tmp_dir = ""
-     _report = True
-+    _sysroot = None
-+    _chroot = 'auto'
-     _compression_type = 'auto'
- 
-     _options = None
--- 
-1.8.3.1
-
-
-From c0858c2c87f246283f6c59b7bf7f64f7dea73a82 Mon Sep 17 00:00:00 2001
-From: Neependra Khare <nkhare@redhat.com>
-Date: Tue, 27 Jan 2015 15:54:23 +0000
-Subject: [PATCH 30/38] [etcd] split etcd functionality from kubernetes into
- new plugin
-
-Signed-off-by: Neependra Khare <nkhare@redhat.com>
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/plugins/etcd.py       | 36 ++++++++++++++++++++++++++++++++++++
- sos/plugins/kubernetes.py |  8 --------
- 2 files changed, 36 insertions(+), 8 deletions(-)
- create mode 100644 sos/plugins/etcd.py
-
-diff --git a/sos/plugins/etcd.py b/sos/plugins/etcd.py
-new file mode 100644
-index 0000000..69edca0
---- /dev/null
-+++ b/sos/plugins/etcd.py
-@@ -0,0 +1,36 @@
-+# Copyright (C) 2015 Red Hat, Inc. Neependra Khare <nkhare@redhat.com>
-+# Copyright (C) 2015 Red Hat, Inc. Bryn M. Reeves <bmr@redhat.com>
-+# This program is free software; you can redistribute it and/or modify
-+# it under the terms of the GNU General Public License as published by
-+# the Free Software Foundation; either version 2 of the License, or
-+# (at your option) any later version.
-+
-+# This program is distributed in the hope that it will be useful,
-+# but WITHOUT ANY WARRANTY; without even the implied warranty of
-+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+# GNU General Public License for more details.
-+
-+# You should have received a copy of the GNU General Public License
-+# along with this program; if not, write to the Free Software
-+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-+
-+from sos.plugins import Plugin, RedHatPlugin
-+
-+
-+class etcd(Plugin, RedHatPlugin):
-+
-+    """etcd plugin
-+    """
-+
-+    def setup(self):
-+        self.add_copy_spec("/etc/etcd")
-+
-+        self.add_cmd_output("curl http://localhost:4001/version")
-+        self.add_cmd_output("curl http://localhost:4001/v2/members")
-+        self.add_cmd_output("curl http://localhost:4001/v2/stats/leader")
-+        self.add_cmd_output("curl http://localhost:4001/v2/stats/self")
-+        self.add_cmd_output("curl http://localhost:4001/v2/stats/store")
-+        self.add_cmd_output("ls -lR /var/lib/etcd/")
-+
-+
-+# vim: et ts=5 sw=4
-diff --git a/sos/plugins/kubernetes.py b/sos/plugins/kubernetes.py
-index af3f3a6..289d784 100644
---- a/sos/plugins/kubernetes.py
-+++ b/sos/plugins/kubernetes.py
-@@ -24,7 +24,6 @@ class kubernetes(Plugin, RedHatPlugin):
- 
-     def setup(self):
-         self.add_copy_spec("/etc/kubernetes")
--        self.add_copy_spec("/etc/etcd")
-         self.add_copy_spec("/var/run/flannel")
- 
-         # Kubernetes master info
-@@ -35,12 +34,5 @@ class kubernetes(Plugin, RedHatPlugin):
-         self.add_cmd_output("kubectl get -o json events")
-         self.add_cmd_output("journalctl -r -u kubelet")
- 
--        # etcd
--        self.add_cmd_output("curl http://127.0.0.1:4001/version")
--        self.add_cmd_output("curl http://127.0.0.1:4001/v2/members")
--        self.add_cmd_output("curl http://127.0.0.1:4001/v2/stats/leader")
--        self.add_cmd_output("curl http://127.0.0.1:4001/v2/stats/self")
--        self.add_cmd_output("curl http://127.0.0.1:4001/v2/stats/store")
--
- 
- # vim: et ts=5 sw=4
--- 
-1.8.3.1
-
-
-From 2ddc706c7219d0b891304fcb066dea865f8516b5 Mon Sep 17 00:00:00 2001
-From: Neependra Khare <nkhare@redhat.com>
-Date: Tue, 27 Jan 2015 15:58:32 +0000
-Subject: [PATCH 31/38] [kubernetes] add services and pod logs collection
-
-Signed-off-by: Neependra Khare <nkhare@redhat.com>
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/plugins/kubernetes.py | 12 ++++++++++++
- 1 file changed, 12 insertions(+)
-
-diff --git a/sos/plugins/kubernetes.py b/sos/plugins/kubernetes.py
-index 289d784..9c2df5e 100644
---- a/sos/plugins/kubernetes.py
-+++ b/sos/plugins/kubernetes.py
-@@ -22,6 +22,8 @@ class kubernetes(Plugin, RedHatPlugin):
-     """Kubernetes plugin
-     """
- 
-+    option_list = [("podslog", "capture logs for pods", 'slow', False)]
-+
-     def setup(self):
-         self.add_copy_spec("/etc/kubernetes")
-         self.add_copy_spec("/var/run/flannel")
-@@ -30,9 +32,19 @@ class kubernetes(Plugin, RedHatPlugin):
-         self.add_cmd_output("kubectl version")
-         self.add_cmd_output("kubectl get -o json pods")
-         self.add_cmd_output("kubectl get -o json minions")
-+        self.add_cmd_output("kubectl get -o json services")
-         self.add_cmd_output("kubectl get -o json replicationController")
-         self.add_cmd_output("kubectl get -o json events")
-         self.add_cmd_output("journalctl -r -u kubelet")
- 
-+        if self.get_option('podslog'):
-+            result = self.get_command_output("kubectl get pods")
-+            if result['status'] == 0:
-+                for line in result['output'].splitlines()[1:]:
-+                    pod_name = line.split(" ")[0]
-+                    self.add_cmd_output([
-+                        "{0} log {1}".format("kubectl", pod_name)
-+                    ])
-+
- 
- # vim: et ts=5 sw=4
--- 
-1.8.3.1
-
-
-From 259897b60b0e4ee00585a8d73521fa4e291eb8da Mon Sep 17 00:00:00 2001
-From: "Bryn M. Reeves" <bmr@redhat.com>
-Date: Tue, 27 Jan 2015 12:54:31 -0500
-Subject: [PATCH 32/38] [policies/redhat] automatically set tmp_dir in
- containers
-
-Now that policies have the infrastructure to detect that they
-are running in a container and to use the HOST environment
-variable if present enable automatic setting of self._tmp_dir in
-appriate container environments.
-
-This causes reports to be automatically written to $HOST/var/tmp
-when $HOST is set while still allowing users to override the tmp
-path manually by specificying --tmp-dir=PATH.
-
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/policies/redhat.py | 7 +++++--
- 1 file changed, 5 insertions(+), 2 deletions(-)
-
-diff --git a/sos/policies/redhat.py b/sos/policies/redhat.py
-index f20359d..3cf40b3 100644
---- a/sos/policies/redhat.py
-+++ b/sos/policies/redhat.py
-@@ -79,14 +79,17 @@ class RedHatPolicy(LinuxPolicy):
-         return False
- 
-     def _container_init(self):
--        """Check if sos is running in a container and if a host sysroot
--        has been passed in the environment.
-+        """Check if sos is running in a container and perform container
-+        specific initialisation based on ENV_HOST_SYSROOT.
-         """
-         if ENV_CONTAINER_UUID in os.environ:
-             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 != '/'
-+        if use_sysroot:
-+            host_tmp_dir = os.path.abspath(self._host_sysroot + self._tmp_dir)
-+            self._tmp_dir = host_tmp_dir
-         return self._host_sysroot if use_sysroot else None
- 
-     def runlevel_by_service(self, name):
--- 
-1.8.3.1
-
-
-From b880c6cb4668815b97841e6532450144a5f825f1 Mon Sep 17 00:00:00 2001
-From: "Bryn M. Reeves" <bmr@redhat.com>
-Date: Tue, 27 Jan 2015 13:53:34 -0500
-Subject: [PATCH 33/38] [policies/redhat] add Red Hat Atomic Host policy
-
-Add a new policy for the Red Hat Atomic Host.
-
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/policies/redhat.py | 39 ++++++++++++++++++++++++++++++++++++++-
- 1 file changed, 38 insertions(+), 1 deletion(-)
-
-diff --git a/sos/policies/redhat.py b/sos/policies/redhat.py
-index 3cf40b3..9decd0a 100644
---- a/sos/policies/redhat.py
-+++ b/sos/policies/redhat.py
-@@ -37,6 +37,7 @@ class RedHatPolicy(LinuxPolicy):
-     distro = "Red Hat"
-     vendor = "Red Hat"
-     vendor_url = "http://www.redhat.com/"
-+    _redhat_release = '/etc/redhat-release'
-     _tmp_dir = "/var/tmp"
-     _rpmq_cmd = 'rpm -qa --queryformat "%{NAME}|%{VERSION}\\n"'
-     _in_container = False
-@@ -159,7 +160,7 @@ No changes will be made to system configuration.
-     def check(self):
-         """This method checks to see if we are running on RHEL. It returns True
-         or False."""
--        return (os.path.isfile('/etc/redhat-release')
-+        return (os.path.isfile(self._redhat_release)
-                 and not os.path.isfile('/etc/fedora-release'))
- 
-     def dist_version(self):
-@@ -193,6 +194,42 @@ No changes will be made to system configuration.
-         return self.rhn_username() or self.host_name()
- 
- 
-+class RedHatAtomicPolicy(RHELPolicy):
-+    distro = "Red Hat Atomic Host"
-+    msg = _("""\
-+This command will collect diagnostic and configuration \
-+information from this %(distro)s system.
-+
-+An archive containing the collected information will be \
-+generated in %(tmpdir)s and may be provided to a %(vendor)s \
-+support representative.
-+
-+Any information provided to %(vendor)s will be treated in \
-+accordance with the published support policies at:\n
-+  %(vendor_url)s
-+
-+The generated archive may contain data considered sensitive \
-+and its content should be reviewed by the originating \
-+organization before being passed to any third party.
-+%(vendor_text)s
-+""")
-+
-+    @classmethod
-+    def check(self):
-+        atomic = False
-+        if ENV_HOST_SYSROOT not in os.environ:
-+            return atomic
-+        host_release = os.environ[ENV_HOST_SYSROOT] + self._redhat_release
-+        if not os.path.exists(host_release):
-+            return False
-+        try:
-+            for line in open(host_release, "r").read().splitlines():
-+                atomic |= 'Atomic' in line
-+        except:
-+            pass
-+        return atomic
-+
-+
- class FedoraPolicy(RedHatPolicy):
- 
-     distro = "Fedora"
--- 
-1.8.3.1
-
-
-From cd0d5c1f06a69c115e674f87254cc7e056c9891a Mon Sep 17 00:00:00 2001
-From: Jeremy Eder <jeder@redhat.com>
-Date: Wed, 28 Jan 2015 12:54:14 +0000
-Subject: [PATCH 34/38] [docker] add 'docker' to the package list for Red Hat
- distros
-
-The docker package is named 'docker-io' in Fedora and 'docker'
-in RHEL and other downstream products. Add the 'docker' name to
-the package list in RedHatDocker to ensure the plugin runs.
-
-Signed-off-by: Jeremy Eder <jeder@redhat.com>
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/plugins/docker.py | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/sos/plugins/docker.py b/sos/plugins/docker.py
-index 3e5bd4a..c5ea8a0 100644
---- a/sos/plugins/docker.py
-+++ b/sos/plugins/docker.py
-@@ -54,7 +54,7 @@ class Docker(Plugin):
- 
- class RedHatDocker(Docker, RedHatPlugin):
- 
--    packages = ('docker-io',)
-+    packages = ('docker', 'docker-io')
- 
-     def setup(self):
-         super(RedHatDocker, self).setup()
--- 
-1.8.3.1
-
-
-From d4ae63afbf211a7234b7605bef037d827263bf70 Mon Sep 17 00:00:00 2001
-From: "Bryn M. Reeves" <bmr@redhat.com>
-Date: Wed, 28 Jan 2015 22:54:48 +0000
-Subject: [PATCH 35/38] [plugins] automatically re-try chroot'ed commands in
- the host
-
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/plugins/__init__.py | 12 +++++++++++-
- sos/utilities.py        |  5 +----
- 2 files changed, 12 insertions(+), 5 deletions(-)
-
-diff --git a/sos/plugins/__init__.py b/sos/plugins/__init__.py
-index b206470..7fa7ac6 100644
---- a/sos/plugins/__init__.py
-+++ b/sos/plugins/__init__.py
-@@ -520,13 +520,23 @@ class Plugin(object):
-             root = self.sysroot
-         else:
-             root = None
-+
-         result = sos_get_command_output(prog, timeout=timeout, stderr=stderr,
-                                         chroot=root, chdir=runat)
-+
-         if result['status'] == 124:
-             self._log_warn("command '%s' timed out after %ds"
-                            % (prog, timeout))
--        # 126 means 'found but not executable'
-+
-+        # command not found or not runnable
-         if result['status'] == 126 or result['status'] == 127:
-+            # automatically retry chroot'ed commands in the host namespace
-+            if chroot and self.commons['cmdlineopts'].chroot != 'always':
-+                self._log_info("command '%s' not found in %s - "
-+                               "re-trying in host root"
-+                               % (prog.split()[0], root))
-+                return self.get_command_output(prog, timeout=timeout,
-+                                               chroot=False, runat=runat)
-             self._log_debug("could not run '%s': command not found" % prog)
-         return result
- 
-diff --git a/sos/utilities.py b/sos/utilities.py
-index 6475619..d3a1048 100644
---- a/sos/utilities.py
-+++ b/sos/utilities.py
-@@ -151,16 +151,13 @@ def sos_get_command_output(command, timeout=300, stderr=False,
-                   stderr=STDOUT if stderr else PIPE,
-                   bufsize=-1, env=cmd_env, close_fds=True,
-                   preexec_fn=_child_prep_fn)
-+        stdout, stderr = p.communicate()
-     except OSError as e:
-         if e.errno == errno.ENOENT:
-             return {'status': 127, 'output': ""}
-         else:
-             raise e
- 
--    stdout, stderr = p.communicate()
--
--    # Required hack while we still pass shell=True to Popen; a Popen
--    # call with shell=False for a non-existant binary will raise OSError.
-     if p.returncode == 126 or p.returncode == 127:
-         stdout = six.binary_type(b"")
- 
--- 
-1.8.3.1
-
-
-From 6fe240a31c01d63957ce548f4415ca55859dc071 Mon Sep 17 00:00:00 2001
-From: Neependra Khare <nkhare@redhat.com>
-Date: Thu, 29 Jan 2015 18:23:53 +0000
-Subject: [PATCH 36/38] [kubernetes] add journal output for kube services
-
-Add journalctl output for the following kubernetes units:
-
-  kube-apiserver
-  kube-controller-manager
-  kube-scheduler
-  kube-proxy
-
-Signed-off-by: Neependra Khare <nkhare@redhat.com>
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/plugins/kubernetes.py | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/sos/plugins/kubernetes.py b/sos/plugins/kubernetes.py
-index 9c2df5e..38faeb2 100644
---- a/sos/plugins/kubernetes.py
-+++ b/sos/plugins/kubernetes.py
-@@ -36,6 +36,10 @@ class kubernetes(Plugin, RedHatPlugin):
-         self.add_cmd_output("kubectl get -o json replicationController")
-         self.add_cmd_output("kubectl get -o json events")
-         self.add_cmd_output("journalctl -r -u kubelet")
-+        self.add_cmd_output("journalctl -r -u kube-apiserver")
-+        self.add_cmd_output("journalctl -r -u kube-controller-manager")
-+        self.add_cmd_output("journalctl -r -u kube-scheduler")
-+        self.add_cmd_output("journalctl -r -u kube-proxy")
- 
-         if self.get_option('podslog'):
-             result = self.get_command_output("kubectl get pods")
--- 
-1.8.3.1
-
-
-From 8d69d74a5be6dac29fad2ab5d7206a0485969924 Mon Sep 17 00:00:00 2001
-From: "Bryn M. Reeves" <bmr@redhat.com>
-Date: Thu, 29 Jan 2015 20:30:31 +0000
-Subject: [PATCH 37/38] [plugins] do not strip SYSROOT when copying link
- targets
-
-The abspath() call in _copy_symlink returns a host-relative path
-(when SYSROOT is not '/'). Pass this directly to _do_copy_path()
-without stripping the SYSROOT path component.
-
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/plugins/__init__.py | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/sos/plugins/__init__.py b/sos/plugins/__init__.py
-index 7fa7ac6..a7c0146 100644
---- a/sos/plugins/__init__.py
-+++ b/sos/plugins/__init__.py
-@@ -265,7 +265,8 @@ class Plugin(object):
-         # the target stored in the original symlink
-         linkdest = os.readlink(srcpath)
-         dest = os.path.join(os.path.dirname(srcpath), linkdest)
--        # absolute path to the link target
-+        # Absolute path to the link target. If SYSROOT != '/' this path
-+        # is relative to the host root file system.
-         absdest = os.path.normpath(dest)
-         # adjust the target used inside the report to always be relative
-         if os.path.isabs(linkdest):
--- 
-1.8.3.1
-
-
-From 76c04a773f1927359d264f59e4fbcc9363424882 Mon Sep 17 00:00:00 2001
-From: "Bryn M. Reeves" <bmr@redhat.com>
-Date: Thu, 29 Jan 2015 22:00:10 +0000
-Subject: [PATCH 38/38] [plugins] trim leading '../' from links when sysroot is
- set
-
-When SYSROOT is not '/' relative symlinks need to be trimmed to
-remove the extra leading '../' returned by
-abspath('/sysroot/...').
-
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/plugins/__init__.py | 3 +++
- sos/sosreport.py        | 1 +
- 2 files changed, 4 insertions(+)
-
-diff --git a/sos/plugins/__init__.py b/sos/plugins/__init__.py
-index a7c0146..a06c0b1 100644
---- a/sos/plugins/__init__.py
-+++ b/sos/plugins/__init__.py
-@@ -271,6 +271,9 @@ class Plugin(object):
-         # adjust the target used inside the report to always be relative
-         if os.path.isabs(linkdest):
-             reldest = os.path.relpath(linkdest, os.path.dirname(srcpath))
-+            # trim leading /sysroot
-+            if self.use_sysroot():
-+                reldest = reldest[len(os.sep + os.pardir):]
-             self._log_debug("made link target '%s' relative as '%s'"
-                             % (linkdest, reldest))
-         else:
-diff --git a/sos/sosreport.py b/sos/sosreport.py
-index 27c756f..567e3df 100644
---- a/sos/sosreport.py
-+++ b/sos/sosreport.py
-@@ -1226,6 +1226,7 @@ class SoSReport(object):
-                     self.ui_log.error(" %s while setting up plugins"
-                                       % e.strerror)
-                     self.ui_log.error("")
-+                    self._exit(1)
-                 if self.raise_plugins:
-                     raise
-                 self._log_plugin_exception(plugname, "setup")
--- 
-1.8.3.1
-
-From bb6f546603d8e3199bda0bfe0f9b23f1da1cb8c9 Mon Sep 17 00:00:00 2001
-From: Pavel Moravec <pmoravec@redhat.com>
-Date: Mon, 13 Jul 2015 15:03:37 +0200
-Subject: [PATCH] [plugin] pass stderr through _collect_cmd_output
-
-Commit f06efd6 removed passing stderr in _collect_cmd_output to
-get_cmd_output_now. That prevents passing stderr=False in several
-scenarios.
-
-This fix adds the argument to be passed back.
-
-Resolves: #600
-
-Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
----
- sos/plugins/__init__.py | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/sos/plugins/__init__.py b/sos/plugins/__init__.py
-index a06c0b1..aed7496 100644
---- a/sos/plugins/__init__.py
-+++ b/sos/plugins/__init__.py
-@@ -696,7 +696,7 @@ class Plugin(object):
-             self._log_info("collecting output of '%s'" % prog)
-             self.get_cmd_output_now(prog, suggest_filename=suggest_filename,
-                                     root_symlink=root_symlink, timeout=timeout,
--                                    chroot=chroot, runat=runat)
-+                                    stderr=stderr, chroot=chroot, runat=runat)
- 
-     def _collect_strings(self):
-         for string, file_name in self.copy_strings:
--- 
-1.8.3.1
-
diff --git a/SOURCES/sos-bz1194159-kernel-additional-diagnostic.patch b/SOURCES/sos-bz1194159-kernel-additional-diagnostic.patch
deleted file mode 100644
index 1acf175..0000000
--- a/SOURCES/sos-bz1194159-kernel-additional-diagnostic.patch
+++ /dev/null
@@ -1,276 +0,0 @@
-From 9c1e646da727817de23c0b46a16885c03c7d4af1 Mon Sep 17 00:00:00 2001
-From: "Bryn M. Reeves" <bmr@redhat.com>
-Date: Tue, 10 Feb 2015 19:34:50 +0000
-Subject: [PATCH] [kernel] collect /sys/firmware/acpi/*
-
-Collect ACPI firmware tables and state from /sys.
-
-Related: #490.
-
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/plugins/kernel.py | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/sos/plugins/kernel.py b/sos/plugins/kernel.py
-index 877b2bb..6b93ab7 100644
---- a/sos/plugins/kernel.py
-+++ b/sos/plugins/kernel.py
-@@ -49,6 +49,7 @@ class Kernel(Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin):
-             "/sys/module/*/initstate",
-             "/sys/module/*/refcnt",
-             "/sys/module/*/taint",
-+            "/sys/firmware/acpi/*",
-             "/proc/kallsyms",
-             "/proc/buddyinfo",
-             "/proc/slabinfo",
--- 
-1.8.3.1
-
-From 14686f55bd5bc7169eb06a871ada7bc3461b306b Mon Sep 17 00:00:00 2001
-From: "Bryn M. Reeves" <bmr@redhat.com>
-Date: Tue, 10 Feb 2015 19:43:08 +0000
-Subject: [PATCH] [memory] add ksm, swap and vmallocinfo data to plugin
-
-Related: #490.
-
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/plugins/memory.py | 11 +++++++++--
- 1 file changed, 9 insertions(+), 2 deletions(-)
-
-diff --git a/sos/plugins/memory.py b/sos/plugins/memory.py
-index 0f20e99..1b27eba 100644
---- a/sos/plugins/memory.py
-+++ b/sos/plugins/memory.py
-@@ -27,9 +27,16 @@ class Memory(Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin):
-             "/proc/pci",
-             "/proc/meminfo",
-             "/proc/vmstat",
-+            "/proc/swaps",
-             "/proc/slabinfo",
--            "/proc/pagetypeinfo"])
-+            "/proc/pagetypeinfo",
-+            "/proc/vmallocinfo",
-+            "/sys/kernel/mm/ksm"
-+        ])
-         self.add_cmd_output("free", root_symlink="free")
--        self.add_cmd_output("free -m")
-+        self.add_cmd_output([
-+            "free -m",
-+            "swapon --show"
-+        ])
- 
- # vim: et ts=4 sw=4
--- 
-1.8.3.1
-
-From 58a6d777d7b5fc4ef72e185ccd916110a73f48d2 Mon Sep 17 00:00:00 2001
-From: "Bryn M. Reeves" <bmr@redhat.com>
-Date: Tue, 10 Feb 2015 19:47:14 +0000
-Subject: [PATCH] [block] collect /proc/diskstats
-
-Related: #490.
-
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/plugins/block.py | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/sos/plugins/block.py b/sos/plugins/block.py
-index 8c73ef6..7984f0d 100644
---- a/sos/plugins/block.py
-+++ b/sos/plugins/block.py
-@@ -24,8 +24,6 @@ class Block(Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin):
-     profiles = ('storage', 'hardware')
- 
-     def setup(self):
--        self.add_copy_spec("/proc/partitions")
--
-         self.add_cmd_output([
-             "lsblk",
-             "blkid -c /dev/null",
-@@ -36,7 +34,9 @@ class Block(Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin):
-         # legacy location for non-/run distributions
-         self.add_copy_spec([
-             "/etc/blkid.tab",
--            "/run/blkid/blkid.tab"
-+            "/run/blkid/blkid.tab",
-+            "/proc/partitions",
-+            "/proc/diskstats"
-         ])
- 
-         if os.path.isdir("/sys/block"):
--- 
-1.8.3.1
-
-From 4cc076409f65792c071e4cf027a78c847f7b5ff8 Mon Sep 17 00:00:00 2001
-From: "Bryn M. Reeves" <bmr@redhat.com>
-Date: Tue, 10 Feb 2015 19:48:59 +0000
-Subject: [PATCH] [process] collect /proc/sched_debug
-
-Related: #490.
-
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/plugins/process.py | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/sos/plugins/process.py b/sos/plugins/process.py
-index ab66322..cae8443 100644
---- a/sos/plugins/process.py
-+++ b/sos/plugins/process.py
-@@ -23,6 +23,7 @@ class Process(Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin):
-     profiles = ('system',)
- 
-     def setup(self):
-+        self.add_copy_spec("/proc/sched_debug")
-         self.add_cmd_output("ps auxwww", root_symlink="ps")
-         self.add_cmd_output("pstree", root_symlink="pstree")
-         self.add_cmd_output("lsof -b +M -n -l", root_symlink="lsof")
--- 
-1.8.3.1
-
-From f3ec78df7060c4ac3cead99775f162a9b5d604f7 Mon Sep 17 00:00:00 2001
-From: "Bryn M. Reeves" <bmr@redhat.com>
-Date: Wed, 11 Feb 2015 20:06:59 +0000
-Subject: [PATCH] [kernel] collect directory listings for module updates
-
-Related #490.
-
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/plugins/kernel.py | 14 +++++++++++++-
- 1 file changed, 13 insertions(+), 1 deletion(-)
-
-diff --git a/sos/plugins/kernel.py b/sos/plugins/kernel.py
-index 6b93ab7..97300e2 100644
---- a/sos/plugins/kernel.py
-+++ b/sos/plugins/kernel.py
-@@ -14,6 +14,7 @@
- 
- from sos.plugins import Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin
- import os
-+import glob
- 
- 
- class Kernel(Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin):
-@@ -36,10 +37,21 @@ class Kernel(Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin):
-         except OSError:
-             self._log_warn("could not list %s" % self.sys_module)
- 
-+        # find /lib/modules/*/{extras,updates,weak-updates} -ls
-+        extra_mod_patterns = [
-+            "/lib/modules/*/extra",
-+            "/lib/modules/*/updates",
-+            "/lib/modules/*/weak-updates",
-+        ]
-+        extra_mod_paths = []
-+        for pattern in extra_mod_patterns:
-+            extra_mod_paths.extend(glob.glob(pattern))
-+
-         self.add_cmd_output([
-             "dmesg",
-             "sysctl -a",
--            "dkms status"
-+            "dkms status",
-+            "find %s -ls" % " ".join(extra_mod_paths)
-         ])
- 
-         self.add_copy_spec([
--- 
-1.8.3.1
-
-From 895803a4c7d014b231cfe9804bd1c04fe37b5f5e Mon Sep 17 00:00:00 2001
-From: "Bryn M. Reeves" <bmr@redhat.com>
-Date: Wed, 11 Feb 2015 20:15:37 +0000
-Subject: [PATCH] [mpt] add plugin
-
-Add a plugin to collect LSI Message Passing Technology driver
-status from /proc.
-
-Related: #490.
-
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/plugins/mpt.py | 30 ++++++++++++++++++++++++++++++
- 1 file changed, 30 insertions(+)
- create mode 100644 sos/plugins/mpt.py
-
-diff --git a/sos/plugins/mpt.py b/sos/plugins/mpt.py
-new file mode 100644
-index 0000000..bb158cc
---- /dev/null
-+++ b/sos/plugins/mpt.py
-@@ -0,0 +1,30 @@
-+# Copyright (C) 2015 Red Hat, Inc., Bryn M. Reeves <bmr@redhat.com>
-+
-+# This program is free software; you can redistribute it and/or modify
-+# it under the terms of the GNU General Public License as published by
-+# the Free Software Foundation; either version 2 of the License, or
-+# (at your option) any later version.
-+
-+# This program is distributed in the hope that it will be useful,
-+# but WITHOUT ANY WARRANTY; without even the implied warranty of
-+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+# GNU General Public License for more details.
-+
-+# You should have received a copy of the GNU General Public License
-+# along with this program; if not, write to the Free Software
-+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-+
-+from sos.plugins import Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin
-+
-+
-+class Mpt(Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin):
-+    """ LSI Message Passing Technology
-+    """
-+    files = ('/proc/mpt',)
-+    profiles = ('storage', )
-+    plugin_name = 'mpt'
-+
-+    def setup(self):
-+        self.add_copy_spec("/proc/mpt")
-+
-+# vim: et ts=4 sw=4
--- 
-1.8.3.1
-
-From fc4e2be53eeeaa9ab0d4d089335bbeb007c1817e Mon Sep 17 00:00:00 2001
-From: "Bryn M. Reeves" <bmr@redhat.com>
-Date: Thu, 27 Aug 2015 18:07:46 +0100
-Subject: [PATCH] [memory] collect swapon --show output in bytes
-
-Default is human readable:
-
-$ swapon --show
-NAME      TYPE      SIZE USED PRIO
-/dev/dm-0 partition 1.5G   0B   -1
-
-Should be:
-
-$ swapon --show --bytes
-NAME      TYPE            SIZE USED PRIO
-/dev/dm-0 partition 1610608640    0   -1
-
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/plugins/memory.py | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/sos/plugins/memory.py b/sos/plugins/memory.py
-index 4c41896..710f73f 100644
---- a/sos/plugins/memory.py
-+++ b/sos/plugins/memory.py
-@@ -36,7 +36,7 @@ class Memory(Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin):
-         self.add_cmd_output("free", root_symlink="free")
-         self.add_cmd_output([
-             "free -m",
--            "swapon --show"
-+            "swapon --bytes --show"
-         ])
- 
- # vim: et ts=4 sw=4
--- 
-1.8.3.1
-
diff --git a/SOURCES/sos-bz1194554-network-more-diagnostic.patch b/SOURCES/sos-bz1194554-network-more-diagnostic.patch
deleted file mode 100644
index 80b9754..0000000
--- a/SOURCES/sos-bz1194554-network-more-diagnostic.patch
+++ /dev/null
@@ -1,57 +0,0 @@
-From b61a927bade2f183e7cf9404b11a93570fe8895b Mon Sep 17 00:00:00 2001
-From: "Bryn M. Reeves" <bmr@redhat.com>
-Date: Tue, 10 Feb 2015 19:30:05 +0000
-Subject: [PATCH] [networking] additional ip, firewall and traffic shaping
- commands
-
-Collect tc qdisc output, ipv4/6 routing policy, NOARP arp cache,
-iptables with --exact counters, and iproute2 configuration.
-
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/plugins/networking.py | 10 ++++++++--
- 1 file changed, 8 insertions(+), 2 deletions(-)
-
-diff --git a/sos/plugins/networking.py b/sos/plugins/networking.py
-index 8dfc0e6..9f6ece0 100644
---- a/sos/plugins/networking.py
-+++ b/sos/plugins/networking.py
-@@ -82,7 +82,8 @@ class Networking(Plugin):
-             "/etc/NetworkManager/NetworkManager.conf",
-             "/etc/NetworkManager/system-connections",
-             "/etc/dnsmasq*",
--            "/sys/class/net/*/flags"
-+            "/sys/class/net/*/flags",
-+            "/etc/iproute2"
-         ])
-         self.add_forbidden_path("/proc/net/rpc/use-gss-proxy")
-         self.add_forbidden_path("/proc/net/rpc/*/channel")
-@@ -98,19 +99,24 @@ class Networking(Plugin):
-             "netstat -agn",
-             "ip route show table all",
-             "ip -6 route show table all",
-+            "ip -4 rule",
-+            "ip -6 rule",
-             "ip link",
-             "ip address",
-             "ifenslave -a",
-             "ip mroute show",
-             "ip maddr show",
-             "ip neigh show",
-+            "ip neigh show nud noarp",
-             "ip netns",
-             "nmcli general status",
-             "nmcli connection show",
-             "nmcli connection show active",
-             "nmcli device status",
-             "nmcli device show",
--            "biosdevname -d"
-+            "biosdevname -d",
-+            "tc -s qdisc show",
-+            "iptables -vnxL"
-         ])
-         ip_link_result = self.call_ext_prog("ip -o link")
-         if ip_link_result['status'] == 0:
--- 
-1.8.3.1
-
diff --git a/SOURCES/sos-bz1194556-infiniband-more-diagnostic.patch b/SOURCES/sos-bz1194556-infiniband-more-diagnostic.patch
deleted file mode 100644
index 7371e67..0000000
--- a/SOURCES/sos-bz1194556-infiniband-more-diagnostic.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From 8eed8e33d1de2cd56a26fc7cc8a3ee25e8921319 Mon Sep 17 00:00:00 2001
-From: "Bryn M. Reeves" <bmr@redhat.com>
-Date: Tue, 10 Feb 2015 19:24:39 +0000
-Subject: [PATCH] [infiniband] add opensm and infiniband-diags support
-
-Collect opensm and rdma configuration and logs and output from
-the infiniband-diags commands.
-
-Fixes #492.
-
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/plugins/infiniband.py | 13 ++++++++++---
- 1 file changed, 10 insertions(+), 3 deletions(-)
-
-diff --git a/sos/plugins/infiniband.py b/sos/plugins/infiniband.py
-index b0437d7..687b8d6 100644
---- a/sos/plugins/infiniband.py
-+++ b/sos/plugins/infiniband.py
-@@ -23,20 +23,27 @@ class Infiniband(Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin):
- 
-     plugin_name = 'infiniband'
-     profiles = ('hardware',)
--    packages = ('libibverbs-utils',)
-+    packages = ('libibverbs-utils', 'opensm', 'rdma', 'infiniband-diags')
- 
-     def setup(self):
-         self.add_copy_spec([
-             "/etc/ofed/openib.conf",
--            "/etc/ofed/opensm.conf"
-+            "/etc/ofed/opensm.conf",
-+            "/etc/rdma"
-         ])
- 
-+        self.add_copy_spec_limit("/var/log/opensm*",
-+                                 sizelimit=self.get_option("log_size"))
-+
-         self.add_cmd_output([
-             "ibv_devices",
-             "ibv_devinfo",
-             "ibstat",
-             "ibstatus",
--            "ibhosts"
-+            "ibhosts",
-+            "iblinkinfo",
-+            "sminfo",
-+            "perfquery"
-         ])
- 
-         return
--- 
-1.8.3.1
-
diff --git a/SOURCES/sos-bz1195086-virsh-plugin.patch b/SOURCES/sos-bz1195086-virsh-plugin.patch
deleted file mode 100644
index e8c4536..0000000
--- a/SOURCES/sos-bz1195086-virsh-plugin.patch
+++ /dev/null
@@ -1,131 +0,0 @@
-From 5280e3c73894805662c831d1f6cadda8233cf402 Mon Sep 17 00:00:00 2001
-From: Pavel Moravec <pmoravec@redhat.com>
-Date: Fri, 3 Apr 2015 09:53:46 +0200
-Subject: [PATCH 1/3] [virsh] add new plugin
-
-Move the virsh commands and virt-manager logs into new plugin
-(corresponding to the 'libvirt-client' package on Red Hat distros).
-
-Resolves #544
-
-Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/plugins/virsh.py | 46 ++++++++++++++++++++++++++++++++++++++++++++++
- 1 file changed, 46 insertions(+)
- create mode 100644 sos/plugins/virsh.py
-
-diff --git a/sos/plugins/virsh.py b/sos/plugins/virsh.py
-new file mode 100644
-index 0000000..4b6bcc0
---- /dev/null
-+++ b/sos/plugins/virsh.py
-@@ -0,0 +1,46 @@
-+# This program is free software; you can redistribute it and/or modify
-+# it under the terms of the GNU General Public License as published by
-+# the Free Software Foundation; either version 2 of the License, or
-+# (at your option) any later version.
-+
-+# This program is distributed in the hope that it will be useful,
-+# but WITHOUT ANY WARRANTY; without even the implied warranty of
-+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+# GNU General Public License for more details.
-+
-+# You should have received a copy of the GNU General Public License
-+# along with this program; if not, write to the Free Software
-+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-+
-+from sos.plugins import Plugin, RedHatPlugin, UbuntuPlugin, DebianPlugin
-+import glob
-+import os
-+
-+
-+class LibvirtClient(Plugin, RedHatPlugin, UbuntuPlugin, DebianPlugin):
-+    """client for libvirt virtualization API
-+    """
-+
-+    plugin_name = 'virsh'
-+    profiles = ('system', 'virt')
-+
-+    packages = ('libvirt-client')
-+
-+    def setup(self):
-+        # virt-manager logs
-+        if not self.get_option("all_logs"):
-+            self.add_copy_spec_limit("/root/.virt-manager/*", sizelimit=5)
-+        else:
-+            self.add_copy_spec("/root/.virt-manager/*")
-+
-+        # get lit of VMs/domains
-+        domains_file = self.get_cmd_output_now('virsh list --all')
-+
-+        # cycle through the VMs/domains list, ignore 2 header lines and latest
-+        # empty line, and dumpxml domain name in 2nd column
-+        if domains_file:
-+            domains_lines = open(domains_file, "r").read().splitlines()[2:]
-+            for domain in filter(lambda x: x, domains_lines):
-+                self.add_cmd_output("virsh dumpxml %s" % domain.split()[1])
-+
-+# vim: et ts=4 sw=4
--- 
-1.8.3.1
-
-
-From 60373759aaa9f0668f0200e000e6c1949334597b Mon Sep 17 00:00:00 2001
-From: "Bryn M. Reeves" <bmr@redhat.com>
-Date: Tue, 30 Jun 2015 13:10:51 +0100
-Subject: [PATCH 2/3] [libvirt] add listing of /var/lib/libvirt/qemu
-
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/plugins/libvirt.py | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/sos/plugins/libvirt.py b/sos/plugins/libvirt.py
-index 8d5dcfc..0b31d31 100644
---- a/sos/plugins/libvirt.py
-+++ b/sos/plugins/libvirt.py
-@@ -58,6 +58,8 @@ class Libvirt(Plugin, RedHatPlugin, UbuntuPlugin, DebianPlugin):
-         if os.path.exists(libvirt_keytab):
-             self.add_cmd_output("klist -ket %s" % libvirt_keytab)
-
-+        self.add_cmd_output("ls -lR /var/lib/libvirt/qemu")
-+
-     def postproc(self):
-         for xmlfile in glob.glob("/etc/libvirt/qemu/*.xml"):
-             self.do_file_sub(
--- 
-1.8.3.1
-
-
-From 26fa7d3ae5a6c31030ac045aeaa32452ad888df8 Mon Sep 17 00:00:00 2001
-From: Pavel Moravec <pmoravec@redhat.com>
-Date: Fri, 15 May 2015 16:10:41 +0200
-Subject: [PATCH 3/3] [virsh] make dumpxml calls read-only and set timeout=180
-
-Call virsh dumpxml in read-only mode to bypass authentication
-and extend the command timeout to 180s.
-
-Resolves #544
-
-Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
----
- sos/plugins/virsh.py | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/sos/plugins/virsh.py b/sos/plugins/virsh.py
-index 4b6bcc0..0381b39 100644
---- a/sos/plugins/virsh.py
-+++ b/sos/plugins/virsh.py
-@@ -41,6 +41,7 @@ class LibvirtClient(Plugin, RedHatPlugin, UbuntuPlugin, DebianPlugin):
-         if domains_file:
-             domains_lines = open(domains_file, "r").read().splitlines()[2:]
-             for domain in filter(lambda x: x, domains_lines):
--                self.add_cmd_output("virsh dumpxml %s" % domain.split()[1])
-+                self.add_cmd_output("virsh -r dumpxml %s" % domain.split()[1],
-+                                    timeout=180)
- 
- # vim: et ts=4 sw=4
--- 
-1.8.3.1
-
diff --git a/SOURCES/sos-bz1195087-services-add-more-diagnostics.patch b/SOURCES/sos-bz1195087-services-add-more-diagnostics.patch
deleted file mode 100644
index 19d8166..0000000
--- a/SOURCES/sos-bz1195087-services-add-more-diagnostics.patch
+++ /dev/null
@@ -1,479 +0,0 @@
-From b502b9f51b4d314ed6fa76d66a6db8aea7d32c12 Mon Sep 17 00:00:00 2001
-From: Pavel Moravec <pmoravec@redhat.com>
-Date: Sun, 31 May 2015 16:00:16 +0200
-Subject: [PATCH 1/8] [startup] rename plugin to 'services'
-
-The plugin is supposed to collect information about services
-rather than about their startup.
-
-Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
----
- sos/plugins/services.py | 56 +++++++++++++++++++++++++++++++++++++++++++++++++
- sos/plugins/startup.py  | 56 -------------------------------------------------
- 2 files changed, 56 insertions(+), 56 deletions(-)
- create mode 100644 sos/plugins/services.py
- delete mode 100644 sos/plugins/startup.py
-
-diff --git a/sos/plugins/services.py b/sos/plugins/services.py
-new file mode 100644
-index 0000000..606a135
---- /dev/null
-+++ b/sos/plugins/services.py
-@@ -0,0 +1,56 @@
-+# This program is free software; you can redistribute it and/or modify
-+# it under the terms of the GNU General Public License as published by
-+# the Free Software Foundation; either version 2 of the License, or
-+# (at your option) any later version.
-+
-+# This program is distributed in the hope that it will be useful,
-+# but WITHOUT ANY WARRANTY; without even the implied warranty of
-+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+# GNU General Public License for more details.
-+
-+# You should have received a copy of the GNU General Public License
-+# along with this program; if not, write to the Free Software
-+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-+
-+from sos.plugins import Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin
-+
-+
-+class Services(Plugin):
-+    """System services
-+    """
-+
-+    plugin_name = "services"
-+    profiles = ('system', 'boot')
-+
-+    option_list = [("servicestatus", "get a status of all running services",
-+                    "slow", False)]
-+
-+    def setup(self):
-+        self.add_copy_spec([
-+            "/etc/inittab",
-+            "/etc/rc.d"
-+        ])
-+        if self.get_option('servicestatus'):
-+            self.add_cmd_output("/sbin/service --status-all")
-+        self.add_cmd_output("/sbin/runlevel")
-+
-+
-+class RedHatServices(Services, RedHatPlugin):
-+
-+    def setup(self):
-+        super(RedHatServices, self).setup()
-+        self.add_cmd_output("/sbin/chkconfig --list", root_symlink="chkconfig")
-+
-+
-+class DebianServices(Services, DebianPlugin, UbuntuPlugin):
-+
-+    def setup(self):
-+        super(DebianServices, self).setup()
-+        self.add_copy_spec("/etc/rc*.d")
-+
-+        self.add_cmd_output("/sbin/initctl show-config",
-+                            root_symlink="initctl")
-+        if self.get_option('servicestatus'):
-+            self.add_cmd_output("/sbin/initctl list")
-+
-+# vim: et ts=4 sw=4
-diff --git a/sos/plugins/startup.py b/sos/plugins/startup.py
-deleted file mode 100644
-index 9d92370..0000000
---- a/sos/plugins/startup.py
-+++ /dev/null
-@@ -1,56 +0,0 @@
--# This program is free software; you can redistribute it and/or modify
--# it under the terms of the GNU General Public License as published by
--# the Free Software Foundation; either version 2 of the License, or
--# (at your option) any later version.
--
--# This program is distributed in the hope that it will be useful,
--# but WITHOUT ANY WARRANTY; without even the implied warranty of
--# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--# GNU General Public License for more details.
--
--# You should have received a copy of the GNU General Public License
--# along with this program; if not, write to the Free Software
--# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
--
--from sos.plugins import Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin
--
--
--class Startup(Plugin):
--    """System startup
--    """
--
--    plugin_name = "startup"
--    profiles = ('system', 'boot')
--
--    option_list = [("servicestatus", "get a status of all running services",
--                    "slow", False)]
--
--    def setup(self):
--        self.add_copy_spec([
--            "/etc/inittab",
--            "/etc/rc.d"
--        ])
--        if self.get_option('servicestatus'):
--            self.add_cmd_output("/sbin/service --status-all")
--        self.add_cmd_output("/sbin/runlevel")
--
--
--class RedHatStartup(Startup, RedHatPlugin):
--
--    def setup(self):
--        super(RedHatStartup, self).setup()
--        self.add_cmd_output("/sbin/chkconfig --list", root_symlink="chkconfig")
--
--
--class DebianStartup(Startup, DebianPlugin, UbuntuPlugin):
--
--    def setup(self):
--        super(DebianStartup, self).setup()
--        self.add_copy_spec("/etc/rc*.d")
--
--        self.add_cmd_output("/sbin/initctl show-config",
--                            root_symlink="initctl")
--        if self.get_option('servicestatus'):
--            self.add_cmd_output("/sbin/initctl list")
--
--# vim: et ts=4 sw=4
--- 
-1.8.3.1
-
-
-From 5204d62fdb362fb5cc4a897c90faa9539715fc74 Mon Sep 17 00:00:00 2001
-From: Pavel Moravec <pmoravec@redhat.com>
-Date: Tue, 7 Jul 2015 13:03:14 +0200
-Subject: [PATCH 2/8] [services] add "ls /var/lock/subsys"
-
-Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
----
- sos/plugins/services.py | 5 ++++-
- 1 file changed, 4 insertions(+), 1 deletion(-)
-
-diff --git a/sos/plugins/services.py b/sos/plugins/services.py
-index 606a135..ab9f8ce 100644
---- a/sos/plugins/services.py
-+++ b/sos/plugins/services.py
-@@ -32,7 +32,10 @@ class Services(Plugin):
-         ])
-         if self.get_option('servicestatus'):
-             self.add_cmd_output("/sbin/service --status-all")
--        self.add_cmd_output("/sbin/runlevel")
-+        self.add_cmd_output([
-+            "/sbin/runlevel",
-+            "ls /var/lock/subsys"
-+        ])
- 
- 
- class RedHatServices(Services, RedHatPlugin):
--- 
-1.8.3.1
-
-
-From e00447e7ee346aa3be685a91ebba7cf208c4f205 Mon Sep 17 00:00:00 2001
-From: Pavel Moravec <pmoravec@redhat.com>
-Date: Sun, 31 May 2015 16:04:19 +0200
-Subject: [PATCH 3/8] [ntp] Collect "ntpq -p" output
-
-Partially solves #570
-
-Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
----
- sos/plugins/ntp.py | 5 ++++-
- 1 file changed, 4 insertions(+), 1 deletion(-)
-
-diff --git a/sos/plugins/ntp.py b/sos/plugins/ntp.py
-index 0e39b9d..c0f731d 100644
---- a/sos/plugins/ntp.py
-+++ b/sos/plugins/ntp.py
-@@ -30,7 +30,10 @@ class Ntp(Plugin):
-             "/etc/ntp/step-tickers",
-             "/etc/ntp/ntpservers"
-         ])
--        self.add_cmd_output("ntptime")
-+        self.add_cmd_output([
-+            "ntptime",
-+            "ntpq -p"
-+        ])
- 
- 
- class RedHatNtp(Ntp, RedHatPlugin):
--- 
-1.8.3.1
-
-
-From 83ef3aff955a33bb58c578479ac6b63a615b4521 Mon Sep 17 00:00:00 2001
-From: Pavel Moravec <pmoravec@redhat.com>
-Date: Sun, 31 May 2015 16:07:06 +0200
-Subject: [PATCH 4/8] [networking] Collect "ethtool -T $NIC"
-
-Partially solves #570
-
-Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
----
- sos/plugins/networking.py | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/sos/plugins/networking.py b/sos/plugins/networking.py
-index f2b06a6..b2c74c1 100644
---- a/sos/plugins/networking.py
-+++ b/sos/plugins/networking.py
-@@ -184,6 +184,7 @@ class Networking(Plugin):
-                     "ethtool -i "+eth,
-                     "ethtool -k "+eth,
-                     "ethtool -S "+eth,
-+                    "ethtool -T "+eth,
-                     "ethtool -a "+eth,
-                     "ethtool -c "+eth,
-                     "ethtool -g "+eth
--- 
-1.8.3.1
-
-
-From 002cef3eddc288352d0b92f6272fbd2e85280e6e Mon Sep 17 00:00:00 2001
-From: Pavel Moravec <pmoravec@redhat.com>
-Date: Sun, 31 May 2015 16:17:40 +0200
-Subject: [PATCH 5/8] [ptp] Add new plugin for Precision time protocol
-
-Partially resolves #570
-
-Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
----
- sos/plugins/ptp.py | 36 ++++++++++++++++++++++++++++++++++++
- 1 file changed, 36 insertions(+)
- create mode 100644 sos/plugins/ptp.py
-
-diff --git a/sos/plugins/ptp.py b/sos/plugins/ptp.py
-new file mode 100644
-index 0000000..a6ac648
---- /dev/null
-+++ b/sos/plugins/ptp.py
-@@ -0,0 +1,36 @@
-+# Copyright (C) 2015 Pavel Moravec <pmoravec@redhat.com>
-+
-+# This program is free software; you can redistribute it and/or modify
-+# it under the terms of the GNU General Public License as published by
-+# the Free Software Foundation; either version 2 of the License, or
-+# (at your option) any later version.
-+
-+# This program is distributed in the hope that it will be useful,
-+# but WITHOUT ANY WARRANTY; without even the implied warranty of
-+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+# GNU General Public License for more details.
-+
-+# You should have received a copy of the GNU General Public License
-+# along with this program; if not, write to the Free Software
-+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-+
-+from sos.plugins import Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin
-+
-+
-+class Ptp(Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin):
-+    """Precision time protocol
-+    """
-+
-+    plugin_name = "ptp"
-+    profiles = ('system', 'services')
-+
-+    packages = ('linuxptp',)
-+
-+    def setup(self):
-+        self.add_copy_spec([
-+            "/etc/ptp4l.conf",
-+            "/etc/timemaster.conf",
-+            "/sys/class/ptp"
-+        ])
-+
-+# vim: et ts=4 sw=4
--- 
-1.8.3.1
-
-
-From 72e2e32eaa97c6c76b61635dd0fafeb4dcc1aa7d Mon Sep 17 00:00:00 2001
-From: Pavel Moravec <pmoravec@redhat.com>
-Date: Sun, 31 May 2015 16:19:29 +0200
-Subject: [PATCH 6/8] [process] Collect few "ps" outputs
-
-Partially solves $570
-
-Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
-(edits for readability & line length)
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/plugins/process.py | 9 ++++++++-
- 1 file changed, 8 insertions(+), 1 deletion(-)
-
-diff --git a/sos/plugins/process.py b/sos/plugins/process.py
-index 6ae189b..a643844 100644
---- a/sos/plugins/process.py
-+++ b/sos/plugins/process.py
-@@ -23,13 +23,20 @@ class Process(Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin):
-     profiles = ('system',)
- 
-     def setup(self):
-+        ps_axo = "ps axo"
-+        # process group and thread options
-+        ps_group_opts = "pid,ppid,user,group,lwp,nlwp,start_time,comm,cgroup"
-+        ps_sched_opts = "flags,state,uid,pid,ppid,pgid,sid,cls,pri,addr,sz,"
-+        ps_sched_opts += "wchan,stime,tty,time,cmd"
-         self.add_copy_spec("/proc/sched_debug")
-         self.add_cmd_output("ps auxwww", root_symlink="ps")
-         self.add_cmd_output("pstree", root_symlink="pstree")
-         self.add_cmd_output("lsof -b +M -n -l", root_symlink="lsof")
-         self.add_cmd_output([
-             "ps auxwwwm",
--            "ps alxwww"
-+            "ps alxwww",
-+            "%s %s" % (ps_axo, ps_group_opts),
-+            "%s %s" % (ps_axo, ps_sched_opts)
-         ])
- 
- # vim: et ts=4 sw=4
--- 
-1.8.3.1
-
-
-From 0b9a4c545582ed73f89ee4a7572ecb631633819e Mon Sep 17 00:00:00 2001
-From: Pavel Moravec <pmoravec@redhat.com>
-Date: Sun, 31 May 2015 16:21:28 +0200
-Subject: [PATCH 7/8] [sysvipc] Collect "ipcs -u"
-
-Partially solves #570
-
-Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
----
- sos/plugins/sysvipc.py | 5 ++++-
- 1 file changed, 4 insertions(+), 1 deletion(-)
-
-diff --git a/sos/plugins/sysvipc.py b/sos/plugins/sysvipc.py
-index a0732e7..a98abf9 100644
---- a/sos/plugins/sysvipc.py
-+++ b/sos/plugins/sysvipc.py
-@@ -29,6 +29,9 @@ class SysVIPC(Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin):
-             "/proc/sysvipc/sem",
-             "/proc/sysvipc/shm"
-         ])
--        self.add_cmd_output("ipcs")
-+        self.add_cmd_output([
-+            "ipcs",
-+            "ipcs -u"
-+        ])
- 
- # vim: et ts=4 sw=4
--- 
-1.8.3.1
-
-
-From fb7bbcf9e60002d75db383fac08244a7fa06a1d6 Mon Sep 17 00:00:00 2001
-From: Pavel Moravec <pmoravec@redhat.com>
-Date: Sun, 31 May 2015 16:24:23 +0200
-Subject: [PATCH 8/8] [devices] New plugin to collect "udevadm info
- --export-db"
-
-Partially resolves #570
-
-Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
----
- sos/plugins/devices.py | 28 ++++++++++++++++++++++++++++
- 1 file changed, 28 insertions(+)
- create mode 100644 sos/plugins/devices.py
-
-diff --git a/sos/plugins/devices.py b/sos/plugins/devices.py
-new file mode 100644
-index 0000000..5e0283a
---- /dev/null
-+++ b/sos/plugins/devices.py
-@@ -0,0 +1,28 @@
-+# This program is free software; you can redistribute it and/or modify
-+# it under the terms of the GNU General Public License as published by
-+# the Free Software Foundation; either version 2 of the License, or
-+# (at your option) any later version.
-+
-+# This program is distributed in the hope that it will be useful,
-+# but WITHOUT ANY WARRANTY; without even the implied warranty of
-+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+# GNU General Public License for more details.
-+
-+# You should have received a copy of the GNU General Public License
-+# along with this program; if not, write to the Free Software
-+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-+
-+from sos.plugins import Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin
-+
-+
-+class Devices(Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin):
-+    """ devices specific commands
-+    """
-+
-+    plugin_name = 'devices'
-+    profiles = ('system', 'hardware', 'boot')
-+
-+    def setup(self):
-+        self.add_cmd_output("udevadm info --export-db")
-+
-+# vim: et ts=4 sw=4
--- 
-1.8.3.1
-
-From c05fa2947937a5adc3496c4e66b649633de054e9 Mon Sep 17 00:00:00 2001
-From: Alexandru Juncu <alexj@linux.com>
-Date: Tue, 24 Feb 2015 18:28:04 +0100
-Subject: [PATCH] [last] information about login actions
-
-This is useful information to be correlated with shutdown/reboot
-events in /var/log/messages to identify graceful shutdowns/reboots
-and lower false positives about system crashes.
-
-Resolves #572.
-
-Signed-off-by: Alexandru Juncu <alexj@linux.com>
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/plugins/last.py | 33 +++++++++++++++++++++++++++++++++
- 1 file changed, 33 insertions(+)
- create mode 100644 sos/plugins/last.py
-
-diff --git a/sos/plugins/last.py b/sos/plugins/last.py
-new file mode 100644
-index 0000000..d6b791d
---- /dev/null
-+++ b/sos/plugins/last.py
-@@ -0,0 +1,33 @@
-+# This program is free software; you can redistribute it and/or modify
-+# it under the terms of the GNU General Public License as published by
-+# the Free Software Foundation; either version 2 of the License, or
-+# (at your option) any later version.
-+
-+# This program is distributed in the hope that it will be useful,
-+# but WITHOUT ANY WARRANTY; without even the implied warranty of
-+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+# GNU General Public License for more details.
-+
-+# You should have received a copy of the GNU General Public License
-+# along with this program; if not, write to the Free Software
-+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-+
-+from sos.plugins import Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin
-+
-+
-+class Last(Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin):
-+    """login information
-+    """
-+
-+    plugin_name = 'last'
-+    profiles = ('system',)
-+
-+    def setup(self):
-+        self.add_cmd_output("last", root_symlink="last")
-+        self.add_cmd_output([
-+                "last reboot",
-+                "last shutdown",
-+                "lastlog"
-+                ])
-+
-+# vim: et ts=4 sw=4
--- 
-1.8.3.1
-
diff --git a/SOURCES/sos-bz1195608-sap-hana-netweaver-vhostmd-plugins.patch b/SOURCES/sos-bz1195608-sap-hana-netweaver-vhostmd-plugins.patch
deleted file mode 100644
index 52c78e3..0000000
--- a/SOURCES/sos-bz1195608-sap-hana-netweaver-vhostmd-plugins.patch
+++ /dev/null
@@ -1,612 +0,0 @@
-From e768bf71c96317bc64b643ab9262cb88f1d9058c Mon Sep 17 00:00:00 2001
-From: Luca Miccini <luca.miccini@redhat.com>
-Date: Tue, 24 Feb 2015 18:38:20 +0100
-Subject: [PATCH 1/7] [saphana] add SAP HANA plugin
-
-Add a plugin for the SAP HANA component and add it to a new 'sap'
-profile.
-
-Signed-off-by: Luca Miccini <luca.miccini@redhat.com>
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/plugins/saphana.py | 84 ++++++++++++++++++++++++++++++++++++++++++++++++++
- 1 file changed, 84 insertions(+)
- create mode 100644 sos/plugins/saphana.py
-
-diff --git a/sos/plugins/saphana.py b/sos/plugins/saphana.py
-new file mode 100644
-index 0000000..2ff26f5
---- /dev/null
-+++ b/sos/plugins/saphana.py
-@@ -0,0 +1,84 @@
-+# This program is free software; you can redistribute it and/or modify
-+# it under the terms of the GNU General Public License as published by
-+# the Free Software Foundation; either version 2 of the License, or
-+# (at your option) any later version.
-+
-+# This program is distributed in the hope that it will be useful,
-+# but WITHOUT ANY WARRANTY; without even the implied warranty of
-+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+# GNU General Public License for more details.
-+
-+# You should have received a copy of the GNU General Public License
-+# along with this program; if not, write to the Free Software
-+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-+
-+import os
-+from sos.plugins import Plugin, RedHatPlugin
-+
-+
-+class saphana(Plugin, RedHatPlugin):
-+    """SAP HANA"""
-+
-+    plugin_name = 'saphana'
-+    profiles = ['sap']
-+
-+    files = ['/hana']
-+
-+    def setup(self):
-+
-+        sids = []
-+
-+        if os.path.isdir("/hana/shared"):
-+            s = os.listdir("/hana/shared")
-+            for sid in s:
-+                if len(sid) == 3:
-+                    sid = sid.strip()
-+                    sids.append(sid)
-+
-+            for sid in sids:
-+                sidadm = '%sadm' % sid.lower()
-+
-+                prefix = 'su - %s -c' % sidadm
-+
-+                self.add_cmd_output('%s "HDB info"' % prefix,
-+                                    suggest_filename="%s_HDB_info" % sid)
-+
-+                self.add_cmd_output('%s "hdbsrvutil -v"' % prefix,
-+                                    suggest_filename="%s_version" % sid)
-+
-+                self.add_cmd_output('%s \'hdbcons "mm l -s -S -p"\'' % prefix,
-+                                    suggest_filename="%s_memusage" % sid)
-+
-+                self.add_cmd_output('%s \'hdbcons -e hdbindexserver \
-+                                    "replication info"\'' % prefix,
-+                                    suggest_filename="%s_replicainfo" % sid)
-+
-+                if os.path.isdir("/hana/shared/%s/" % sid):
-+                    i = os.listdir("/hana/shared/%s/" % sid)
-+                    for inst in i:
-+                        if "HDB" in inst:
-+                            inst = inst.strip()[-2:]
-+
-+                            # get GREEN/RED status
-+                            self.add_cmd_output(
-+                                'su - %s -c "sapcontrol -nr %s \
-+                                -function GetProcessList"'
-+                                % (sidadm, inst),
-+                                suggest_filename="%s_%s_status"
-+                                % (sid, inst)
-+                            )
-+
-+                            path = '/usr/sap/%s/HDB%s/exe/python_support'
-+                            path %= (sid, inst)
-+
-+                            if os.path.isdir("%s" % path):
-+                                # SCALE OUT - slow
-+                                self.add_cmd_output(
-+                                    'su - %s -c "python \
-+                                    %s/landscapeHostConfiguration.py"'
-+                                    % (sidadm, path),
-+                                    suggest_filename="%s_%s_landscapeConfig"
-+                                    % (sid, inst)
-+                                )
-+
-+# vim: et ts=4 sw=4
--- 
-1.8.3.1
-
-
-From 581b05584410e48be998c98efe25ab9783641d1b Mon Sep 17 00:00:00 2001
-From: Luca Miccini <luca.miccini@redhat.com>
-Date: Fri, 13 Mar 2015 12:43:08 +0100
-Subject: [PATCH 2/7] [vhostmd] add new plugin
-
-Add a plugin for the Virtual Host Metrics Daemon (vhostmd) to
-collect VM performance metrics from the system.
-
-Fixes #527.
-
-Signed-off-by: Luca Miccini <luca.miccini@redhat.com>
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/plugins/vhostmd.py | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++
- 1 file changed, 52 insertions(+)
- create mode 100644 sos/plugins/vhostmd.py
-
-diff --git a/sos/plugins/vhostmd.py b/sos/plugins/vhostmd.py
-new file mode 100644
-index 0000000..6711945
---- /dev/null
-+++ b/sos/plugins/vhostmd.py
-@@ -0,0 +1,52 @@
-+# This program is free software; you can redistribute it and/or modify
-+# it under the terms of the GNU General Public License as published by
-+# the Free Software Foundation; either version 2 of the License, or
-+# (at your option) any later version.
-+
-+# This program is distributed in the hope that it will be useful,
-+# but WITHOUT ANY WARRANTY; without even the implied warranty of
-+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+# GNU General Public License for more details.
-+
-+# You should have received a copy of the GNU General Public License
-+# along with this program; if not, write to the Free Software
-+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-+
-+from sos.plugins import Plugin, RedHatPlugin
-+
-+
-+class vhostmd(Plugin, RedHatPlugin):
-+    """vhostmd virtualization metrics collection
-+    """
-+
-+    plugin_name = 'vhostmd'
-+    profiles = ['sap']
-+
-+    packages = ['virt-what']
-+
-+    def setup(self):
-+        vw = self.get_command_output("virt-what")['output'].splitlines()
-+
-+        if not vw:
-+            return
-+
-+        if "vmware" in vw or "kvm" in vw or "xen" in vw:
-+            # if vm-dump-metrics is installed use it
-+            if self.is_installed("vm-dump-metrics"):
-+                self.add_cmd_output("vm-dump-metrics",
-+                                    suggest_filename="virt_metrics")
-+            else:
-+                # otherwise use the raw vhostmd disk presented (256k size)
-+                d = self.get_command_output("lsblk -d")
-+                for disk in d['output'].splitlines():
-+                    if "256K" in disk:
-+                        dev = disk.split()[0]
-+                        check = self.get_command_output(
-+                            "dd if=/dev/%s bs=25 count=1" % dev)
-+                        if 'metric' in check['output']:
-+                            self.add_cmd_output("dd if=/dev/%s bs=256k count=1"
-+                                                % dev,
-+                                                suggest_filename="virt_\
-+                                                        metrics")
-+
-+# vim: et ts=4 sw=4
--- 
-1.8.3.1
-
-
-From 8a710151c792a5f8bddba33de29976bb218b6701 Mon Sep 17 00:00:00 2001
-From: "Bryn M. Reeves" <bmr@redhat.com>
-Date: Tue, 30 Jun 2015 17:55:58 +0100
-Subject: [PATCH 3/7] [vhostmd] add plugin to the system and virt profiles
-
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/plugins/vhostmd.py | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/sos/plugins/vhostmd.py b/sos/plugins/vhostmd.py
-index 6711945..786a7c1 100644
---- a/sos/plugins/vhostmd.py
-+++ b/sos/plugins/vhostmd.py
-@@ -20,7 +20,7 @@ class vhostmd(Plugin, RedHatPlugin):
-     """
- 
-     plugin_name = 'vhostmd'
--    profiles = ['sap']
-+    profiles = ['sap', 'virt', 'system']
- 
-     packages = ['virt-what']
- 
--- 
-1.8.3.1
-
-
-From a5824f209c000d1a69ef305dd69f105400de3f4a Mon Sep 17 00:00:00 2001
-From: "Bryn M. Reeves" <bmr@redhat.com>
-Date: Tue, 30 Jun 2015 18:00:28 +0100
-Subject: [PATCH 4/7] [vhostmd] enumerate disks via /sys/block instead of
- "lsblk -d"
-
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/plugins/vhostmd.py | 9 ++++++---
- 1 file changed, 6 insertions(+), 3 deletions(-)
-
-diff --git a/sos/plugins/vhostmd.py b/sos/plugins/vhostmd.py
-index 786a7c1..0a86fb5 100644
---- a/sos/plugins/vhostmd.py
-+++ b/sos/plugins/vhostmd.py
-@@ -13,6 +13,7 @@
- # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- 
- from sos.plugins import Plugin, RedHatPlugin
-+import os
- 
- 
- class vhostmd(Plugin, RedHatPlugin):
-@@ -31,14 +32,16 @@ class vhostmd(Plugin, RedHatPlugin):
-             return
- 
-         if "vmware" in vw or "kvm" in vw or "xen" in vw:
--            # if vm-dump-metrics is installed use it
-             if self.is_installed("vm-dump-metrics"):
-+                # if vm-dump-metrics is installed use it
-                 self.add_cmd_output("vm-dump-metrics",
-                                     suggest_filename="virt_metrics")
-             else:
-                 # otherwise use the raw vhostmd disk presented (256k size)
--                d = self.get_command_output("lsblk -d")
--                for disk in d['output'].splitlines():
-+                sysblock = "/sys/block"
-+                if not os.path.isdir(sysblock):
-+                    return
-+                for disk in os.listdir(sysblock):
-                     if "256K" in disk:
-                         dev = disk.split()[0]
-                         check = self.get_command_output(
--- 
-1.8.3.1
-
-
-From a191fc379d2ee3b4b42014eec4c3f83a6e423761 Mon Sep 17 00:00:00 2001
-From: Luca Miccini <luca.miccini@redhat.com>
-Date: Tue, 24 Feb 2015 18:40:07 +0100
-Subject: [PATCH 5/7] [sapnw] add SAP NetWeaver plugin
-
-Closes #516.
-
-Signed-off-by: Luca Miccini <luca.miccini@redhat.com>
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/plugins/sapnw.py | 131 +++++++++++++++++++++++++++++++++++++++++++++++++++
- 1 file changed, 131 insertions(+)
- create mode 100644 sos/plugins/sapnw.py
-
-diff --git a/sos/plugins/sapnw.py b/sos/plugins/sapnw.py
-new file mode 100644
-index 0000000..d2be8dd
---- /dev/null
-+++ b/sos/plugins/sapnw.py
-@@ -0,0 +1,131 @@
-+# This program is free software; you can redistribute it and/or modify
-+# it under the terms of the GNU General Public License as published by
-+# the Free Software Foundation; either version 2 of the License, or
-+# (at your option) any later version.
-+
-+# This program is distributed in the hope that it will be useful,
-+# but WITHOUT ANY WARRANTY; without even the implied warranty of
-+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+# GNU General Public License for more details.
-+
-+# You should have received a copy of the GNU General Public License
-+# along with this program; if not, write to the Free Software
-+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-+
-+import os
-+from sets import Set
-+from sos.plugins import Plugin, RedHatPlugin
-+
-+
-+class sapnw(Plugin, RedHatPlugin):
-+    """SAP NetWeaver"""
-+
-+    files = ['/usr/sap']
-+
-+    def setup(self):
-+
-+        # list installed instances
-+        self.add_cmd_output("/usr/sap/hostctrl/exe/saphostctrl \
-+                            -function ListInstances",
-+                            suggest_filename="SAPInstances_List")
-+        # list installed sap dbs
-+        self.add_cmd_output("/usr/sap/hostctrl/exe/saphostctrl \
-+                            -function ListDatabases",
-+                            suggest_filename="SAPDatabases_List")
-+
-+        # list defined instances and guess profiles out of them
-+        # (good for HA setups with virtual hostnames)
-+        # using sap host control agent
-+
-+        p = self.get_command_output(
-+            "/usr/sap/hostctrl/exe/saphostctrl -function ListInstances")
-+
-+        sidsunique = Set([])
-+
-+        # Cycle through all the instances, get 'sid' 'instance_number'
-+        # and 'vhost' to determine the proper profile
-+        for line in p['output'].splitlines():
-+            if "DAA" not in line:
-+                fields = line.strip().split()
-+                sid = fields[3]
-+                inst = fields[5]
-+                vhost = fields[7]
-+                sidsunique.add(sid)
-+                p = os.listdir("/usr/sap/%s/SYS/profile/" % sid)
-+                for line in p:
-+                    if sid in line and inst in line and vhost in line:
-+                        ldenv = 'LD_LIBRARY_PATH=/usr/sap/%s/SYS/exe/run' % sid
-+                        pt = '/usr/sap/%s/SYS/exe/uc/linuxx86_64' % sid
-+                        profile = line.strip()
-+                        self.add_cmd_output(
-+                            "env -i %s %s/sappfpar \
-+                            all pf=/usr/sap/%s/SYS/profile/%s"
-+                            % (ldenv, pt, sid, profile),
-+                            suggest_filename="%s_parameters" % profile)
-+
-+                        # collect instance status
-+                        self.add_cmd_output(
-+                            "env -i %s %s/sapcontrol -nr %s \
-+                            -function GetProcessList" % (ldenv, pt, inst),
-+                            suggest_filename="%s_%s_GetProcList" % (sid, inst))
-+
-+                        # collect version info for the various components
-+                        self.add_cmd_output(
-+                            "env -i %s %s/sapcontrol -nr %s \
-+                            -function GetVersionInfo" % (ldenv, pt, inst),
-+                            suggest_filename="%s_%s_GetVersInfo" % (sid, inst))
-+
-+                        # collect <SID>adm user environment
-+                        lowsid = sid.lower()
-+                        self.add_cmd_output(
-+                            "su - %sadm -c \"sapcontrol -nr %s -function \
-+                            GetEnvironment\"" % (lowsid, inst),
-+                            suggest_filename="%s_%sadm_%s_userenv"
-+                            % (sid, lowsid, inst))
-+
-+        # traverse the sids list, collecting info about dbclient
-+        for sid in sidsunique:
-+            c = self.get_command_output("ls /usr/sap/%s/" % sid)
-+            for line in c['output'].splitlines():
-+                if 'DVEB' in line:
-+                    self.add_cmd_output(
-+                        "grep 'client driver' /usr/sap/%s/%s/work/dev_w0"
-+                        % (sid, line), suggest_filename="%s_dbclient" % sid)
-+
-+        # get the installed db's
-+        d = self.get_command_output(
-+            '/usr/sap/hostctrl/exe/saphostctrl -function ListDatabases')
-+
-+        for line in d['output'].splitlines():
-+            if "Instance name" in line:
-+                fields = line.strip().split()
-+                dbadm = fields[2][:-1]
-+                dbtype = fields[8][:-1]
-+                sid = dbadm[3:].upper()
-+
-+                if dbtype == 'db6':
-+                    self.add_cmd_output(
-+                        "su - %s -c \"db2 get dbm cfg\""
-+                        % dbadm, suggest_filename="%s_%s_db2_info"
-+                        % (sid, dbadm))
-+
-+                if dbtype == 'sap':
-+                    sid = fields[2][:-1]
-+                    self.add_cmd_output(
-+                        "cat /sapdb/%s/data/config/%s.pah"
-+                        % (sid, sid),
-+                        suggest_filename="%s_%s_maxdb_info"
-+                        % (sid, dbadm))
-+
-+                if dbtype == 'ora':
-+                    sid = fields[2][:-1]
-+                    self.add_cmd_output(
-+                        "cat /oracle/%s/*/dbs/init.ora" % sid,
-+                        suggest_filename="%s_oracle_init.ora" % sid)
-+
-+        # if sapconf available run it in check mode
-+        if os.path.isfile("/usr/bin/sapconf"):
-+            self.add_cmd_output(
-+                "/usr/bin/sapconf -n", suggest_filename="sapconf_checkmode")
-+
-+# vim: et ts=4 sw=4
--- 
-1.8.3.1
-
-
-From 1d4185aa916703370f605f87341aa74563f06aa5 Mon Sep 17 00:00:00 2001
-From: Luca Miccini <luca.miccini@redhat.com>
-Date: Mon, 2 Mar 2015 12:01:23 +0100
-Subject: [PATCH 6/7] [sapnw] add 'sapnw' as member of the 'sap' profile
-
-Signed-off-by: Luca Miccini <luca.miccini@redhat.com>
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/plugins/sapnw.py | 74 +++++++++++++++++++++++++++++-----------------------
- 1 file changed, 41 insertions(+), 33 deletions(-)
-
-diff --git a/sos/plugins/sapnw.py b/sos/plugins/sapnw.py
-index d2be8dd..521556b 100644
---- a/sos/plugins/sapnw.py
-+++ b/sos/plugins/sapnw.py
-@@ -17,46 +17,54 @@ from sets import Set
- from sos.plugins import Plugin, RedHatPlugin
- 
- 
-+def get_directory_listing(path):
-+    try:
-+        dir_list = os.listdir(path)
-+    except:
-+        dir_list = []
-+    return dir_list
-+
-+
- class sapnw(Plugin, RedHatPlugin):
-     """SAP NetWeaver"""
- 
-+    plugin_name = 'sapnw'
-+    profiles = ['sap']
-+
-     files = ['/usr/sap']
- 
-     def setup(self):
- 
-         # list installed instances
--        self.add_cmd_output("/usr/sap/hostctrl/exe/saphostctrl \
--                            -function ListInstances",
--                            suggest_filename="SAPInstances_List")
-+        inst_out = self.get_cmd_output_now("/usr/sap/hostctrl/exe/saphostctrl \
-+                                           -function ListInstances",
-+                                           suggest_filename="SAPInstances")
-         # list installed sap dbs
--        self.add_cmd_output("/usr/sap/hostctrl/exe/saphostctrl \
--                            -function ListDatabases",
--                            suggest_filename="SAPDatabases_List")
--
--        # list defined instances and guess profiles out of them
--        # (good for HA setups with virtual hostnames)
--        # using sap host control agent
--
--        p = self.get_command_output(
--            "/usr/sap/hostctrl/exe/saphostctrl -function ListInstances")
-+        db_out = self.get_cmd_output_now("/usr/sap/hostctrl/exe/saphostctrl \
-+                                         -function ListDatabases",
-+                                         suggest_filename="SAPDatabases")
- 
-         sidsunique = Set([])
- 
-         # Cycle through all the instances, get 'sid' 'instance_number'
-         # and 'vhost' to determine the proper profile
--        for line in p['output'].splitlines():
-+        p = open(inst_out, "r").read().splitlines()
-+        for line in p:
-             if "DAA" not in line:
-                 fields = line.strip().split()
-                 sid = fields[3]
-                 inst = fields[5]
-                 vhost = fields[7]
-                 sidsunique.add(sid)
--                p = os.listdir("/usr/sap/%s/SYS/profile/" % sid)
--                for line in p:
-+                for line in get_directory_listing("/usr/sap/%s/SYS/profile/"
-+                                                  % sid):
-                     if sid in line and inst in line and vhost in line:
-                         ldenv = 'LD_LIBRARY_PATH=/usr/sap/%s/SYS/exe/run' % sid
-+                        # TODO: I am assuming unicode here
-+                        # nuc should be accounted
-                         pt = '/usr/sap/%s/SYS/exe/uc/linuxx86_64' % sid
-                         profile = line.strip()
-+                        # collect profiles
-                         self.add_cmd_output(
-                             "env -i %s %s/sappfpar \
-                             all pf=/usr/sap/%s/SYS/profile/%s"
-@@ -67,13 +75,15 @@ class sapnw(Plugin, RedHatPlugin):
-                         self.add_cmd_output(
-                             "env -i %s %s/sapcontrol -nr %s \
-                             -function GetProcessList" % (ldenv, pt, inst),
--                            suggest_filename="%s_%s_GetProcList" % (sid, inst))
-+                            suggest_filename="%s_%s_GetProcList"
-+                            % (sid, inst))
- 
-                         # collect version info for the various components
-                         self.add_cmd_output(
-                             "env -i %s %s/sapcontrol -nr %s \
-                             -function GetVersionInfo" % (ldenv, pt, inst),
--                            suggest_filename="%s_%s_GetVersInfo" % (sid, inst))
-+                            suggest_filename="%s_%s_GetVersInfo"
-+                            % (sid, inst))
- 
-                         # collect <SID>adm user environment
-                         lowsid = sid.lower()
-@@ -85,18 +95,18 @@ class sapnw(Plugin, RedHatPlugin):
- 
-         # traverse the sids list, collecting info about dbclient
-         for sid in sidsunique:
--            c = self.get_command_output("ls /usr/sap/%s/" % sid)
--            for line in c['output'].splitlines():
-+            for line in get_directory_listing("/usr/sap/%s/" % sid):
-                 if 'DVEB' in line:
-                     self.add_cmd_output(
-                         "grep 'client driver' /usr/sap/%s/%s/work/dev_w0"
--                        % (sid, line), suggest_filename="%s_dbclient" % sid)
-+                        % (sid, line), suggest_filename="%s_dbclient"
-+                        % sid)
- 
--        # get the installed db's
--        d = self.get_command_output(
--            '/usr/sap/hostctrl/exe/saphostctrl -function ListDatabases')
-+        if not db_out:
-+            return
-+        dbl = open(db_out, "r").read().splitlines()
- 
--        for line in d['output'].splitlines():
-+        for line in dbl:
-             if "Instance name" in line:
-                 fields = line.strip().split()
-                 dbadm = fields[2][:-1]
-@@ -104,24 +114,22 @@ class sapnw(Plugin, RedHatPlugin):
-                 sid = dbadm[3:].upper()
- 
-                 if dbtype == 'db6':
-+                    # IBM DB2
-                     self.add_cmd_output(
-                         "su - %s -c \"db2 get dbm cfg\""
-                         % dbadm, suggest_filename="%s_%s_db2_info"
-                         % (sid, dbadm))
- 
-                 if dbtype == 'sap':
-+                    # SAP MAXDB
-                     sid = fields[2][:-1]
--                    self.add_cmd_output(
--                        "cat /sapdb/%s/data/config/%s.pah"
--                        % (sid, sid),
--                        suggest_filename="%s_%s_maxdb_info"
--                        % (sid, dbadm))
-+                    self.add_copy_spec(
-+                        "/sapdb/%s/data/config/%s.pah" % (sid, sid))
- 
-                 if dbtype == 'ora':
-+                    # Oracle
-                     sid = fields[2][:-1]
--                    self.add_cmd_output(
--                        "cat /oracle/%s/*/dbs/init.ora" % sid,
--                        suggest_filename="%s_oracle_init.ora" % sid)
-+                    self.add_copy_spec("/oracle/%s/*/dbs/init.ora" % sid)
- 
-         # if sapconf available run it in check mode
-         if os.path.isfile("/usr/bin/sapconf"):
--- 
-1.8.3.1
-
-
-From 5ac02f4fbc38992f23aa1f44974f74f7c4e16ea5 Mon Sep 17 00:00:00 2001
-From: Luca Miccini <luca.miccini@redhat.com>
-Date: Wed, 11 Mar 2015 15:19:49 +0100
-Subject: [PATCH 7/7] [sapnw] add sybase ASE collection
-
-Signed-off-by: Luca Miccini <luca.miccini@redhat.com>
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/plugins/sapnw.py | 5 +++++
- 1 file changed, 5 insertions(+)
-
-diff --git a/sos/plugins/sapnw.py b/sos/plugins/sapnw.py
-index 521556b..e18978f 100644
---- a/sos/plugins/sapnw.py
-+++ b/sos/plugins/sapnw.py
-@@ -131,6 +131,11 @@ class sapnw(Plugin, RedHatPlugin):
-                     sid = fields[2][:-1]
-                     self.add_copy_spec("/oracle/%s/*/dbs/init.ora" % sid)
- 
-+                if dbtype == 'syb':
-+                    # Sybase
-+                    sid = fields[2][:-1]
-+                    self.add_copy_spec("/sybase/%s/ASE*/%s.cfg" % (sid, sid))
-+
-         # if sapconf available run it in check mode
-         if os.path.isfile("/usr/bin/sapconf"):
-             self.add_cmd_output(
--- 
-1.8.3.1
-
diff --git a/SOURCES/sos-bz1195608-sapnw-cmd-output-check.patch b/SOURCES/sos-bz1195608-sapnw-cmd-output-check.patch
deleted file mode 100644
index 7c90b77..0000000
--- a/SOURCES/sos-bz1195608-sapnw-cmd-output-check.patch
+++ /dev/null
@@ -1,153 +0,0 @@
-From 24fb011755e655127b7e09f4c02275539666b4b2 Mon Sep 17 00:00:00 2001
-From: Pavel Moravec <pmoravec@redhat.com>
-Date: Wed, 29 Jul 2015 14:47:19 +0200
-Subject: [PATCH] [sapnw] uses a deprecated Sets module
-
-Use built-in set class instead of deprecated Set for sidsunique
-
-Resolves: #608
-
-Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
-Signed-off-by: Adam Stokes <adam.stokes@ubuntu.com>
----
- sos/plugins/sapnw.py | 3 +--
- 1 file changed, 1 insertion(+), 2 deletions(-)
-
-diff --git a/sos/plugins/sapnw.py b/sos/plugins/sapnw.py
-index e18978f..59beff2 100644
---- a/sos/plugins/sapnw.py
-+++ b/sos/plugins/sapnw.py
-@@ -13,7 +13,6 @@
- # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- 
- import os
--from sets import Set
- from sos.plugins import Plugin, RedHatPlugin
- 
- 
-@@ -44,7 +43,7 @@ class sapnw(Plugin, RedHatPlugin):
-                                          -function ListDatabases",
-                                          suggest_filename="SAPDatabases")
- 
--        sidsunique = Set([])
-+        sidsunique = set()
- 
-         # Cycle through all the instances, get 'sid' 'instance_number'
-         # and 'vhost' to determine the proper profile
--- 
-1.8.3.1
-
-From 10059897ceb0755bab844011f11ea6c6af8794ae Mon Sep 17 00:00:00 2001
-From: Pavel Moravec <pmoravec@redhat.com>
-Date: Tue, 28 Jul 2015 13:50:54 +0200
-Subject: [PATCH] [sapnw] Add check if saphostctrl is not present
-
-Split listing&collecting instances and dbs from lengthy setup().
-
-Break execution when "inst_out = self.get_cmd_output_now" returns None.
-
-db_out is already checked this way.
-
-Resolves: #614
-
-Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
----
- sos/plugins/sapnw.py | 30 +++++++++++++++++-------------
- 1 file changed, 17 insertions(+), 13 deletions(-)
-
-diff --git a/sos/plugins/sapnw.py b/sos/plugins/sapnw.py
-index 59beff2..d2c93ec 100644
---- a/sos/plugins/sapnw.py
-+++ b/sos/plugins/sapnw.py
-@@ -32,20 +32,16 @@ class sapnw(Plugin, RedHatPlugin):
- 
-     files = ['/usr/sap']
- 
--    def setup(self):
--
-+    def collect_list_instances(self):
-         # list installed instances
-         inst_out = self.get_cmd_output_now("/usr/sap/hostctrl/exe/saphostctrl \
-                                            -function ListInstances",
-                                            suggest_filename="SAPInstances")
--        # list installed sap dbs
--        db_out = self.get_cmd_output_now("/usr/sap/hostctrl/exe/saphostctrl \
--                                         -function ListDatabases",
--                                         suggest_filename="SAPDatabases")
-+        if not inst_out:
-+            return
- 
-         sidsunique = set()
--
--        # Cycle through all the instances, get 'sid' 'instance_number'
-+        # Cycle through all the instances, get 'sid', 'instance_number'
-         # and 'vhost' to determine the proper profile
-         p = open(inst_out, "r").read().splitlines()
-         for line in p:
-@@ -101,10 +97,15 @@ class sapnw(Plugin, RedHatPlugin):
-                         % (sid, line), suggest_filename="%s_dbclient"
-                         % sid)
- 
-+    def collect_list_dbs(self):
-+        # list installed sap dbs
-+        db_out = self.get_cmd_output_now("/usr/sap/hostctrl/exe/saphostctrl \
-+                                         -function ListDatabases",
-+                                         suggest_filename="SAPDatabases")
-         if not db_out:
-             return
--        dbl = open(db_out, "r").read().splitlines()
- 
-+        dbl = open(db_out, "r").read().splitlines()
-         for line in dbl:
-             if "Instance name" in line:
-                 fields = line.strip().split()
-@@ -135,9 +136,12 @@ class sapnw(Plugin, RedHatPlugin):
-                     sid = fields[2][:-1]
-                     self.add_copy_spec("/sybase/%s/ASE*/%s.cfg" % (sid, sid))
- 
--        # if sapconf available run it in check mode
--        if os.path.isfile("/usr/bin/sapconf"):
--            self.add_cmd_output(
--                "/usr/bin/sapconf -n", suggest_filename="sapconf_checkmode")
-+    def setup(self):
-+        collect_list_instances()
-+        collect_list_dbs()
-+
-+        # run sapconf in check mode
-+        self.add_cmd_output("sapconf -n",
-+                            suggest_filename="sapconf_checkmode")
- 
- # vim: et ts=4 sw=4
--- 
-1.8.3.1
-
-From 1f83971325629cb3f470dac74de1be49f095118e Mon Sep 17 00:00:00 2001
-From: Pavel Moravec <pmoravec@redhat.com>
-Date: Tue, 4 Aug 2015 10:44:37 +0200
-Subject: [PATCH] [sapnw] call self methods properly
-
-Call methods from the self class within "self." scope.
-
-Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
----
- sos/plugins/sapnw.py | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/sos/plugins/sapnw.py b/sos/plugins/sapnw.py
-index d2c93ec..be8c4b9 100644
---- a/sos/plugins/sapnw.py
-+++ b/sos/plugins/sapnw.py
-@@ -137,8 +137,8 @@ class sapnw(Plugin, RedHatPlugin):
-                     self.add_copy_spec("/sybase/%s/ASE*/%s.cfg" % (sid, sid))
- 
-     def setup(self):
--        collect_list_instances()
--        collect_list_dbs()
-+        self.collect_list_instances()
-+        self.collect_list_dbs()
- 
-         # run sapconf in check mode
-         self.add_cmd_output("sapconf -n",
--- 
-1.8.3.1
-
diff --git a/SOURCES/sos-bz1197006-rabbitmq-cluster-status.patch b/SOURCES/sos-bz1197006-rabbitmq-cluster-status.patch
deleted file mode 100644
index a7d06d6..0000000
--- a/SOURCES/sos-bz1197006-rabbitmq-cluster-status.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From 786f74a79f6baec716be8c8a05da90b5c63848d0 Mon Sep 17 00:00:00 2001
-From: Jorge Niedbalski <niedbalski@gmail.com>
-Date: Fri, 14 Nov 2014 11:43:31 -0300
-Subject: [PATCH] [plugins/rabbitmq] Added cluster_status command output
-
-* Added the 'rabbitmqctl cluster_status' output command
-
-Signed-off-by: Jorge Niedbalski R. <niedbalski@gmail.com>
----
- sos/plugins/rabbitmq.py | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/sos/plugins/rabbitmq.py b/sos/plugins/rabbitmq.py
-index ee09fa3..3e81d66 100644
---- a/sos/plugins/rabbitmq.py
-+++ b/sos/plugins/rabbitmq.py
-@@ -25,6 +25,8 @@ class RabbitMQ(Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin):
- 
-     def setup(self):
-         self.add_cmd_output("rabbitmqctl report")
-+        self.add_cmd_output("rabbitmqctl cluster_status")
-+
-         self.add_copy_spec("/etc/rabbitmq/*")
-         self.add_copy_spec_limit("/var/log/rabbitmq/*",
-                                  sizelimit=self.get_option('log_size'))
--- 
-1.8.3.1
-
diff --git a/SOURCES/sos-bz1200526-cluster-crmreport-create-dir.patch b/SOURCES/sos-bz1200526-cluster-crmreport-create-dir.patch
deleted file mode 100644
index 3453e19..0000000
--- a/SOURCES/sos-bz1200526-cluster-crmreport-create-dir.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From 147c496d5b2a33b7534ac66dbfb7705ae7ccb7bd Mon Sep 17 00:00:00 2001
-From: Shane Bradley <sbradley@redhat.com>
-Date: Wed, 11 Mar 2015 09:55:06 -0400
-Subject: [PATCH] [cluster] crm_report fails to run because dir already exists
-
-Do not create directory for the destination path used by crm_report.
-
-Resolves: rhbz#1200526
-
-Signed-off-by: Shane Bradley <sbradley@redhat.com>
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/plugins/cluster.py | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/sos/plugins/cluster.py b/sos/plugins/cluster.py
-index bd2cf8a..8dd9a4d 100644
---- a/sos/plugins/cluster.py
-+++ b/sos/plugins/cluster.py
-@@ -111,7 +111,7 @@ class Cluster(Plugin, RedHatPlugin):
-                     "crm_from parameter '%s' is not a valid date: using "
-                     "default" % self.get_option('crm_from'))
- 
--        crm_dest = self.get_cmd_output_path(name='crm_report')
-+        crm_dest = self.get_cmd_output_path(name='crm_report', make=False)
-         self.add_cmd_output('crm_report -S -d --dest %s --from "%s"'
-                             % (crm_dest, crm_from))
- 
--- 
-1.8.3.1
-
diff --git a/SOURCES/sos-bz1206633-fix-exception-when-networkmanager-disabled.patch b/SOURCES/sos-bz1206633-fix-exception-when-networkmanager-disabled.patch
deleted file mode 100644
index d24a030..0000000
--- a/SOURCES/sos-bz1206633-fix-exception-when-networkmanager-disabled.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From d19bc046d549aaf634314a257dd22623df731648 Mon Sep 17 00:00:00 2001
-From: "Bryn M. Reeves" <bmr@redhat.com>
-Date: Tue, 3 Mar 2015 14:54:48 +0000
-Subject: [PATCH] [networking] test nmcli status before using output
-
-The networking module assumes that nmcli commands succeed if the
-results object is not None; this is not valid and will lead to
-errors in subsequent commands if the call returned an error
-message instead of the expected content:
-
-  [plugin:networking] collecting output of 'nmcli con show conf 'Error: nmcli (0.9.10.0) and NetworkManager (unknown) versions don't match. Force execution using --nocheck, but the results are unpredictable.''
-  Traceback (most recent call last):
-    File "/usr/sbin/sosreport", line 25, in <module>
-      main(sys.argv[1:])
-    File "/usr/lib/python2.7/site-packages/sos/sosreport.py", line 1459, in main
-      sos.execute()
-  ValueError: No closing quotation
-
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/plugins/networking.py | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/sos/plugins/networking.py b/sos/plugins/networking.py
-index 9f6ece0..ae6cb1b 100644
---- a/sos/plugins/networking.py
-+++ b/sos/plugins/networking.py
-@@ -142,13 +142,13 @@ class Networking(Plugin):
- 
-         nmcli_con_show_result = self.call_ext_prog(
-             "nmcli --terse --fields NAME con show")
--        if nmcli_con_show_result:
-+        if nmcli_con_show_result['status'] == 0:
-             for con in nmcli_con_show_result['output'].splitlines():
-                 self.add_cmd_output("nmcli con show conf '%s'" % con)
- 
-         nmcli_dev_status_result = self.call_ext_prog(
-             "nmcli --terse --fields DEVICE dev status")
--        if nmcli_dev_status_result:
-+        if nmcli_dev_status_result['status'] == 0:
-             for dev in nmcli_dev_status_result['output'].splitlines():
-                 self.add_cmd_output("nmcli device show "+dev)
- 
--- 
-1.8.3.1
-
diff --git a/SOURCES/sos-bz1209454-networking-ip-addr.patch b/SOURCES/sos-bz1209454-networking-ip-addr.patch
deleted file mode 100644
index c2cd2bf..0000000
--- a/SOURCES/sos-bz1209454-networking-ip-addr.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From 79d90ff649f89f784bdf41769f2326faa11cb7b0 Mon Sep 17 00:00:00 2001
-From: "Bryn M. Reeves" <bmr@redhat.com>
-Date: Tue, 17 Mar 2015 13:50:37 +0000
-Subject: [PATCH] [networking] re-add 'ip addr' with a root symlink
-
-Commit e320ca8 accidentally deleted collection of "ip -o addr"
-and the root "ip_addr" symlink: put it back.
-
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/plugins/networking.py | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/sos/plugins/networking.py b/sos/plugins/networking.py
-index ae6cb1b..ae5ea71 100644
---- a/sos/plugins/networking.py
-+++ b/sos/plugins/networking.py
-@@ -89,6 +89,7 @@ class Networking(Plugin):
-         self.add_forbidden_path("/proc/net/rpc/*/channel")
-         self.add_forbidden_path("/proc/net/rpc/*/flush")
- 
-+        self.add_cmd_output("ip -o addr", root_symlink = "ip_addr")
-         self.add_cmd_output("route -n", root_symlink="route")
-         self.collect_iptable("filter")
-         self.collect_iptable("nat")
--- 
-1.8.3.1
-
diff --git a/SOURCES/sos-bz1209840-kimchid-plugin.patch b/SOURCES/sos-bz1209840-kimchid-plugin.patch
deleted file mode 100644
index 748e8f4..0000000
--- a/SOURCES/sos-bz1209840-kimchid-plugin.patch
+++ /dev/null
@@ -1,99 +0,0 @@
-From 3aabd18b2666dbbeb86871ac4b9f025e468d5818 Mon Sep 17 00:00:00 2001
-From: Christy Perez <christy@linux.vnet.ibm.com>
-Date: Tue, 16 Dec 2014 12:46:27 +0000
-Subject: [PATCH] [kimchi] add new plugin
-
-This plugin gathers kimchi logs and configuration files.
-
-Kimchi is an HTML5-based virtualization-management platform
-For more information, please visit:
-https://github.com/kimchi-project/kimchi/wiki
-
-Signed-off-by: Christy Perez <christy@linux.vnet.ibm.com>
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/plugins/kimchi.py | 40 ++++++++++++++++++++++++++++++++++++++++
- 1 file changed, 40 insertions(+)
- create mode 100644 sos/plugins/kimchi.py
-
-diff --git a/sos/plugins/kimchi.py b/sos/plugins/kimchi.py
-new file mode 100644
-index 0000000..613b2c9
---- /dev/null
-+++ b/sos/plugins/kimchi.py
-@@ -0,0 +1,40 @@
-+# Copyright IBM, Corp. 2014, Christy Perez <christy@linux.vnet.ibm.com>
-+
-+# This program is free software; you can redistribute it and/or modify
-+# it under the terms of the GNU General Public License as published by
-+# the Free Software Foundation; either version 2 of the License, or
-+# (at your option) any later version.
-+
-+# This program is distributed in the hope that it will be useful,
-+# but WITHOUT ANY WARRANTY; without even the implied warranty of
-+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+# GNU General Public License for more details.
-+
-+# You should have received a copy of the GNU General Public License
-+# along with this program; if not, write to the Free Software
-+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-+
-+from sos.plugins import Plugin, RedHatPlugin, UbuntuPlugin, DebianPlugin
-+
-+
-+class Kimchi(Plugin, RedHatPlugin, UbuntuPlugin, DebianPlugin):
-+    """kimchi-related information
-+    """
-+
-+    plugin_name = 'kimchi'
-+    packages = ('kimchi',)
-+
-+    def setup(self):
-+        log_limit = self.get_option('log_size')
-+        if not self.get_option('all_logs'):
-+            self.add_copy_spec_limit('/var/log/kimchi/*.log',
-+                                     sizelimit=log_limit)
-+            self.add_copy_spec_limit('/etc/kimchi/kimchi*',
-+                                     sizelimit=log_limit)
-+            self.add_copy_spec_limit('/etc/kimchi/distros.d/*.json',
-+                                     sizelimit=log_limit)
-+        else:
-+            self.add_copy_spec('/var/log/kimchi/')
-+            self.add_copy_spec('/etc/kimchi/')
-+
-+# vim: expandtab tabstop=4 shiftwidth=4
--- 
-1.8.3.1
-
-From cb9805d129827178df5b32fc681f629d4f40ac6e Mon Sep 17 00:00:00 2001
-From: "Bryn M. Reeves" <bmr@redhat.com>
-Date: Tue, 10 Feb 2015 19:09:26 +0000
-Subject: [PATCH] [kimchi] fix collection of /etc/kimchi
-
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/plugins/kimchi.py | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/sos/plugins/kimchi.py b/sos/plugins/kimchi.py
-index 613b2c9..efb469e 100644
---- a/sos/plugins/kimchi.py
-+++ b/sos/plugins/kimchi.py
-@@ -26,6 +26,7 @@ class Kimchi(Plugin, RedHatPlugin, UbuntuPlugin, DebianPlugin):
- 
-     def setup(self):
-         log_limit = self.get_option('log_size')
-+        self.add_copy_spec('/etc/kimchi/')
-         if not self.get_option('all_logs'):
-             self.add_copy_spec_limit('/var/log/kimchi/*.log',
-                                      sizelimit=log_limit)
-@@ -35,6 +36,5 @@ class Kimchi(Plugin, RedHatPlugin, UbuntuPlugin, DebianPlugin):
-                                      sizelimit=log_limit)
-         else:
-             self.add_copy_spec('/var/log/kimchi/')
--            self.add_copy_spec('/etc/kimchi/')
- 
- # vim: expandtab tabstop=4 shiftwidth=4
--- 
-1.8.3.1
-
diff --git a/SOURCES/sos-bz1210527-ceph-add-calamari-rados.patch b/SOURCES/sos-bz1210527-ceph-add-calamari-rados.patch
deleted file mode 100644
index ed9dfcb..0000000
--- a/SOURCES/sos-bz1210527-ceph-add-calamari-rados.patch
+++ /dev/null
@@ -1,93 +0,0 @@
-From 24ecc933d109c0eba120b434d08aa560e9a56869 Mon Sep 17 00:00:00 2001
-From: Pavel Moravec <pmoravec@redhat.com>
-Date: Wed, 1 Jul 2015 12:15:41 +0200
-Subject: [PATCH 1/2] [ceph] add logs, report and calamari conf
-
-Update ceph commands and add log and configuration file
-collection for calamari and radosgw.
-
-Resolves: #496
-Resolves: rhbz#1210527
-
-Signed-off-by: Brad Hubbard <bhubbard@redhat.com>
-Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/plugins/ceph.py | 11 ++++++++---
- 1 file changed, 8 insertions(+), 3 deletions(-)
-
-diff --git a/sos/plugins/ceph.py b/sos/plugins/ceph.py
-index 52b8fff..0bfdbe0 100644
---- a/sos/plugins/ceph.py
-+++ b/sos/plugins/ceph.py
-@@ -37,17 +37,22 @@ class Ceph(Plugin, RedHatPlugin, UbuntuPlugin):
-     def setup(self):
-         self.add_copy_spec([
-             "/etc/ceph/",
--            "/var/log/ceph/"
-+            "/var/log/ceph/",
-+            "/etc/calamari/",
-+            "/var/log/calamari",
-+            "/var/log/radosgw"
-         ])
- 
-         self.add_cmd_output([
-             "ceph status",
--            "ceph health",
-+            "ceph health detail",
-             "ceph osd tree",
-             "ceph osd stat",
-             "ceph osd dump",
-             "ceph mon stat",
--            "ceph mon dump"
-+            "ceph mon dump",
-+            "ceph df",
-+            "ceph report"
-         ])
- 
-         self.add_forbidden_path("/etc/ceph/*keyring")
--- 
-1.8.3.1
-
-
-From 696f3c605c5d6b0cb8c0703635401991bc7af934 Mon Sep 17 00:00:00 2001
-From: Pavel Moravec <pmoravec@redhat.com>
-Date: Thu, 2 Jul 2015 13:10:31 +0200
-Subject: [PATCH 2/2] [ceph] add calamari-server and librados2 to the package
- list
-
-Enable ceph plugin also by either calamari-server or librados2
-package.
-
-This ensures Calamari and Rados log collection is effective
-regardless of which packages are installed on a given system.
-
-This is a temporary solution until rados is split from the ceph
-package.
-
-Resolves: #496
-
-Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/plugins/ceph.py | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
-
-diff --git a/sos/plugins/ceph.py b/sos/plugins/ceph.py
-index 0bfdbe0..e9db4c6 100644
---- a/sos/plugins/ceph.py
-+++ b/sos/plugins/ceph.py
-@@ -31,7 +31,9 @@ class Ceph(Plugin, RedHatPlugin, UbuntuPlugin):
-         'ceph-mds',
-         'ceph-common',
-         'libcephfs1',
--        'ceph-fs-common'
-+        'ceph-fs-common',
-+        'calamari-server',
-+        'librados2'
-     )
- 
-     def setup(self):
--- 
-1.8.3.1
-
diff --git a/SOURCES/sos-bz1210906-mariadb-mysql-add-log.patch b/SOURCES/sos-bz1210906-mariadb-mysql-add-log.patch
deleted file mode 100644
index 6d57ebe..0000000
--- a/SOURCES/sos-bz1210906-mariadb-mysql-add-log.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From f8ab86cbd2302812cd9160bec4478cb4f84e1442 Mon Sep 17 00:00:00 2001
-From: Shane Bradley <sbradley@redhat.com>
-Date: Mon, 27 Apr 2015 10:28:34 -0400
-Subject: [PATCH] [mysql] Collect log file
-
-When MariaDB is run under Pacemaker an OCF resource agent is used
-to start and stop the database. This configuration also overrides
-the log paths used for the database. In particular the mysqld.log
-is present at '/var/log/mysqld.log'.
-
-Collect both paths as we do not currently detect whether we are
-running with an OCF agent or stand-alone.
-
-Fixes: #554
-
-Signed-off-by: Shane Bradley <sbradley@redhat.com>
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/plugins/mysql.py | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/sos/plugins/mysql.py b/sos/plugins/mysql.py
-index 8dba204..aa8e9b9 100644
---- a/sos/plugins/mysql.py
-+++ b/sos/plugins/mysql.py
-@@ -37,6 +37,8 @@ class Mysql(Plugin):
- 
-         self.add_copy_spec([
-             self.mysql_cnf,
-+            # Required for MariaDB under pacemaker (MariaDB-Galera)
-+            "/var/log/mysqld.log",
-             "/var/log/mysql/mysqld.log",
-             "/var/log/mariadb/mariadb.log",
-         ])
--- 
-1.8.3.1
-
diff --git a/SOURCES/sos-bz1211984-openstack-sahara-plugin.patch b/SOURCES/sos-bz1211984-openstack-sahara-plugin.patch
deleted file mode 100644
index 23d0eb9..0000000
--- a/SOURCES/sos-bz1211984-openstack-sahara-plugin.patch
+++ /dev/null
@@ -1,88 +0,0 @@
-From f1a7aea0f45485cbe12e95f38c6b0dc6ad12dd58 Mon Sep 17 00:00:00 2001
-From: Poornima <pkshiras@redhat.com>
-Date: Thu, 9 Apr 2015 18:47:58 +0530
-Subject: [PATCH] [openstack_sahara] add new plugin
-
-Capture configuration and log data for the OpenStack Sahara project
-(formerly Savanna). Sahara is a tool to simplify the deployment of
-data-intensive applications in OpenStack environments.
-
-Signed-off-by: Poornima M. Kshirsagar pkshiras@redhat.com
-Signed-off-by: Bryn M. Reeves bmr@redhat.com
----
- sos/plugins/openstack_sahara.py | 63 +++++++++++++++++++++++++++++++++++++++++
- 1 file changed, 63 insertions(+)
- create mode 100644 sos/plugins/openstack_sahara.py
-
-diff --git a/sos/plugins/openstack_sahara.py b/sos/plugins/openstack_sahara.py
-new file mode 100644
-index 0000000..f0b95e4
---- /dev/null
-+++ b/sos/plugins/openstack_sahara.py
-@@ -0,0 +1,63 @@
-+# Copyright (C) 2015 Red Hat, Inc.,Poornima M. Kshirsagar <pkshiras@redhat.com>
-+
-+# This program is free software; you can redistribute it and/or modify
-+# it under the terms of the GNU General Public License as published by
-+# the Free Software Foundation; either version 2 of the License, or
-+# (at your option) any later version.
-+
-+# This program is distributed in the hope that it will be useful,
-+# but WITHOUT ANY WARRANTY; without even the implied warranty of
-+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+# GNU General Public License for more details.
-+
-+# You should have received a copy of the GNU General Public License
-+# along with this program; if not, write to the Free Software
-+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-+
-+from sos.plugins import Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin
-+
-+
-+class OpenStackSahara(Plugin):
-+    """OpenStack Sahara"""
-+    plugin_name = 'openstack_sahara'
-+    profiles = ('openstack',)
-+
-+    option_list = [("log", "gathers openstack sahara logs", "slow", True)]
-+
-+    def setup(self):
-+        self.add_copy_spec("/etc/sahara/")
-+        self.add_cmd_output("journalctl -u openstack-sahara-all")
-+
-+        if self.get_option("log"):
-+            self.add_copy_spec("/var/log/sahara/")
-+
-+
-+class DebianOpenStackSahara(OpenStackSahara, DebianPlugin, UbuntuPlugin):
-+    """OpenStackSahara related information for Debian based distributions."""
-+
-+    packages = (
-+        'sahara-api',
-+        'sahara-common',
-+        'sahara-engine',
-+        'python-sahara',
-+        'python-saharaclient',
-+    )
-+
-+    def setup(self):
-+        super(DebianOpenStackSahara, self).setup()
-+
-+
-+class RedHatOpenStackSahara(OpenStackSahara, RedHatPlugin):
-+    """OpenStack sahara related information for Red Hat distributions."""
-+
-+    packages = (
-+        'openstack-sahara',
-+        'python-saharaclient'
-+    )
-+
-+    def setup(self):
-+        super(RedHatOpenStackSahara, self).setup()
-+        self.add_copy_spec("/etc/sudoers.d/sahara")
-+
-+
-+# vim: et ts=4 sw=4
--- 
-1.8.3.1
-
diff --git a/SOURCES/sos-bz1211984-redact-secrets-from-sahara-config.patch b/SOURCES/sos-bz1211984-redact-secrets-from-sahara-config.patch
deleted file mode 100644
index a8cb062..0000000
--- a/SOURCES/sos-bz1211984-redact-secrets-from-sahara-config.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From 706e523d608b588cfd70b2dfa957feafe0645796 Mon Sep 17 00:00:00 2001
-From: Rohan Kanade <rkanade@redhat.com>
-Date: Mon, 15 Jun 2015 20:24:10 +0530
-Subject: [PATCH] [openstack_sahara] redact secrets from sahara configuration
-
-Signed-off-by: Rohan Kanade <rkanade@redhat.com>
----
- sos/plugins/openstack_sahara.py |   11 +++++++++++
- 1 files changed, 11 insertions(+), 0 deletions(-)
-
-diff --git a/sos/plugins/openstack_sahara.py b/sos/plugins/openstack_sahara.py
-index f0b95e4..9d971ba 100644
---- a/sos/plugins/openstack_sahara.py
-+++ b/sos/plugins/openstack_sahara.py
-@@ -31,6 +31,17 @@ class OpenStackSahara(Plugin):
-         if self.get_option("log"):
-             self.add_copy_spec("/var/log/sahara/")
- 
-+    def postproc(self):
-+        protect_keys = [
-+            'memcache_secret_key', 'qpid_password', 'rabbit_password',
-+            'admin_password', 'password', 'ssl_key_password',
-+            'admin_token', 'connection'
-+        ]
-+
-+        regexp = r"((?m)^\s*#*(%s)\s*=\s*)(.*)" % "|".join(protect_keys)
-+
-+        self.do_file_sub('/etc/sahara/sahara.conf', regexp, r"\1*********")
-+
- 
- class DebianOpenStackSahara(OpenStackSahara, DebianPlugin, UbuntuPlugin):
-     """OpenStackSahara related information for Debian based distributions."""
--- 
-1.7.1
-
diff --git a/SOURCES/sos-bz1213315-openstack-neutron-to-collect-neutron-folders.patch b/SOURCES/sos-bz1213315-openstack-neutron-to-collect-neutron-folders.patch
deleted file mode 100644
index f4beb63..0000000
--- a/SOURCES/sos-bz1213315-openstack-neutron-to-collect-neutron-folders.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From 3f8c4b658c5d702bde59bdd98cb114ea0064eae9 Mon Sep 17 00:00:00 2001
-From: "Bryn M. Reeves" <bmr@redhat.com>
-Date: Thu, 9 Oct 2014 17:07:38 +0100
-Subject: [PATCH] [openstack_neutron] fix legacy component detection test
-
-Currently the Neutron plugin will assume it's running on a Neutron
-(rather than a legacy Quantum) installation if:
-
-  - '/etc/neutron' exists AND the user specifies quantum=True
-
-Otherwise it's assumed to be a Quantum install. This is clearly
-broken; the sense of the 'openstack_neutron.quantum' part of the
-test should be inverted.
-
-Fixes #420.
-
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/plugins/openstack_neutron.py | 5 +----
- 1 file changed, 1 insertion(+), 4 deletions(-)
-
-diff --git a/sos/plugins/openstack_neutron.py b/sos/plugins/openstack_neutron.py
-index dba192e..d37430e 100644
---- a/sos/plugins/openstack_neutron.py
-+++ b/sos/plugins/openstack_neutron.py
-@@ -40,10 +40,7 @@ class Neutron(Plugin):
-     component_name = "neutron"
- 
-     def setup(self):
--        if os.path.exists("/etc/neutron/") and \
--                self.get_option("quantum", False):
--            self.component_name = self.plugin_name
--        else:
-+        if not os.path.exists("/etc/neutron/") or self.get_option("quantum"):
-             self.component_name = "quantum"
- 
-         self.add_copy_spec([
--- 
-1.8.3.1
-
diff --git a/SOURCES/sos-bz1214209-hpasm-no-data-timeout.patch b/SOURCES/sos-bz1214209-hpasm-no-data-timeout.patch
deleted file mode 100644
index 731097d..0000000
--- a/SOURCES/sos-bz1214209-hpasm-no-data-timeout.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From 61a5b47d4fe4fd47e759b9acc19483491ec17005 Mon Sep 17 00:00:00 2001
-From: Pavel Moravec <pmoravec@redhat.com>
-Date: Tue, 5 May 2015 13:50:55 +0200
-Subject: [PATCH] [hpasm] hpasmcli commands hang under timeout
-
-When hpasmcli is run in a python Popen or system pipeline via the
-timeout command it hangs indefinitely.
-
-Work around this temporarily by disabling the use of the timeout
-program (by passing a zero timeout value) when running this
-command.
-
-Fixes: #559
-
-Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/plugins/hpasm.py | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/sos/plugins/hpasm.py b/sos/plugins/hpasm.py
-index 4d5d158..4d70887 100644
---- a/sos/plugins/hpasm.py
-+++ b/sos/plugins/hpasm.py
-@@ -30,6 +30,6 @@ class Hpasm(Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin):
-         self.add_cmd_output([
-             "hpasmcli -s 'show asr'",
-             "hpasmcli -s 'show server'"
--        ])
-+        ], timeout=0)
- 
- # vim: et ts=4 sw=4
--- 
-1.8.3.1
-
diff --git a/SOURCES/sos-bz1219720-html-report-generate.patch b/SOURCES/sos-bz1219720-html-report-generate.patch
deleted file mode 100644
index a87f0ea..0000000
--- a/SOURCES/sos-bz1219720-html-report-generate.patch
+++ /dev/null
@@ -1,84 +0,0 @@
-From c607cac7256ced5d1396ae61591f9eae4a9d385f Mon Sep 17 00:00:00 2001
-From: Pavel Moravec <pmoravec@redhat.com>
-Date: Fri, 18 Sep 2015 09:25:39 +0200
-Subject: [PATCH] [sosreport] fix command-line report defaults
-
-opts.report is True regardless of using --no-report option or not. That
-means the test "if not self.opts.report:" to decide generation of
-reports is evaluated to False every time and no report is generated any
-time.
-
-This commit renames opts.report and SoSOptions._report to noreport (to
-get rid of the variable name confusion) and updates default value
-accordingly.
-
-Resolves #625
-Closes #644
-
-Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
-Signed-off-by: Adam Stokes <adam.stokes@ubuntu.com>
----
- sos/sosreport.py | 22 +++++++++++-----------
- 1 file changed, 11 insertions(+), 11 deletions(-)
-
-diff --git a/sos/sosreport.py b/sos/sosreport.py
-index 02d8a32..a1f1b96 100644
---- a/sos/sosreport.py
-+++ b/sos/sosreport.py
-@@ -250,7 +250,7 @@ class SoSOptions(object):
-     _list_profiles = False
-     _config_file = ""
-     _tmp_dir = ""
--    _report = True
-+    _noreport = False
-     _sysroot = None
-     _chroot = 'auto'
-     _compression_type = 'auto'
-@@ -522,17 +522,17 @@ class SoSOptions(object):
-         self._tmp_dir = value
- 
-     @property
--    def report(self):
-+    def noreport(self):
-         if self._options is not None:
--            return self._options.report
--        return self._report
-+            return self._options.noreport
-+        return self._noreport
- 
--    @report.setter
--    def report(self, value):
-+    @noreport.setter
-+    def noreport(self, value):
-         self._check_options_initialized()
-         if not isinstance(value, bool):
--            raise TypeError("SoSOptions.report expects a boolean")
--        self._report = value
-+            raise TypeError("SoSOptions.noreport expects a boolean")
-+        self._noreport = value
- 
-     @property
-     def sysroot(self):
-@@ -646,8 +646,8 @@ class SoSOptions(object):
-                           help="specify alternate temporary directory",
-                           default=None)
-         parser.add_option("--no-report", action="store_true",
--                          dest="report",
--                          help="Disable HTML/XML reporting", default=False)
-+                          dest="noreport",
-+                          help="Disable HTML/XML reporting", default=False)
-         parser.add_option("-s", "--sysroot", action="store", dest="sysroot",
-                           help="system root directory path (default='/')",
-                           default=None)
-@@ -1499,7 +1499,7 @@ class SoSReport(object):
-             self.prework()
-             self.setup()
-             self.collect()
--            if not self.opts.report:
-+            if not self.opts.noreport:
-                 self.report()
-                 self.html_report()
-                 self.plain_report()
--- 
-1.8.3.1
-
diff --git a/SOURCES/sos-bz1221932-iprconfig-plugin.patch b/SOURCES/sos-bz1221932-iprconfig-plugin.patch
deleted file mode 100644
index d294ebf..0000000
--- a/SOURCES/sos-bz1221932-iprconfig-plugin.patch
+++ /dev/null
@@ -1,135 +0,0 @@
-From ad464fcc0882f8764e8bbb091a91eeeb4a804ff3 Mon Sep 17 00:00:00 2001
-From: "Bryn M. Reeves" <bmr@redhat.com>
-Date: Mon, 15 Dec 2014 17:30:24 +0000
-Subject: [PATCH] [iprconfig] add plugin for IBM Power RAID adapters
-
-Capture information which helps in better understanding of
-IBM Power RAID storage adapter configuration. Since iprconfig
-is specific to power adding the relevant commands in powerpc plugin.
-
-Signed-off-by: Aruna Balakrishnaiah <aruna@linux.vnet.ibm.com>
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/plugins/iprconfig.py | 110 +++++++++++++++++++++++++++++++++++++++++++++++
- 1 file changed, 110 insertions(+)
- create mode 100644 sos/plugins/iprconfig.py
-
-diff --git a/sos/plugins/iprconfig.py b/sos/plugins/iprconfig.py
-new file mode 100644
-index 0000000..b77c192
---- /dev/null
-+++ b/sos/plugins/iprconfig.py
-@@ -0,0 +1,110 @@
-+# This program is free software; you can redistribute it and/or modify
-+# it under the terms of the GNU General Public License as published by
-+# the Free Software Foundation; either version 2 of the License, or
-+# (at your option) any later version.
-+
-+# This program is distributed in the hope that it will be useful,
-+# but WITHOUT ANY WARRANTY; without even the implied warranty of
-+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+# GNU General Public License for more details.
-+
-+# You should have received a copy of the GNU General Public License
-+# along with this program; if not, write to the Free Software
-+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-+
-+# This plugin enables collection of logs for Power systems
-+
-+import os
-+import re
-+from sos.plugins import Plugin, RedHatPlugin, UbuntuPlugin, DebianPlugin
-+from sos.utilities import is_executable
-+
-+
-+class IprConfig(Plugin, RedHatPlugin, UbuntuPlugin, DebianPlugin):
-+    """IBM Power RAID storage adapter configuration information
-+    """
-+
-+    plugin_name = 'iprconfig'
-+
-+    def check_enabled(self):
-+        arch = self.policy().get_arch()
-+        return arch == "ppc64" and is_executable("iprconfig")
-+
-+    def setup(self):
-+        self.add_cmd_output([
-+            "iprconfig -c show-config",
-+            "iprconfig -c show-alt-config",
-+            "iprconfig -c show-arrays",
-+            "iprconfig -c show-jbod-disks",
-+            "iprconfig -c show-ioas",
-+        ])
-+
-+        show_ioas = self.call_ext_prog("iprconfig -c show-ioas")
-+        if not show_ioas['status'] == 0:
-+            return
-+
-+        devices = []
-+        if show_ioas['output']:
-+            p = re.compile('sg')
-+            for line in show_ioas['output'].splitlines():
-+                temp = line.split(' ')
-+                # temp[0] holds the device name
-+                if p.search(temp[0]):
-+                    devices.append(temp[0])
-+
-+        for device in devices:
-+            self.add_cmd_output("iprconfig -c show-details %s" % (device,))
-+
-+        # Look for IBM Power RAID enclosures (iprconfig lists them)
-+        show_config = self.call_ext_prog("iprconfig -c show-config")
-+        if not show_config['status'] == 0:
-+            return
-+
-+        if not show_config['output']:
-+            return
-+
-+# iprconfig -c show-config
-+# Name   PCI/SCSI Location         Description               Status
-+# ------ ------------------------- ------------------------- -----------------
-+#        0005:60:00.0/0:            PCI-E SAS RAID Adapter    Operational
-+# sda    0005:60:00.0/0:0:0:0       Physical Disk             Active
-+# sdb    0005:60:00.0/0:1:0:0       Physical Disk             Active
-+# sdc    0005:60:00.0/0:2:0:0       Physical Disk             Active
-+# sdd    0005:60:00.0/0:3:0:0       Physical Disk             Active
-+# sde    0005:60:00.0/0:4:0:0       Physical Disk             Active
-+# sdf    0005:60:00.0/0:5:0:0       Physical Disk             Active
-+#        0005:60:00.0/0:8:0:0       Enclosure                 Active
-+#        0005:60:00.0/0:8:1:0       Enclosure                 Active
-+
-+        show_alt_config = "iprconfig -c show-alt-config"
-+        altconfig = self.call_ext_prog(show_alt_config)
-+        if not (altconfig['status'] == 0):
-+            return
-+
-+        if not altconfig['output']:
-+            return
-+
-+# iprconfig -c show-alt-config
-+# Name   Resource Path/Address      Vendor   Product ID       Status
-+# ------ -------------------------- -------- ---------------- -----------------
-+# sg9    0:                         IBM      57C7001SISIOA    Operational
-+# sg0    0:0:0:0                    IBM      MBF2300RC        Active
-+# sg1    0:1:0:0                    IBM      MBF2300RC        Active
-+# sg2    0:2:0:0                    IBM      HUC106030CSS600  Active
-+# sg3    0:3:0:0                    IBM      HUC106030CSS600  Active
-+# sg4    0:4:0:0                    IBM      HUC106030CSS600  Active
-+# sg5    0:5:0:0                    IBM      HUC106030CSS600  Active
-+# sg7    0:8:0:0                    IBM      VSBPD6E4A  3GSAS Active
-+# sg8    0:8:1:0                    IBM      VSBPD6E4B  3GSAS Active
-+
-+        for line in show_config['output'].splitlines():
-+            if "Enclosure" in line:
-+                temp = re.split('\s+', line)
-+                # temp[1] holds the PCI/SCSI location
-+                pci, scsi = temp[1].split('/')
-+                for line in altconfig['output'].splitlines():
-+                    if scsi in line:
-+                        temp = line.split(' ')
-+                        # temp[0] holds device name
-+                        self.add_cmd_output("iprconfig -c "
-+                                            "query-ses-mode %s" % (temp[0],))
--- 
-1.8.3.1
-
diff --git a/SOURCES/sos-bz1236101-ovirt-engine-config-domain-list.patch b/SOURCES/sos-bz1236101-ovirt-engine-config-domain-list.patch
deleted file mode 100644
index f329d6a..0000000
--- a/SOURCES/sos-bz1236101-ovirt-engine-config-domain-list.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From ae98e1e119d2abfe771cfa6c286e2e4e177d86d7 Mon Sep 17 00:00:00 2001
-From: Jake Hunsaker <jhunsake@redhat.com>
-Date: Tue, 16 Dec 2014 11:26:50 -0500
-Subject: [PATCH] [ovirt] Collect engine tunables and domain information.
-
-Currently sos does not capture engine-config values or domain information.
-We should capture both of these as the tunables can help in troubleshooting.
-
-Similarly the domain information can help track AD/IPA issues.
-
-These can currently be dug out from the DB dump, however having them in a plaintext
-file makes checking these much faster and easier, and a DB is not always available.
-
-Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
-Signed-off-by: Adam Stokes <adam.stokes@ubuntu.com>
----
- sos/plugins/ovirt.py | 3 +++
- 1 file changed, 3 insertions(+)
-
-diff --git a/sos/plugins/ovirt.py b/sos/plugins/ovirt.py
-index b097d93..9436ac6 100644
---- a/sos/plugins/ovirt.py
-+++ b/sos/plugins/ovirt.py
-@@ -83,6 +83,9 @@ class Ovirt(Plugin, RedHatPlugin):
- 
-         self.add_forbidden_path('/etc/ovirt-engine/.pgpass')
-         self.add_forbidden_path('/etc/rhevm/.pgpass')
-+        # Copy all engine tunables and domain information
-+        self.add_cmd_output("engine-config --all")
-+        self.add_cmd_output("engine-manage-domains list")
-         # Copy engine config files.
-         self.add_copy_spec([
-             "/etc/ovirt-engine",
--- 
-1.8.3.1
-
diff --git a/SOURCES/sos-bz1236111-activemq-collect-logs-config.patch b/SOURCES/sos-bz1236111-activemq-collect-logs-config.patch
deleted file mode 100644
index e6f6490..0000000
--- a/SOURCES/sos-bz1236111-activemq-collect-logs-config.patch
+++ /dev/null
@@ -1,77 +0,0 @@
-From e2a94de2e574b61d1da071f961863d2490c90bc0 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Pep=20Turr=C3=B3=20Mauri?= <pep@redhat.com>
-Date: Tue, 23 Dec 2014 19:36:29 +0100
-Subject: [PATCH] [activemq] Honour all_logs and get config on RHEL
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Get only current log file by default, allowing full dir
-collection via the all_logs option.
-
-Add a Red Hat version of the plugin that collects the two
-main configuration files for activemq. Also enable that plugin
-in the OpenShift profile.
-
-Related: RHBZ#1165878
-Fixes: #457.
-
-Signed-off-by: Pep Turró Mauri <pep@redhat.com>
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/plugins/activemq.py | 31 ++++++++++++++++++++++++++++---
- 1 file changed, 28 insertions(+), 3 deletions(-)
-
-diff --git a/sos/plugins/activemq.py b/sos/plugins/activemq.py
-index 291fcd9..1594229 100644
---- a/sos/plugins/activemq.py
-+++ b/sos/plugins/activemq.py
-@@ -16,17 +16,42 @@
- from sos.plugins import Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin
- 
- 
--class ActiveMq(Plugin, RedHatPlugin, DebianPlugin):
-+class ActiveMq(Plugin, DebianPlugin):
-     """ActiveMQ message broker
-     """
- 
-     plugin_name = 'activemq'
--    profiles = ()
-+    profiles = ('openshift',)
-     packages = ('activemq', 'activemq-core')
-     files = ('/var/log/activemq',)
- 
-     def setup(self):
--        self.add_copy_spec(list(self.files))
-+        if self.get_option("all_logs"):
-+            self.add_copy_spec(list(self.files))
-+        else:
-+            self.add_copy_spec([
-+                "/var/log/activemq/activemq.log",
-+                "/var/log/activemq/wrapper.log"
-+            ])
-+
-+    def postproc(self):
-+        # activemq.xml contains credentials in this form:
-+        #   <authenticationUser ... password="changeme" ... />
-+        self.do_file_sub(
-+            '/etc/activemq/activemq.xml',
-+            r'(\s*password=")[^"]*(".*)',
-+            r"\1******\2"
-+        )
-+
-+
-+class RedHatActiveMq(ActiveMq, RedHatPlugin):
-+
-+    def setup(self):
-+        super(RedHatActiveMq, self).setup()
-+        self.add_copy_spec([
-+            '/etc/sysconfig/activemq',
-+            '/etc/activemq/activemq.xml'
-+        ])
- 
- 
- class UbuntuActiveMq(ActiveMq, UbuntuPlugin):
--- 
-1.8.3.1
-
diff --git a/SOURCES/sos-bz1236124-cluster-enable-when-luci-only.patch b/SOURCES/sos-bz1236124-cluster-enable-when-luci-only.patch
deleted file mode 100644
index 736c1dd..0000000
--- a/SOURCES/sos-bz1236124-cluster-enable-when-luci-only.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From f5211fd8725629e23a3a0f802bd6e635290dab36 Mon Sep 17 00:00:00 2001
-From: Shane Bradley <sbradley@redhat.com>
-Date: Tue, 10 Feb 2015 10:42:39 -0500
-Subject: [PATCH] [cluster] add luci to packages for standalone luci servers
-
-A host with only luci package installed would not collect luci logs
-because the cluster plugin would not run since none of the packages
-were found. This patch adds luci to the package set required for the
-plugin to run.
-
-Resolves: rhbz#1171186
-
-Signed-off-by: Shane Bradley <sbradley@redhat.com>
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/plugins/cluster.py | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/sos/plugins/cluster.py b/sos/plugins/cluster.py
-index a84d3e2..7aeed44 100644
---- a/sos/plugins/cluster.py
-+++ b/sos/plugins/cluster.py
-@@ -32,6 +32,7 @@ class Cluster(Plugin, RedHatPlugin):
-     ]
- 
-     packages = [
-+        "luci",
-         "ricci",
-         "corosync",
-         "openais",
--- 
-1.8.3.1
-
diff --git a/SOURCES/sos-bz1238349-openstack_trove-plugin.patch b/SOURCES/sos-bz1238349-openstack_trove-plugin.patch
deleted file mode 100644
index 3d78c0a..0000000
--- a/SOURCES/sos-bz1238349-openstack_trove-plugin.patch
+++ /dev/null
@@ -1,97 +0,0 @@
-From 85d6ea5cdd32cf1b90a10ff0d50a14dcf24902f8 Mon Sep 17 00:00:00 2001
-From: Lee Yarwood <lyarwood@redhat.com>
-Date: Tue, 7 Apr 2015 18:26:42 +0100
-Subject: [PATCH] [openstack] New Openstack Trove (DBaaS) plugin.
-
-https://wiki.openstack.org/wiki/Trove
-
-Signed-off-by: Lee Yarwood <lyarwood@redhat.com>
-Signed-off-by: Adam Stokes <adam.stokes@ubuntu.com>
----
- sos/plugins/openstack_trove.py | 74 ++++++++++++++++++++++++++++++++++++++++++
- 1 file changed, 74 insertions(+)
- create mode 100644 sos/plugins/openstack_trove.py
-
-diff --git a/sos/plugins/openstack_trove.py b/sos/plugins/openstack_trove.py
-new file mode 100644
-index 0000000..7c8b661
---- /dev/null
-+++ b/sos/plugins/openstack_trove.py
-@@ -0,0 +1,74 @@
-+# Copyright (C) 2015 Red Hat, Inc., Lee Yarwood <lyarwood@redhat.com>
-+
-+# This program is free software; you can redistribute it and/or modify
-+# it under the terms of the GNU General Public License as published by
-+# the Free Software Foundation; either version 2 of the License, or
-+# (at your option) any later version.
-+
-+# This program is distributed in the hope that it will be useful,
-+# but WITHOUT ANY WARRANTY; without even the implied warranty of
-+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+# GNU General Public License for more details.
-+
-+# You should have received a copy of the GNU General Public License
-+# along with this program; if not, write to the Free Software
-+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-+
-+from sos.plugins import Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin
-+
-+
-+class OpenStackTrove(Plugin):
-+    """OpenStack Trove
-+    """
-+
-+    plugin_name = "openstack_trove"
-+    profiles = ('openstack',)
-+    option_list = [("log", "gathers openstack trove logs", "slow", True)]
-+
-+    def setup(self):
-+        self.add_copy_spec('/etc/trove/')
-+
-+        if self.get_option('log'):
-+            self.add_copy_spec('/var/log/trove')
-+
-+    def postproc(self):
-+
-+        protect_keys = [
-+            "dns_passkey", "nova_proxy_admin_pass", "rabbit_password",
-+            "qpid_password", "connection", "sql_connection", "admin_password"
-+        ]
-+
-+        conf_list = [
-+            '/etc/trove/trove.conf',
-+            '/etc/trove/trove-conductor.conf',
-+            '/etc/trove/trove-guestmanager.conf',
-+            '/etc/trove/trove-taskmanager.conf'
-+        ]
-+
-+        regexp = r"((?m)^\s*#*(%s)\s*=\s*)(.*)" % "|".join(protect_keys)
-+
-+        for conf in conf_list:
-+            self.do_file_sub(conf, regexp, r"\1*********")
-+
-+
-+class DebianOpenStackTrove(OpenStackTrove, DebianPlugin, UbuntuPlugin):
-+
-+    packages = [
-+        'python-trove',
-+        'trove-common',
-+        'trove-api',
-+        'trove-taskmanager'
-+    ]
-+
-+    def setup(self):
-+        super(DebianOpenStackTrove, self).setup()
-+
-+
-+class RedHatOpenStackTrove(OpenStackTrove, RedHatPlugin):
-+
-+    packages = ['openstack-trove']
-+
-+    def setup(self):
-+        super(RedHatOpenStackTrove, self).setup()
-+
-+# vim: et ts=4 sw=4
--- 
-1.8.3.1
-
diff --git a/SOURCES/sos-bz1238726-iprconfig-enable-on-ppc64le.patch b/SOURCES/sos-bz1238726-iprconfig-enable-on-ppc64le.patch
deleted file mode 100644
index 89291fc..0000000
--- a/SOURCES/sos-bz1238726-iprconfig-enable-on-ppc64le.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From f2d9cc519ac549b9e68e1301b67f1e9b789e2fd3 Mon Sep 17 00:00:00 2001
-From: Kamalesh Babulal <kamalesh@linux.vnet.ibm.com>
-Date: Fri, 3 Jul 2015 12:16:25 +0100
-Subject: [PATCH] iprconfig collects information, only if the underlying
- platform is 'ppc64'. Modify check_enabled() to regex match on arch(), instead
- of exact match of string.
-
-This enables iprconfig to collect information on ppc64*
-platforms.
-
-Signed-off-by: Kamalesh Babulal <kamalesh@linux.vnet.ibm.com>
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/plugins/iprconfig.py | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
----
- sos/plugins/iprconfig.py | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/sos/plugins/iprconfig.py b/sos/plugins/iprconfig.py
-index b77c192..687d8d5 100644
---- a/sos/plugins/iprconfig.py
-+++ b/sos/plugins/iprconfig.py
-@@ -28,7 +28,7 @@ class IprConfig(Plugin, RedHatPlugin, UbuntuPlugin, DebianPlugin):
- 
-     def check_enabled(self):
-         arch = self.policy().get_arch()
--        return arch == "ppc64" and is_executable("iprconfig")
-+        return "ppc64" in arch and is_executable("iprconfig")
- 
-     def setup(self):
-         self.add_cmd_output([
--- 
-1.8.3.1
-
diff --git a/SOURCES/sos-bz1240666-openstack_neutron-obfuscate-passwords.patch b/SOURCES/sos-bz1240666-openstack_neutron-obfuscate-passwords.patch
deleted file mode 100644
index add6bff..0000000
--- a/SOURCES/sos-bz1240666-openstack_neutron-obfuscate-passwords.patch
+++ /dev/null
@@ -1,72 +0,0 @@
-From 5917dbd8f38bab29de9e40d1135b0e9e85cb91bc Mon Sep 17 00:00:00 2001
-From: Lee Yarwood <lyarwood@redhat.com>
-Date: Tue, 7 Jul 2015 14:54:49 +0100
-Subject: [PATCH] [openstack_neutron] Obscure passwords and secrets
-
-The following passwords and secrets are now obscured :
-
- - rabbit_password
- - qpid_password
- - nova_admin_password
- - xenapi_connection_password
- - password
- - connection
- - admin_password
- - metadata_proxy_shared_secret
- - qpid_password
- - eapi_password
- - crd_password
- - primary_l3_host_password
- - serverauth
- - ucsm_password
- - ha_vrrp_auth_password
- - ssl_key_password
- - vcenter_password
- - edge_appliance_password
- - tenant_admin_password
- - apic_password
-
-Fixes #594
-
-Signed-off-by: Lee Yarwood <lyarwood@redhat.com>
----
- sos/plugins/openstack_neutron.py | 16 ++++++++++++++++
- 1 file changed, 16 insertions(+)
-
-diff --git a/sos/plugins/openstack_neutron.py b/sos/plugins/openstack_neutron.py
-index 36de7cc..ab895c8 100644
---- a/sos/plugins/openstack_neutron.py
-+++ b/sos/plugins/openstack_neutron.py
-@@ -14,6 +14,7 @@
- # along with this program; if not, write to the Free Software
- # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- 
-+import glob
- import os
- import re
- 
-@@ -50,6 +51,21 @@ class Neutron(Plugin):
- 
-         self.netns_dumps()
- 
-+    def postproc(self):
-+        protect_keys = [
-+            "rabbit_password", "qpid_password", "nova_admin_password",
-+            "xenapi_connection_password", "password", "connection",
-+            "admin_password", "metadata_proxy_shared_secret", "qpid_password",
-+            "eapi_password", "crd_password", "primary_l3_host_password",
-+            "serverauth", "ucsm_password", "ha_vrrp_auth_password",
-+            "ssl_key_password", "nsx_password", "vcenter_password",
-+            "edge_appliance_password", "tenant_admin_password", "apic_password"
-+        ]
-+        regexp = r"((?m)^\s*#*(%s)\s*=\s*)(.*)" % "|".join(protect_keys)
-+
-+        for config_file in glob.glob("/etc/%s/*" % self.component_name):
-+            self.do_file_sub(config_file, regexp, r"\1*********")
-+
-     def netns_dumps(self):
-         # It would've been beautiful if we could get parts of the networking
-         # plugin to run in different namespaces. There are a couple of options
--- 
-1.8.3.1
-
diff --git a/SOURCES/sos-bz1242507-openvswitch-collect-logs-db-bridges.patch b/SOURCES/sos-bz1242507-openvswitch-collect-logs-db-bridges.patch
deleted file mode 100644
index a322add..0000000
--- a/SOURCES/sos-bz1242507-openvswitch-collect-logs-db-bridges.patch
+++ /dev/null
@@ -1,158 +0,0 @@
-From 775b2bbfb28701ec2e687f0ece68a4558cef8740 Mon Sep 17 00:00:00 2001
-From: Lee Yarwood <lyarwood@redhat.com>
-Date: Tue, 17 Feb 2015 14:51:00 +0000
-Subject: [PATCH] [openvswitch] Capture additional output for OVS bridges.
-
-This includes `dump-flows` and `fdb/show` output useful for debugging
-Openstack tenant and L3 networking issues.
-
-Signed-off-by: Lee Yarwood <lyarwood@redhat.com>
----
- sos/plugins/openvswitch.py | 8 ++++++++
- 1 file changed, 8 insertions(+)
-
-diff --git a/sos/plugins/openvswitch.py b/sos/plugins/openvswitch.py
-index 3611671..5200563 100644
---- a/sos/plugins/openvswitch.py
-+++ b/sos/plugins/openvswitch.py
-@@ -32,6 +32,14 @@ class OpenVSwitch(Plugin):
-         # to the Open vSwitch server, avoiding hangs when running sosreport.
-         self.add_cmd_output("ovs-vsctl -t 5 show")
- 
-+        # Gather additional output for each OVS bridge on the host.
-+        br_list_result = self.call_ext_prog("ovs-vsctl list-br")
-+        if br_list_result['status'] == 0:
-+            for br in br_list_result['output'].splitlines():
-+                self.add_cmd_output("ovs-ofctl show %s" % br)
-+                self.add_cmd_output("ovs-ofctl dump-flows %s" % br)
-+                self.add_cmd_output("ovs-appctl fdb/show %s" % br)
-+
- 
- class RedHatOpenVSwitch(OpenVSwitch, RedHatPlugin):
- 
--- 
-1.8.3.1
-
-From 21aff64a58a3e0f3fc5065b2e18ca3d489e16a51 Mon Sep 17 00:00:00 2001
-From: Flavio Leitner <fbl@redhat.com>
-Date: Fri, 19 Jun 2015 21:55:56 -0300
-Subject: [PATCH] [openvswitch] capture the logs
-
-Both ovs-vswitchd.log and ovsdb-server.log are useful
-for troubleshooting.
-
-Signed-off-by: Flavio Leitner <fbl@redhat.com>
----
- sos/plugins/openvswitch.py | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/sos/plugins/openvswitch.py b/sos/plugins/openvswitch.py
-index fbf3a90..1d75608 100644
---- a/sos/plugins/openvswitch.py
-+++ b/sos/plugins/openvswitch.py
-@@ -24,6 +24,10 @@ class OpenVSwitch(Plugin):
-     profiles = ('network', 'virt')
- 
-     def setup(self):
-+        self.add_copy_spec([
-+            "/var/log/openvswitch/ovs-vswitchd.log",
-+            "/var/log/openvswitch/ovsdb-server.log"
-+        ])
-         # The '-s' option enables dumping of packet counters on the
-         # ports.
-         self.add_cmd_output("ovs-dpctl -s show")
--- 
-1.8.3.1
-
-From f92205495113a8403066e911baeb4f5ee59c2101 Mon Sep 17 00:00:00 2001
-From: Flavio Leitner <fbl@redhat.com>
-Date: Fri, 19 Jun 2015 22:05:52 -0300
-Subject: [PATCH] [openvswitch] dump and capture the database
-
-The database contains all the vswitch configuration and
-is essential to understand and replicate the environment.
-
-Signed-off-by: Flavio Leitner <fbl@redhat.com>
----
- sos/plugins/openvswitch.py | 3 +++
- 1 file changed, 3 insertions(+)
-
-diff --git a/sos/plugins/openvswitch.py b/sos/plugins/openvswitch.py
-index 1d75608..4dd15b2 100644
---- a/sos/plugins/openvswitch.py
-+++ b/sos/plugins/openvswitch.py
-@@ -44,6 +44,9 @@ class OpenVSwitch(Plugin):
-                 self.add_cmd_output("ovs-ofctl dump-flows %s" % br)
-                 self.add_cmd_output("ovs-appctl fdb/show %s" % br)
- 
-+        # Gather the database.
-+        self.add_cmd_output("ovsdb-client dump")
-+
- 
- class RedHatOpenVSwitch(OpenVSwitch, RedHatPlugin):
- 
--- 
-1.8.3.1
-
-From 4a57c54216242acb009fdb107d52712decfdfc1e Mon Sep 17 00:00:00 2001
-From: "Bryn M. Reeves" <bmr@redhat.com>
-Date: Mon, 6 Jul 2015 17:31:44 +0100
-Subject: [PATCH] [openvswitch] consolidate self.add_cmd_output() calls
-
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/plugins/openvswitch.py | 28 ++++++++++++++++------------
- 1 file changed, 16 insertions(+), 12 deletions(-)
-
-diff --git a/sos/plugins/openvswitch.py b/sos/plugins/openvswitch.py
-index 4dd15b2..8d691dc 100644
---- a/sos/plugins/openvswitch.py
-+++ b/sos/plugins/openvswitch.py
-@@ -24,28 +24,32 @@ class OpenVSwitch(Plugin):
-     profiles = ('network', 'virt')
- 
-     def setup(self):
-+
-         self.add_copy_spec([
-             "/var/log/openvswitch/ovs-vswitchd.log",
-             "/var/log/openvswitch/ovsdb-server.log"
-         ])
--        # The '-s' option enables dumping of packet counters on the
--        # ports.
--        self.add_cmd_output("ovs-dpctl -s show")
- 
--        # The '-t 5' adds an upper bound on how long to wait to connect
--        # to the Open vSwitch server, avoiding hangs when running sosreport.
--        self.add_cmd_output("ovs-vsctl -t 5 show")
-+        self.add_cmd_output([
-+            # The '-s' option enables dumping of packet counters on the
-+            # ports.
-+            "ovs-dpctl -s show",
-+            # The '-t 5' adds an upper bound on how long to wait to connect
-+            # to the Open vSwitch server, avoiding hangs when running sos.
-+            "ovs-vsctl -t 5 show",
-+            # Gather the database.
-+            "ovsdb-client dump"
-+        ])
- 
-         # Gather additional output for each OVS bridge on the host.
-         br_list_result = self.call_ext_prog("ovs-vsctl list-br")
-         if br_list_result['status'] == 0:
-             for br in br_list_result['output'].splitlines():
--                self.add_cmd_output("ovs-ofctl show %s" % br)
--                self.add_cmd_output("ovs-ofctl dump-flows %s" % br)
--                self.add_cmd_output("ovs-appctl fdb/show %s" % br)
--
--        # Gather the database.
--        self.add_cmd_output("ovsdb-client dump")
-+                self.add_cmd_output([
-+                    "ovs-ofctl show %s" % br,
-+                    "ovs-ofctl dump-flows %s" % br,
-+                    "ovs-appctl fdb/show %s" % br
-+                ])
- 
- 
- class RedHatOpenVSwitch(OpenVSwitch, RedHatPlugin):
--- 
-1.8.3.1
-
diff --git a/SOURCES/sos-bz1243092-openstack-obfuscate-passwords-secrets.patch b/SOURCES/sos-bz1243092-openstack-obfuscate-passwords-secrets.patch
deleted file mode 100644
index 46f171f..0000000
--- a/SOURCES/sos-bz1243092-openstack-obfuscate-passwords-secrets.patch
+++ /dev/null
@@ -1,357 +0,0 @@
-From 02ef6e2ba8d1a8fe4468aaa8be0ae88f8c74646a Mon Sep 17 00:00:00 2001
-From: Lee Yarwood <lyarwood@redhat.com>
-Date: Wed, 15 Jul 2015 15:42:50 +0100
-Subject: [PATCH] [openstack] Ensure openstack passwords and secrets are
- obfuscated.
-
-- Add a postproc method to ceilometer, cinder, glance, hoirzon and swift.
-- Add missing keys to the remaining plugins.
-- Modify the regular expression used by all plugins to ignore commented
-  out keys.
-- Modify all plugins to use do_path_regex_sub() to apply regex to all
-  collected configuration files.
-
-Resolves: #574
-
-Signed-off-by: Lee Yarwood <lyarwood@redhat.com>
----
- sos/plugins/openstack_ceilometer.py | 12 ++++++++++++
- sos/plugins/openstack_cinder.py     | 17 +++++++++++++++++
- sos/plugins/openstack_glance.py     | 10 ++++++++++
- sos/plugins/openstack_heat.py       |  9 +++++++++
- sos/plugins/openstack_horizon.py    |  9 +++++++++
- sos/plugins/openstack_keystone.py   | 23 ++++++++---------------
- sos/plugins/openstack_neutron.py    | 17 ++++++++---------
- sos/plugins/openstack_nova.py       | 10 +++++-----
- sos/plugins/openstack_sahara.py     | 11 +++++------
- sos/plugins/openstack_swift.py      | 11 +++++++++++
- sos/plugins/openstack_trove.py      | 19 ++++++-------------
- 11 files changed, 100 insertions(+), 48 deletions(-)
-
-diff --git a/sos/plugins/openstack_ceilometer.py b/sos/plugins/openstack_ceilometer.py
-index 7c11057..44a733b 100644
---- a/sos/plugins/openstack_ceilometer.py
-+++ b/sos/plugins/openstack_ceilometer.py
-@@ -35,6 +35,18 @@ class OpenStackCeilometer(Plugin):
-             "/var/log/ceilometer"
-         ])
- 
-+    def postproc(self):
-+        protect_keys = [
-+            "admin_password", "connection_password", "host_password",
-+            "memcache_secret_key", "os_password", "password", "qpid_password",
-+            "rabbit_password", "readonly_user_password", "secret_key",
-+            "ssl_key_password", "telemetry_secret", "connection",
-+            "metering_secret"
-+        ]
-+
-+        regexp = r"((?m)^\s*(%s)\s*=\s*)(.*)" % "|".join(protect_keys)
-+        self.do_path_regex_sub("/etc/ceilometer/*", regexp, r"\1*********")
-+
- 
- class DebianOpenStackCeilometer(OpenStackCeilometer, DebianPlugin,
-                                 UbuntuPlugin):
-diff --git a/sos/plugins/openstack_cinder.py b/sos/plugins/openstack_cinder.py
-index 8588f6c..2f22b5a 100644
---- a/sos/plugins/openstack_cinder.py
-+++ b/sos/plugins/openstack_cinder.py
-@@ -42,6 +42,23 @@ class OpenStackCinder(Plugin):
-         if self.get_option("log"):
-             self.add_copy_spec(["/var/log/cinder/"])
- 
-+    def postproc(self):
-+        protect_keys = [
-+            "admin_password", "backup_tsm_password", "chap_password",
-+            "nas_password", "cisco_fc_fabric_password", "coraid_password",
-+            "eqlx_chap_password", "fc_fabric_password",
-+            "hitachi_auth_password", "hitachi_horcm_password",
-+            "hp3par_password", "hplefthand_password", "memcache_secret_key",
-+            "netapp_password", "netapp_sa_password", "nexenta_password",
-+            "password", "qpid_password", "rabbit_password", "san_password",
-+            "ssl_key_password", "vmware_host_password", "zadara_password",
-+            "zfssa_initiator_password", "connection", "zfssa_target_password",
-+            "os_privileged_user_password", "hmac_keys"
-+        ]
-+
-+        regexp = r"((?m)^\s*(%s)\s*=\s*)(.*)" % "|".join(protect_keys)
-+        self.do_path_regex_sub("/etc/cinder/*", regexp, r"\1*********")
-+
- 
- class DebianOpenStackCinder(OpenStackCinder, DebianPlugin, UbuntuPlugin):
- 
-diff --git a/sos/plugins/openstack_glance.py b/sos/plugins/openstack_glance.py
-index 35c406a..33e69a9 100644
---- a/sos/plugins/openstack_glance.py
-+++ b/sos/plugins/openstack_glance.py
-@@ -38,6 +38,16 @@ class OpenStackGlance(plugins.Plugin):
-             "/var/log/glance/"
-         ])
- 
-+    def postproc(self):
-+        protect_keys = [
-+            "admin_password", "password", "qpid_password", "rabbit_password",
-+            "s3_store_secret_key", "ssl_key_password", "connection",
-+            "vmware_server_password"
-+        ]
-+
-+        regexp = r"((?m)^\s*(%s)\s*=\s*)(.*)" % "|".join(protect_keys)
-+        self.do_path_regex_sub("/etc/glance/*", regexp, r"\1*********")
-+
- 
- class DebianOpenStackGlance(OpenStackGlance,
-                             plugins.DebianPlugin,
-
-diff --git a/sos/plugins/openstack_heat.py b/sos/plugins/openstack_heat.py
-index 70185db..b60285a 100644
---- a/sos/plugins/openstack_heat.py
-+++ b/sos/plugins/openstack_heat.py
-@@ -36,6 +36,15 @@ class OpenStackHeat(Plugin):
-             "/var/log/heat/"
-         ])
- 
-+    def postproc(self):
-+        protect_keys = [
-+            "admin_password", "memcache_secret_key", "password", "connection",
-+            "qpid_password", "rabbit_password", "stack_domain_admin_password",
-+        ]
-+
-+        regexp = r"((?m)^\s*(%s)\s*=\s*)(.*)" % "|".join(protect_keys)
-+        self.do_path_regex_sub("/etc/heat/*", regexp, r"\1*********")
-+
- 
- class DebianOpenStack(OpenStackHeat,
-                       plugins.DebianPlugin,
- 
-diff --git a/sos/plugins/openstack_horizon.py b/sos/plugins/openstack_horizon.py
-index 4c93cd9..5449ce9 100644
---- a/sos/plugins/openstack_horizon.py
-+++ b/sos/plugins/openstack_horizon.py
-@@ -33,6 +33,15 @@ class OpenStackHorizon(Plugin):
-         if self.get_option("log"):
-             self.add_copy_spec("/var/log/horizon/")
- 
-+    def postproc(self):
-+        protect_keys = [
-+            "SECRET_KEY", "EMAIL_HOST_PASSWORD"
-+        ]
-+
-+        regexp = r"((?m)^\s*(%s)\s*=\s*)(.*)" % "|".join(protect_keys)
-+        self.do_path_regex_sub("/etc/openstack-dashboard/*",
-+                               regexp, r"\1*********")
-+
- 
- class DebianOpenStackHorizon(OpenStackHorizon, DebianPlugin):
- 
-diff --git a/sos/plugins/openstack_keystone.py b/sos/plugins/openstack_keystone.py
-index 7d93d88..bff9ef6 100644
---- a/sos/plugins/openstack_keystone.py
-+++ b/sos/plugins/openstack_keystone.py
-@@ -38,21 +38,14 @@ class OpenStackKeystone(Plugin):
-             self.add_copy_spec("/var/log/keystone/")
- 
-     def postproc(self):
--        self.do_file_sub('/etc/keystone/keystone.conf',
--                         r"(?m)^(admin_password.*=)(.*)",
--                         r"\1 ******")
--        self.do_file_sub('/etc/keystone/keystone.conf',
--                         r"(?m)^(admin_token.*=)(.*)",
--                         r"\1 ******")
--        self.do_file_sub('/etc/keystone/keystone.conf',
--                         r"(?m)^(connection.*=.*mysql://)(.*)(:)(.*)(@)(.*)",
--                         r"\1\2:******@\6")
--        self.do_file_sub('/etc/keystone/keystone.conf',
--                         r"(?m)^(password.*=)(.*)",
--                         r"\1 ******")
--        self.do_file_sub('/etc/keystone/keystone.conf',
--                         r"(?m)^(ca_password.*=)(.*)",
--                         r"\1 ******")
-+        protect_keys = [
-+            "password", "qpid_password", "rabbit_password", "ssl_key_password",
-+            "ldap_dns_password", "neutron_admin_password", "host_password",
-+            "connection", "admin_password", "admin_token", "ca_password"
-+        ]
-+
-+        regexp = r"((?m)^\s*(%s)\s*=\s*)(.*)" % "|".join(protect_keys)
-+        self.do_path_regex_sub("/etc/keystone/*", regexp, r"\1*********")
- 
- 
- class DebianOpenStackKeystone(OpenStackKeystone, DebianPlugin, UbuntuPlugin):
-diff --git a/sos/plugins/openstack_neutron.py b/sos/plugins/openstack_neutron.py
-index ab895c8..91ee9f5 100644
---- a/sos/plugins/openstack_neutron.py
-+++ b/sos/plugins/openstack_neutron.py
-@@ -14,7 +14,6 @@
- # along with this program; if not, write to the Free Software
- # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- 
--import glob
- import os
- import re
- 
-@@ -55,16 +54,16 @@ class Neutron(Plugin):
-         protect_keys = [
-             "rabbit_password", "qpid_password", "nova_admin_password",
-             "xenapi_connection_password", "password", "connection",
--            "admin_password", "metadata_proxy_shared_secret", "qpid_password",
--            "eapi_password", "crd_password", "primary_l3_host_password",
--            "serverauth", "ucsm_password", "ha_vrrp_auth_password",
--            "ssl_key_password", "nsx_password", "vcenter_password",
--            "edge_appliance_password", "tenant_admin_password", "apic_password"
-+            "admin_password", "metadata_proxy_shared_secret", "eapi_password",
-+            "crd_password", "primary_l3_host_password", "serverauth",
-+            "ucsm_password", "ha_vrrp_auth_password", "ssl_key_password",
-+            "nsx_password", "vcenter_password", "edge_appliance_password",
-+            "tenant_admin_password", "apic_password"
-         ]
--        regexp = r"((?m)^\s*#*(%s)\s*=\s*)(.*)" % "|".join(protect_keys)
-+        regexp = r"((?m)^\s*(%s)\s*=\s*)(.*)" % "|".join(protect_keys)
- 
--        for config_file in glob.glob("/etc/%s/*" % self.component_name):
--            self.do_file_sub(config_file, regexp, r"\1*********")
-+        self.do_path_regex_sub("/etc/%s/*" % self.component_name,
-+                               regexp, r"\1*********")
- 
-     def netns_dumps(self):
-         # It would've been beautiful if we could get parts of the networking
-diff --git a/sos/plugins/openstack_nova.py b/sos/plugins/openstack_nova.py
-index 20fb3a3..e226dac 100644
---- a/sos/plugins/openstack_nova.py
-+++ b/sos/plugins/openstack_nova.py
-@@ -66,13 +66,13 @@ class OpenStackNova(Plugin):
-             "ldap_dns_password", "neutron_admin_password", "rabbit_password",
-             "qpid_password", "powervm_mgr_passwd", "virtual_power_host_pass",
-             "xenapi_connection_password", "password", "host_password",
--            "vnc_password", "connection", "sql_connection", "admin_password"
-+            "vnc_password", "connection", "sql_connection", "admin_password",
-+            "connection_password", "memcache_secret_key", "s3_secret_key",
-+            "metadata_proxy_shared_secret"
-         ]
- 
--        regexp = r"((?m)^\s*#*(%s)\s*=\s*)(.*)" % "|".join(protect_keys)
--
--        for conf_file in ["/etc/nova/nova.conf", "/etc/nova/api-paste.ini"]:
--            self.do_file_sub(conf_file, regexp, r"\1*********")
-+        regexp = r"((?m)^\s*(%s)\s*=\s*)(.*)" % "|".join(protect_keys)
-+        self.do_path_regex_sub("/etc/nova/*", regexp, r"\1*********")
- 
- 
- class DebianOpenStackNova(OpenStackNova, DebianPlugin, UbuntuPlugin):
-diff --git a/sos/plugins/openstack_sahara.py b/sos/plugins/openstack_sahara.py
-index 9d971ba..18e56d7 100644
---- a/sos/plugins/openstack_sahara.py
-+++ b/sos/plugins/openstack_sahara.py
-@@ -33,14 +33,13 @@ class OpenStackSahara(Plugin):
- 
-     def postproc(self):
-         protect_keys = [
--            'memcache_secret_key', 'qpid_password', 'rabbit_password',
--            'admin_password', 'password', 'ssl_key_password',
--            'admin_token', 'connection'
-+            "admin_password", "memcache_secret_key", "password",
-+            "qpid_password", "rabbit_password", "ssl_key_password",
-+            "xenapi_connection_password", "connection"
-         ]
- 
--        regexp = r"((?m)^\s*#*(%s)\s*=\s*)(.*)" % "|".join(protect_keys)
--
--        self.do_file_sub('/etc/sahara/sahara.conf', regexp, r"\1*********")
-+        regexp = r"((?m)^\s*(%s)\s*=\s*)(.*)" % "|".join(protect_keys)
-+        self.do_path_regex_sub("/etc/sahara/*", regexp, r"\1*********")
- 
- 
- class DebianOpenStackSahara(OpenStackSahara, DebianPlugin, UbuntuPlugin):
-diff --git a/sos/plugins/openstack_swift.py b/sos/plugins/openstack_swift.py
-index f0f94bb..f337331 100644
---- a/sos/plugins/openstack_swift.py
-+++ b/sos/plugins/openstack_swift.py
-@@ -33,6 +33,17 @@ class OpenStackSwift(Plugin):
-         # Swift
-         self.add_copy_spec("/etc/swift/")
- 
-+    def postproc(self):
-+        protect_keys = [
-+            "ldap_dns_password", "neutron_admin_password", "rabbit_password",
-+            "qpid_password", "powervm_mgr_passwd", "virtual_power_host_pass",
-+            "xenapi_connection_password", "password", "host_password",
-+            "vnc_password", "connection", "sql_connection", "admin_password"
-+        ]
-+
-+        regexp = r"((?m)^\s*(%s)\s*=\s*)(.*)" % "|".join(protect_keys)
-+        self.do_path_regex_sub("/etc/swift/*.conf*", regexp, r"\1*********")
-+
- 
- class DebianOpenStackSwift(OpenStackSwift, DebianPlugin, UbuntuPlugin):
- 
-diff --git a/sos/plugins/openstack_trove.py b/sos/plugins/openstack_trove.py
-index 3b87506..566ae42 100644
---- a/sos/plugins/openstack_trove.py
-+++ b/sos/plugins/openstack_trove.py
-@@ -14,6 +14,7 @@
- # along with this program; if not, write to the Free Software
- # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- 
-+
- from sos.plugins import Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin
- 
- 
-@@ -34,21 +35,13 @@ class OpenStackTrove(Plugin):
-     def postproc(self):
- 
-         protect_keys = [
--            "dns_passkey", "nova_proxy_admin_pass", "rabbit_password",
--            "qpid_password", "connection", "sql_connection", "admin_password"
--        ]
--
--        conf_list = [
--            '/etc/trove/trove.conf',
--            '/etc/trove/trove-conductor.conf',
--            '/etc/trove/trove-guestmanager.conf',
--            '/etc/trove/trove-taskmanager.conf'
-+            "default_password_length", "notifier_queue_password",
-+            "rabbit_password", "replication_password", "connection",
-+            "admin_password", "dns_passkey"
-         ]
- 
--        regexp = r"((?m)^\s*#*(%s)\s*=\s*)(.*)" % "|".join(protect_keys)
--
--        for conf in conf_list:
--            self.do_file_sub(conf, regexp, r"\1*********")
-+        regexp = r"((?m)^\s*(%s)\s*=\s*)(.*)" % "|".join(protect_keys)
-+        self.do_path_regex_sub("/etc/trove/*", regexp, r"\1*********")
- 
- 
- class DebianOpenStackTrove(OpenStackTrove, DebianPlugin, UbuntuPlugin):
--- 
-1.8.3.1
-
-From 08ba22aebb066de389cffed414a725e61a6b86d7 Mon Sep 17 00:00:00 2001
-From: Pavel Moravec <pmoravec@redhat.com>
-Date: Mon, 7 Sep 2015 09:54:17 +0200
-Subject: [PATCH] [openstack_neutron] obfuscate server_auth in restproxy.ini
-
-server_auth secrets in /etc/neutron/plugins/ml2/restproxy.ini need to be
-obfuscated.
-
-Resolves:  #639
-
-Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
----
- sos/plugins/openstack_neutron.py | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/sos/plugins/openstack_neutron.py b/sos/plugins/openstack_neutron.py
-index 91ee9f5..fc494d2 100644
---- a/sos/plugins/openstack_neutron.py
-+++ b/sos/plugins/openstack_neutron.py
-@@ -58,7 +58,7 @@ class Neutron(Plugin):
-             "crd_password", "primary_l3_host_password", "serverauth",
-             "ucsm_password", "ha_vrrp_auth_password", "ssl_key_password",
-             "nsx_password", "vcenter_password", "edge_appliance_password",
--            "tenant_admin_password", "apic_password"
-+            "tenant_admin_password", "apic_password", "server_auth"
-         ]
-         regexp = r"((?m)^\s*(%s)\s*=\s*)(.*)" % "|".join(protect_keys)
-
--- 
-1.8.3.1
-
diff --git a/SOURCES/sos-bz1245770-collect-docker-daemon-logs.patch b/SOURCES/sos-bz1245770-collect-docker-daemon-logs.patch
deleted file mode 100644
index 03450e1..0000000
--- a/SOURCES/sos-bz1245770-collect-docker-daemon-logs.patch
+++ /dev/null
@@ -1,65 +0,0 @@
-From 4edd40d584879ebd81bce88f04bc294789175eb0 Mon Sep 17 00:00:00 2001
-From: "Bryn M. Reeves" <bmr@redhat.com>
-Date: Wed, 7 Oct 2015 12:56:55 +0100
-Subject: [PATCH 1/2] [kubernetes] do not reverse-sort journald logs
-
-Drop the '-r' when obtaining logs from journald to be consistent
-with other plugins: users can sort log entries in whatever order
-they prefer on the analysis system.
-
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/plugins/kubernetes.py | 10 +++++-----
- 1 file changed, 5 insertions(+), 5 deletions(-)
-
-diff --git a/sos/plugins/kubernetes.py b/sos/plugins/kubernetes.py
-index 59b6b53..3399b2e 100644
---- a/sos/plugins/kubernetes.py
-+++ b/sos/plugins/kubernetes.py
-@@ -35,11 +35,11 @@ class kubernetes(Plugin, RedHatPlugin):
-         self.add_cmd_output("kubectl get -o json services")
-         self.add_cmd_output("kubectl get -o json replicationController")
-         self.add_cmd_output("kubectl get -o json events")
--        self.add_cmd_output("journalctl -r -u kubelet")
--        self.add_cmd_output("journalctl -r -u kube-apiserver")
--        self.add_cmd_output("journalctl -r -u kube-controller-manager")
--        self.add_cmd_output("journalctl -r -u kube-scheduler")
--        self.add_cmd_output("journalctl -r -u kube-proxy")
-+        self.add_cmd_output("journalctl -u kubelet")
-+        self.add_cmd_output("journalctl -u kube-apiserver")
-+        self.add_cmd_output("journalctl -u kube-controller-manager")
-+        self.add_cmd_output("journalctl -u kube-scheduler")
-+        self.add_cmd_output("journalctl -u kube-proxy")
- 
-         if self.get_option('podslog'):
-             result = self.get_command_output("kubectl get pods")
--- 
-1.8.3.1
-
-From 3ce984a7d220669eaf2e6c08d983679183fb55fe Mon Sep 17 00:00:00 2001
-From: "Bryn M. Reeves" <bmr@redhat.com>
-Date: Wed, 7 Oct 2015 13:03:45 +0100
-Subject: [PATCH 2/2] [docker] collect journald logs for docker unit
-
-Fixes: #609.
-
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/plugins/docker.py | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/sos/plugins/docker.py b/sos/plugins/docker.py
-index c5ea8a0..aab558d 100644
---- a/sos/plugins/docker.py
-+++ b/sos/plugins/docker.py
-@@ -34,6 +34,7 @@ class Docker(Plugin):
-         ])
- 
-         self.add_cmd_output([
-+            "journalctl -u docker",
-             "{0} info".format(self.docker_bin),
-             "{0} ps".format(self.docker_bin),
-             "{0} images".format(self.docker_bin)
--- 
-1.8.3.1
-
diff --git a/SOURCES/sos-bz1248672-pick-up-symlink-targets.patch b/SOURCES/sos-bz1248672-pick-up-symlink-targets.patch
deleted file mode 100644
index 36dc409..0000000
--- a/SOURCES/sos-bz1248672-pick-up-symlink-targets.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From 4d8b5418b1cf218ef9746674ca5935a7f4f3983e Mon Sep 17 00:00:00 2001
-From: "Bryn M. Reeves" <bmr@redhat.com>
-Date: Fri, 31 Jul 2015 10:21:17 +0100
-Subject: [PATCH] [Plugin] fix handling of symlinks in non-sysroot environments
-
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/plugins/__init__.py | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/sos/plugins/__init__.py b/sos/plugins/__init__.py
-index aed7496..6731b28 100644
---- a/sos/plugins/__init__.py
-+++ b/sos/plugins/__init__.py
-@@ -163,6 +163,8 @@ class Plugin(object):
-         return os.path.join(self.sysroot, path)
- 
-     def strip_sysroot(self, path):
-+        if not self.use_sysroot():
-+            return path
-         if path.startswith(self.sysroot):
-             return path[len(self.sysroot):]
-         return path
--- 
-1.8.3.1
-
diff --git a/SOURCES/sos-bz1249705-logs-plugin-traceback.patch b/SOURCES/sos-bz1249705-logs-plugin-traceback.patch
deleted file mode 100644
index c6d2360..0000000
--- a/SOURCES/sos-bz1249705-logs-plugin-traceback.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From b3faad3f82ee1f735e2221bb2f39b8b8aeaf0e86 Mon Sep 17 00:00:00 2001
-From: "Bryn M. Reeves" <bmr@redhat.com>
-Date: Mon, 3 Aug 2015 16:39:53 +0100
-Subject: [PATCH] [logs] fix reference to missing 'rsyslog_conf' variable
-
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/plugins/logs.py | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/sos/plugins/logs.py b/sos/plugins/logs.py
-index 7957898..70ef537 100644
---- a/sos/plugins/logs.py
-+++ b/sos/plugins/logs.py
-@@ -42,6 +42,7 @@ class Logs(Plugin):
-             logs = self.do_regex_find_all("^\S+\s+(-?\/.*$)\s+", syslog_conf)
-             if self.is_installed("rsyslog") \
-                     or os.path.exists("/etc/rsyslog.conf"):
-+                rsyslog_conf = self.join_sysroot("/etc/rsyslog.conf")
-                 logs += self.do_regex_find_all("^\S+\s+(-?\/.*$)\s+",
-                                                rsyslog_conf)
-             for i in logs:
--- 
-1.8.3.1
-
diff --git a/SOURCES/sos-bz1260607-ceph-skip-keyring-bindpass-files.patch b/SOURCES/sos-bz1260607-ceph-skip-keyring-bindpass-files.patch
new file mode 100644
index 0000000..a4bb5d6
--- /dev/null
+++ b/SOURCES/sos-bz1260607-ceph-skip-keyring-bindpass-files.patch
@@ -0,0 +1,44 @@
+From c8f62ea4b6193a175add12e1795c18dad500c38e Mon Sep 17 00:00:00 2001
+From: Pavel Moravec <pmoravec@redhat.com>
+Date: Tue, 2 Aug 2016 11:55:23 +0200
+Subject: [PATCH] [ceph] skip collecting of all keyring and bindpass files
+
+Do not collect any keyring files - expand the add_forbidden_path
+regular expressions accordingly to cover there filenames like:
+
+/var/lib/ceph/tmp/keyring.mon.magna055
+
+Do not either collect any /etc/ceph/*bindpass* that can store LDAP
+bind passwords.
+
+Resolves: #861
+
+Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
+---
+ sos/plugins/ceph.py | 9 +++++----
+ 1 file changed, 5 insertions(+), 4 deletions(-)
+
+diff --git a/sos/plugins/ceph.py b/sos/plugins/ceph.py
+index 10fee88..74b7c4c 100644
+--- a/sos/plugins/ceph.py
++++ b/sos/plugins/ceph.py
+@@ -59,11 +59,12 @@ class Ceph(Plugin, RedHatPlugin, UbuntuPlugin):
+             "ceph report"
+         ])
+ 
+-        self.add_forbidden_path("/etc/ceph/*keyring")
+-        self.add_forbidden_path("/var/lib/ceph/*keyring")
+-        self.add_forbidden_path("/var/lib/ceph/*/*keyring")
+-        self.add_forbidden_path("/var/lib/ceph/*/*/*keyring")
++        self.add_forbidden_path("/etc/ceph/*keyring*")
++        self.add_forbidden_path("/var/lib/ceph/*keyring*")
++        self.add_forbidden_path("/var/lib/ceph/*/*keyring*")
++        self.add_forbidden_path("/var/lib/ceph/*/*/*keyring*")
+         self.add_forbidden_path("/var/lib/ceph/osd/*")
+         self.add_forbidden_path("/var/lib/ceph/osd/mon/*")
++        self.add_forbidden_path("/etc/ceph/*bindpass*")
+ 
+ # vim: set et ts=4 sw=4 :
+-- 
+2.4.11
+
diff --git a/SOURCES/sos-bz1290954-sosreport-prepare-report-in-a-private-subdirectory.patch b/SOURCES/sos-bz1290954-sosreport-prepare-report-in-a-private-subdirectory.patch
deleted file mode 100644
index 19198e4..0000000
--- a/SOURCES/sos-bz1290954-sosreport-prepare-report-in-a-private-subdirectory.patch
+++ /dev/null
@@ -1,658 +0,0 @@
-From 6038fdf8617319a13b0b42f3283ec2066d54b283 Mon Sep 17 00:00:00 2001
-From: "Bryn M. Reeves" <bmr@redhat.com>
-Date: Thu, 19 Nov 2015 18:46:36 +0000
-Subject: [PATCH] [policies] move hash determination to policies
-
-It's crazy having the Policy classes call a function in the
-utilities module only to have that function then load the Policy
-module, call policy.get_preferred_hash_algorithm() and then test
-the result.
-
-Get rid of the get_hash_name() function in the utilities module
-and simplify the calls in the policies module to obtain the
-preferred hash name.
-
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/policies/__init__.py | 22 +++++++++++++++-------
- sos/utilities.py         | 12 ------------
- tests/utilities_tests.py |  2 +-
- 3 files changed, 16 insertions(+), 20 deletions(-)
-
-diff --git a/sos/policies/__init__.py b/sos/policies/__init__.py
-index a403bb9..bf9afde 100644
---- a/sos/policies/__init__.py
-+++ b/sos/policies/__init__.py
-@@ -10,7 +10,6 @@ from os import environ
- 
- from sos.utilities import (ImporterHelper,
-                            import_module,
--                           get_hash_name,
-                            shell_out)
- from sos.plugins import IndependentPlugin
- from sos import _sos as _
-@@ -286,17 +285,17 @@ No changes will be made to system configuration.
-         considered to be a superuser"""
-         return (os.getuid() == 0)
- 
--    def _create_checksum(self, final_filename=None):
-+    def _create_checksum(self, hash_name, final_filename=None):
-         if not final_filename:
-             return False
- 
-         archive_fp = open(final_filename, 'rb')
--        digest = hashlib.new(get_hash_name())
-+        digest = hashlib.new(hash_name)
-         digest.update(archive_fp.read())
-         archive_fp.close()
-         return digest.hexdigest()
- 
--    def get_preferred_hash_algorithm(self):
-+    def get_preferred_hash_name(self):
-         """Returns the string name of the hashlib-supported checksum algorithm
-         to use"""
-         return "md5"
-@@ -309,10 +308,11 @@ No changes will be made to system configuration.
- 
-         self._print()
- 
-+        hash_name = self.get_preferred_hash_name()
-         if not build:
-             # store checksum into file
--            fp = open(final_filename + "." + get_hash_name(), "w")
--            checksum = self._create_checksum(final_filename)
-+            fp = open(final_filename + "." + hash_name, "w")
-+            checksum = self._create_checksum(hash_name, final_filename)
-             if checksum:
-                 fp.write(checksum + "\n")
-             fp.close()
-@@ -373,20 +373,28 @@ class LinuxPolicy(Policy):
-     vendor = "None"
-     PATH = "/bin:/sbin:/usr/bin:/usr/sbin"
- 
-+    _preferred_hash_name = None
-+
-     def __init__(self, sysroot=None):
-         super(LinuxPolicy, self).__init__(sysroot=sysroot)
- 
--    def get_preferred_hash_algorithm(self):
-+    def get_preferred_hash_name(self):
-+
-+        if self._preferred_hash_name:
-+            return self._preferred_hash_name
-+
-         checksum = "md5"
-         try:
-             fp = open("/proc/sys/crypto/fips_enabled", "r")
-         except:
-+            self._preferred_hash_name = checksum
-             return checksum
- 
-         fips_enabled = fp.read()
-         if fips_enabled.find("1") >= 0:
-             checksum = "sha256"
-         fp.close()
-+        self._preferred_hash_name = checksum
-         return checksum
- 
-     def default_runlevel(self):
-diff --git a/sos/utilities.py b/sos/utilities.py
-index d3a1048..63e7ee4 100644
---- a/sos/utilities.py
-+++ b/sos/utilities.py
-@@ -52,18 +52,6 @@ def fileobj(path_or_file, mode='r'):
-         return closing(path_or_file)
- 
- 
--def get_hash_name():
--    """Returns the algorithm used when computing a hash"""
--    import sos.policies
--    policy = sos.policies.load()
--    try:
--        name = policy.get_preferred_hash_algorithm()
--        hashlib.new(name)
--        return name
--    except:
--        return 'sha256'
--
--
- def convert_bytes(bytes_, K=1 << 10, M=1 << 20, G=1 << 30, T=1 << 40):
-     """Converts a number of bytes to a shorter, more human friendly format"""
-     fn = float(bytes_)
-diff --git a/tests/utilities_tests.py b/tests/utilities_tests.py
-index c464692..f1b60e2 100644
---- a/tests/utilities_tests.py
-+++ b/tests/utilities_tests.py
-@@ -5,7 +5,7 @@ import unittest
- import six
- from six import StringIO
- 
--from sos.utilities import grep, get_hash_name, is_executable, sos_get_command_output, find, tail, shell_out
-+from sos.utilities import grep, is_executable, sos_get_command_output, find, tail, shell_out
- import sos
- 
- TEST_DIR = os.path.dirname(__file__)
--- 
-2.4.3
-
-From 7f2727749d0c37095a20c5d4cf6f9a2e086a2375 Mon Sep 17 00:00:00 2001
-From: "Bryn M. Reeves" <bmr@redhat.com>
-Date: Thu, 19 Nov 2015 19:07:50 +0000
-Subject: [PATCH] [policies] refactor Policy.display_results() args
-
-Pass explicit archive and build directory arguments to the
-Policy.display_results() method rather than a single path name
-argument and a boolean to indicate whether it is an archive file
-or a build directory path.
-
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/policies/__init__.py | 24 ++++++++++++++----------
- sos/sosreport.py         | 12 +++++++++---
- 2 files changed, 23 insertions(+), 13 deletions(-)
-
-diff --git a/sos/policies/__init__.py b/sos/policies/__init__.py
-index bf9afde..5b0b706 100644
---- a/sos/policies/__init__.py
-+++ b/sos/policies/__init__.py
-@@ -285,11 +285,11 @@ No changes will be made to system configuration.
-         considered to be a superuser"""
-         return (os.getuid() == 0)
- 
--    def _create_checksum(self, hash_name, final_filename=None):
--        if not final_filename:
-+    def _create_checksum(self, hash_name, archive=None):
-+        if not archive:
-             return False
- 
--        archive_fp = open(final_filename, 'rb')
-+        archive_fp = open(archive, 'rb')
-         digest = hashlib.new(hash_name)
-         digest.update(archive_fp.read())
-         archive_fp.close()
-@@ -300,29 +300,33 @@ No changes will be made to system configuration.
-         to use"""
-         return "md5"
- 
--    def display_results(self, final_filename=None, build=False):
-+    def display_results(self, archive, directory):
-+        # Display results is called from the tail of SoSReport.final_work()
-+        #
-+        # Logging is already shutdown and all terminal output must use the
-+        # print() call.
- 
-         # make sure a report exists
--        if not final_filename:
-+        if not archive and not directory:
-             return False
- 
-         self._print()
- 
-         hash_name = self.get_preferred_hash_name()
--        if not build:
-+        if archive:
-             # store checksum into file
--            fp = open(final_filename + "." + hash_name, "w")
--            checksum = self._create_checksum(hash_name, final_filename)
-+            fp = open(archive + "." + hash_name, "w")
-+            checksum = self._create_checksum(hash_name, archive)
-             if checksum:
-                 fp.write(checksum + "\n")
-             fp.close()
- 
-             self._print(_("Your sosreport has been generated and saved "
--                        "in:\n  %s") % final_filename)
-+                        "in:\n  %s") % archive)
-         else:
-             checksum = None
-             self._print(_("sosreport build tree is located at : %s" %
--                        final_filename))
-+                        directory))
- 
-         self._print()
-         if checksum:
-diff --git a/sos/sosreport.py b/sos/sosreport.py
-index a1f1b96..f3e0f34 100644
---- a/sos/sosreport.py
-+++ b/sos/sosreport.py
-@@ -1436,6 +1436,10 @@ class SoSReport(object):
-         # this must come before archive creation to ensure that log
-         # files are closed and cleaned up at exit.
-         self._finish_logging()
-+
-+        archive = None    # archive path
-+        directory = None  # report directory path (--build)
-+
-         # package up the results for the support organization
-         if not self.opts.build:
-             old_umask = os.umask(0o077)
-@@ -1443,7 +1447,7 @@ class SoSReport(object):
-                 print(_("Creating compressed archive..."))
-             # compression could fail for a number of reasons
-             try:
--                final_filename = self.archive.finalize(
-+                archive = self.archive.finalize(
-                     self.opts.compression_type)
-             except (OSError, IOError) as e:
-                 if e.errno in fatal_fs_errors:
-@@ -1460,8 +1464,10 @@ class SoSReport(object):
-             finally:
-                 os.umask(old_umask)
-         else:
--            final_filename = self.archive.get_archive_path()
--        self.policy.display_results(final_filename, build=self.opts.build)
-+            directory = self.archive.get_archive_path()
-+
-+        self.policy.display_results(archive, directory)
-+
-         self.tempfile_util.clean()
-         return True
- 
--- 
-2.4.3
-
-From 19e2bbccb6a86d6ea94f5c82860bed4d2276bbf3 Mon Sep 17 00:00:00 2001
-From: "Bryn M. Reeves" <bmr@redhat.com>
-Date: Thu, 19 Nov 2015 19:19:42 +0000
-Subject: [PATCH] [sosreport] move archive checksumming to sosreport
-
-Although the digest algorithm is policy controlled the actual
-mechanism to checksum the archive does not belong in the policies
-module: historically this was done to keep the code that calculates
-the checksum close to the UI code that reports it.
-
-Move the calculation to the main SoSReport class's final_work()
-method and add a 'checksum' argument to the display_results()
-method so that the value can be reported.
-
-In future it may make sense to push the checksum code directly into
-the archive class.
-
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/policies/__init__.py | 22 +---------------------
- sos/sosreport.py         | 26 +++++++++++++++++++++++++-
- 2 files changed, 26 insertions(+), 22 deletions(-)
-
-diff --git a/sos/policies/__init__.py b/sos/policies/__init__.py
-index 5b0b706..20e0e3b 100644
---- a/sos/policies/__init__.py
-+++ b/sos/policies/__init__.py
-@@ -13,7 +13,6 @@ from sos.utilities import (ImporterHelper,
-                            shell_out)
- from sos.plugins import IndependentPlugin
- from sos import _sos as _
--import hashlib
- from textwrap import fill
- from six import print_
- from six.moves import input
-@@ -285,22 +284,12 @@ No changes will be made to system configuration.
-         considered to be a superuser"""
-         return (os.getuid() == 0)
- 
--    def _create_checksum(self, hash_name, archive=None):
--        if not archive:
--            return False
--
--        archive_fp = open(archive, 'rb')
--        digest = hashlib.new(hash_name)
--        digest.update(archive_fp.read())
--        archive_fp.close()
--        return digest.hexdigest()
--
-     def get_preferred_hash_name(self):
-         """Returns the string name of the hashlib-supported checksum algorithm
-         to use"""
-         return "md5"
- 
--    def display_results(self, archive, directory):
-+    def display_results(self, archive, directory, checksum):
-         # Display results is called from the tail of SoSReport.final_work()
-         #
-         # Logging is already shutdown and all terminal output must use the
-@@ -312,19 +301,10 @@ No changes will be made to system configuration.
- 
-         self._print()
- 
--        hash_name = self.get_preferred_hash_name()
-         if archive:
--            # store checksum into file
--            fp = open(archive + "." + hash_name, "w")
--            checksum = self._create_checksum(hash_name, archive)
--            if checksum:
--                fp.write(checksum + "\n")
--            fp.close()
--
-             self._print(_("Your sosreport has been generated and saved "
-                         "in:\n  %s") % archive)
-         else:
--            checksum = None
-             self._print(_("sosreport build tree is located at : %s" %
-                         directory))
- 
-diff --git a/sos/sosreport.py b/sos/sosreport.py
-index f3e0f34..f7a5f11 100644
---- a/sos/sosreport.py
-+++ b/sos/sosreport.py
-@@ -33,6 +33,7 @@ from stat import ST_UID, ST_GID, ST_MODE, ST_CTIME, ST_ATIME, ST_MTIME, S_IMODE
- from time import strftime, localtime
- from collections import deque
- import tempfile
-+import hashlib
- 
- from sos import _sos as _
- from sos import __version__
-@@ -1432,6 +1433,18 @@ class SoSReport(object):
-                     raise
-                 self._log_plugin_exception(plugname, "postproc")
- 
-+    def _create_checksum(self, archive=None):
-+        if not archive:
-+            return False
-+
-+        hash_name = self.policy.get_preferred_hash_name()
-+
-+        archive_fp = open(archive, 'rb')
-+        digest = hashlib.new(hash_name)
-+        digest.update(archive_fp.read())
-+        archive_fp.close()
-+        return digest.hexdigest()
-+
-     def final_work(self):
-         # this must come before archive creation to ensure that log
-         # files are closed and cleaned up at exit.
-@@ -1466,7 +1479,18 @@ class SoSReport(object):
-         else:
-             directory = self.archive.get_archive_path()
- 
--        self.policy.display_results(archive, directory)
-+        hash_name = self.policy.get_preferred_hash_name()
-+        checksum = None
-+
-+        if hash_name and not self.opts.build:
-+            # store checksum into file
-+            fp = open(archive + "." + hash_name, "w")
-+            checksum = self._create_checksum(archive)
-+            if checksum:
-+                fp.write(checksum + "\n")
-+            fp.close()
-+
-+        self.policy.display_results(archive, directory, checksum)
- 
-         self.tempfile_util.clean()
-         return True
--- 
-2.4.3
-
-From 4a9b919a7f1b9542a23982e49cc9035e84551e13 Mon Sep 17 00:00:00 2001
-From: "Bryn M. Reeves" <bmr@redhat.com>
-Date: Fri, 20 Nov 2015 18:48:33 +0000
-Subject: [PATCH] [sosreport] prepare report in a private subdirectory
-
-To avoid file creation races in shared temporary directories like
-/tmp and /var/tmp use a private (0700) subdirectory to build the
-FileCacheArchive and subsequent archive and compressed archive
-files: only create a file in the containing directory when it can
-be done as a single atomic rename.
-
-This prevents sos from writing to an arbitrary location under the
-control of another user: a malicious user could steal data or over
-write files in /etc resulting in a local privilege escalation.
-
-There remains a further race since once the archive name is known
-the checksum file name becomes predictable: as the checksum file
-is also prepared in the subdirectory and moved into place the
-result is always either success or an error that is reported to
-the user.
-
-The correct checksum value is still reported to the user via the
-terminal.
-
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/sosreport.py | 100 ++++++++++++++++++++++++++++++++++++++++++-------------
- 1 file changed, 77 insertions(+), 23 deletions(-)
-
-diff --git a/sos/sosreport.py b/sos/sosreport.py
-index f7a5f11..fe251ed 100644
---- a/sos/sosreport.py
-+++ b/sos/sosreport.py
-@@ -32,6 +32,7 @@ from sos.utilities import ImporterHelper
- from stat import ST_UID, ST_GID, ST_MODE, ST_CTIME, ST_ATIME, ST_MTIME, S_IMODE
- from time import strftime, localtime
- from collections import deque
-+from shutil import rmtree
- import tempfile
- import hashlib
-
-@@ -678,6 +679,7 @@ class SoSReport(object):
-         self.tempfile_util = None
-         self._args = args
-         self.sysroot = "/"
-+        self.sys_tmp = None
- 
-         try:
-             import signal
-@@ -678,15 +678,22 @@ class SoSReport(object):
- 
-         self._is_root = self.policy.is_root()
- 
--        self.tmpdir = os.path.abspath(
--            self.policy.get_tmp_dir(self.opts.tmp_dir))
--        if not os.path.isdir(self.tmpdir) \
--                or not os.access(self.tmpdir, os.W_OK):
-+        # system temporary directory to use
-+        tmp = os.path.abspath(self.policy.get_tmp_dir(self.opts.tmp_dir))
-+
-+        if not os.path.isdir(tmp) \
-+                or not os.access(tmp, os.W_OK):
-             # write directly to stderr as logging is not initialised yet
--            sys.stderr.write("temporary directory %s " % self.tmpdir
-+            sys.stderr.write("temporary directory %s " % tmp
-                              + "does not exist or is not writable\n")
-             self._exit(1)
-+
-+        self.sys_tmp = tmp
-+
-+        # our (private) temporary directory
-+        self.tmpdir = tempfile.mkdtemp(prefix="sos.", dir=self.sys_tmp)
-         self.tempfile_util = TempFileUtil(self.tmpdir)
-+
-         self._set_directories()
- 
-         self._setup_logging()
-@@ -1433,27 +1442,34 @@ class SoSReport(object):
-                     raise
-                 self._log_plugin_exception(plugname, "postproc")
- 
--    def _create_checksum(self, archive=None):
-+    def _create_checksum(self, archive, hash_name):
-         if not archive:
-             return False
- 
--        hash_name = self.policy.get_preferred_hash_name()
--
-         archive_fp = open(archive, 'rb')
-         digest = hashlib.new(hash_name)
-         digest.update(archive_fp.read())
-         archive_fp.close()
-         return digest.hexdigest()
- 
-+    def _write_checksum(self, archive, hash_name, checksum):
-+            # store checksum into file
-+            fp = open(archive + "." + hash_name, "w")
-+            if checksum:
-+                fp.write(checksum + "\n")
-+            fp.close()
-+
-     def final_work(self):
--        # this must come before archive creation to ensure that log
-+        # This must come before archive creation to ensure that log
-         # files are closed and cleaned up at exit.
-+        #
-+        # All subsequent terminal output must use print().
-         self._finish_logging()
- 
-         archive = None    # archive path
-         directory = None  # report directory path (--build)
- 
--        # package up the results for the support organization
-+        # package up and compress the results
-         if not self.opts.build:
-             old_umask = os.umask(0o077)
-             if not self.opts.quiet:
-@@ -1464,10 +1480,9 @@ class SoSReport(object):
-                     self.opts.compression_type)
-             except (OSError, IOError) as e:
-                 if e.errno in fatal_fs_errors:
--                    self.ui_log.error("")
--                    self.ui_log.error(" %s while finalizing archive"
--                                      % e.strerror)
--                    self.ui_log.error("")
-+                    print("")
-+                    print(_(" %s while finalizing archive" % e.strerror))
-+                    print("")
-                     self._exit(1)
-             except:
-                 if self.opts.debug:
-@@ -1477,18 +1492,55 @@ class SoSReport(object):
-             finally:
-                 os.umask(old_umask)
-         else:
-+            # move the archive root out of the private tmp directory.
-             directory = self.archive.get_archive_path()
-+            dir_name = os.path.basename(directory)
-+            try:
-+                os.rename(directory, os.path.join(self.sys_tmp, dir_name))
-+            except (OSError, IOError):
-+                    print(_("Error moving directory: %s" % directory))
-+                    return False
- 
--        hash_name = self.policy.get_preferred_hash_name()
-         checksum = None
- 
--        if hash_name and not self.opts.build:
--            # store checksum into file
--            fp = open(archive + "." + hash_name, "w")
--            checksum = self._create_checksum(archive)
--            if checksum:
--                fp.write(checksum + "\n")
--            fp.close()
-+        if not self.opts.build:
-+            # compute and store the archive checksum
-+            hash_name = self.policy.get_preferred_hash_name()
-+            checksum = self._create_checksum(archive, hash_name)
-+            self._write_checksum(archive, hash_name, checksum)
-+
-+            # output filename is in the private tmpdir - move it to the
-+            # containing directory.
-+            final_name = os.path.join(self.sys_tmp, os.path.basename(archive))
-+
-+            archive_hash = archive + "." + hash_name
-+            final_hash = final_name + "." + hash_name
-+
-+            # move the archive and checksum file
-+            try:
-+                    os.rename(archive, final_name)
-+                    archive = final_name
-+            except (OSError, IOError):
-+                    print(_("Error moving archive file: %s" % archive))
-+                    return False
-+
-+            # There is a race in the creation of the final checksum file:
-+            # since the archive has already been published and the checksum
-+            # file name is predictable once the archive name is known a
-+            # malicious user could attempt to create a symbolic link in order
-+            # to misdirect writes to a file of the attacker's choosing.
-+            #
-+            # To mitigate this we write the checksum inside the private tmp
-+            # directory and use an atomic rename that is guaranteed to either
-+            # succeed or fail: at worst the move will fail and be reported to
-+            # the user. The correct checksum value is still written to the
-+            # terminal and nothing is written to a location under the control
-+            # of the user creating the link.
-+            try:
-+                    os.rename(archive_hash, final_hash)
-+            except (OSError, IOError):
-+                    print(_("Error moving checksum file: %s" % archive_hash))
-+                    return False
- 
-         self.policy.display_results(archive, directory, checksum)
- 
-@@ -1546,8 +1598,10 @@ class SoSReport(object):
-                     self.archive.cleanup()
-                 if self.tempfile_util:
-                     self.tempfile_util.clean()
-+                if self.tmpdir:
-+                    rmtree(self.tmpdir)
-             except:
--                pass
-+                raise
- 
-         return False
- 
--- 
-2.4.3
-
-From 08121d877741e33333a1ae01280f6898d7d4ca15 Mon Sep 17 00:00:00 2001
-From: "Bryn M. Reeves" <bmr@redhat.com>
-Date: Thu, 10 Dec 2015 11:50:49 +0000
-Subject: [PATCH] [sosreport] clean up private temporary directory
-
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/sosreport.py | 7 ++++++-
- 1 file changed, 6 insertions(+), 1 deletion(-)
-
-diff --git a/sos/sosreport.py b/sos/sosreport.py
-index fe251ed..bc7792a 100644
---- a/sos/sosreport.py
-+++ b/sos/sosreport.py
-@@ -1544,7 +1544,12 @@ class SoSReport(object):
-
-         self.policy.display_results(archive, directory, checksum)
-
--        self.tempfile_util.clean()
-+        # clean up
-+        if self.tempfile_util:
-+            self.tempfile_util.clean()
-+        if self.tmpdir:
-+            rmtree(self.tmpdir)
-+
-         return True
-
-     def verify_plugins(self):
--- 
-2.4.3
-
-From a7a2dd8eb1791257f80fd2ae2993b06472690aea Mon Sep 17 00:00:00 2001
-From: "Bryn M. Reeves" <bmr@redhat.com>
-Date: Wed, 13 Jan 2016 10:57:59 +0000
-Subject: [PATCH] [sosreport] report correct final path with --build
-
-Ensure the correct path (in the system temporary directory) is
-reported when the --build option is used.
-
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/sosreport.py | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
-
-diff --git a/sos/sosreport.py b/sos/sosreport.py
-index bc7792a..f61ea4a 100644
---- a/sos/sosreport.py
-+++ b/sos/sosreport.py
-@@ -1496,7 +1496,9 @@ class SoSReport(object):
-             directory = self.archive.get_archive_path()
-             dir_name = os.path.basename(directory)
-             try:
--                os.rename(directory, os.path.join(self.sys_tmp, dir_name))
-+                final_dir = os.path.join(self.sys_tmp, dir_name)
-+                os.rename(directory, final_dir)
-+                directory = final_dir
-             except (OSError, IOError):
-                     print(_("Error moving directory: %s" % directory))
-                     return False
--- 
-2.4.3
-
diff --git a/SOURCES/sos-bz1291347-ceph-collect-var-lib-var-run.patch b/SOURCES/sos-bz1291347-ceph-collect-var-lib-var-run.patch
deleted file mode 100644
index 45d6ff9..0000000
--- a/SOURCES/sos-bz1291347-ceph-collect-var-lib-var-run.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-From 6b4b361c8b4814160d6fab2fb447f28957977e95 Mon Sep 17 00:00:00 2001
-From: Pavel Moravec <pmoravec@redhat.com>
-Date: Fri, 27 Nov 2015 12:43:33 +0100
-Subject: [PATCH] [ceph] Collect (parts of) /var/lib/ceph and /var/run/ceph
-
-Collect the two directories without some forbidden paths.
-
-Reorder self.add_forbidden_path(..) to have some logical ordering there.
-
-Resolves: #693
-
-Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
----
- sos/plugins/ceph.py | 7 ++++++-
- 1 file changed, 6 insertions(+), 1 deletion(-)
-
-diff --git a/sos/plugins/ceph.py b/sos/plugins/ceph.py
-index 6ccb930..10fee88 100644
---- a/sos/plugins/ceph.py
-+++ b/sos/plugins/ceph.py
-@@ -40,6 +40,8 @@ class Ceph(Plugin, RedHatPlugin, UbuntuPlugin):
-         self.add_copy_spec([
-             "/etc/ceph/",
-             "/var/log/ceph/",
-+            "/var/lib/ceph/",
-+            "/var/run/ceph/",
-             "/etc/calamari/",
-             "/var/log/calamari",
-             "/var/log/radosgw"
-@@ -58,7 +60,10 @@ class Ceph(Plugin, RedHatPlugin, UbuntuPlugin):
-         ])
- 
-         self.add_forbidden_path("/etc/ceph/*keyring")
--        self.add_forbidden_path("/var/lib/ceph/*/*keyring")
-         self.add_forbidden_path("/var/lib/ceph/*keyring")
-+        self.add_forbidden_path("/var/lib/ceph/*/*keyring")
-+        self.add_forbidden_path("/var/lib/ceph/*/*/*keyring")
-+        self.add_forbidden_path("/var/lib/ceph/osd/*")
-+        self.add_forbidden_path("/var/lib/ceph/osd/mon/*")
- 
- # vim: et ts=4 sw=4
--- 
-2.4.3
-
diff --git a/SOURCES/sos-bz1299603-omsa-chassis-summary-storage-controller.patch b/SOURCES/sos-bz1299603-omsa-chassis-summary-storage-controller.patch
new file mode 100644
index 0000000..bde0cf6
--- /dev/null
+++ b/SOURCES/sos-bz1299603-omsa-chassis-summary-storage-controller.patch
@@ -0,0 +1,33 @@
+From 6cda8aa3305695133df8dfb12405670953cd8df7 Mon Sep 17 00:00:00 2001
+From: Pavel Moravec <pmoravec@redhat.com>
+Date: Fri, 19 Aug 2016 23:18:26 +0200
+Subject: [PATCH] [omsa] add omreport storage controller
+
+Collect "omreport storage controller".
+
+Do not collect "omreport chassis summary" as it is invalid command.
+
+Resolves: #868.
+
+Signed-off-by: Charles Rose <charles_rose@dell.com>
+Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
+---
+ sos/plugins/omsa.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/sos/plugins/omsa.py b/sos/plugins/omsa.py
+index fa825c8..132e205 100644
+--- a/sos/plugins/omsa.py
++++ b/sos/plugins/omsa.py
+@@ -48,7 +48,7 @@ class omsa(Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin):
+             "{0} system events".format(self.omreport),
+             "{0} chassis info".format(self.omreport),
+             "{0} chassis biossetup".format(self.omreport),
+-            "{0} chassis summary".format(self.omreport),
++            "{0} storage controller".format(self.omreport),
+         ], timeout=30)
+ 
+ # vim: et ts=4 sw=4
+-- 
+2.4.11
+
diff --git a/SOURCES/sos-bz1302146-atomichost-info-policy-style.patch b/SOURCES/sos-bz1302146-atomichost-info-policy-style.patch
new file mode 100644
index 0000000..126e48d
--- /dev/null
+++ b/SOURCES/sos-bz1302146-atomichost-info-policy-style.patch
@@ -0,0 +1,142 @@
+From ff2820775597e6fc47bada2ce57b01f8cfd81af6 Mon Sep 17 00:00:00 2001
+From: "Bryn M. Reeves" <bmr@redhat.com>
+Date: Wed, 13 Jul 2016 12:45:36 +0100
+Subject: [PATCH 1/3] [atomichost] fix option list style
+
+Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
+---
+ sos/plugins/atomichost.py | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/sos/plugins/atomichost.py b/sos/plugins/atomichost.py
+index 46d12e3..ce30ac7 100644
+--- a/sos/plugins/atomichost.py
++++ b/sos/plugins/atomichost.py
+@@ -22,8 +22,9 @@ class AtomicHost(Plugin, RedHatPlugin):
+     """ Atomic Host """
+ 
+     plugin_name = "atomichost"
+-    option_list = [("info", "gather atomic info for each image",
+-                    "fast", False)]
++    option_list = [
++        ("info", "gather atomic info for each image", "fast", False)
++    ]
+ 
+     def check_enabled(self):
+         if not os.path.exists("/host/etc/system-release-cpe"):
+-- 
+2.4.11
+
+From 46da5439bb79f294dca8019293eecf3096e5b999 Mon Sep 17 00:00:00 2001
+From: "Bryn M. Reeves" <bmr@redhat.com>
+Date: Wed, 13 Jul 2016 12:47:06 +0100
+Subject: [PATCH 2/3] [atomichost] replace custom logic with
+ Policy.in_container()
+
+Don't reinvent the wheel by inspecting file system paths: rely on
+the existing policy class in_container() method.
+
+Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
+---
+ sos/plugins/atomichost.py | 5 +----
+ 1 file changed, 1 insertion(+), 4 deletions(-)
+
+diff --git a/sos/plugins/atomichost.py b/sos/plugins/atomichost.py
+index ce30ac7..a339557 100644
+--- a/sos/plugins/atomichost.py
++++ b/sos/plugins/atomichost.py
+@@ -27,10 +27,7 @@ class AtomicHost(Plugin, RedHatPlugin):
+     ]
+ 
+     def check_enabled(self):
+-        if not os.path.exists("/host/etc/system-release-cpe"):
+-            return False
+-        cpe = open("/host/etc/system-release-cpe", "r").readlines()
+-        return ':atomic-host' in cpe[0]
++        return self.policy().in_container()
+ 
+     def setup(self):
+         self.add_copy_spec("/etc/ostree/remotes.d")
+-- 
+2.4.11
+
+From e2d85366ef5b6f02e12e0ce353a0ccaa22ae8bbc Mon Sep 17 00:00:00 2001
+From: "Bryn M. Reeves" <bmr@redhat.com>
+Date: Wed, 13 Jul 2016 15:13:35 +0100
+Subject: [PATCH 3/3] [atomichost] improve 'atomic info' collection loop
+
+Remove redundant code from the loop that drives 'atomic info'
+collection and make the bracketing and indenting style match
+other plugins.
+
+Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
+---
+ sos/plugins/atomichost.py | 11 ++++++-----
+ 1 file changed, 6 insertions(+), 5 deletions(-)
+
+diff --git a/sos/plugins/atomichost.py b/sos/plugins/atomichost.py
+index a339557..9b53d56 100644
+--- a/sos/plugins/atomichost.py
++++ b/sos/plugins/atomichost.py
+@@ -34,8 +34,9 @@ class AtomicHost(Plugin, RedHatPlugin):
+         self.add_cmd_output("atomic host status")
+ 
+         if self.get_option('info'):
+-            images = self.get_command_output("docker images -q")
+-            for image in set(
+-                    images['output'].splitlines()):
+-                if image:
+-                    self.add_cmd_output("atomic info {0}".format(image))
++            # images output may have trailing whitespace
++            images = self.get_command_output("docker images -q").strip()
++            for image in set(images['output'].splitlines()):
++                self.add_cmd_output("atomic info {0}".format(image))
++
++# vim: set et ts=4 sw=4 :
+-- 
+2.4.11
+
+From b5e0e80ad784054fd2f4cdb8c6867982c0dd1c25 Mon Sep 17 00:00:00 2001
+From: "Bryn M. Reeves" <bmr@redhat.com>
+Date: Fri, 19 Aug 2016 15:33:34 +0100
+Subject: [PATCH] [atomichost] fix collection of 'docker info' output
+
+The loop that drives collection of 'docker info' output for each
+discovered Image ID incorrectly attempted to call strip() on the
+dictionary returned by get_command_output().
+
+Since the docker command does not produce leading or trailing
+whitespace this is redundant anyway: discard the other entries
+in the command dictionary and just split the result into distinct
+lines.
+
+Resolves: #853.
+
+Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
+---
+ sos/plugins/atomichost.py | 9 ++++++---
+ 1 file changed, 6 insertions(+), 3 deletions(-)
+
+diff --git a/sos/plugins/atomichost.py b/sos/plugins/atomichost.py
+index 9b53d56..7091a45 100644
+--- a/sos/plugins/atomichost.py
++++ b/sos/plugins/atomichost.py
+@@ -34,9 +34,12 @@ class AtomicHost(Plugin, RedHatPlugin):
+         self.add_cmd_output("atomic host status")
+ 
+         if self.get_option('info'):
+-            # images output may have trailing whitespace
+-            images = self.get_command_output("docker images -q").strip()
+-            for image in set(images['output'].splitlines()):
++            # The 'docker images' command may include duplicate rows of
++            # output (repeated "IMAGE ID" values). Use a set to filter
++            # these out and only obtain 'docker info' data once per image
++            # identifier.
++            images = self.get_command_output("docker images -q")['output']
++            for image in set(images.splitlines()):
+                 self.add_cmd_output("atomic info {0}".format(image))
+ 
+ # vim: set et ts=4 sw=4 :
+-- 
+2.4.11
+
diff --git a/SOURCES/sos-bz1351647-docker-more-data-expand-options.patch b/SOURCES/sos-bz1351647-docker-more-data-expand-options.patch
new file mode 100644
index 0000000..d16eff6
--- /dev/null
+++ b/SOURCES/sos-bz1351647-docker-more-data-expand-options.patch
@@ -0,0 +1,123 @@
+From 9d1344055948aecdce77d55893eeb46e288ecbcd Mon Sep 17 00:00:00 2001
+From: Jake Hunsaker <jhunsake@redhat.com>
+Date: Mon, 11 Jan 2016 10:11:21 -0500
+Subject: [PATCH] [docker] Gather more data and expand plugin options
+
+This patch changes the behavior of the docker plugin and collects a bit more
+data than before. In addition, it also adds 'docker-engine' to the package lists
+as that is the current name of the community release of Docker.
+
+Both 'docker version' and 'docker ps -a' output is now collected. Output from
+'docker version' help to validate a given docker binary and 'ps -a' output is
+collected to see all terminated, but still existing, containers present on the
+system. This is kept separate from normal 'ps' output to keep it simple to only
+quickly look at running containers.
+
+The output of 'docker inspect' is now collected as well, by default only for
+running containers.
+
+Further, plugin options have been changed:
+
+- 'logs' will now capture 'docker logs' output for all running containers.
+Previously this was provided by the 'all' option which would also always include
+terminated containers.
+
+- 'all' will now cause the plugin to also include terminated containers for
+'inspect' and 'logs' output. Note that by itself this option no longer captures any
+additional information.
+
+Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
+---
+ sos/plugins/docker.py | 49 ++++++++++++++++++++++++++++++++-----------------
+ 1 file changed, 32 insertions(+), 17 deletions(-)
+
+diff --git a/sos/plugins/docker.py b/sos/plugins/docker.py
+index 8c87bfa..452cf76 100644
+--- a/sos/plugins/docker.py
++++ b/sos/plugins/docker.py
+@@ -23,39 +23,54 @@ class Docker(Plugin):
+ 
+     plugin_name = 'docker'
+     profiles = ('virt',)
+-    docker_bin = "docker"
++    docker_cmd = "docker"
+ 
+-    option_list = [("all", "capture all container logs even the "
+-                    "terminated ones", 'fast', False)]
++    option_list = [
++        ("all", "enable capture for all containers, even containers "
++            "that have terminated", 'fast', False),
++        ("logs", "capture logs for running containers",
++            'fast', False)
++    ]
+ 
+     def setup(self):
+         self.add_copy_spec([
+             "/var/lib/docker/repositories-*"
+         ])
+ 
+-        self.add_cmd_output([
+-            "{0} info".format(self.docker_bin),
+-            "{0} ps".format(self.docker_bin),
+-            "{0} images".format(self.docker_bin)
+-        ])
++        for subcmd in ['info', 'ps', 'ps -a', 'images', 'version']:
++            self.add_cmd_output(
++                "{0} {1}".format(self.docker_cmd, subcmd)
++            )
++
+         self.add_journal(units="docker")
+ 
+-        ps_cmd = "{0} ps".format(self.docker_bin)
++        ps_cmd = "{0} ps -q".format(self.docker_cmd)
+         if self.get_option('all'):
+             ps_cmd = "{0} -a".format(ps_cmd)
+ 
+         result = self.get_command_output(ps_cmd)
+         if result['status'] == 0:
+-            for line in result['output'].splitlines()[1:]:
+-                container_id = line.split(" ")[0]
+-                self.add_cmd_output([
+-                    "{0} logs {1}".format(self.docker_bin, container_id)
+-                ])
++            containers = [c for c in result['output'].splitlines()]
++            for container in containers:
++                self.add_cmd_output(
++                    "{0} inspect {1}".format(
++                        self.docker_cmd,
++                        container
++                    )
++                )
++            if self.get_option('logs'):
++                for container in containers:
++                    self.add_cmd_output(
++                        "{0} logs {1}".format(
++                            self.docker_cmd,
++                            container
++                        )
++                    )
+ 
+ 
+ class RedHatDocker(Docker, RedHatPlugin):
+ 
+-    packages = ('docker', 'docker-io')
++    packages = ('docker', 'docker-latest', 'docker-io', 'docker-engine')
+ 
+     def setup(self):
+         super(RedHatDocker, self).setup()
+@@ -67,10 +82,10 @@ class RedHatDocker(Docker, RedHatPlugin):
+ 
+ class UbuntuDocker(Docker, UbuntuPlugin):
+ 
+-    packages = ('docker.io',)
++    packages = ('docker.io', 'docker-engine')
+ 
+     # Name collision with another package requires docker binary rename
+-    docker_bin = 'docker.io'
++    docker_cmd = 'docker.io'
+ 
+     def setup(self):
+         super(UbuntuDocker, self).setup()
+-- 
+2.4.11
+
diff --git a/SOURCES/sos-bz1353552-virtwho-plugin.patch b/SOURCES/sos-bz1353552-virtwho-plugin.patch
new file mode 100644
index 0000000..b7bb6af
--- /dev/null
+++ b/SOURCES/sos-bz1353552-virtwho-plugin.patch
@@ -0,0 +1,58 @@
+From ba2a2016a3f3c383b265a99deff8867d0d26ea56 Mon Sep 17 00:00:00 2001
+From: "Bryn M. Reeves" <bmr@redhat.com>
+Date: Thu, 7 Jul 2016 14:51:16 +0100
+Subject: [PATCH] [virtwho] add new plugin for virt-who agent
+
+Add a new plugin for the virtual guest ID reporting agent.
+
+RHBZ#1353552
+
+Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
+---
+ sos/plugins/virtwho.py | 34 ++++++++++++++++++++++++++++++++++
+ 1 file changed, 34 insertions(+)
+ create mode 100644 sos/plugins/virtwho.py
+
+diff --git a/sos/plugins/virtwho.py b/sos/plugins/virtwho.py
+new file mode 100644
+index 0000000..e5f3049
+--- /dev/null
++++ b/sos/plugins/virtwho.py
+@@ -0,0 +1,34 @@
++# This program is free software; you can redistribute it and/or modify
++# it under the terms of the GNU General Public License as published by
++# the Free Software Foundation; either version 2 of the License, or
++# (at your option) any later version.
++
++# This program is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++# GNU General Public License for more details.
++
++# You should have received a copy of the GNU General Public License
++# along with this program; if not, write to the Free Software
++# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
++
++from sos.plugins import Plugin, RedHatPlugin
++
++
++class VirtWho(Plugin, RedHatPlugin):
++    """Virt-Who agent
++    """
++
++    plugin_name = 'virtwho'
++    profiles = ('virt', 'system')
++    packages = ('virt-who',)
++
++    def setup(self):
++        self.add_copy_spec("/etc/virt-who.d/*")
++
++    def postproc(self):
++        self.do_path_regex_sub(r"\/etc\/virt-who\.d",
++                               r"(.*password=)(\S*)",
++                               r"\1********")
++
++# vim: set et ts=4 sw=4 :
+-- 
+2.4.11
+
diff --git a/SOURCES/sos-bz1356945-monit-copy-spec-string.patch b/SOURCES/sos-bz1356945-monit-copy-spec-string.patch
new file mode 100644
index 0000000..a2984fd
--- /dev/null
+++ b/SOURCES/sos-bz1356945-monit-copy-spec-string.patch
@@ -0,0 +1,34 @@
+From c746b80e91bbab8c40a0c8cc5607a221b2bed09f Mon Sep 17 00:00:00 2001
+From: "Bryn M. Reeves" <bmr@redhat.com>
+Date: Fri, 15 Jul 2016 12:02:40 +0100
+Subject: [PATCH] [monit] fix add_copy_spec() arguments
+
+Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
+---
+ sos/plugins/monit.py | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/sos/plugins/monit.py b/sos/plugins/monit.py
+index 825f770..9b7d30f 100644
+--- a/sos/plugins/monit.py
++++ b/sos/plugins/monit.py
+@@ -27,6 +27,7 @@ class Monit(Plugin, RedHatPlugin):
+     plugin_name = 'monit'
+ 
+     # Define configuration files
++    # FIXME: direct globs will fail in container environments.
+     monit_conf = glob("/etc/monit.d/*")
+     monit_conf.append("/etc/monit.conf")
+     monit_conf.append("/etc/monitrc")
+@@ -38,7 +39,7 @@ class Monit(Plugin, RedHatPlugin):
+ 
+     def setup(self):
+         self.add_cmd_output("monit status")
+-        self.add_copy_spec([self.monit_log, self.monit_conf])
++        self.add_copy_spec(self.monit_log + self.monit_conf)
+ 
+     def postproc(self):
+         # Post process the files included to scrub any
+-- 
+2.4.11
+
diff --git a/SOURCES/sos-bz1368393-nodejs-npm-plugins.patch b/SOURCES/sos-bz1368393-nodejs-npm-plugins.patch
new file mode 100644
index 0000000..5287a9c
--- /dev/null
+++ b/SOURCES/sos-bz1368393-nodejs-npm-plugins.patch
@@ -0,0 +1,162 @@
+From e720c04efdce3ec8dd8e726db22d5eebb47cb016 Mon Sep 17 00:00:00 2001
+From: Pavel Moravec <pmoravec@redhat.com>
+Date: Fri, 2 Sep 2016 11:57:16 +0200
+Subject: [PATCH 1/2] [nodejs] new plugin: get runtime info
+
+Resolves: #847.
+
+Signed-off-by: Tomas Tomecek <ttomecek@redhat.com>
+Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
+---
+ sos/plugins/nodejs.py | 43 +++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 43 insertions(+)
+ create mode 100644 sos/plugins/nodejs.py
+
+diff --git a/sos/plugins/nodejs.py b/sos/plugins/nodejs.py
+new file mode 100644
+index 0000000..3585ec9
+--- /dev/null
++++ b/sos/plugins/nodejs.py
+@@ -0,0 +1,43 @@
++# Copyright (C) 2016 Red Hat, Inc., Tomas Tomecek <ttomecek@redhat.com>
++
++# This program is free software; you can redistribute it and/or modify
++# it under the terms of the GNU General Public License as published by
++# the Free Software Foundation; either version 2 of the License, or
++# (at your option) any later version.
++
++# This program is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++# GNU General Public License for more details.
++
++# You should have received a copy of the GNU General Public License
++# along with this program; if not, write to the Free Software
++# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
++
++from sos.plugins import Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin, \
++    SuSEPlugin
++
++
++class NodeJS(Plugin, RedHatPlugin, SuSEPlugin):
++    """ Get runtime version of NodeJS """
++
++    plugin_name = 'nodejs'
++    profiles = ('system',)
++
++    packages = ('nodejs',)
++
++    def setup(self):
++        # we could get much more info with:
++        #   p = require("process"); console.log(p)
++        # unfortunately 'process' module is not available on 0.10
++        self.add_cmd_output("node -v", suggest_filename="nodejs-version")
++
++
++class NodeJSUbuntu(NodeJS, UbuntuPlugin, DebianPlugin):
++    """
++    Ubuntu/Debian require nodejs-legacy package in order to
++    have a node executable
++    """
++    packages = ('nodejs', 'nodejs-legacy')
++
++# vim: set et ts=4 sw=4 :
+-- 
+2.4.11
+
+From 470f62c658b37e1691cb87472a15880e9e4596a2 Mon Sep 17 00:00:00 2001
+From: Pavel Moravec <pmoravec@redhat.com>
+Date: Fri, 2 Sep 2016 11:59:04 +0200
+Subject: [PATCH 2/2] [npm] new plugin: get project modules and globally
+ installed modules
+
+New module for package manager npm for Node.js.
+
+The plugin collects list of globally installed modules and project modules.
+
+Resolves: #846.
+
+Signed-off-by: Tomas Tomecek <ttomecek@redhat.com>
+Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
+---
+ sos/plugins/npm.py | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 68 insertions(+)
+ create mode 100644 sos/plugins/npm.py
+
+diff --git a/sos/plugins/npm.py b/sos/plugins/npm.py
+new file mode 100644
+index 0000000..77464c2
+--- /dev/null
++++ b/sos/plugins/npm.py
+@@ -0,0 +1,68 @@
++# Copyright (C) 2016 Red Hat, Inc., Tomas Tomecek <ttomecek@redhat>
++
++# This program is free software; you can redistribute it and/or modify
++# it under the terms of the GNU General Public License as published by
++# the Free Software Foundation; either version 2 of the License, or
++# (at your option) any later version.
++
++# This program is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++# GNU General Public License for more details.
++
++# You should have received a copy of the GNU General Public License
++# along with this program; if not, write to the Free Software
++# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
++import os
++
++from sos.plugins import Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin, \
++    SuSEPlugin
++
++
++class Npm(Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin, SuSEPlugin):
++    """
++    Get info about available npm modules
++    """
++
++    requires_root = False
++    plugin_name = 'npm'
++    profiles = ('system',)
++    option_list = [("project_path",
++                    'List npm modules of a project specified by path',
++                    'fast',
++                    0)]
++
++    # in Fedora, Debian, Ubuntu and Suse the package is called npm
++    packages = ('npm',)
++
++    def _get_npm_output(self, cmd, filename, working_directory=None):
++        # stderr output is already part of the json, key "problems"
++        self.add_cmd_output(
++            cmd,
++            suggest_filename=filename,
++            stderr=False,
++            runat=working_directory
++        )
++
++    def setup(self):
++        if self.get_option("project_path") != 0:
++            project_path = os.path.abspath(os.path.expanduser(
++                self.get_option("project_path")))
++            self._get_npm_output("npm ls --json", "npm-ls-project",
++                                 working_directory=project_path)
++        self._get_npm_output("npm ls -g --json", "npm-ls-global")
++
++
++class NpmViaNodeJS(Npm):
++    """
++    some distribution methods don't provide 'npm' via npm package
++    """
++
++    # upstream doesn't have an npm package, it's just nodejs
++    # also in Fedora 24+ it is just nodejs, no npm package
++    packages = ('nodejs', )
++
++# TODO: in RHEL npm and nodejs is available via software collections
++#       this should be handled separately
++
++# vim: set et ts=4 sw=4 :
+-- 
+2.4.11
+
diff --git a/SOURCES/sos-bz1374152-networking-no-net-tools.patch b/SOURCES/sos-bz1374152-networking-no-net-tools.patch
new file mode 100644
index 0000000..11d43f4
--- /dev/null
+++ b/SOURCES/sos-bz1374152-networking-no-net-tools.patch
@@ -0,0 +1,74 @@
+From e62408838d08a962f1e1d6d8970b34ce1883a10c Mon Sep 17 00:00:00 2001
+From: Pavel Moravec <pmoravec@redhat.com>
+Date: Fri, 9 Sep 2016 09:21:23 +0200
+Subject: [PATCH 1/2] [reporting] replace six.PY2 to six.PY3 test
+
+Older versions of python-six package dont have six.PY2 variable.
+
+Replace it by six.PY3
+
+Resolves: #875.
+
+Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
+---
+ sos/reporting.py | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/sos/reporting.py b/sos/reporting.py
+index 23a5005..679284e 100644
+--- a/sos/reporting.py
++++ b/sos/reporting.py
+@@ -149,10 +149,10 @@ class PlainTextReport(object):
+                                         header, format_)
+         output = u'\n'.join(map(lambda i: (i if isinstance(i, six.text_type)
+                                            else six.u(i)), buf))
+-        if six.PY2:
+-            return output.encode('utf8')
+-        else:
++        if six.PY3:
+             return output
++        else:
++            return output.encode('utf8')
+ 
+     def process_subsection(self, section, key, header, format_):
+         if key in section:
+-- 
+2.4.11
+
+From 04435b412f14f6d7eaf0d2138d9f8c84414a8e9a Mon Sep 17 00:00:00 2001
+From: Pavel Moravec <pmoravec@redhat.com>
+Date: Fri, 9 Sep 2016 09:23:14 +0200
+Subject: [PATCH 2/2] [networking] plugin tracebacks when net-tools not
+ installed
+
+Move netstat_pkg assignment grepping for net-tools version into try
+block.
+
+It can be put to the existing block that will catch the exception -
+since if net-tools isn't present, we fallback to the default option
+of netstat command (if the command is ever present).
+
+Resolves: #876.
+
+Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
+---
+ sos/plugins/networking.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/sos/plugins/networking.py b/sos/plugins/networking.py
+index 93b8860..1c98b75 100644
+--- a/sos/plugins/networking.py
++++ b/sos/plugins/networking.py
+@@ -322,8 +322,8 @@ class RedHatNetworking(Networking, RedHatPlugin):
+ 
+     def setup(self):
+         # Handle change from -T to -W in Red Hat netstat 2.0 and greater.
+-        netstat_pkg = self.policy().package_manager.all_pkgs()['net-tools']
+         try:
++            netstat_pkg = self.policy().package_manager.all_pkgs()['net-tools']
+             # major version
+             if int(netstat_pkg['version'][0]) < 2:
+                 self.ns_wide = "-T"
+-- 
+2.4.11
+
diff --git a/SOURCES/sos-centos-branding.patch b/SOURCES/sos-centos-branding.patch
deleted file mode 100644
index 86ab010..0000000
--- a/SOURCES/sos-centos-branding.patch
+++ /dev/null
@@ -1,1288 +0,0 @@
-diff -uNrp sos-3.0.orig/po/af.po sos-3.0/po/af.po
---- sos-3.0.orig/po/af.po	2013-06-10 12:35:56.000000000 -0500
-+++ sos-3.0/po/af.po	2014-06-21 11:15:36.435724571 -0500
-@@ -168,7 +168,7 @@ msgid "Cannot upload to specified URL."
- msgstr ""
- 
- #: ../sos/policyredhat.py:399
--msgid "There was a problem uploading your report to Red Hat support."
-+msgid "There was a problem uploading your report to CentOS support."
- msgstr ""
- 
- #: ../sos/policyredhat.py:401
-diff -uNrp sos-3.0.orig/po/am.po sos-3.0/po/am.po
---- sos-3.0.orig/po/am.po	2013-06-10 12:35:56.000000000 -0500
-+++ sos-3.0/po/am.po	2014-06-21 11:15:36.436724563 -0500
-@@ -168,7 +168,7 @@ msgid "Cannot upload to specified URL."
- msgstr ""
- 
- #: ../sos/policyredhat.py:399
--msgid "There was a problem uploading your report to Red Hat support."
-+msgid "There was a problem uploading your report to CentOS support."
- msgstr ""
- 
- #: ../sos/policyredhat.py:401
-diff -uNrp sos-3.0.orig/po/ar.po sos-3.0/po/ar.po
---- sos-3.0.orig/po/ar.po	2013-06-10 12:35:56.000000000 -0500
-+++ sos-3.0/po/ar.po	2014-06-21 11:16:38.081245080 -0500
-@@ -179,8 +179,8 @@ msgid "Cannot upload to specified URL."
- msgstr "لا يمكن الرفع للعنوان المحدّد"
- 
- #: ../sos/policyredhat.py:399
--msgid "There was a problem uploading your report to Red Hat support."
--msgstr "صودفت مشكلة برفع تقريرك إلى دعم Red Hat. "
-+msgid "There was a problem uploading your report to CentOS support."
-+msgstr "صودفت مشكلة برفع تقريرك إلى دعم CentOS. "
- 
- #: ../sos/policyredhat.py:401
- #, python-format
-diff -uNrp sos-3.0.orig/po/as.po sos-3.0/po/as.po
---- sos-3.0.orig/po/as.po	2013-06-10 12:35:56.000000000 -0500
-+++ sos-3.0/po/as.po	2014-06-21 11:15:36.437724555 -0500
-@@ -85,11 +85,11 @@ msgid ""
- "No changes will be made to your system.\n"
- "\n"
- msgstr ""
--"এই সামগ্ৰীৰ সহায়ত যান্ত্ৰিক সামগ্ৰী আৰু Red Hat Enterprise Linux\n"
-+"এই সামগ্ৰীৰ সহায়ত যান্ত্ৰিক সামগ্ৰী আৰু CentOS Enterprise Linux\n"
- "প্ৰণালীৰ প্ৰতিষ্ঠা সম্পৰ্কে বিশদ তথ্য সংগ্ৰহ কৰা হ'ব ।\n"
- "তথ্য সংগ্ৰহৰ পিছত /tmp পঞ্জিকাৰ অধীন এটা আৰ্কাইভ নিৰ্মিত হয় ।\n"
- "এই আৰ্কাইভ আপুনি সহায়তা প্ৰতিনিধিৰ কাশত পঠায় দিব পাৰে ।\n"
--"Red Hat দ্বাৰা এই তথ্য অকল সমস্যাৰ কাৰণ নিৰ্ণয় কৰাৰ বাবে ব্যৱহাৰ কৰা হ'ব\n"
-+"CentOS দ্বাৰা এই তথ্য অকল সমস্যাৰ কাৰণ নিৰ্ণয় কৰাৰ বাবে ব্যৱহাৰ কৰা হ'ব\n"
- "আৰু ইয়াৰ গোপনীয়তা বজায় ৰাখা হ'ব ।\n"
- "\n"
- "এই কাম সম্পন্ন হ'বলৈ কিছু সময় ব্যয় হ'ব পাৰে ।\n"
-@@ -184,14 +184,14 @@ msgid "Cannot upload to specified URL."
- msgstr "উল্লিখিত URL-এ আপলোড কৰিবলৈ ব্যৰ্থ ।"
- 
- #: ../sos/policyredhat.py:399
--msgid "There was a problem uploading your report to Red Hat support."
--msgstr "আপোনাৰ ৰিপোৰ্টটি Red Hat সহায়তা ব্যৱস্থাত আপলোড কৰিবলৈ সমস্যা ।"
-+msgid "There was a problem uploading your report to CentOS support."
-+msgstr "আপোনাৰ ৰিপোৰ্টটি CentOS সহায়তা ব্যৱস্থাত আপলোড কৰিবলৈ সমস্যা ।"
- 
- #: ../sos/policyredhat.py:401
- #, fuzzy, python-format
- msgid "Your report was successfully uploaded to %s with name:"
- msgstr ""
--"আপোনাৰ প্ৰদত্ত ৰিপোৰ্ট সফলতাৰে সৈতে Red Hat-ৰ ftp সেৱকত নিম্নলিখিত নামত আপলোড "
-+"আপোনাৰ প্ৰদত্ত ৰিপোৰ্ট সফলতাৰে সৈতে CentOS-ৰ ftp সেৱকত নিম্নলিখিত নামত আপলোড "
- "কৰা হৈছে:"
- 
- #: ../sos/policyredhat.py:404
-diff -uNrp sos-3.0.orig/po/ast.po sos-3.0/po/ast.po
---- sos-3.0.orig/po/ast.po	2013-06-10 12:35:56.000000000 -0500
-+++ sos-3.0/po/ast.po	2014-06-21 11:17:08.318010034 -0500
-@@ -86,10 +86,10 @@ msgid ""
- "\n"
- msgstr ""
- "Esta utilidá recueyerá dalguna información detallada sobro'l\n"
--"hardware y la configuración del to sistema Red Hat Enterprise Linux.\n"
-+"hardware y la configuración del to sistema CentOS Enterprise Linux.\n"
- "La información recuéyese y críase un ficheru baxo /tmp.\n"
- "Ésti puede mandase al to representante de sofitu.\n"
--"Red Hat usará esta información pa diagnosticar el sistema\n"
-+"CentOS usará esta información pa diagnosticar el sistema\n"
- "únicamente y considerará esta información como confidencial.\n"
- "\n"
- "Esti procesu va llevar un tiempu pa completase.\n"
-@@ -184,14 +184,14 @@ msgid "Cannot upload to specified URL."
- msgstr "Nun se puede cargar a la URL especificada."
- 
- #: ../sos/policyredhat.py:399
--msgid "There was a problem uploading your report to Red Hat support."
-+msgid "There was a problem uploading your report to CentOS support."
- msgstr ""
--"Hebo un problema al cargar el to informe al equipu d'asistencia de Red Hat"
-+"Hebo un problema al cargar el to informe al equipu d'asistencia de CentOS"
- 
- #: ../sos/policyredhat.py:401
- #, fuzzy, python-format
- msgid "Your report was successfully uploaded to %s with name:"
--msgstr "El to informe cargóse bien a los sirvidores ftp e Red Hat col nome:"
-+msgstr "El to informe cargóse bien a los sirvidores ftp e CentOS col nome:"
- 
- #: ../sos/policyredhat.py:404
- msgid "Please communicate this name to your support representative."
-diff -uNrp sos-3.0.orig/po/be.po sos-3.0/po/be.po
---- sos-3.0.orig/po/be.po	2013-06-10 12:35:56.000000000 -0500
-+++ sos-3.0/po/be.po	2014-06-21 11:15:36.438724547 -0500
-@@ -168,7 +168,7 @@ msgid "Cannot upload to specified URL."
- msgstr ""
- 
- #: ../sos/policyredhat.py:399
--msgid "There was a problem uploading your report to Red Hat support."
-+msgid "There was a problem uploading your report to CentOS support."
- msgstr ""
- 
- #: ../sos/policyredhat.py:401
-diff -uNrp sos-3.0.orig/po/bg.po sos-3.0/po/bg.po
---- sos-3.0.orig/po/bg.po	2013-06-10 12:35:56.000000000 -0500
-+++ sos-3.0/po/bg.po	2014-06-21 11:15:36.439724539 -0500
-@@ -172,9 +172,9 @@ msgid "Cannot upload to specified URL."
- msgstr "Не може да се качи на посочения URL"
- 
- #: ../sos/policyredhat.py:399
--msgid "There was a problem uploading your report to Red Hat support."
-+msgid "There was a problem uploading your report to CentOS support."
- msgstr ""
--"Възникна проблем при качването на вашия отчет на проддръжката на Red Hat."
-+"Възникна проблем при качването на вашия отчет на проддръжката на CentOS."
- 
- #: ../sos/policyredhat.py:401
- #, python-format
-diff -uNrp sos-3.0.orig/po/bn_IN.po sos-3.0/po/bn_IN.po
---- sos-3.0.orig/po/bn_IN.po	2013-06-10 12:35:56.000000000 -0500
-+++ sos-3.0/po/bn_IN.po	2014-06-21 11:15:36.440724532 -0500
-@@ -184,8 +184,8 @@ msgid "Cannot upload to specified URL."
- msgstr "উল্লিখিত URL-এ আপলোড করতে ব্যর্থ।"
- 
- #: ../sos/policyredhat.py:399
--msgid "There was a problem uploading your report to Red Hat support."
--msgstr "আপনার রিপোর্টটি Red Hat সহায়তা ব্যবস্থায় আপলোড করতে সমস্যা।"
-+msgid "There was a problem uploading your report to CentOS support."
-+msgstr "আপনার রিপোর্টটি CentOS সহায়তা ব্যবস্থায় আপলোড করতে সমস্যা।"
- 
- #: ../sos/policyredhat.py:401
- #, python-format
-diff -uNrp sos-3.0.orig/po/bn.po sos-3.0/po/bn.po
---- sos-3.0.orig/po/bn.po	2013-06-10 12:35:56.000000000 -0500
-+++ sos-3.0/po/bn.po	2014-06-21 11:15:36.440724532 -0500
-@@ -168,7 +168,7 @@ msgid "Cannot upload to specified URL."
- msgstr ""
- 
- #: ../sos/policyredhat.py:399
--msgid "There was a problem uploading your report to Red Hat support."
-+msgid "There was a problem uploading your report to CentOS support."
- msgstr ""
- 
- #: ../sos/policyredhat.py:401
-diff -uNrp sos-3.0.orig/po/bs.po sos-3.0/po/bs.po
---- sos-3.0.orig/po/bs.po	2013-06-10 12:35:56.000000000 -0500
-+++ sos-3.0/po/bs.po	2014-06-21 11:15:36.441724524 -0500
-@@ -189,8 +189,8 @@ msgid "Cannot upload to specified URL."
- msgstr "Nije se mogao postaviti specificirani URL,"
- 
- #: ../sos/policyredhat.py:399
--msgid "There was a problem uploading your report to Red Hat support."
--msgstr "Bilo je problema u postavljanju vaseg izvjestaja na Red Hat podrsku. "
-+msgid "There was a problem uploading your report to CentOS support."
-+msgstr "Bilo je problema u postavljanju vaseg izvjestaja na CentOS podrsku. "
- 
- #: ../sos/policyredhat.py:401
- #, python-format
-diff -uNrp sos-3.0.orig/po/ca.po sos-3.0/po/ca.po
---- sos-3.0.orig/po/ca.po	2013-06-10 12:35:56.000000000 -0500
-+++ sos-3.0/po/ca.po	2014-06-21 11:15:36.442724516 -0500
-@@ -194,8 +194,8 @@ msgid "Cannot upload to specified URL."
- msgstr "No es pot pujar a la URL especificada."
- 
- #: ../sos/policyredhat.py:399
--msgid "There was a problem uploading your report to Red Hat support."
--msgstr "Hi ha hagut un problema en pujar l'informe al manteniment de Red Hat."
-+msgid "There was a problem uploading your report to CentOS support."
-+msgstr "Hi ha hagut un problema en pujar l'informe al manteniment de CentOS."
- 
- #: ../sos/policyredhat.py:401
- #, python-format
-diff -uNrp sos-3.0.orig/po/cs.po sos-3.0/po/cs.po
---- sos-3.0.orig/po/cs.po	2013-06-10 12:35:56.000000000 -0500
-+++ sos-3.0/po/cs.po	2014-06-21 11:15:36.443724508 -0500
-@@ -183,8 +183,8 @@ msgid "Cannot upload to specified URL."
- msgstr "Nelze uložit na uvedené URL."
- 
- #: ../sos/policyredhat.py:399
--msgid "There was a problem uploading your report to Red Hat support."
--msgstr "Při odesílání zprávy do firmy Red Hat vznikla chyba."
-+msgid "There was a problem uploading your report to CentOS support."
-+msgstr "Při odesílání zprávy do firmy CentOS vznikla chyba."
- 
- #: ../sos/policyredhat.py:401
- #, python-format
-diff -uNrp sos-3.0.orig/po/cy.po sos-3.0/po/cy.po
---- sos-3.0.orig/po/cy.po	2013-06-10 12:35:56.000000000 -0500
-+++ sos-3.0/po/cy.po	2014-06-21 11:15:36.443724508 -0500
-@@ -168,7 +168,7 @@ msgid "Cannot upload to specified URL."
- msgstr ""
- 
- #: ../sos/policyredhat.py:399
--msgid "There was a problem uploading your report to Red Hat support."
-+msgid "There was a problem uploading your report to CentOS support."
- msgstr ""
- 
- #: ../sos/policyredhat.py:401
-diff -uNrp sos-3.0.orig/po/da.po sos-3.0/po/da.po
---- sos-3.0.orig/po/da.po	2013-06-10 12:35:56.000000000 -0500
-+++ sos-3.0/po/da.po	2014-06-21 11:15:36.444724501 -0500
-@@ -184,9 +184,9 @@ msgid "Cannot upload to specified URL."
- msgstr "Kan ikke overføre til den angivne URL."
- 
- #: ../sos/policyredhat.py:399
--msgid "There was a problem uploading your report to Red Hat support."
-+msgid "There was a problem uploading your report to CentOS support."
- msgstr ""
--"Der opstod et problem under overførsel af din rapport til Red Hat-support."
-+"Der opstod et problem under overførsel af din rapport til CentOS-support."
- 
- #: ../sos/policyredhat.py:401
- #, python-format
-diff -uNrp sos-3.0.orig/po/de_CH.po sos-3.0/po/de_CH.po
---- sos-3.0.orig/po/de_CH.po	2013-06-10 12:35:56.000000000 -0500
-+++ sos-3.0/po/de_CH.po	2014-06-21 11:15:36.444724501 -0500
-@@ -87,10 +87,10 @@ msgid ""
- "\n"
- msgstr ""
- "Dieses Dienstprogramm sammelt einige detaillierte Informationen\n"
--"zur Hardware und Einrichtung Ihres Red Hat Enterprise Linux Systems.\n"
-+"zur Hardware und Einrichtung Ihres CentOS Enterprise Linux Systems.\n"
- "Die Informationen werden gesammelt und in einem Archiv unter /tmp\n"
- "zusammengefasst, welches Sie an einen Support-Vertreter schicken\n"
--"können. Red Hat verwendet diese Informationen AUSSCHLIESSLICH zu\n"
-+"können. CentOS verwendet diese Informationen AUSSCHLIESSLICH zu\n"
- "Diagnosezwecken und behandelt sie als vertrauliche Informationen.\n"
- "\n"
- "Die Fertigstellung dieses Prozesses kann eine Weile dauern.\n"
-@@ -188,14 +188,14 @@ msgid "Cannot upload to specified URL."
- msgstr "Hochladen zu speziellem URL scheiterte."
- 
- #: ../sos/policyredhat.py:399
--msgid "There was a problem uploading your report to Red Hat support."
--msgstr "Beim Hochladen Ihres Berichts zum Red Hat Support trat ein Fehler auf."
-+msgid "There was a problem uploading your report to CentOS support."
-+msgstr "Beim Hochladen Ihres Berichts zum CentOS Support trat ein Fehler auf."
- 
- #: ../sos/policyredhat.py:401
- #, fuzzy, python-format
- msgid "Your report was successfully uploaded to %s with name:"
- msgstr ""
--"Ihr Bericht wurde erfolgreich auf den Red Hat FTP-Server hochgeladen, mit "
-+"Ihr Bericht wurde erfolgreich auf den CentOS FTP-Server hochgeladen, mit "
- "dem Namen:"
- 
- #: ../sos/policyredhat.py:404
-diff -uNrp sos-3.0.orig/po/de.po sos-3.0/po/de.po
---- sos-3.0.orig/po/de.po	2013-06-10 12:35:56.000000000 -0500
-+++ sos-3.0/po/de.po	2014-06-21 11:15:36.445724493 -0500
-@@ -191,8 +191,8 @@ msgid "Cannot upload to specified URL."
- msgstr "Hochladen zu spezieller URL scheiterte."
- 
- #: ../sos/policyredhat.py:399
--msgid "There was a problem uploading your report to Red Hat support."
--msgstr "Beim Hochladen Ihres Berichts zum Red Hat Support trat ein Fehler auf."
-+msgid "There was a problem uploading your report to CentOS support."
-+msgstr "Beim Hochladen Ihres Berichts zum CentOS Support trat ein Fehler auf."
- 
- #: ../sos/policyredhat.py:401
- #, python-format
-diff -uNrp sos-3.0.orig/po/el.po sos-3.0/po/el.po
---- sos-3.0.orig/po/el.po	2013-06-10 12:35:56.000000000 -0500
-+++ sos-3.0/po/el.po	2014-06-21 11:15:36.445724493 -0500
-@@ -84,10 +84,10 @@ msgid ""
- "\n"
- msgstr ""
- "Αυτό το εργαλείο θα συγκετρώσει ορισμένες πληροφορίες για τον υπολογιστή σας "
--"και την εγκατάσταση του Red Hat Enterprise Linux συστήματος.\n"
-+"και την εγκατάσταση του CentOS Enterprise Linux συστήματος.\n"
- "Οι πληροφορίες συγκετρώνονται και το archive δημιουργήται στο\n"
- "/tmp,το οποίο και μπορείτε να στείλετε σε έναν αντιπρόσωπο υποστήριξης.\n"
--"Η Red Hat θα χρησιμοποιήσει αυτα τα δεδομένα ΜΟΝΟ για διαγνωστικούς σκοπούς\n"
-+"Η CentOS θα χρησιμοποιήσει αυτα τα δεδομένα ΜΟΝΟ για διαγνωστικούς σκοπούς\n"
- "και θα παραμείνουν εμπιστευτηκά.\n"
- "\n"
- 
-@@ -180,8 +180,8 @@ msgid "Cannot upload to specified URL."
- msgstr "Δεν είναι δυνατό το upload στο καθορισμένο URL."
- 
- #: ../sos/policyredhat.py:399
--msgid "There was a problem uploading your report to Red Hat support."
--msgstr "Υπήρξε ένα πρόβλημα κατα το upload της αναφοράς σας στην Red Hat."
-+msgid "There was a problem uploading your report to CentOS support."
-+msgstr "Υπήρξε ένα πρόβλημα κατα το upload της αναφοράς σας στην CentOS."
- 
- #: ../sos/policyredhat.py:401
- #, python-format
-diff -uNrp sos-3.0.orig/po/en_GB.po sos-3.0/po/en_GB.po
---- sos-3.0.orig/po/en_GB.po	2013-06-10 12:35:56.000000000 -0500
-+++ sos-3.0/po/en_GB.po	2014-06-21 11:15:36.446724485 -0500
-@@ -83,10 +83,10 @@ msgid ""
- "\n"
- msgstr ""
- "This utility will collect some detailed  information about the\n"
--"hardware and  setup of your  Red Hat Enterprise Linux  system.\n"
-+"hardware and  setup of your  CentOS Enterprise Linux  system.\n"
- "The information is collected and an archive is  packaged under\n"
- "/tmp, which you can send to a support representative.\n"
--"Red Hat will use this information for diagnostic purposes ONLY\n"
-+"CentOS will use this information for diagnostic purposes ONLY\n"
- "and it will be considered confidential information.\n"
- "\n"
- "This process may take a while to complete.\n"
-@@ -181,14 +181,14 @@ msgid "Cannot upload to specified URL."
- msgstr "Cannot upload to specified URL."
- 
- #: ../sos/policyredhat.py:399
--msgid "There was a problem uploading your report to Red Hat support."
--msgstr "There was a problem uploading your report to Red Hat support."
-+msgid "There was a problem uploading your report to CentOS support."
-+msgstr "There was a problem uploading your report to CentOS support."
- 
- #: ../sos/policyredhat.py:401
- #, fuzzy, python-format
- msgid "Your report was successfully uploaded to %s with name:"
- msgstr ""
--"Your report was successfully uploaded to Red Hat's ftp server with name:"
-+"Your report was successfully uploaded to CentOS's ftp server with name:"
- 
- #: ../sos/policyredhat.py:404
- msgid "Please communicate this name to your support representative."
-diff -uNrp sos-3.0.orig/po/en.po sos-3.0/po/en.po
---- sos-3.0.orig/po/en.po	2013-06-10 12:35:56.000000000 -0500
-+++ sos-3.0/po/en.po	2014-06-21 11:15:36.446724485 -0500
-@@ -168,7 +168,7 @@ msgid "Cannot upload to specified URL."
- msgstr ""
- 
- #: ../sos/policyredhat.py:399
--msgid "There was a problem uploading your report to Red Hat support."
-+msgid "There was a problem uploading your report to CentOS support."
- msgstr ""
- 
- #: ../sos/policyredhat.py:401
-diff -uNrp sos-3.0.orig/po/es.po sos-3.0/po/es.po
---- sos-3.0.orig/po/es.po	2013-06-10 12:35:56.000000000 -0500
-+++ sos-3.0/po/es.po	2014-06-21 11:17:24.153886936 -0500
-@@ -189,9 +189,9 @@ msgid "Cannot upload to specified URL."
- msgstr "No se puede cargar a la URL especificada."
- 
- #: ../sos/policyredhat.py:399
--msgid "There was a problem uploading your report to Red Hat support."
-+msgid "There was a problem uploading your report to CentOS support."
- msgstr ""
--"Hubo un problema al cargar su reporte al equipo de asistencia de Red Hat"
-+"Hubo un problema al cargar su reporte al equipo de asistencia de CentOS"
- 
- #: ../sos/policyredhat.py:401
- #, python-format
-diff -uNrp sos-3.0.orig/po/et.po sos-3.0/po/et.po
---- sos-3.0.orig/po/et.po	2013-06-10 12:35:56.000000000 -0500
-+++ sos-3.0/po/et.po	2014-06-21 11:15:36.447724477 -0500
-@@ -169,7 +169,7 @@ msgid "Cannot upload to specified URL."
- msgstr ""
- 
- #: ../sos/policyredhat.py:399
--msgid "There was a problem uploading your report to Red Hat support."
-+msgid "There was a problem uploading your report to CentOS support."
- msgstr ""
- 
- #: ../sos/policyredhat.py:401
-diff -uNrp sos-3.0.orig/po/eu_ES.po sos-3.0/po/eu_ES.po
---- sos-3.0.orig/po/eu_ES.po	2013-06-10 12:35:56.000000000 -0500
-+++ sos-3.0/po/eu_ES.po	2014-06-21 11:15:36.448724469 -0500
-@@ -168,7 +168,7 @@ msgid "Cannot upload to specified URL."
- msgstr ""
- 
- #: ../sos/policyredhat.py:399
--msgid "There was a problem uploading your report to Red Hat support."
-+msgid "There was a problem uploading your report to CentOS support."
- msgstr ""
- 
- #: ../sos/policyredhat.py:401
-diff -uNrp sos-3.0.orig/po/fa.po sos-3.0/po/fa.po
---- sos-3.0.orig/po/fa.po	2013-06-10 12:35:56.000000000 -0500
-+++ sos-3.0/po/fa.po	2014-06-21 11:15:36.448724469 -0500
-@@ -168,7 +168,7 @@ msgid "Cannot upload to specified URL."
- msgstr ""
- 
- #: ../sos/policyredhat.py:399
--msgid "There was a problem uploading your report to Red Hat support."
-+msgid "There was a problem uploading your report to CentOS support."
- msgstr ""
- 
- #: ../sos/policyredhat.py:401
-diff -uNrp sos-3.0.orig/po/fi.po sos-3.0/po/fi.po
---- sos-3.0.orig/po/fi.po	2013-06-10 12:35:56.000000000 -0500
-+++ sos-3.0/po/fi.po	2014-06-21 11:17:38.280777198 -0500
-@@ -179,8 +179,8 @@ msgid "Cannot upload to specified URL."
- msgstr "Annettuun osoitteeseen ei voida lähettää."
- 
- #: ../sos/policyredhat.py:399
--msgid "There was a problem uploading your report to Red Hat support."
--msgstr "Raportin lähettämisessä Red Hatin käyttötukeen oli ongelmia."
-+msgid "There was a problem uploading your report to CentOS support."
-+msgstr "Raportin lähettämisessä CentOSin käyttötukeen oli ongelmia."
- 
- #: ../sos/policyredhat.py:401
- #, python-format
-diff -uNrp sos-3.0.orig/po/fr.po sos-3.0/po/fr.po
---- sos-3.0.orig/po/fr.po	2013-06-10 12:35:56.000000000 -0500
-+++ sos-3.0/po/fr.po	2014-06-21 11:15:36.449724462 -0500
-@@ -188,10 +188,10 @@ msgid "Cannot upload to specified URL."
- msgstr "Impossible de le télécharger vers l'URL spécifié."
- 
- #: ../sos/policyredhat.py:399
--msgid "There was a problem uploading your report to Red Hat support."
-+msgid "There was a problem uploading your report to CentOS support."
- msgstr ""
- "Une erreur s'est produite lors du téléchargement de votre rapport vers le "
--"support Red Hat."
-+"support CentOS."
- 
- #: ../sos/policyredhat.py:401
- #, python-format
-diff -uNrp sos-3.0.orig/po/gl.po sos-3.0/po/gl.po
---- sos-3.0.orig/po/gl.po	2013-06-10 12:35:56.000000000 -0500
-+++ sos-3.0/po/gl.po	2014-06-21 11:15:36.450724454 -0500
-@@ -168,7 +168,7 @@ msgid "Cannot upload to specified URL."
- msgstr ""
- 
- #: ../sos/policyredhat.py:399
--msgid "There was a problem uploading your report to Red Hat support."
-+msgid "There was a problem uploading your report to CentOS support."
- msgstr ""
- 
- #: ../sos/policyredhat.py:401
-diff -uNrp sos-3.0.orig/po/gu.po sos-3.0/po/gu.po
---- sos-3.0.orig/po/gu.po	2013-06-10 12:35:56.000000000 -0500
-+++ sos-3.0/po/gu.po	2014-06-21 11:15:36.450724454 -0500
-@@ -186,8 +186,8 @@ msgid "Cannot upload to specified URL."
- msgstr "સ્પષ્ટ કરેલ URL અપલોડ કરી શકતા નથી."
- 
- #: ../sos/policyredhat.py:399
--msgid "There was a problem uploading your report to Red Hat support."
--msgstr "તમારા અહેવાલને Red Hat આધારમાં અપલોડ કરવામાં સમસ્યા હતી."
-+msgid "There was a problem uploading your report to CentOS support."
-+msgstr "તમારા અહેવાલને CentOS આધારમાં અપલોડ કરવામાં સમસ્યા હતી."
- 
- #: ../sos/policyredhat.py:401
- #, python-format
-diff -uNrp sos-3.0.orig/po/he.po sos-3.0/po/he.po
---- sos-3.0.orig/po/he.po	2013-06-10 12:35:56.000000000 -0500
-+++ sos-3.0/po/he.po	2014-06-21 11:15:36.450724454 -0500
-@@ -169,7 +169,7 @@ msgid "Cannot upload to specified URL."
- msgstr ""
- 
- #: ../sos/policyredhat.py:399
--msgid "There was a problem uploading your report to Red Hat support."
-+msgid "There was a problem uploading your report to CentOS support."
- msgstr ""
- 
- #: ../sos/policyredhat.py:401
-diff -uNrp sos-3.0.orig/po/hi.po sos-3.0/po/hi.po
---- sos-3.0.orig/po/hi.po	2013-06-10 12:35:56.000000000 -0500
-+++ sos-3.0/po/hi.po	2014-06-21 11:15:36.451724446 -0500
-@@ -187,8 +187,8 @@ msgid "Cannot upload to specified URL."
- msgstr "निर्दिष्ट URL अपलोड नहीं कर सकता है."
- 
- #: ../sos/policyredhat.py:399
--msgid "There was a problem uploading your report to Red Hat support."
--msgstr "आपके रिपोर्ट को Red Hat समर्थन में अपलोड करने में समस्या थी."
-+msgid "There was a problem uploading your report to CentOS support."
-+msgstr "आपके रिपोर्ट को CentOS समर्थन में अपलोड करने में समस्या थी."
- 
- #: ../sos/policyredhat.py:401
- #, python-format
-diff -uNrp sos-3.0.orig/po/hr.po sos-3.0/po/hr.po
---- sos-3.0.orig/po/hr.po	2013-06-10 12:35:56.000000000 -0500
-+++ sos-3.0/po/hr.po	2014-06-21 11:15:36.451724446 -0500
-@@ -170,7 +170,7 @@ msgid "Cannot upload to specified URL."
- msgstr ""
- 
- #: ../sos/policyredhat.py:399
--msgid "There was a problem uploading your report to Red Hat support."
-+msgid "There was a problem uploading your report to CentOS support."
- msgstr ""
- 
- #: ../sos/policyredhat.py:401
-diff -uNrp sos-3.0.orig/po/hu.po sos-3.0/po/hu.po
---- sos-3.0.orig/po/hu.po	2013-06-10 12:35:56.000000000 -0500
-+++ sos-3.0/po/hu.po	2014-06-21 11:15:36.452724438 -0500
-@@ -180,8 +180,8 @@ msgid "Cannot upload to specified URL."
- msgstr "Nem lehet az URL-re feltölteni."
- 
- #: ../sos/policyredhat.py:399
--msgid "There was a problem uploading your report to Red Hat support."
--msgstr "A jelentést a Red Hat támogatáshoz feltöltvén baj történt."
-+msgid "There was a problem uploading your report to CentOS support."
-+msgstr "A jelentést a CentOS támogatáshoz feltöltvén baj történt."
- 
- #: ../sos/policyredhat.py:401
- #, python-format
-diff -uNrp sos-3.0.orig/po/hy.po sos-3.0/po/hy.po
---- sos-3.0.orig/po/hy.po	2013-06-10 12:35:56.000000000 -0500
-+++ sos-3.0/po/hy.po	2014-06-21 11:15:36.452724438 -0500
-@@ -168,7 +168,7 @@ msgid "Cannot upload to specified URL."
- msgstr ""
- 
- #: ../sos/policyredhat.py:399
--msgid "There was a problem uploading your report to Red Hat support."
-+msgid "There was a problem uploading your report to CentOS support."
- msgstr ""
- 
- #: ../sos/policyredhat.py:401
-diff -uNrp sos-3.0.orig/po/id.po sos-3.0/po/id.po
---- sos-3.0.orig/po/id.po	2013-06-10 12:35:56.000000000 -0500
-+++ sos-3.0/po/id.po	2014-06-21 11:15:36.453724430 -0500
-@@ -171,7 +171,7 @@ msgid "Cannot upload to specified URL."
- msgstr ""
- 
- #: ../sos/policyredhat.py:399
--msgid "There was a problem uploading your report to Red Hat support."
-+msgid "There was a problem uploading your report to CentOS support."
- msgstr ""
- 
- #: ../sos/policyredhat.py:401
-diff -uNrp sos-3.0.orig/po/ilo.po sos-3.0/po/ilo.po
---- sos-3.0.orig/po/ilo.po	2013-06-10 12:35:56.000000000 -0500
-+++ sos-3.0/po/ilo.po	2014-06-21 11:15:36.453724430 -0500
-@@ -168,7 +168,7 @@ msgid "Cannot upload to specified URL."
- msgstr ""
- 
- #: ../sos/policyredhat.py:399
--msgid "There was a problem uploading your report to Red Hat support."
-+msgid "There was a problem uploading your report to CentOS support."
- msgstr ""
- 
- #: ../sos/policyredhat.py:401
-diff -uNrp sos-3.0.orig/po/is.po sos-3.0/po/is.po
---- sos-3.0.orig/po/is.po	2013-06-10 12:35:56.000000000 -0500
-+++ sos-3.0/po/is.po	2014-06-21 11:15:36.453724430 -0500
-@@ -168,7 +168,7 @@ msgid "Cannot upload to specified URL."
- msgstr ""
- 
- #: ../sos/policyredhat.py:399
--msgid "There was a problem uploading your report to Red Hat support."
-+msgid "There was a problem uploading your report to CentOS support."
- msgstr ""
- 
- #: ../sos/policyredhat.py:401
-diff -uNrp sos-3.0.orig/po/it.po sos-3.0/po/it.po
---- sos-3.0.orig/po/it.po	2013-06-10 12:35:56.000000000 -0500
-+++ sos-3.0/po/it.po	2014-06-21 11:15:36.454724423 -0500
-@@ -181,7 +181,7 @@ msgid "Cannot upload to specified URL."
- msgstr "Impossibile inviare all'URL specificato."
- 
- #: ../sos/policyredhat.py:399
--msgid "There was a problem uploading your report to Red Hat support."
-+msgid "There was a problem uploading your report to CentOS support."
- msgstr ""
- "Si è verificato un problema nell'inviare il report al supporto tecnico Red "
- "Hat."
-diff -uNrp sos-3.0.orig/po/ja.po sos-3.0/po/ja.po
---- sos-3.0.orig/po/ja.po	2013-06-10 12:35:56.000000000 -0500
-+++ sos-3.0/po/ja.po	2014-06-21 11:15:36.454724423 -0500
-@@ -185,8 +185,8 @@ msgid "Cannot upload to specified URL."
- msgstr "指定された URL にアップロードできません。"
- 
- #: ../sos/policyredhat.py:399
--msgid "There was a problem uploading your report to Red Hat support."
--msgstr "レポートを Red Hat サポートにアップロードするのに問題がありました。"
-+msgid "There was a problem uploading your report to CentOS support."
-+msgstr "レポートを CentOS サポートにアップロードするのに問題がありました。"
- 
- #: ../sos/policyredhat.py:401
- #, python-format
-diff -uNrp sos-3.0.orig/po/ka.po sos-3.0/po/ka.po
---- sos-3.0.orig/po/ka.po	2013-06-10 12:35:56.000000000 -0500
-+++ sos-3.0/po/ka.po	2014-06-21 11:15:36.455724415 -0500
-@@ -168,7 +168,7 @@ msgid "Cannot upload to specified URL."
- msgstr ""
- 
- #: ../sos/policyredhat.py:399
--msgid "There was a problem uploading your report to Red Hat support."
-+msgid "There was a problem uploading your report to CentOS support."
- msgstr ""
- 
- #: ../sos/policyredhat.py:401
-diff -uNrp sos-3.0.orig/po/kn.po sos-3.0/po/kn.po
---- sos-3.0.orig/po/kn.po	2013-06-10 12:35:56.000000000 -0500
-+++ sos-3.0/po/kn.po	2014-06-21 11:15:36.455724415 -0500
-@@ -185,9 +185,9 @@ msgid "Cannot upload to specified URL."
- msgstr "ಸೂಚಿಸಲಾದ URL ಅನ್ನು ಅಪ್‌ಲೋಡ್ ಮಾಡಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ."
- 
- #: ../sos/policyredhat.py:399
--msgid "There was a problem uploading your report to Red Hat support."
-+msgid "There was a problem uploading your report to CentOS support."
- msgstr ""
--"ನಿಮ್ಮ ವರದಿಯನ್ನು Red Hat ಬೆಂಬಲದ ಸ್ಥಳಕ್ಕೆ ಅಪ್‌ಲೋಡ್ ಮಾಡುವಲ್ಲಿ ಒಂದು ತೊಂದರೆ ಉಂಟಾಗಿದೆ."
-+"ನಿಮ್ಮ ವರದಿಯನ್ನು CentOS ಬೆಂಬಲದ ಸ್ಥಳಕ್ಕೆ ಅಪ್‌ಲೋಡ್ ಮಾಡುವಲ್ಲಿ ಒಂದು ತೊಂದರೆ ಉಂಟಾಗಿದೆ."
- 
- #: ../sos/policyredhat.py:401
- #, python-format
-diff -uNrp sos-3.0.orig/po/ko.po sos-3.0/po/ko.po
---- sos-3.0.orig/po/ko.po	2013-06-10 12:35:56.000000000 -0500
-+++ sos-3.0/po/ko.po	2014-06-21 11:17:58.331621414 -0500
-@@ -84,10 +84,10 @@ msgid ""
- "No changes will be made to your system.\n"
- "\n"
- msgstr ""
--"이 유틸리티는 Red Hat Enterprise Linux 시스템의 하드웨어와 \n"
-+"이 유틸리티는 CentOS Enterprise Linux 시스템의 하드웨어와 \n"
- "시스템 설정 사항에 대한 상세 정보를 수집하게 됩니다. 수집된 \n"
- "정보는 지원 담당자에게 보낼 수 있도록 /tmp 디렉토리 안에 \n"
--"아카이브로 저장됩니다. Red Hat은 이 정보를 문제 해결 목적으로만 사용하며 기"
-+"아카이브로 저장됩니다. CentOS은 이 정보를 문제 해결 목적으로만 사용하며 기"
- "밀 정보로 \n"
- "취급할 것입니다. \n"
- "\n"
-@@ -183,8 +183,8 @@ msgid "Cannot upload to specified URL."
- msgstr "지정된 URL에서 업로드할 수 없습니다."
- 
- #: ../sos/policyredhat.py:399
--msgid "There was a problem uploading your report to Red Hat support."
--msgstr "리포트를 Red Hat 지원 센터로 업로드하는 데 문제가 발생했습니다."
-+msgid "There was a problem uploading your report to CentOS support."
-+msgstr "리포트를 CentOS 지원 센터로 업로드하는 데 문제가 발생했습니다."
- 
- #: ../sos/policyredhat.py:401
- #, python-format
-diff -uNrp sos-3.0.orig/po/ku.po sos-3.0/po/ku.po
---- sos-3.0.orig/po/ku.po	2013-06-10 12:35:56.000000000 -0500
-+++ sos-3.0/po/ku.po	2014-06-21 11:15:36.456724407 -0500
-@@ -168,7 +168,7 @@ msgid "Cannot upload to specified URL."
- msgstr ""
- 
- #: ../sos/policyredhat.py:399
--msgid "There was a problem uploading your report to Red Hat support."
-+msgid "There was a problem uploading your report to CentOS support."
- msgstr ""
- 
- #: ../sos/policyredhat.py:401
-diff -uNrp sos-3.0.orig/po/lo.po sos-3.0/po/lo.po
---- sos-3.0.orig/po/lo.po	2013-06-10 12:35:56.000000000 -0500
-+++ sos-3.0/po/lo.po	2014-06-21 11:15:36.457724399 -0500
-@@ -168,7 +168,7 @@ msgid "Cannot upload to specified URL."
- msgstr ""
- 
- #: ../sos/policyredhat.py:399
--msgid "There was a problem uploading your report to Red Hat support."
-+msgid "There was a problem uploading your report to CentOS support."
- msgstr ""
- 
- #: ../sos/policyredhat.py:401
-diff -uNrp sos-3.0.orig/po/lt.po sos-3.0/po/lt.po
---- sos-3.0.orig/po/lt.po	2013-06-10 12:35:56.000000000 -0500
-+++ sos-3.0/po/lt.po	2014-06-21 11:15:36.457724399 -0500
-@@ -170,7 +170,7 @@ msgid "Cannot upload to specified URL."
- msgstr ""
- 
- #: ../sos/policyredhat.py:399
--msgid "There was a problem uploading your report to Red Hat support."
-+msgid "There was a problem uploading your report to CentOS support."
- msgstr ""
- 
- #: ../sos/policyredhat.py:401
-diff -uNrp sos-3.0.orig/po/lv.po sos-3.0/po/lv.po
---- sos-3.0.orig/po/lv.po	2013-06-10 12:35:56.000000000 -0500
-+++ sos-3.0/po/lv.po	2014-06-21 11:15:36.458724392 -0500
-@@ -170,7 +170,7 @@ msgid "Cannot upload to specified URL."
- msgstr ""
- 
- #: ../sos/policyredhat.py:399
--msgid "There was a problem uploading your report to Red Hat support."
-+msgid "There was a problem uploading your report to CentOS support."
- msgstr ""
- 
- #: ../sos/policyredhat.py:401
-diff -uNrp sos-3.0.orig/po/mk.po sos-3.0/po/mk.po
---- sos-3.0.orig/po/mk.po	2013-06-10 12:35:56.000000000 -0500
-+++ sos-3.0/po/mk.po	2014-06-21 11:15:36.459724384 -0500
-@@ -168,7 +168,7 @@ msgid "Cannot upload to specified URL."
- msgstr ""
- 
- #: ../sos/policyredhat.py:399
--msgid "There was a problem uploading your report to Red Hat support."
-+msgid "There was a problem uploading your report to CentOS support."
- msgstr ""
- 
- #: ../sos/policyredhat.py:401
-diff -uNrp sos-3.0.orig/po/ml.po sos-3.0/po/ml.po
---- sos-3.0.orig/po/ml.po	2013-06-10 12:35:56.000000000 -0500
-+++ sos-3.0/po/ml.po	2014-06-21 11:15:36.459724384 -0500
-@@ -183,8 +183,8 @@ msgid "Cannot upload to specified URL."
- msgstr "നല്‍കിയിരിക്കുന്ന URL-ലേക്ക് ഫയല്‍ അപ്ലോഡ് ചെയ്യുവാന്‍ സാധ്യമായില്ല "
- 
- #: ../sos/policyredhat.py:399
--msgid "There was a problem uploading your report to Red Hat support."
--msgstr "Red Hat-ലേക്ക് നിങ്ങളുടെ റിപ്പോറ്‍ട്ട് അയയ്ക്കുന്നതില്‍ ഏതോ പ്റശ്നം ഉണ്ടായിരിക്കുന്നു."
-+msgid "There was a problem uploading your report to CentOS support."
-+msgstr "CentOS-ലേക്ക് നിങ്ങളുടെ റിപ്പോറ്‍ട്ട് അയയ്ക്കുന്നതില്‍ ഏതോ പ്റശ്നം ഉണ്ടായിരിക്കുന്നു."
- 
- #: ../sos/policyredhat.py:401
- #, python-format
-diff -uNrp sos-3.0.orig/po/mr.po sos-3.0/po/mr.po
---- sos-3.0.orig/po/mr.po	2013-06-10 12:35:56.000000000 -0500
-+++ sos-3.0/po/mr.po	2014-06-21 11:15:36.460724376 -0500
-@@ -184,8 +184,8 @@ msgid "Cannot upload to specified URL."
- msgstr "निर्देशीत URL अपलोड करण्यास अशक्य."
- 
- #: ../sos/policyredhat.py:399
--msgid "There was a problem uploading your report to Red Hat support."
--msgstr "तुमचा अहवाल Red Hat सपोर्टकडे पाठवतेवेळी अडचण आढळली."
-+msgid "There was a problem uploading your report to CentOS support."
-+msgstr "तुमचा अहवाल CentOS सपोर्टकडे पाठवतेवेळी अडचण आढळली."
- 
- #: ../sos/policyredhat.py:401
- #, python-format
-diff -uNrp sos-3.0.orig/po/ms.po sos-3.0/po/ms.po
---- sos-3.0.orig/po/ms.po	2013-06-10 12:35:56.000000000 -0500
-+++ sos-3.0/po/ms.po	2014-06-21 11:15:36.461724368 -0500
-@@ -168,7 +168,7 @@ msgid "Cannot upload to specified URL."
- msgstr ""
- 
- #: ../sos/policyredhat.py:399
--msgid "There was a problem uploading your report to Red Hat support."
-+msgid "There was a problem uploading your report to CentOS support."
- msgstr ""
- 
- #: ../sos/policyredhat.py:401
-diff -uNrp sos-3.0.orig/po/my.po sos-3.0/po/my.po
---- sos-3.0.orig/po/my.po	2013-06-10 12:35:56.000000000 -0500
-+++ sos-3.0/po/my.po	2014-06-21 11:15:36.461724368 -0500
-@@ -168,7 +168,7 @@ msgid "Cannot upload to specified URL."
- msgstr ""
- 
- #: ../sos/policyredhat.py:399
--msgid "There was a problem uploading your report to Red Hat support."
-+msgid "There was a problem uploading your report to CentOS support."
- msgstr ""
- 
- #: ../sos/policyredhat.py:401
-diff -uNrp sos-3.0.orig/po/nb.po sos-3.0/po/nb.po
---- sos-3.0.orig/po/nb.po	2013-06-10 12:35:56.000000000 -0500
-+++ sos-3.0/po/nb.po	2014-06-21 11:15:36.462724360 -0500
-@@ -170,7 +170,7 @@ msgid "Cannot upload to specified URL."
- msgstr "Kan ikke laste opp til oppgitt URL."
- 
- #: ../sos/policyredhat.py:399
--msgid "There was a problem uploading your report to Red Hat support."
-+msgid "There was a problem uploading your report to CentOS support."
- msgstr ""
- 
- #: ../sos/policyredhat.py:401
-diff -uNrp sos-3.0.orig/po/nds.po sos-3.0/po/nds.po
---- sos-3.0.orig/po/nds.po	2013-06-10 12:35:56.000000000 -0500
-+++ sos-3.0/po/nds.po	2014-06-21 11:15:36.462724360 -0500
-@@ -165,7 +165,7 @@ msgid "Cannot upload to specified URL."
- msgstr ""
- 
- #: ../sos/policyredhat.py:399
--msgid "There was a problem uploading your report to Red Hat support."
-+msgid "There was a problem uploading your report to CentOS support."
- msgstr ""
- 
- #: ../sos/policyredhat.py:401
-diff -uNrp sos-3.0.orig/po/nl.po sos-3.0/po/nl.po
---- sos-3.0.orig/po/nl.po	2013-06-10 12:35:56.000000000 -0500
-+++ sos-3.0/po/nl.po	2014-06-21 11:15:36.462724360 -0500
-@@ -183,9 +183,9 @@ msgid "Cannot upload to specified URL."
- msgstr "Kan niet naar de opgegeven URL uploaden."
- 
- #: ../sos/policyredhat.py:399
--msgid "There was a problem uploading your report to Red Hat support."
-+msgid "There was a problem uploading your report to CentOS support."
- msgstr ""
--"Er trad een probleem op bij het uploaden van jouw rapport naar Red Hat "
-+"Er trad een probleem op bij het uploaden van jouw rapport naar CentOS "
- "support."
- 
- #: ../sos/policyredhat.py:401
-diff -uNrp sos-3.0.orig/po/nn.po sos-3.0/po/nn.po
---- sos-3.0.orig/po/nn.po	2013-06-10 12:35:56.000000000 -0500
-+++ sos-3.0/po/nn.po	2014-06-21 11:15:36.462724360 -0500
-@@ -169,7 +169,7 @@ msgid "Cannot upload to specified URL."
- msgstr ""
- 
- #: ../sos/policyredhat.py:399
--msgid "There was a problem uploading your report to Red Hat support."
-+msgid "There was a problem uploading your report to CentOS support."
- msgstr ""
- 
- #: ../sos/policyredhat.py:401
-diff -uNrp sos-3.0.orig/po/nso.po sos-3.0/po/nso.po
---- sos-3.0.orig/po/nso.po	2013-06-10 12:35:56.000000000 -0500
-+++ sos-3.0/po/nso.po	2014-06-21 11:15:36.463724353 -0500
-@@ -168,7 +168,7 @@ msgid "Cannot upload to specified URL."
- msgstr ""
- 
- #: ../sos/policyredhat.py:399
--msgid "There was a problem uploading your report to Red Hat support."
-+msgid "There was a problem uploading your report to CentOS support."
- msgstr ""
- 
- #: ../sos/policyredhat.py:401
-diff -uNrp sos-3.0.orig/po/or.po sos-3.0/po/or.po
---- sos-3.0.orig/po/or.po	2013-06-10 12:35:56.000000000 -0500
-+++ sos-3.0/po/or.po	2014-06-21 11:15:36.463724353 -0500
-@@ -188,8 +188,8 @@ msgid "Cannot upload to specified URL."
- msgstr "ଉଲ୍ଲିଖିତ URL କୁ ଧାରଣ କରିପାରିବେ ନାହିଁ।"
- 
- #: ../sos/policyredhat.py:399
--msgid "There was a problem uploading your report to Red Hat support."
--msgstr "Red Hat ସହାୟତାରେ ଆପଣଙ୍କର ବିବରଣୀକୁ ଧାରଣ କରିବାରେ ସମସ୍ୟା ଦୋଇଥିଲା।"
-+msgid "There was a problem uploading your report to CentOS support."
-+msgstr "CentOS ସହାୟତାରେ ଆପଣଙ୍କର ବିବରଣୀକୁ ଧାରଣ କରିବାରେ ସମସ୍ୟା ଦୋଇଥିଲା।"
- 
- #: ../sos/policyredhat.py:401
- #, python-format
-diff -uNrp sos-3.0.orig/po/pa.po sos-3.0/po/pa.po
---- sos-3.0.orig/po/pa.po	2013-06-10 12:35:56.000000000 -0500
-+++ sos-3.0/po/pa.po	2014-06-21 11:15:36.463724353 -0500
-@@ -184,8 +184,8 @@ msgid "Cannot upload to specified URL."
- msgstr "ਦਿੱਤੇ URL ਤੇ ਅੱਪਲੋਡ ਨਹੀਂ ਕਰ ਸਕਦਾ।"
- 
- #: ../sos/policyredhat.py:399
--msgid "There was a problem uploading your report to Red Hat support."
--msgstr "ਤੁਹਾਡੀ ਰਿਪੋਰਟ ਨੂੰ Red Hat ਸਹਿਯੋਗ ਤੇ ਅੱਪਲੋਡ ਕਰਨ ਵੇਲੇ ਗਲਤੀ ਆਈ ਹੈ।"
-+msgid "There was a problem uploading your report to CentOS support."
-+msgstr "ਤੁਹਾਡੀ ਰਿਪੋਰਟ ਨੂੰ CentOS ਸਹਿਯੋਗ ਤੇ ਅੱਪਲੋਡ ਕਰਨ ਵੇਲੇ ਗਲਤੀ ਆਈ ਹੈ।"
- 
- #: ../sos/policyredhat.py:401
- #, python-format
-diff -uNrp sos-3.0.orig/po/pl.po sos-3.0/po/pl.po
---- sos-3.0.orig/po/pl.po	2013-06-10 12:35:56.000000000 -0500
-+++ sos-3.0/po/pl.po	2014-06-21 11:15:36.463724353 -0500
-@@ -179,10 +179,10 @@ msgid "Cannot upload to specified URL."
- msgstr "Nie można wysłać na podany adres URL."
- 
- #: ../sos/policyredhat.py:399
--msgid "There was a problem uploading your report to Red Hat support."
-+msgid "There was a problem uploading your report to CentOS support."
- msgstr ""
- "Wystąpił problem podczas wysyłania raportu do wsparcia technicznego firmy "
--"Red Hat."
-+"CentOS."
- 
- #: ../sos/policyredhat.py:401
- #, python-format
-diff -uNrp sos-3.0.orig/po/pt_BR.po sos-3.0/po/pt_BR.po
---- sos-3.0.orig/po/pt_BR.po	2013-06-10 12:35:56.000000000 -0500
-+++ sos-3.0/po/pt_BR.po	2014-06-21 11:15:36.463724353 -0500
-@@ -182,8 +182,8 @@ msgid "Cannot upload to specified URL."
- msgstr "Não foi possível enviar para a URL especificada."
- 
- #: ../sos/policyredhat.py:399
--msgid "There was a problem uploading your report to Red Hat support."
--msgstr "Houve um problema ao enviar o seu relatório para o suporte da Red Hat."
-+msgid "There was a problem uploading your report to CentOS support."
-+msgstr "Houve um problema ao enviar o seu relatório para o suporte da CentOS."
- 
- #: ../sos/policyredhat.py:401
- #, python-format
-diff -uNrp sos-3.0.orig/po/pt.po sos-3.0/po/pt.po
---- sos-3.0.orig/po/pt.po	2013-06-10 12:35:56.000000000 -0500
-+++ sos-3.0/po/pt.po	2014-06-21 11:15:36.463724353 -0500
-@@ -185,8 +185,8 @@ msgid "Cannot upload to specified URL."
- msgstr "Não foi possível submeter para o URL especificado."
- 
- #: ../sos/policyredhat.py:399
--msgid "There was a problem uploading your report to Red Hat support."
--msgstr "Ocorreu um erro ao submeter o seu relatório para o suporte Red Hat."
-+msgid "There was a problem uploading your report to CentOS support."
-+msgstr "Ocorreu um erro ao submeter o seu relatório para o suporte CentOS."
- 
- #: ../sos/policyredhat.py:401
- #, python-format
-diff -uNrp sos-3.0.orig/po/ro.po sos-3.0/po/ro.po
---- sos-3.0.orig/po/ro.po	2013-06-10 12:35:56.000000000 -0500
-+++ sos-3.0/po/ro.po	2014-06-21 11:15:36.464724345 -0500
-@@ -168,7 +168,7 @@ msgid "Cannot upload to specified URL."
- msgstr ""
- 
- #: ../sos/policyredhat.py:399
--msgid "There was a problem uploading your report to Red Hat support."
-+msgid "There was a problem uploading your report to CentOS support."
- msgstr ""
- 
- #: ../sos/policyredhat.py:401
-diff -uNrp sos-3.0.orig/po/ru.po sos-3.0/po/ru.po
---- sos-3.0.orig/po/ru.po	2013-06-10 12:35:56.000000000 -0500
-+++ sos-3.0/po/ru.po	2014-06-21 11:15:36.464724345 -0500
-@@ -186,9 +186,9 @@ msgid "Cannot upload to specified URL."
- msgstr "Не удалось отправить файл."
- 
- #: ../sos/policyredhat.py:399
--msgid "There was a problem uploading your report to Red Hat support."
-+msgid "There was a problem uploading your report to CentOS support."
- msgstr ""
--"Произошла ошибка при попытке отправить отчёт в службу поддержки Red Hat."
-+"Произошла ошибка при попытке отправить отчёт в службу поддержки CentOS."
- 
- #: ../sos/policyredhat.py:401
- #, python-format
-diff -uNrp sos-3.0.orig/po/si.po sos-3.0/po/si.po
---- sos-3.0.orig/po/si.po	2013-06-10 12:35:56.000000000 -0500
-+++ sos-3.0/po/si.po	2014-06-21 11:15:36.464724345 -0500
-@@ -85,11 +85,11 @@ msgid ""
- "No changes will be made to your system.\n"
- "\n"
- msgstr ""
--"මෙම උපයෝගි තාවය දෘඩාංග පිළිබදව සවිස්තරාත්මක තොරතුරු රැස්කරණ අතර ඔබගේ  Red Hat "
-+"මෙම උපයෝගි තාවය දෘඩාංග පිළිබදව සවිස්තරාත්මක තොරතුරු රැස්කරණ අතර ඔබගේ  CentOS "
- "Enterprise Linux  පද්ධතිය පිහිටවනු ලැබේ.\n"
- "රැස් කළ තොරතුරු සහ සංරක්‍ෂකය /tmp යටතේ ඇසුරුම් ගත කර ඇති අතර ඔබට එය සහායක නියෝජිත වෙත "
- "යැවිය හැක.\n"
--"Red Hat මෙම තොරතුරු  භාවිතා කරන්නේ දෝෂ විනිශ්චය පමණක් වන අතර එම තොරතුරු රහසිගත තොරතුරු "
-+"CentOS මෙම තොරතුරු  භාවිතා කරන්නේ දෝෂ විනිශ්චය පමණක් වන අතර එම තොරතුරු රහසිගත තොරතුරු "
- "ලෙස සළකණු ලබයි.\n"
- "\n"
- "මෙම ක්‍රියාව නිම වීමට වේලාවක් ගතවනු ඇත.\n"
-@@ -184,13 +184,13 @@ msgid "Cannot upload to specified URL."
- msgstr "දක්වන ලඳ URL වෙත ලබා දිය නොහැක."
- 
- #: ../sos/policyredhat.py:399
--msgid "There was a problem uploading your report to Red Hat support."
--msgstr "ඔබගේ වාර්තාව Red Hat සහය වෙතට ලබා දිමේදි දෝෂයල් ඇති විය."
-+msgid "There was a problem uploading your report to CentOS support."
-+msgstr "ඔබගේ වාර්තාව CentOS සහය වෙතට ලබා දිමේදි දෝෂයල් ඇති විය."
- 
- #: ../sos/policyredhat.py:401
- #, fuzzy, python-format
- msgid "Your report was successfully uploaded to %s with name:"
--msgstr "ඔබගේ වාර්තාව සාර්තකව Red Hat's ftp සේවාදායකයට ලබාදුන් අතර නම වූයේ:"
-+msgstr "ඔබගේ වාර්තාව සාර්තකව CentOS's ftp සේවාදායකයට ලබාදුන් අතර නම වූයේ:"
- 
- #: ../sos/policyredhat.py:404
- msgid "Please communicate this name to your support representative."
-diff -uNrp sos-3.0.orig/po/sk.po sos-3.0/po/sk.po
---- sos-3.0.orig/po/sk.po	2013-06-10 12:35:56.000000000 -0500
-+++ sos-3.0/po/sk.po	2014-06-21 11:15:36.464724345 -0500
-@@ -182,8 +182,8 @@ msgid "Cannot upload to specified URL."
- msgstr "Nie je možné odoslať na zadanú adresu URL."
- 
- #: ../sos/policyredhat.py:399
--msgid "There was a problem uploading your report to Red Hat support."
--msgstr "Nastal problém pri odosielaní vašej správy na podporu Red Hat."
-+msgid "There was a problem uploading your report to CentOS support."
-+msgstr "Nastal problém pri odosielaní vašej správy na podporu CentOS."
- 
- #: ../sos/policyredhat.py:401
- #, python-format
-diff -uNrp sos-3.0.orig/po/sl.po sos-3.0/po/sl.po
---- sos-3.0.orig/po/sl.po	2013-06-10 12:35:56.000000000 -0500
-+++ sos-3.0/po/sl.po	2014-06-21 11:15:36.464724345 -0500
-@@ -170,7 +170,7 @@ msgid "Cannot upload to specified URL."
- msgstr ""
- 
- #: ../sos/policyredhat.py:399
--msgid "There was a problem uploading your report to Red Hat support."
-+msgid "There was a problem uploading your report to CentOS support."
- msgstr ""
- 
- #: ../sos/policyredhat.py:401
-diff -uNrp sos-3.0.orig/po/sos.pot sos-3.0/po/sos.pot
---- sos-3.0.orig/po/sos.pot	2013-06-10 12:35:56.000000000 -0500
-+++ sos-3.0/po/sos.pot	2014-06-21 11:15:36.464724345 -0500
-@@ -169,7 +169,7 @@ msgid "Cannot upload to specified URL."
- msgstr ""
- 
- #: ../sos/policyredhat.py:399
--msgid "There was a problem uploading your report to Red Hat support."
-+msgid "There was a problem uploading your report to CentOS support."
- msgstr ""
- 
- #: ../sos/policyredhat.py:401
-diff -uNrp sos-3.0.orig/po/sq.po sos-3.0/po/sq.po
---- sos-3.0.orig/po/sq.po	2013-06-10 12:35:56.000000000 -0500
-+++ sos-3.0/po/sq.po	2014-06-21 11:15:36.464724345 -0500
-@@ -168,7 +168,7 @@ msgid "Cannot upload to specified URL."
- msgstr ""
- 
- #: ../sos/policyredhat.py:399
--msgid "There was a problem uploading your report to Red Hat support."
-+msgid "There was a problem uploading your report to CentOS support."
- msgstr ""
- 
- #: ../sos/policyredhat.py:401
-diff -uNrp sos-3.0.orig/po/sr@latin.po sos-3.0/po/sr@latin.po
---- sos-3.0.orig/po/sr@latin.po	2013-06-10 12:35:56.000000000 -0500
-+++ sos-3.0/po/sr@latin.po	2014-06-21 11:15:36.465724337 -0500
-@@ -182,8 +182,8 @@ msgid "Cannot upload to specified URL."
- msgstr "Ne mogu da pošaljem na navedeni URL."
- 
- #: ../sos/policyredhat.py:399
--msgid "There was a problem uploading your report to Red Hat support."
--msgstr "Pojavio se problem pri slanju vašeg izveštaja Red Hat podršci."
-+msgid "There was a problem uploading your report to CentOS support."
-+msgstr "Pojavio se problem pri slanju vašeg izveštaja CentOS podršci."
- 
- #: ../sos/policyredhat.py:401
- #, python-format
-diff -uNrp sos-3.0.orig/po/sr.po sos-3.0/po/sr.po
---- sos-3.0.orig/po/sr.po	2013-06-10 12:35:56.000000000 -0500
-+++ sos-3.0/po/sr.po	2014-06-21 11:15:36.465724337 -0500
-@@ -182,8 +182,8 @@ msgid "Cannot upload to specified URL."
- msgstr "Не могу да пошаљем на наведени УРЛ."
- 
- #: ../sos/policyredhat.py:399
--msgid "There was a problem uploading your report to Red Hat support."
--msgstr "Појавио се проблем при слању вашег извештаја Red Hat подршци."
-+msgid "There was a problem uploading your report to CentOS support."
-+msgstr "Појавио се проблем при слању вашег извештаја CentOS подршци."
- 
- #: ../sos/policyredhat.py:401
- #, python-format
-diff -uNrp sos-3.0.orig/po/sv.po sos-3.0/po/sv.po
---- sos-3.0.orig/po/sv.po	2013-06-10 12:35:56.000000000 -0500
-+++ sos-3.0/po/sv.po	2014-06-21 11:15:36.465724337 -0500
-@@ -185,8 +185,8 @@ msgid "Cannot upload to specified URL."
- msgstr "Kan inte skicka till angiven URL."
- 
- #: ../sos/policyredhat.py:399
--msgid "There was a problem uploading your report to Red Hat support."
--msgstr "Ett problem uppstod när din rapport skickades till Red Hat support."
-+msgid "There was a problem uploading your report to CentOS support."
-+msgstr "Ett problem uppstod när din rapport skickades till CentOS support."
- 
- #: ../sos/policyredhat.py:401
- #, python-format
-diff -uNrp sos-3.0.orig/po/ta.po sos-3.0/po/ta.po
---- sos-3.0.orig/po/ta.po	2013-06-10 12:35:56.000000000 -0500
-+++ sos-3.0/po/ta.po	2014-06-21 11:15:36.465724337 -0500
-@@ -188,8 +188,8 @@ msgid "Cannot upload to specified URL."
- msgstr "குறிப்பிட்ட இணைய முகவரியில் ஏற்ற முடியவில்லை."
- 
- #: ../sos/policyredhat.py:399
--msgid "There was a problem uploading your report to Red Hat support."
--msgstr "உங்கள் அறிக்கையை Red Hat சேவைக்கு அனுப்புவதில் சிக்கல்."
-+msgid "There was a problem uploading your report to CentOS support."
-+msgstr "உங்கள் அறிக்கையை CentOS சேவைக்கு அனுப்புவதில் சிக்கல்."
- 
- #: ../sos/policyredhat.py:401
- #, python-format
-diff -uNrp sos-3.0.orig/po/te.po sos-3.0/po/te.po
---- sos-3.0.orig/po/te.po	2013-06-10 12:35:56.000000000 -0500
-+++ sos-3.0/po/te.po	2014-06-21 11:15:36.465724337 -0500
-@@ -185,8 +185,8 @@ msgid "Cannot upload to specified URL."
- msgstr "తెలుపబడిన URLకు అప్‌లోడ్ చేయలేదు."
- 
- #: ../sos/policyredhat.py:399
--msgid "There was a problem uploading your report to Red Hat support."
--msgstr "మీ సమస్యను Red Hat మద్దతునకు అప్‌లోడు చేయుటలో వొక సమస్యవుంది."
-+msgid "There was a problem uploading your report to CentOS support."
-+msgstr "మీ సమస్యను CentOS మద్దతునకు అప్‌లోడు చేయుటలో వొక సమస్యవుంది."
- 
- #: ../sos/policyredhat.py:401
- #, python-format
-diff -uNrp sos-3.0.orig/po/th.po sos-3.0/po/th.po
---- sos-3.0.orig/po/th.po	2013-06-10 12:35:56.000000000 -0500
-+++ sos-3.0/po/th.po	2014-06-21 11:18:12.876508348 -0500
-@@ -84,9 +84,9 @@ msgid ""
- "\n"
- msgstr ""
- "เครื่องมือนี้จะเก็บข้อมูลโดยละเอียดเกี่ยวกับฮาร์ดแวร์และการตั้งค่า\n"
--"ระบบ Red Hat Enterprise Linux ของคุณ ข้อมูลจะถูกเก็บและ\n"
-+"ระบบ CentOS Enterprise Linux ของคุณ ข้อมูลจะถูกเก็บและ\n"
- "สร้างเป็นไฟล์ที่ /tmp ซึ่งคุณสามารถส่งไปยังผู้สนับสนุนได้\n"
--"Red Hat จะใช้ข้อมูลนี้ในการแก้ไขปัญหาเท่านั้น และจะถือว่าเป็น\n"
-+"CentOS จะใช้ข้อมูลนี้ในการแก้ไขปัญหาเท่านั้น และจะถือว่าเป็น\n"
- "ความลับ\n"
- "\n"
- "กระบวนการนี้อาจจะใช้เวลาสักครู่ในการทำงาน จะไม่มีการแก้ไข\n"
-@@ -180,13 +180,13 @@ msgid "Cannot upload to specified URL."
- msgstr "ไม่สามารถอัพโหลดไปยัง URL ที่ระบุ"
- 
- #: ../sos/policyredhat.py:399
--msgid "There was a problem uploading your report to Red Hat support."
--msgstr "มีปัญหาในการอัพโหลดรายงานของคุณไปยังฝ่ายสนับสนุน Red Hat"
-+msgid "There was a problem uploading your report to CentOS support."
-+msgstr "มีปัญหาในการอัพโหลดรายงานของคุณไปยังฝ่ายสนับสนุน CentOS"
- 
- #: ../sos/policyredhat.py:401
- #, fuzzy, python-format
- msgid "Your report was successfully uploaded to %s with name:"
--msgstr "รายงานของคุณได้ถูกส่งไปยังเซิร์ฟเวอร์ ftp ของ Red Hat ในชื่อ:"
-+msgstr "รายงานของคุณได้ถูกส่งไปยังเซิร์ฟเวอร์ ftp ของ CentOS ในชื่อ:"
- 
- #: ../sos/policyredhat.py:404
- msgid "Please communicate this name to your support representative."
-diff -uNrp sos-3.0.orig/po/tr.po sos-3.0/po/tr.po
---- sos-3.0.orig/po/tr.po	2013-06-10 12:35:56.000000000 -0500
-+++ sos-3.0/po/tr.po	2014-06-21 11:15:36.466724329 -0500
-@@ -185,8 +185,8 @@ msgid "Cannot upload to specified URL."
- msgstr "Belirtilen URL 'ye yükleme yapılamadı."
- 
- #: ../sos/policyredhat.py:399
--msgid "There was a problem uploading your report to Red Hat support."
--msgstr "Raporunuz Red Hat desteğe yüklenirken bir sorunla karşılaşıldı."
-+msgid "There was a problem uploading your report to CentOS support."
-+msgstr "Raporunuz CentOS desteğe yüklenirken bir sorunla karşılaşıldı."
- 
- #: ../sos/policyredhat.py:401
- #, python-format
-diff -uNrp sos-3.0.orig/po/uk.po sos-3.0/po/uk.po
---- sos-3.0.orig/po/uk.po	2013-06-10 12:35:56.000000000 -0500
-+++ sos-3.0/po/uk.po	2014-06-21 11:15:36.466724329 -0500
-@@ -183,8 +183,8 @@ msgid "Cannot upload to specified URL."
- msgstr "Не вдається надіслати файл."
- 
- #: ../sos/policyredhat.py:399
--msgid "There was a problem uploading your report to Red Hat support."
--msgstr "Виникла помилка при спробі надіслати звіт до служби підтримки Red Hat."
-+msgid "There was a problem uploading your report to CentOS support."
-+msgstr "Виникла помилка при спробі надіслати звіт до служби підтримки CentOS."
- 
- #: ../sos/policyredhat.py:401
- #, python-format
-diff -uNrp sos-3.0.orig/po/ur.po sos-3.0/po/ur.po
---- sos-3.0.orig/po/ur.po	2013-06-10 12:35:56.000000000 -0500
-+++ sos-3.0/po/ur.po	2014-06-21 11:15:36.466724329 -0500
-@@ -168,7 +168,7 @@ msgid "Cannot upload to specified URL."
- msgstr ""
- 
- #: ../sos/policyredhat.py:399
--msgid "There was a problem uploading your report to Red Hat support."
-+msgid "There was a problem uploading your report to CentOS support."
- msgstr ""
- 
- #: ../sos/policyredhat.py:401
-diff -uNrp sos-3.0.orig/po/vi.po sos-3.0/po/vi.po
---- sos-3.0.orig/po/vi.po	2013-06-10 12:35:56.000000000 -0500
-+++ sos-3.0/po/vi.po	2014-06-21 11:15:36.466724329 -0500
-@@ -169,7 +169,7 @@ msgid "Cannot upload to specified URL."
- msgstr ""
- 
- #: ../sos/policyredhat.py:399
--msgid "There was a problem uploading your report to Red Hat support."
-+msgid "There was a problem uploading your report to CentOS support."
- msgstr ""
- 
- #: ../sos/policyredhat.py:401
-diff -uNrp sos-3.0.orig/po/zh_CN.po sos-3.0/po/zh_CN.po
---- sos-3.0.orig/po/zh_CN.po	2013-06-10 12:35:56.000000000 -0500
-+++ sos-3.0/po/zh_CN.po	2014-06-21 11:15:36.466724329 -0500
-@@ -184,7 +184,7 @@ msgid "Cannot upload to specified URL."
- msgstr "无法上传到指定的网址。"
- 
- #: ../sos/policyredhat.py:399
--msgid "There was a problem uploading your report to Red Hat support."
-+msgid "There was a problem uploading your report to CentOS support."
- msgstr "在将您的报告上传到红帽支持时出错。"
- 
- #: ../sos/policyredhat.py:401
-diff -uNrp sos-3.0.orig/po/zh_TW.po sos-3.0/po/zh_TW.po
---- sos-3.0.orig/po/zh_TW.po	2013-06-10 12:35:56.000000000 -0500
-+++ sos-3.0/po/zh_TW.po	2014-06-21 11:15:36.466724329 -0500
-@@ -180,8 +180,8 @@ msgid "Cannot upload to specified URL."
- msgstr "無法上傳指定的網址。"
- 
- #: ../sos/policyredhat.py:399
--msgid "There was a problem uploading your report to Red Hat support."
--msgstr "將報告上傳至 Red Hat 技術支援時,出現問題。"
-+msgid "There was a problem uploading your report to CentOS support."
-+msgstr "將報告上傳至 CentOS 技術支援時,出現問題。"
- 
- #: ../sos/policyredhat.py:401
- #, python-format
-diff -uNrp sos-3.0.orig/po/zu.po sos-3.0/po/zu.po
---- sos-3.0.orig/po/zu.po	2013-06-10 12:35:56.000000000 -0500
-+++ sos-3.0/po/zu.po	2014-06-21 11:15:36.467724321 -0500
-@@ -168,7 +168,7 @@ msgid "Cannot upload to specified URL."
- msgstr ""
- 
- #: ../sos/policyredhat.py:399
--msgid "There was a problem uploading your report to Red Hat support."
-+msgid "There was a problem uploading your report to CentOS support."
- msgstr ""
- 
- #: ../sos/policyredhat.py:401
-diff -uNrp sos-3.2.orig/sos/plugins/cluster.py sos-3.2/sos/plugins/cluster.py
---- sos-3.2.orig/sos/plugins/cluster.py	2014-09-30 12:38:28.000000000 -0500
-+++ sos-3.2/sos/plugins/cluster.py	2015-03-09 14:58:02.982869116 -0500
-@@ -19,7 +19,7 @@ from datetime import datetime, timedelta
- 
- 
- class Cluster(Plugin, RedHatPlugin):
--    """Red Hat Cluster Suite and GFS
-+    """Cluster Suite and GFS
-     """
- 
-     plugin_name = 'cluster'
-diff -uNrp sos-3.2.orig/sos/plugins/cs.py sos-3.2/sos/plugins/cs.py
---- sos-3.2.orig/sos/plugins/cs.py	2014-09-30 12:38:28.000000000 -0500
-+++ sos-3.2/sos/plugins/cs.py	2015-03-09 14:58:20.085778645 -0500
-@@ -54,7 +54,7 @@ class CertificateSystem(Plugin, RedHatPl
-     def setup(self):
-         csversion = self.checkversion()
-         if not csversion:
--            self.add_alert("Red Hat Certificate System not found.")
-+            self.add_alert("Certificate System not found.")
-             return
-         if csversion == 71:
-             self.add_copy_spec([
-diff -uNrp sos-3.2.orig/sos/plugins/hts.py sos-3.2/sos/plugins/hts.py
---- sos-3.2.orig/sos/plugins/hts.py	2014-09-30 12:38:28.000000000 -0500
-+++ sos-3.2/sos/plugins/hts.py	2015-03-09 14:58:36.973689309 -0500
-@@ -16,7 +16,7 @@ from sos.plugins import Plugin, RedHatPl
- 
- 
- class HardwareTestSuite(Plugin, RedHatPlugin):
--    """Red Hat Hardware Test Suite
-+    """Hardware Test Suite
-     """
- 
-     plugin_name = 'hardwaretestsuite'
-diff -uNrp sos-3.2.orig/sos/plugins/__init__.py sos-3.2/sos/plugins/__init__.py
---- sos-3.2.orig/sos/plugins/__init__.py	2015-03-09 14:50:34.162237962 -0500
-+++ sos-3.2/sos/plugins/__init__.py	2015-03-09 14:58:56.861584108 -0500
-@@ -732,7 +732,7 @@ class Plugin(object):
- 
- 
- class RedHatPlugin(object):
--    """Tagging class to indicate that this plugin works with Red Hat Linux"""
-+    """Tagging class to indicate that this plugin works with CentOS Linux"""
-     pass
- 
- 
-diff -uNrp sos-3.2.orig/sos/plugins/rhui.py sos-3.2/sos/plugins/rhui.py
---- sos-3.2.orig/sos/plugins/rhui.py	2014-09-30 12:38:28.000000000 -0500
-+++ sos-3.2/sos/plugins/rhui.py	2015-03-09 14:59:16.909478057 -0500
-@@ -16,7 +16,7 @@ from sos.plugins import Plugin, RedHatPl
- 
- 
- class Rhui(Plugin, RedHatPlugin):
--    """Red Hat Update Infrastructure
-+    """Update Infrastructure
-     """
- 
-     plugin_name = 'rhui'
-diff -uNrp sos-3.2.orig/sos/policies/redhat.py sos-3.2/sos/policies/redhat.py
---- sos-3.2.orig/sos/policies/redhat.py	2014-09-30 12:38:28.000000000 -0500
-+++ sos-3.2/sos/policies/redhat.py	2015-03-09 14:56:04.383496495 -0500
-@@ -33,9 +33,9 @@ except:
- 
- 
- class RedHatPolicy(LinuxPolicy):
--    distro = "Red Hat"
--    vendor = "Red Hat"
--    vendor_url = "http://www.redhat.com/"
-+    distro = "CentOS"
-+    vendor = "CentOS"
-+    vendor_url = "http://www.centos.org/"
-     _tmp_dir = "/var/tmp"
- 
-     def __init__(self):
-@@ -57,9 +57,9 @@ class RedHatPolicy(LinuxPolicy):
- 
-     @classmethod
-     def check(self):
--        """This method checks to see if we are running on Red Hat. It must be
-+        """This method checks to see if we are running on CentOS. It must be
-         overriden by concrete subclasses to return True when running on a
--        Fedora, RHEL or other Red Hat distribution or False otherwise."""
-+        CentOS or False otherwise."""
-         return False
- 
-     def runlevel_by_service(self, name):
-@@ -94,9 +94,9 @@ class RedHatPolicy(LinuxPolicy):
- 
- 
- class RHELPolicy(RedHatPolicy):
--    distro = "Red Hat Enterprise Linux"
--    vendor = "Red Hat"
--    vendor_url = "https://access.redhat.com/support/"
-+    distro = "CentOS Linux"
-+    vendor = "CentOS"
-+    vendor_url = "https://www.centos.org/"
-     msg = _("""\
- This command will collect diagnostic and configuration \
- information from this %(distro)s system and installed \
diff --git a/SOURCES/sos-plugins-allow-discard-stderr.patch b/SOURCES/sos-plugins-allow-discard-stderr.patch
deleted file mode 100644
index c9d32d9..0000000
--- a/SOURCES/sos-plugins-allow-discard-stderr.patch
+++ /dev/null
@@ -1,137 +0,0 @@
-From 7b2885740216f8e4076781e088d37cb7b4f96f63 Mon Sep 17 00:00:00 2001
-From: John Haxby <john.haxby@oracle.com>
-Date: Wed, 28 Jan 2015 19:30:29 +0000
-Subject: [PATCH] [plugins,utilities] Allow commands to discard stderr
-
-Just add "stderr=False" to add_cmd_output() if you don't want the
-command's stderr in the sosreport.
-
-Signed-off-by: John Haxby <john.haxby@oracle.com>
-
-Minor edits for pep8 conformance and to shorten the argument name.
-
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/plugins/__init__.py | 29 +++++++++++++++++------------
- sos/utilities.py        |  5 +++--
- 2 files changed, 20 insertions(+), 14 deletions(-)
----
- sos/plugins/__init__.py | 33 +++++++++++++++++++++------------
- sos/utilities.py        |  5 +++--
- 2 files changed, 24 insertions(+), 14 deletions(-)
-
-diff --git a/sos/plugins/__init__.py b/sos/plugins/__init__.py
-index 4fd85be..9d126a5 100644
---- a/sos/plugins/__init__.py
-+++ b/sos/plugins/__init__.py
-@@ -460,8 +460,9 @@ class Plugin(object):
-             self.copy_paths.update(copy_paths)
-             self._log_info("added copyspec '%s'" % copyspec)
- 
--    def get_command_output(self, prog, timeout=300, runat=None):
--        result = sos_get_command_output(prog, timeout=timeout, runat=runat)
-+    def get_command_output(self, prog, timeout=300, runat=None, stderr=True):
-+        result = sos_get_command_output(prog, timeout=timeout, runat=runat,
-+                                        stderr=stderr)
-         if result['status'] == 124:
-             self._log_warn("command '%s' timed out after %ds"
-                            % (prog, timeout))
-@@ -470,11 +471,12 @@ class Plugin(object):
-             self._log_debug("could not run '%s': command not found" % prog)
-         return result
- 
--    def call_ext_prog(self, prog, timeout=300, runat=None):
-+    def call_ext_prog(self, prog, timeout=300, runat=None, stderr=True):
-         """Execute a command independantly of the output gathering part of
-         sosreport.
-         """
--        return self.get_command_output(prog, timeout=timeout, runat=runat)
-+        return self.get_command_output(prog, timeout=timeout, runat=runat,
-+                                       stderr=True)
- 
-     def check_ext_prog(self, prog):
-         """Execute a command independently of the output gathering part of
-@@ -484,15 +486,19 @@ class Plugin(object):
-         return self.call_ext_prog(prog)['status'] == 0
- 
-     def add_cmd_output(self, cmds, suggest_filename=None,
--                       root_symlink=None, timeout=300, runat=None):
-+                       root_symlink=None, timeout=300, runat=None,
-+                       stderr=True):
-         """Run a program or a list of programs and collect the output"""
-         if isinstance(cmds, six.string_types):
-             cmds = [cmds]
-         if len(cmds) > 1 and (suggest_filename or root_symlink):
-             self._log_warn("ambiguous filename or symlink for command list")
-         for cmd in cmds:
--            cmdt = (cmd, suggest_filename, root_symlink, timeout, runat)
--            _logstr = "packed command tuple: ('%s', '%s', '%s', %s, '%s')"
-+            cmdt = (
-+                cmd, suggest_filename, root_symlink, timeout, runat, stderr
-+            )
-+            _tuplefmt = "('%s', '%s', '%s', %s, '%s', '%s')"
-+            _logstr = "packed command tuple: " + _tuplefmt
-             self._log_debug(_logstr % cmdt)
-             self.collect_cmds.append(cmdt)
-             self._log_info("added cmd output '%s'" % cmd)
-@@ -547,12 +553,13 @@ class Plugin(object):
- 
-     def get_cmd_output_now(self, exe, suggest_filename=None,
-                            root_symlink=False, timeout=300,
--                           runat=None):
-+                           runat=None, stderr=True):
-         """Execute a command and save the output to a file for inclusion in the
-         report.
-         """
-         start = time()
--        result = self.get_command_output(exe, timeout=timeout, runat=runat)
-+        result = self.get_command_output(exe, timeout=timeout, runat=runat,
-+                                         stderr=stderr)
-         # 126 means 'found but not executable'
-         if result['status'] == 126 or result['status'] == 127:
-             return None
-@@ -601,13 +608,15 @@ class Plugin(object):
- 
-     def _collect_cmd_output(self):
-         for progs in zip(self.collect_cmds):
--            prog, suggest_filename, root_symlink, timeout, runat = progs[0]
-+            (prog, suggest_filename, root_symlink, timeout, runat, stderr
-+             ) = progs[0]
-             self._log_debug("unpacked command tuple: "
--                            + "('%s', '%s', '%s', %s, '%s')" % progs[0])
-+                            + "('%s', '%s', '%s', %s, '%s', %s)" % progs[0])
-             self._log_info("collecting output of '%s'" % prog)
-             self.get_cmd_output_now(prog, suggest_filename=suggest_filename,
-                                     root_symlink=root_symlink,
--                                    timeout=timeout, runat=runat)
-+                                    timeout=timeout, runat=runat,
-+                                    stderr=stderr)
- 
-     def _collect_strings(self):
-         for string, file_name in self.copy_strings:
-diff --git a/sos/utilities.py b/sos/utilities.py
-index 2638ce4..db340f8 100644
---- a/sos/utilities.py
-+++ b/sos/utilities.py
-@@ -120,7 +120,7 @@ def is_executable(command):
-     return any(os.access(path, os.X_OK) for path in candidates)
- 
- 
--def sos_get_command_output(command, timeout=300, runat=None):
-+def sos_get_command_output(command, timeout=300, runat=None, stderr=True):
-     """Execute a command through the system shell. First checks to see if the
-     requested command is executable. Returns (returncode, stdout, 0)"""
-     def _child_chdir():
-@@ -142,7 +142,8 @@ def sos_get_command_output(command, timeout=300, runat=None):
-         command = command.encode('utf-8', 'ignore')
-     args = shlex.split(command)
-     try:
--        p = Popen(args, shell=False, stdout=PIPE, stderr=STDOUT,
-+        p = Popen(args, shell=False, stdout=PIPE,
-+                  stderr=STDOUT if stderr else PIPE,
-                   bufsize=-1, env=cmd_env, close_fds=True,
-                   preexec_fn=_child_chdir)
-     except OSError as e:
--- 
-1.8.3.1
-
diff --git a/SOURCES/sos-policies-PackageManager-timeout.patch b/SOURCES/sos-policies-PackageManager-timeout.patch
deleted file mode 100644
index 4fd3e8e..0000000
--- a/SOURCES/sos-policies-PackageManager-timeout.patch
+++ /dev/null
@@ -1,100 +0,0 @@
-From 3a2ad99c71dae022cfb7fb02e11473001c50ae23 Mon Sep 17 00:00:00 2001
-From: "Bryn M. Reeves" <bmr@redhat.com>
-Date: Tue, 27 Jan 2015 13:07:52 +0000
-Subject: [PATCH] [policies] run PackageManager query_command under timeout
-
-PackageManager query commands may block due to file system locks
-or problems with the package database. Run the query command with
-a timeout of 30s and exit if the timeout expires.
-
-Signed-off-by: Aruna Balakrishnaiah <aruna@linux.vnet.ibm.com>
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
-
----
-Changes from v3:
-	Add default timeout instead of making it configurable
-	Add print function instead of error()
-
-Changes from v2:
-	Introduce timeout in shell_out wrapper
-
-Changes from v1:
-	Addressed issues of the maintainer
-	Introduce timeout instead of relying on yum.
----
- sos/policies/__init__.py |  3 ++-
- sos/policies/redhat.py   | 10 +++++++++-
- sos/utilities.py         |  4 ++--
- 3 files changed, 13 insertions(+), 4 deletions(-)
-
-diff --git a/sos/policies/__init__.py b/sos/policies/__init__.py
-index 9fcbd55..34a2f6a 100644
---- a/sos/policies/__init__.py
-+++ b/sos/policies/__init__.py
-@@ -56,6 +56,7 @@ class PackageManager(object):
-     """
- 
-     query_command = None
-+    timeout = 30
- 
-     def __init__(self, query_command=None):
-         self.packages = {}
-@@ -92,7 +93,7 @@ class PackageManager(object):
-                           version': 'major.minor.version'}}
-         """
-         if self.query_command:
--            pkg_list = shell_out(self.query_command).splitlines()
-+            pkg_list = shell_out(self.query_command, self.timeout).splitlines()
-             for pkg in pkg_list:
-                 if '|' not in pkg:
-                     continue
-diff --git a/sos/policies/redhat.py b/sos/policies/redhat.py
-index 2219246..38510d9 100644
---- a/sos/policies/redhat.py
-+++ b/sos/policies/redhat.py
-@@ -15,6 +15,7 @@
- # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- 
- # This enables the use of with syntax in python 2.5 (e.g. jython)
-+from __future__ import print_function
- import os
- import sys
- 
-@@ -46,8 +47,15 @@ class RedHatPolicy(LinuxPolicy):
-             'rpm -qa --queryformat "%{NAME}|%{VERSION}\\n"')
-         self.valid_subclasses = [RedHatPlugin]
- 
-+        pkgs = self.package_manager.all_pkgs()
-+
-+        # If rpm query timed out after timeout duration exit
-+        if not pkgs:
-+            print("Could not obtain installed package list", file=sys.stderr)
-+            sys.exit(1)
-+
-         # handle PATH for UsrMove
--        if self.package_manager.all_pkgs()['filesystem']['version'][0] == '3':
-+        if pkgs['filesystem']['version'][0] == '3':
-             self.PATH = "/usr/sbin:/usr/bin:/root/bin"
-         else:
-             self.PATH = "/sbin:/bin:/usr/sbin:/usr/bin:/root/bin"
-diff --git a/sos/utilities.py b/sos/utilities.py
-index 51909c6..2638ce4 100644
---- a/sos/utilities.py
-+++ b/sos/utilities.py
-@@ -180,11 +180,11 @@ def import_module(module_fqname, superclasses=None):
-     return modules
- 
- 
--def shell_out(cmd, runat=None):
-+def shell_out(cmd, timeout=30, runat=None):
-     """Shell out to an external command and return the output or the empty
-     string in case of error.
-     """
--    return sos_get_command_output(cmd, runat=runat)['output']
-+    return sos_get_command_output(cmd, timeout=timeout, runat=runat)['output']
- 
- 
- class ImporterHelper(object):
--- 
-1.8.3.1
-
diff --git a/SOURCES/sos-six-compat.patch b/SOURCES/sos-six-compat.patch
deleted file mode 100644
index 576b77c..0000000
--- a/SOURCES/sos-six-compat.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-From b61a193b98b896164a8caefa088bb09297f1e3ca Mon Sep 17 00:00:00 2001
-From: "Bryn M. Reeves" <bmr@redhat.com>
-Date: Wed, 1 Oct 2014 17:08:50 +0100
-Subject: [PATCH 1/2] [utilities] invert sense of six.PY2 test
-
-Old versions of six do not include a 'PY2' attribute leading to
-an exception in sos_get_command_output(). Invert the sense of the
-test and check that six.PY3 is false instead as all versions of
-the module include this attribute.
-
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/utilities.py | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/sos/utilities.py b/sos/utilities.py
-index 7c06781..7e8cd7e 100644
---- a/sos/utilities.py
-+++ b/sos/utilities.py
-@@ -139,7 +139,7 @@ def sos_get_command_output(command, timeout=300, runat=None):
-         command = "timeout %ds %s" % (timeout, command)
- 
-     # shlex.split() reacts badly to unicode on older python runtimes.
--    if six.PY2:
-+    if not six.PY3:
-         command = command.encode('utf-8')
-     args = shlex.split(command)
-     try:
--- 
-1.9.3
-
-
-From f9c811abc07f1e3044b1dbf29fdd5cd1f68812bc Mon Sep 17 00:00:00 2001
-From: "Bryn M. Reeves" <bmr@redhat.com>
-Date: Wed, 1 Oct 2014 17:34:56 +0100
-Subject: [PATCH 2/2] [archive] invert sense of six.PY2 test
-
-Old versions of six do not include a 'PY2' attribute leading to
-an exception in sos_get_command_output(). Invert the sense of the
-test and check that six.PY3 is false instead as all versions of
-the module include this attribute.
-
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/archive.py | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/sos/archive.py b/sos/archive.py
-index 245f904..2e42bbd 100644
---- a/sos/archive.py
-+++ b/sos/archive.py
-@@ -357,7 +357,7 @@ class TarFileArchive(FileCacheArchive):
- 
-     def _build_archive(self):
-         # python2.6 TarFile lacks the filter parameter
--        if six.PY2 and sys.version_info[1] < 7:
-+        if not six.PY3 and sys.version_info[1] < 7:
-             tar = _TarFile.open(self._archive_name, mode="w")
-         else:
-             tar = tarfile.open(self._archive_name, mode="w")
--- 
-1.9.3
-
diff --git a/SPECS/sos.spec b/SPECS/sos.spec
index d8ae3e2..7303c59 100644
--- a/SPECS/sos.spec
+++ b/SPECS/sos.spec
@@ -1,10 +1,10 @@
 %{!?python_sitelib: %define python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib()")}
 Summary: A set of tools to gather troubleshooting information from a system
 Name: sos
-Version: 3.2
-Release: 35%{?dist}.3
+Version: 3.3
+Release: 4%{?dist}
 Group: Applications/System
-Source0: https://github.com/sosreport/sos/archive/%{version}/sos-%{version}.tar.gz
+Source0: https://github.com/sosreport/sos/archive/%{version}.tar.gz
 License: GPLv2+
 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildroot
 BuildArch: noarch
@@ -16,78 +16,16 @@ Requires: python-six
 Requires: bzip2
 Requires: xz
 Obsoletes: sos-plugins-openstack
-Patch0: sos-six-compat.patch
-Patch1: sos-bz1116349-call-rhsm-debug-with-no-subscriptions.patch
-Patch2: sos-bz1140427-powerpc-allow-powerpc-plugin-to-run-on-ppc64le.patch
-Patch3: sos-bz1148551-ovirt_hosted_engine-fix-exception-when-force-enabled.patch
-Patch4: sos-bz1087515-corosync-add-postprocessing-for-corosync-objctl.patch
-Patch5: sos-bz1148375-add-support-for-tomcat7.patch
-Patch6: sos-bz1126001-obtain-mysql-password-from-env.patch
-Patch7: sos-bz1158891-sosreport-fix-archive-permissions-regression.patch
-Patch8: sos-bz1110918-fix-kpatch-force-enabled.patch
-Patch9: sos-bz1118152-disable-the-zip-compression-type.patch
-Patch10: sos-bz1166039-navicli-catch-unreadable-stdin.patch
-Patch11: sos-bz1171658-docs-update-man-page-for-new-options.patch
-Patch12: sos-bz1164267-sos-unicode-use-errors-ignore.patch
-Patch13: sos-bz1126001-mysql-fix-command-line-dbpass-handling.patch
-Patch14: sos-bz1112175-anaconda-make-useradd-password-regex-tolerant.patch
-Patch15: sos-bz1087977-sosreport-catch-oserror-in-execute.patch
-Patch16: sos-bz1087977-sosreport-do-not-make-logging-calls-after-oserror.patch
-Patch17: sos-bz1026962-plugin-limit-names-to-pc_name_max.patch
-Patch18: sos-bz1026962-squid-collect-var-log-squid.patch
-Patch19: sos-bz1026962-sosreport-log-plugin-exceptions-to-file.patch
-Patch20: sos-bz1026962-ctdb-fix-redhatplugin-tagging-use.patch
-Patch21: sos-bz1026962-sosreport-fix-silent-exception-handling.patch
-Patch22: sos-bz1180919-mysql-test-for-boolean-values.patch
-Patch23: sos-bz1176159-mysql-improve-dbuser-dbpass-handling.patch
-Patch24: sos-bz1200526-cluster-crmreport-create-dir.patch
-Patch25: sos-bz1213315-openstack-neutron-to-collect-neutron-folders.patch
-Patch26: sos-bz1162788-ovirt-engine-remove-password-leak.patch
-Patch27: sos-bz1206633-fix-exception-when-networkmanager-disabled.patch
-Patch28: sos-bz1211984-openstack-sahara-plugin.patch
-Patch29: sos-bz1211984-redact-secrets-from-sahara-config.patch
-Patch30: sos-bz1083656-cluster-data-ownership.patch
-Patch31: sos-bz1135317-sat6-capsule-debug.patch
-Patch32: sos-bz1183265-httpd-collect-conf-modules.patch
-Patch33: sos-bz1183297-pcp-collect-config.patch
-Patch34: sos-bz1183768-puppet-collect-config.patch
-Patch35: sos-bz1183770-parted-no-human-readable.patch
-Patch36: sos-bz1185093-sos-ticket-number-name-params.patch
-Patch37: sos-bz1194554-network-more-diagnostic.patch
-Patch38: sos-bz1194556-infiniband-more-diagnostic.patch
-Patch39: sos-bz1197006-rabbitmq-cluster-status.patch
-Patch40: sos-bz1209454-networking-ip-addr.patch
-Patch41: sos-bz1209840-kimchid-plugin.patch
-Patch42: sos-bz1221932-iprconfig-plugin.patch
-Patch43: sos-bz1236101-ovirt-engine-config-domain-list.patch
-Patch44: sos-bz1236111-activemq-collect-logs-config.patch
-Patch45: sos-bz1236124-cluster-enable-when-luci-only.patch
-Patch46: sos-bz1214209-hpasm-no-data-timeout.patch
-Patch47: sos-bz1210906-mariadb-mysql-add-log.patch
-Patch48: sos-bz1165418-chrony-new-plugin.patch
-Patch49: sos-bz1164864-cluster-crm-report-password-sanitize.patch
-Patch50: sos-bz1195086-virsh-plugin.patch
-Patch51: sos-bz1195608-sap-hana-netweaver-vhostmd-plugins.patch
-Patch52: sos-bz1184602-sos-verify-profile-for-valid-plugins-only.patch
-Patch53: sos-bz1194159-kernel-additional-diagnostic.patch
-Patch54: sos-bz1210527-ceph-add-calamari-rados.patch
-Patch55: sos-bz1238726-iprconfig-enable-on-ppc64le.patch
-Patch56: sos-bz1238349-openstack_trove-plugin.patch
-Patch57: sos-bz1195087-services-add-more-diagnostics.patch
-Patch58: sos-bz1240666-openstack_neutron-obfuscate-passwords.patch
-Patch59: sos-policies-PackageManager-timeout.patch
-Patch60: sos-plugins-allow-discard-stderr.patch
-Patch61: sos-bz1185990-sos-inside-container.patch
-Patch62: sos-bz1243092-openstack-obfuscate-passwords-secrets.patch
-Patch63: sos-bz1242507-openvswitch-collect-logs-db-bridges.patch
-Patch64: sos-bz1195608-sapnw-cmd-output-check.patch
-Patch65: sos-bz1249705-logs-plugin-traceback.patch
-Patch66: sos-bz1248672-pick-up-symlink-targets.patch
-Patch67: sos-bz1219720-html-report-generate.patch
-Patch68: sos-bz1245770-collect-docker-daemon-logs.patch
-Patch69: sos-bz1291347-ceph-collect-var-lib-var-run.patch
-Patch70: sos-bz1290954-sosreport-prepare-report-in-a-private-subdirectory.patch
-Patch71: sos-centos-branding.patch
+Patch0: skip-generating-doc.patch
+Patch1: sos-bz1116670-grub2-mkconfig-dont-load-kernel-modules.patch
+Patch2: sos-bz1260607-ceph-skip-keyring-bindpass-files.patch
+Patch3: sos-bz1353552-virtwho-plugin.patch
+Patch4: sos-bz1302146-atomichost-info-policy-style.patch
+Patch5: sos-bz1356945-monit-copy-spec-string.patch
+Patch6: sos-bz1299603-omsa-chassis-summary-storage-controller.patch
+Patch7: sos-bz1351647-docker-more-data-expand-options.patch
+Patch8: sos-bz1368393-nodejs-npm-plugins.patch
+Patch9: sos-bz1374152-networking-no-net-tools.patch
 
 %description
 Sos is a set of tools that gathers information about system
@@ -107,68 +45,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
-%patch21 -p1
-%patch22 -p1
-%patch23 -p1
-%patch24 -p1
-%patch25 -p1
-%patch26 -p1
-%patch27 -p1
-%patch28 -p1
-%patch29 -p1
-%patch30 -p1
-%patch31 -p1
-%patch32 -p1
-%patch33 -p1
-%patch34 -p1
-%patch35 -p1
-%patch36 -p1
-%patch37 -p1
-%patch38 -p1
-%patch39 -p1
-%patch40 -p1
-%patch41 -p1
-%patch42 -p1
-%patch43 -p1
-%patch44 -p1
-%patch45 -p1
-%patch46 -p1
-%patch47 -p1
-%patch48 -p1
-%patch49 -p1
-%patch50 -p1
-%patch51 -p1
-%patch52 -p1
-%patch53 -p1
-%patch54 -p1
-%patch55 -p1
-%patch56 -p1
-%patch57 -p1
-%patch58 -p1
-%patch59 -p1
-%patch60 -p1
-%patch61 -p1
-%patch62 -p1
-%patch63 -p1
-%patch64 -p1
-%patch65 -p1
-%patch66 -p1
-%patch67 -p1
-%patch68 -p1
-%patch69 -p1
-%patch70 -p1
-%patch71 -p1
 
 %build
 make
@@ -192,22 +68,45 @@ rm -rf ${RPM_BUILD_ROOT}
 %config(noreplace) %{_sysconfdir}/sos.conf
 
 %changelog
-* Tue Feb 16 2016 CentOS Sources <bugs@centos.org> - 3.2-35.el7.centos.3
-- Roll in CentOS Branding
+* Fri Sep 09 2016 Pavel Moravec <pmoravec@redhat.com> = 3.3-4
+- [networking][reporting] plugin tracebacks when net-tools missing
+  Resolves: bz1374152
+
+* Fri Sep 02 2016 Pavel Moravec <pmoravec@redhat.com> = 3.3-3
+- [nodejs][nms]: new plugins
+  Resolves: bz1368393
+- [docker]: Gather more data and expand plugin options
+  Resolves: bz1351647
+
+* Fri Aug 19 2016 Pavel Moravec <pmoravec@redhat.com> = 3.3-2
+- [grub2] grub2-mkconfig loads ext4 and brctl kernel
+  Resolves: bz1116670
+- [ceph] skip collecting of all keyring and bindpass files
+  Resolves: bz1260607
+- [omsa] add omreport storage controller
+  Resolves: bz1299603
+- [atomichost] fix collection of 'docker info' output
+  Resolves: bz1302146
+- [monit] fix add_copy_spec() arguments
+  Resolves: bz1356945
+- [virtwho] add new plugin for virt-who agent
+  Resolves: bz1353552
+
+* Thu Jun 30 2016 Pavel Moravec <pmoravec@redhat.com> = 3.3-1
+- New upstream release sos-3.3
+
+* Wed Jun 29 2016 Pavel Moravec <pmoravec@redhat.com> = 3.3-0
+- New upstream release (beta version)
 
 * Thu Jan 14 2016 Pavel Moravec <pmoravec@redhat.com> = 3.2-37
 - [sosreport] prepare report in a private subdirectory (updated)
-  Resolves: bz1290954
+  Resolves: bz1290955
 
-* Wed Dec 16 2015 Pavel Moravec <pmoravec@redhat.com> = 3.2-35.2
-- [sosreport] prepare report in a private subdirectory (updated)
-  Resolves: bz1290954
-
-* Mon Dec 14 2015 Pavel Moravec <pmoravec@redhat.com> = 3.2-35.1
+* Mon Dec 14 2015 Pavel Moravec <pmoravec@redhat.com> = 3.2-36
 - [ceph] collect /var/lib/ceph and /var/run/ceph
-  Resolves: bz1291347
+  Resolves: bz1260607
 - [sosreport] prepare report in a private subdirectory
-  Resolves: bz1290954
+  Resolves: bz1290955
 
 * Wed Oct 07 2015 Pavel Moravec <pmoravec@redhat.com> = 3.2-35
 - [docker] collect journald logs for docker unit