[sos/f22] update to upstreanm 3.2

Bryn Reeves bmr at fedoraproject.org
Thu Feb 19 18:15:28 UTC 2015


commit 9e17a6d940daf2b9fd67f9ab6d6e024e0e0bd86a
Author: Bryn M. Reeves <bmr at redhat.com>
Date:   Thu Feb 19 18:12:06 2015 +0000

    update to upstreanm 3.2

 sos-add-support-for-tomcat7.patch                  |  48 ++
 ...onda-make-useradd-password-regex-tolerant.patch |  26 +
 sos-call-rhsm-debug-with-no-subscriptions.patch    |  26 +
 ...nc-add-postprocessing-for-corosync-objctl.patch |  35 ++
 sos-ctdb-fix-redhatplugin-tagging-use.patch        |  42 ++
 sos-disable-the-zip-compression-type.patch         |  60 +++
 sos-docs-update-man-page-for-new-options.patch     |  91 ++++
 sos-fix-kpatch-force-enabled.patch                 |  33 ++
 sos-mysql-fix-command-line-dbpass-handling.patch   |  39 ++
 sos-mysql-improve-dbuser-dbpass-handling.patch     |  80 +++
 sos-mysql-test-for-boolean-values.patch            |  44 ++
 sos-navicli-catch-unreadable-stdin.patch           |  42 ++
 sos-obtain-mysql-password-from-env.patch           |  89 ++++
 ...d_engine-fix-exception-when-force-enabled.patch |  31 ++
 sos-plugin-limit-names-to-pc_name_max.patch        | 118 +++++
 ...pc-allow-powerpc-plugin-to-run-on-ppc64le.patch |  31 ++
 sos-six-compat.patch                               |  63 +++
 sos-sos-unicode-use-errors-ignore.patch            |  61 +++
 sos-sosreport-catch-oserror-in-execute.patch       |  71 +++
 ...t-do-not-make-logging-calls-after-oserror.patch |  41 ++
 ...report-fix-archive-permissions-regression.patch |  39 ++
 sos-sosreport-fix-silent-exception-handling.patch  |  52 ++
 sos-sosreport-log-plugin-exceptions-to-file.patch  |  67 +++
 sos-squid-collect-var-log-squid.patch              |  32 ++
 sos.spec                                           | 548 +++++++++------------
 sources                                            |   2 +-
 26 files changed, 1493 insertions(+), 318 deletions(-)
---
diff --git a/sos-add-support-for-tomcat7.patch b/sos-add-support-for-tomcat7.patch
new file mode 100644
index 0000000..372e887
--- /dev/null
+++ b/sos-add-support-for-tomcat7.patch
@@ -0,0 +1,48 @@
+From 874cc7d0889adf32b8c36bb218212d3304d43d5b Mon Sep 17 00:00:00 2001
+From: "Bryn M. Reeves" <bmr at 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 at 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/sos-anaconda-make-useradd-password-regex-tolerant.patch b/sos-anaconda-make-useradd-password-regex-tolerant.patch
new file mode 100644
index 0000000..e7b5f5e
--- /dev/null
+++ b/sos-anaconda-make-useradd-password-regex-tolerant.patch
@@ -0,0 +1,26 @@
+From 5a97e0e2571b948f1f7bc602e6f190976de99eee Mon Sep 17 00:00:00 2001
+From: "Bryn M. Reeves" <bmr at 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 at 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/sos-call-rhsm-debug-with-no-subscriptions.patch b/sos-call-rhsm-debug-with-no-subscriptions.patch
new file mode 100644
index 0000000..4e97a53
--- /dev/null
+++ b/sos-call-rhsm-debug-with-no-subscriptions.patch
@@ -0,0 +1,26 @@
+From e8428d458cfd65bdc34d69f32db0bf4f5aca7540 Mon Sep 17 00:00:00 2001
+From: "Bryn M. Reeves" <bmr at 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 at 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/sos-corosync-add-postprocessing-for-corosync-objctl.patch b/sos-corosync-add-postprocessing-for-corosync-objctl.patch
new file mode 100644
index 0000000..f76548b
--- /dev/null
+++ b/sos-corosync-add-postprocessing-for-corosync-objctl.patch
@@ -0,0 +1,35 @@
+From 77ea53cf7c13c59c2a1f4608d59e1b9e8f4da835 Mon Sep 17 00:00:00 2001
+From: "Bryn M. Reeves" <bmr at 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 at 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/sos-ctdb-fix-redhatplugin-tagging-use.patch b/sos-ctdb-fix-redhatplugin-tagging-use.patch
new file mode 100644
index 0000000..9164028
--- /dev/null
+++ b/sos-ctdb-fix-redhatplugin-tagging-use.patch
@@ -0,0 +1,42 @@
+From 12ec2a4643c844a7a9bf46f3d9557e38f0ae7403 Mon Sep 17 00:00:00 2001
+From: "Bryn M. Reeves" <bmr at 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 at 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/sos-disable-the-zip-compression-type.patch b/sos-disable-the-zip-compression-type.patch
new file mode 100644
index 0000000..7d3dfd7
--- /dev/null
+++ b/sos-disable-the-zip-compression-type.patch
@@ -0,0 +1,60 @@
+From 081e1ce9f9ad7570d057babd81b474fd407149d7 Mon Sep 17 00:00:00 2001
+From: "Bryn M. Reeves" <bmr at 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 at 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/sos-docs-update-man-page-for-new-options.patch b/sos-docs-update-man-page-for-new-options.patch
new file mode 100644
index 0000000..a05d692
--- /dev/null
+++ b/sos-docs-update-man-page-for-new-options.patch
@@ -0,0 +1,91 @@
+From 0be76caf77b53ce2726cb419262ceb8f52081c9e Mon Sep 17 00:00:00 2001
+From: "Bryn M. Reeves" <bmr at 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 at 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/sos-fix-kpatch-force-enabled.patch b/sos-fix-kpatch-force-enabled.patch
new file mode 100644
index 0000000..aa8ef94
--- /dev/null
+++ b/sos-fix-kpatch-force-enabled.patch
@@ -0,0 +1,33 @@
+From 6b43c42078604b0551923c2801108848e97ba3b9 Mon Sep 17 00:00:00 2001
+From: "Bryn M. Reeves" <bmr at 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 at 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/sos-mysql-fix-command-line-dbpass-handling.patch b/sos-mysql-fix-command-line-dbpass-handling.patch
new file mode 100644
index 0000000..1cfa94e
--- /dev/null
+++ b/sos-mysql-fix-command-line-dbpass-handling.patch
@@ -0,0 +1,39 @@
+From db9ac3fb615b731be87b4116a8939105bf5ced56 Mon Sep 17 00:00:00 2001
+From: "Bryn M. Reeves" <bmr at 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 at 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/sos-mysql-improve-dbuser-dbpass-handling.patch b/sos-mysql-improve-dbuser-dbpass-handling.patch
new file mode 100644
index 0000000..e6f2d49
--- /dev/null
+++ b/sos-mysql-improve-dbuser-dbpass-handling.patch
@@ -0,0 +1,80 @@
+From 7c12e6c994b3320ef57a13e06f5c445b6bca7935 Mon Sep 17 00:00:00 2001
+From: "Bryn M. Reeves" <bmr at 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 at 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/sos-mysql-test-for-boolean-values.patch b/sos-mysql-test-for-boolean-values.patch
new file mode 100644
index 0000000..8eecd34
--- /dev/null
+++ b/sos-mysql-test-for-boolean-values.patch
@@ -0,0 +1,44 @@
+From 05466cd6d9d70321fc7a0097334ef36af8dfeb43 Mon Sep 17 00:00:00 2001
+From: "Bryn M. Reeves" <bmr at 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 at 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/sos-navicli-catch-unreadable-stdin.patch b/sos-navicli-catch-unreadable-stdin.patch
new file mode 100644
index 0000000..44c2667
--- /dev/null
+++ b/sos-navicli-catch-unreadable-stdin.patch
@@ -0,0 +1,42 @@
+From 465746d768ce69684eee57eaa3509d9ae898fee2 Mon Sep 17 00:00:00 2001
+From: "Bryn M. Reeves" <bmr at 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 at 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/sos-obtain-mysql-password-from-env.patch b/sos-obtain-mysql-password-from-env.patch
new file mode 100644
index 0000000..fcd3980
--- /dev/null
+++ b/sos-obtain-mysql-password-from-env.patch
@@ -0,0 +1,89 @@
+From 3d4cf0365d520be81abfe3435fa9a8a56a933961 Mon Sep 17 00:00:00 2001
+From: "Bryn M. Reeves" <bmr at 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 at 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 at 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 at 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/sos-ovirt_hosted_engine-fix-exception-when-force-enabled.patch b/sos-ovirt_hosted_engine-fix-exception-when-force-enabled.patch
new file mode 100644
index 0000000..c94d710
--- /dev/null
+++ b/sos-ovirt_hosted_engine-fix-exception-when-force-enabled.patch
@@ -0,0 +1,31 @@
+From f9aefde0d7f74867031a00b52f72d0ad1ff9463b Mon Sep 17 00:00:00 2001
+From: "Bryn M. Reeves" <bmr at 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 at 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/sos-plugin-limit-names-to-pc_name_max.patch b/sos-plugin-limit-names-to-pc_name_max.patch
new file mode 100644
index 0000000..fca14ce
--- /dev/null
+++ b/sos-plugin-limit-names-to-pc_name_max.patch
@@ -0,0 +1,118 @@
+From 48a99c95078bab306cb56bb1a05420d88bf15a64 Mon Sep 17 00:00:00 2001
+From: "Bryn M. Reeves" <bmr at 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 at 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/sos-powerpc-allow-powerpc-plugin-to-run-on-ppc64le.patch b/sos-powerpc-allow-powerpc-plugin-to-run-on-ppc64le.patch
new file mode 100644
index 0000000..4bf9824
--- /dev/null
+++ b/sos-powerpc-allow-powerpc-plugin-to-run-on-ppc64le.patch
@@ -0,0 +1,31 @@
+From 988fee7e6d0c2c91cf1f2c9363d4e3cea7244163 Mon Sep 17 00:00:00 2001
+From: "Bryn M. Reeves" <bmr at 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 at 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/sos-six-compat.patch b/sos-six-compat.patch
new file mode 100644
index 0000000..576b77c
--- /dev/null
+++ b/sos-six-compat.patch
@@ -0,0 +1,63 @@
+From b61a193b98b896164a8caefa088bb09297f1e3ca Mon Sep 17 00:00:00 2001
+From: "Bryn M. Reeves" <bmr at 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 at 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 at 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 at 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/sos-sos-unicode-use-errors-ignore.patch b/sos-sos-unicode-use-errors-ignore.patch
new file mode 100644
index 0000000..1e9f66b
--- /dev/null
+++ b/sos-sos-unicode-use-errors-ignore.patch
@@ -0,0 +1,61 @@
+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/sos-sosreport-catch-oserror-in-execute.patch b/sos-sosreport-catch-oserror-in-execute.patch
new file mode 100644
index 0000000..a516793
--- /dev/null
+++ b/sos-sosreport-catch-oserror-in-execute.patch
@@ -0,0 +1,71 @@
+From 95bb5df9eda253afed15fa81340d31e03c40fe94 Mon Sep 17 00:00:00 2001
+From: "Bryn M. Reeves" <bmr at 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 at 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/sos-sosreport-do-not-make-logging-calls-after-oserror.patch b/sos-sosreport-do-not-make-logging-calls-after-oserror.patch
new file mode 100644
index 0000000..6a3b057
--- /dev/null
+++ b/sos-sosreport-do-not-make-logging-calls-after-oserror.patch
@@ -0,0 +1,41 @@
+From ed44939d5988098feb3f3ddededd68a0a4b9a9df Mon Sep 17 00:00:00 2001
+From: "Bryn M. Reeves" <bmr at 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 at 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/sos-sosreport-fix-archive-permissions-regression.patch b/sos-sosreport-fix-archive-permissions-regression.patch
new file mode 100644
index 0000000..7540058
--- /dev/null
+++ b/sos-sosreport-fix-archive-permissions-regression.patch
@@ -0,0 +1,39 @@
+From d7759d3ddae5fe99a340c88a1d370d65cfa73fd6 Mon Sep 17 00:00:00 2001
+From: "Bryn M. Reeves" <bmr at 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 at 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/sos-sosreport-fix-silent-exception-handling.patch b/sos-sosreport-fix-silent-exception-handling.patch
new file mode 100644
index 0000000..b3daec4
--- /dev/null
+++ b/sos-sosreport-fix-silent-exception-handling.patch
@@ -0,0 +1,52 @@
+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/sos-sosreport-log-plugin-exceptions-to-file.patch b/sos-sosreport-log-plugin-exceptions-to-file.patch
new file mode 100644
index 0000000..069f186
--- /dev/null
+++ b/sos-sosreport-log-plugin-exceptions-to-file.patch
@@ -0,0 +1,67 @@
+From 8b49485153cc7dc03cd974dbc3a100c81ef04720 Mon Sep 17 00:00:00 2001
+From: "Bryn M. Reeves" <bmr at 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 at 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/sos-squid-collect-var-log-squid.patch b/sos-squid-collect-var-log-squid.patch
new file mode 100644
index 0000000..0ad4c03
--- /dev/null
+++ b/sos-squid-collect-var-log-squid.patch
@@ -0,0 +1,32 @@
+From d0408ac43e1ec3b114e69b2950202f87f2fcd250 Mon Sep 17 00:00:00 2001
+From: "Bryn M. Reeves" <bmr at 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 at 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/sos.spec b/sos.spec
index 86f4fc3..5672bbe 100644
--- a/sos.spec
+++ b/sos.spec
@@ -1,23 +1,45 @@
 %{!?python_sitelib: %define python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib()")}
-%global commit 55c89eb6810e7060845082845653b059aab90e3d
-%global shortcommit %(c=%{commit}; echo ${c:0:7})
 Summary: A set of tools to gather troubleshooting information from a system
 Name: sos
 Version: 3.2
-Release: 0.1.a%{?dist}
+Release: 15%{?dist}
 Group: Applications/System
-Source0: https://github.com/sosreport/sos/archive/%{commit}.tar.gz#/%{name}-%{commit}.tar.gz
+Source0: https://github.com/sosreport/sos/archive/%{version}/sos-%{version}.tar.gz
 License: GPLv2+
 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildroot
 BuildArch: noarch
-Url: http://fedorahosted.org/sos
+Url: http://github.com/sosreport/sos
 BuildRequires: python-devel
 BuildRequires: gettext
 Requires: libxml2-python
-Requires: rpm-python
-Requires: tar
+Requires: python-six
 Requires: bzip2
 Requires: xz
+Obsoletes: sos-plugins-openstack
+Patch0: sos-six-compat.patch
+Patch1: sos-call-rhsm-debug-with-no-subscriptions.patch
+Patch2: sos-powerpc-allow-powerpc-plugin-to-run-on-ppc64le.patch
+Patch3: sos-ovirt_hosted_engine-fix-exception-when-force-enabled.patch
+Patch4: sos-corosync-add-postprocessing-for-corosync-objctl.patch
+Patch5: sos-add-support-for-tomcat7.patch
+Patch6: sos-obtain-mysql-password-from-env.patch
+Patch7: sos-sosreport-fix-archive-permissions-regression.patch
+Patch8: sos-fix-kpatch-force-enabled.patch
+Patch9: sos-disable-the-zip-compression-type.patch
+Patch10: sos-navicli-catch-unreadable-stdin.patch
+Patch11: sos-docs-update-man-page-for-new-options.patch
+Patch12: sos-sos-unicode-use-errors-ignore.patch
+Patch13: sos-mysql-fix-command-line-dbpass-handling.patch
+Patch14: sos-anaconda-make-useradd-password-regex-tolerant.patch
+Patch15: sos-sosreport-catch-oserror-in-execute.patch
+Patch16: sos-sosreport-do-not-make-logging-calls-after-oserror.patch
+Patch17: sos-plugin-limit-names-to-pc_name_max.patch
+Patch18: sos-squid-collect-var-log-squid.patch
+Patch19: sos-sosreport-log-plugin-exceptions-to-file.patch
+Patch20: sos-ctdb-fix-redhatplugin-tagging-use.patch
+Patch21: sos-sosreport-fix-silent-exception-handling.patch
+Patch22: sos-mysql-test-for-boolean-values.patch
+Patch23: sos-mysql-improve-dbuser-dbpass-handling.patch
 
 %description
 Sos is a set of tools that gathers information about system
@@ -26,8 +48,32 @@ diagnostic purposes and debugging. Sos is commonly used to help
 support technicians and developers.
 
 %prep
-# deal with github tarball naming scheme
-%setup -q -n %{name}-%{commit}
+%setup -qn %{name}-%{version}
+%patch0 -p1
+%patch1 -p1
+%patch2 -p1
+%patch3 -p1
+%patch4 -p1
+%patch5 -p1
+%patch6 -p1
+%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
+
 %build
 make
 
@@ -50,173 +96,276 @@ rm -rf ${RPM_BUILD_ROOT}
 %config(noreplace) %{_sysconfdir}/sos.conf
 
 %changelog
-* Tue Jun 17 2014 Bryn M. Reeves <bmr at redhat.com> = 3.2-0.1.a
-- Make source URL handling compliant with packaging guidelines
-- Update to new upstream pre-release sos-3.2-alpha1
-
-* Sun Jun 08 2014 Fedora Release Engineering <rel-eng at lists.fedoraproject.org> - 3.1-2
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
-
-* Tue Apr 01 2014 Bryn M. Reeves <bmr at redhat.com> = 3.1-1
-- Update to new upstream release sos-3.1
-- Add collection of grub configuration for UEFI systems
-- Raise a TypeError if add_copy_specs() is called with a string
-- Add tests for Plugin.add_copy_spec()/add_copy_specs()
-- Update Plugin tests to treat copy_paths as a set
-- Use a set for Plugin.copy_paths
-- Remove references to 'sub' parameter from plugin tests
-- Remove 'sub' parameter from Plugin.add_copy_spec*()
-- Drop RedHatPlugin from procenv
-- Update plugin_tests.py to match new method names
-- Remove obsolete checksum reference from utilities_tests.py
-- Refactor Plugin.collect() pathway
-- Fix x86 arch detection in processor plugin
-- Pythonify Plugin._path_in_pathlist()
-- Clean up package checks in processor plugin
-- Replace self.policy().pkg_by_name() us in Logs plugin
-- Convert infiniband to package list
-- Dead code removal: PluginException
-- Dead code removal: sos.plugins.common_prefix()
-- Add vim tags to all python source files
-- Dead code removal: utilities.checksum()
-- Dead code removal: DirTree
-- Dead code removal: sos_relative_path()
-- Remove --profile support
-- Fix plugin_test exception on six.PY2
-- Call rhsm-debug with the --sos switch
-- Do not collect isos in cobbler plugin
-- Match plugins against policies
-- Update policy_tests.py for validate_plugin change
-- Rename validatePlugin to validate_plugin
-- Fix broken binary detection in satellite plugin
-- Clean up get_cmd_path/make_cmd_path/make_cmd_dirs mess
-- Add tuned plugin
-- Update systemd support
-- Fix remaining use of obsolete 'get_cmd_dir()' in plugins
-- Add PowerNV specific debug data
-- powerpc: Move VPD related tool under common code
-- Remove the rhevm plugin.
-- Replace package check with file check in anacron
-- Scrub ldap_default_authtok password in sssd plugin
-- Eliminate hard-coded /var/log/sa paths in sar plugin
-- Remove useless check_enabled() from sar plugin
-- Improve error message when cluster.crm_from is invalid
-- Fix command output substitution exception
-- Add distupgrade plugin
-- Fix gluster volume name extraction
-- Ensure unused fds are closed when calling subprocesses via Popen
-- Pass --no-archive to rhsm-debug script
-- postgresql: allow use TCP socket
-- postgresql: added license and copyright
-- postgresql: add logs about errors / warnings
-- postgresql: minor fixes
-- Include geo-replication status in gluster plugin
-- Make get_cmd_output_now() behaviour match 2.2
-- Add rhsm-debug collection to yum plugin
-- Always treat rhevm vdsmlogs option as string
-- Fix verbose file logging
-- Fix get_option() use in cluster plugin
-- Fix cluster postproc regression
-- Ensure superclass postproc method is called in ldap plugin
-- Remove obsolete diagnostics code from ldap plugin
-- Fix cluster module crm_report support
+* Thu Jan 22 2015 Bryn M. Reeves <bmr at redhat.com> = 3.2-15
+- [mysql] improve handling of dbuser, dbpass and MYSQL_PWD
+  Resolves: bz1180919
+
+* Tue Jan 20 2015 Bryn M. Reeves <bmr at redhat.com> = 3.2-14
+- [mysql] test for boolean values in dbuser and dbpass
+  Resolves: bz1180919
+
+* Mon Jan 19 2015 Bryn M. Reeves <bmr at redhat.com> = 3.2-12
+- [plugin] limit path names to PC_NAME_MAX
+  Resolves: bz1026962
+- [squid] collect files from /var/log/squid
+  Resolves: bz1026962
+- [sosreport] log plugin exceptions to a file
+  Resolves: bz1026962
+- [ctdb] fix collection of /etc/sysconfig/ctdb
+  Resolves: bz1026962
+- [sosreport] fix silent exception handling
+  Resolves: bz1026962
+
+* Tue Jan 13 2015 Bryn M. Reeves <bmr at redhat.com> = 3.2-11
+- [sosreport] do not make logging calls after OSError
+  Resolves: bz1087977
+- [sosreport] catch OSError exceptions in SoSReport.execute()
+  Resolves: bz1087977
+- [anaconda] make useradd password regex tolerant of whitespace
+  Resolves: bz1112175
+
+* Tue Dec 23 2014 Bryn M. Reeves <bmr at redhat.com> = 3.2-10
+- [mysql] fix handling of mysql.dbpass option
+  Resolves: bz1126001
+
+* Wed Dec 17 2014 Bryn M. Reeves <bmr at redhat.com> = 3.2-9
+- [navicli] catch exceptions if stdin is unreadable
+  Resolves: bz1166039
+- [docs] update man page for new options
+  Resolves: bz1171658
+- [sosreport] make all utf-8 handling user errors=ignore
+  Resolves: bz1164267
+
+* Tue Dec 09 2014 Bryn M. Reeves <bmr at redhat.com> = 3.2-8
+- [kpatch] do not attempt to collect data if kpatch is not installed
+  Resolves: bz1110918
+- [archive] drop support for Zip archives
+  Resolves: bz1118152
+
+* Thu Oct 30 2014 Bryn M. Reeves <bmr at redhat.com> = 3.2-7
+- [sosreport] fix archive permissions regression
+  Resolves: bz1158891
+
+* Mon Oct 20 2014 Bryn M. Reeves <bmr at redhat.com> = 3.2-6
+- [tomcat] add support for tomcat7 and default log size limits
+  Resolves: bz1148375
+- [mysql] obtain database password from the environment
+  Resolves: bz1126001
+
+* Wed Oct 15 2014 Bryn M. Reeves <bmr at redhat.com> = 3.2-5
+- [corosync] add postprocessing for corosync-objctl output
+  Resolves: bz1087515
+- [ovirt_hosted_engine] fix exception when force-enabled
+  Resolves: bz1148551
+
+* Thu Oct 02 2014 Bryn M. Reeves <bmr at redhat.com> = 3.2-4
+- [yum] call rhsm-debug with --no-subscriptions
+  Resolves: bz1116349
+- [powerpc] allow PowerPC plugin to run on ppc64le
+  Resolves: bz1140427
+- [package] add Obsoletes for sos-plugins-openstack
+  Resolves: bz1140756
+
+* Wed Oct 01 2014 Bryn M. Reeves <bmr at redhat.com> = 3.2-3
+- [pam] add pam_tally2 and faillock support
+  Resolves: bz1127631
+- [postgresql] obtain db password from the environment
+  Resolves: bz1126001
+- [pcp] add Performance Co-Pilot plugin
+  Resolves: bz1119833
+- [nfsserver] collect /etc/exports.d
+  Resolves: bz1118921
+- [sosreport] handle --compression-type correctly
+  Resolves: bz1118152
+- [anaconda] redact passwords in kickstart configurations
+  Resolves: bz1112175
+- [haproxy] add new plugin
+  Resolves: bz1107865
+- [keepalived] add new plugin
+  Resolves: bz1105247
+- [lvm2] set locking_type=0 when calling lvm commands
+  Resolves: bz1102285
+- [tuned] add new plugin
+  Resolves: bz1095447
+- [cgroups] collect /etc/sysconfig/cgred
+  Resolves: bz1083677
+- [plugins] ensure doc text is always displayed for plugins
+  Resolves: bz1065473
+- [sosreport] fix the distribution version API call
+  Resolves: bz1028111
+- [docker] add new plugin
+  Resolves: bz1084990
+- [openstack_*] include broken-out openstack plugins
+  Resolves: bz1140756
+- [mysql] support MariaDB
+  Resolves: bz1106600
+- [openstack] do not collect /var/lib/nova
+  Resolves: bz1106423
+- [grub2] collect grub.cfg on UEFI systems
+  Resolves: bz1086648
+- [sosreport] handle out-of-space errors gracefully
+  Resolves: bz1087977
+- [firewalld] new plugin
+  Resolves: bz1100505
+- [networking] collect NetworkManager status
+  Resolves: bz1100505
+- [kpatch] new plugin
+  Resolves: bz1110918
+- [global] update to upstream 3.2 release
+  Resolves: bz1026962
+
+* Mon Sep 08 2014 Bryn M. Reeves <bmr at redhat.com> = 3.0-24
+- [foreman] add new plugin
+  Resolves: bz1130273
 
 * Thu Mar 20 2014 Bryn M. Reeves <bmr at redhat.com> = 3.0-23
 - Call rhsm-debug with the --sos switch
+  Resolves: bz1039036
 
 * Mon Mar 03 2014 Bryn M. Reeves <bmr at redhat.com> = 3.0-22
 - Fix package check in anacron plugin
+  Resolves: bz1067769
 
 * Wed Feb 12 2014 Bryn M. Reeves <bmr at redhat.com> = 3.0-21
 - Remove obsolete rhel_version() usage from yum plugin
+  Resolves: bz916705
 
 * Tue Feb 11 2014 Bryn M. Reeves <bmr at redhat.com> = 3.0-20
 - Prevent unhandled exception during command output substitution
+  Resolves: bz1030553
 
 * Mon Feb 10 2014 Bryn M. Reeves <bmr at redhat.com> = 3.0-19
 - Fix generation of volume names in gluster plugin
+  Resolves: bz1036752
 - Add distupgrade plugin
+  Resolves: bz1059760
 
 * Tue Feb 04 2014 Bryn M. Reeves <bmr at redhat.com> = 3.0-18
 - Prevent file descriptor leaks when using Popen
+  Resolves: bz1051009
 - Disable zip archive creation when running rhsm-debug
+  Resolves: bz1039036
 - Include volume geo-replication status in gluster plugin
+  Resolves: bz1036752
 
 * Mon Feb 03 2014 Bryn M. Reeves <bmr at redhat.com> = 3.0-17
 - Fix get_option use in cluster plugin
+  Resolves: bz1030553
 - Fix debug logging to file when given '-v'
+  Resolves: bz1031126
 - Always treat rhevm plugin's vdsmlogs option as a string
+  Resolves: bz1030617
 - Run the rhsm-debug script from yum plugin
+  Resolves: bz1039036
 
 * Fri Jan 31 2014 Bryn M. Reeves <bmr at redhat.com> = 3.0-16
 - Add new plugin to collect OpenHPI configuration
+  Resolves: bz1028121
 - Fix cluster plugin crm_report support
+  Resolves: bz1030553
 - Fix file postprocessing in ldap plugin
+  Resolves: bz1030602
 - Remove collection of anaconda-ks.cfg from general plugin
+  Resolves: bz1034865
 
 * Fri Jan 24 2014 Bryn M. Reeves <bmr at redhat.com> = 3.0-15
 - Remove debug statements from logs plugin
+  Resolves: bz1030042
 - Make ethernet interface detection more robust
+  Resolves: bz1030824
 - Fix specifying multiple plugin options on the command line
+  Resolves: bz1031124
 - Make log and message levels match previous versions
+  Resolves: bz1031126
 - Log a warning message when external commands time out
+  Resolves: bz1034956
 - Remove --upload command line option
+  Resolves: bz1028484
 - Update sos UI text to match upstream
+  Resolves: bz1034970
 
 * Fri Dec 27 2013 Daniel Mach <dmach at redhat.com> = 3.0-14
 - Mass rebuild 2013-12-27
 
 * Thu Nov 14 2013 Bryn M. Reeves <bmr at redhat.com> = 3.0-13
 - Fix regressions introduced with --build option
+  Resolves: bz1015599
 
 * Tue Nov 12 2013 Bryn M. Reeves <bmr at redhat.com> = 3.0-12
 - Fix typo in yum plug-in add_forbidden_paths
+  Resolves: bz829297
 - Add krb5 plug-in and drop collection of krb5.keytab
+  Resolves: bz1028150
 
 * Fri Nov  8 2013 Bryn M. Reeves <bmr at redhat.com> = 3.0-10
 - Add nfs client plug-in
+  Resolves: bz1028072
 - Fix traceback when sar module force-enabled
+  Resolves: bz1028125
 
 * Thu Nov  7 2013 Bryn M. Reeves <bmr at redhat.com> = 3.0-9
 - Restore --build command line option
+  Resolves: bz1015599
 - Collect saved vmcore-dmesg.txt files
+  Resolves: bz1026959
 - Normalize temporary directory paths
+  Resolves: bz829069
 
 * Tue Nov  5 2013 Bryn M. Reeves <bmr at redhat.com> = 3.0-7
 - Add domainname output to NIS plug-in
+  Resolves: bz1026906
 - Collect /var/log/squid in squid plug-in
+  Resolves: bz1026829
 - Collect mountstats and mountinfo in filesys plug-in
+  Resolves: bz1026869
 - Add PowerPC plug-in from upstream
+  Resolves: bz1025236
 
 * Thu Oct 31 2013 Bryn M. Reeves <bmr at redhat.com> = 3.0-6
 - Remove version checks in gluster plug-in
+  Resolves: bz1015606
 - Check for usable temporary directory
+  Resolves: bz1019517
 - Fix --alloptions command line option
+  Resolves: bz1019356
 - Fix configuration fail regression
+  Resolves: bz1019516
 
 * Wed Oct 30 2013 Bryn M. Reeves <bmr at redhat.com> = 3.0-5
 - Include /etc/yaboot.conf in boot plug-in
+  Resolves: bz1001966
 - Fix collection of brctl output in networking plug-in
+  Resolves: bz1019235
 - Verify limited set of RPM packages by default
+  Resolves: bz1019863
 - Do not strip newlines from command output
+  Resolves: bz1019338
 - Limit default sar data collection
+  Resolves: bz1001599
 
 * Thu Oct 3 2013 Bryn M. Reeves <bmr at redhat.com> = 3.0-4
 - Do not attempt to read RPC pseudo files in networking plug-in
+  Resolves: bz996992, bz996994
 - Restrict wbinfo collection to the current domain
+  Resolves: bz997101
 - Add obfuscation of luci secrets to cluster plug-in
+  Resolves: bz997090
 - Add XFS plug-in
+  Resolves: bz997094
 - Fix policy class handling of --tmp-dir
+  Resolves: bz997083
 - Do not set batch mode if stdin is not a TTY
+  Resolves: bz1002943
 - Attempt to continue when reading bad input in interactive mode
+  Resolves: bz1002943
 
 * Wed Aug 14 2013 Bryn M. Reeves <bmr at redhat.com> = 3.0-3
 - Add crm_report support to cluster plug-in
+  Resolves: bz839342
 - Fix rhel_version() usage in cluster and s390 plug-ins
+  Resolves: bz916705
 - Strip trailing newline from command output
-
-* Sun Aug 04 2013 Fedora Release Engineering <rel-eng at lists.fedoraproject.org> - 3.0-3
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild
+  Resolves: bz971420
 
 * Mon Jun 10 2013 Bryn M. Reeves <bmr at redhat.com> = 3.0-2
 - Silence 'could not run' messages at default verbosity
@@ -412,238 +561,3 @@ rm -rf ${RPM_BUILD_ROOT}
 - rhbz fixes from RHEL version merged into trunk
 - progressbar update
 
-* Tue Nov 19 2009 Adam Stokes <ajs at redhat dot com> = 1.8-20
-- dont copy unwanted files due to symlinks
-- More plugin enhancements
-
-* Tue Nov 5 2009 Adam Stokes <ajs at redhat dot com> = 1.8-18
-- Option to enable selinux fixfiles check
-- Start of replacing Thread module with multiprocessing
-- Update translations
-- More checks against conf file versus command line opts
-
-* Tue Sep 9 2009 Adam Stokes <ajs at redhat dot com> = 1.8-16
-- Update rh-upload-core to rh-upload and allows general files
-- Fix cluster plugin with pwd mangling invalidating xml
-- Cluster support detecting invalid fence_id and fence states
-- Read variables from conf file
-
-* Thu Jul 23 2009 Adam Stokes <ajs at redhat dot com> = 1.8-14
-- resolves: rhbz512536 wrong group in spec file
-- resolves: rhbz498398 A series of refactoring patches to sos
-- resolves: rhbz501149 A series of refactoring patches to sos (2)
-- resolves: rhbz503804 remove obsolete translation
-- resolves: rhbz502455 tricking sosreport into rm -rf /
-- resolves: rhbz501146 branding in fedora
-
-* Mon Jul 20 2009 Adam Stokes <ajs at redhat dot com> = 1.8-13
-- Add requirements for tar,bzip2 during minimal installs
-- More merges from reports against RHEL version of plugins
-- Remove unecessary definition of localdir in spec
-
-* Wed May 05 2009 Adam Stokes <ajs at redhat dot com> - 1.8-11
-- Remove all instances of sysrq
-- Consistent macro usage in spec
-
-* Wed Feb 25 2009 Fedora Release Engineering <rel-eng at lists.fedoraproject.org> - 1.8-10
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild
-
-* Mon Dec 29 2008 Adam Stokes <ajs at redhat dot com> - 1.8-5
-- removed source defines as python manifest handles this
-
-* Fri Dec 19 2008 Adam Stokes <ajs at redhat dot com> - 1.8-4
-- spec cleanup, fixed license, source
-- reworked Makefile to build properly
-
-* Thu Oct 23 2008 Adam Stokes <astokes at redhat dot com> - 1.8-1
-
-* Wed Nov 21 2007 Navid Sheikhol-Eslami <navid at redhat dot com> - 1.8-0
-- selinux: always collect sestatus
-- added many languages
-- added --debug option which causes exceptions not to be trapped
-- updated to sysreport-1.4.3-13.el5
-- ftp upload to dropbox with --upload
-- cluster: major rewrite to support different versions of RHEL
-- cluster: check rg_test for errors
-- minor changes in various plug-ins (yum, networking, process, kernel)
-- fixed some exceptions in threads which were not properly trapped
-- veritas: don't run rpm -qa every time
-- using rpm's python bindings instead of external binary
-- corrected autofs and ldap plugin that were failing when debug option was not found in config file.
-- implemented built-in checkdebug() that uses self.files and self.packages to make the decision
-- missing binaries are properly detected now.
-- better doExitCode handling
-- fixed problem with rpm module intercepting SIGINT
-- error when user specifies an invalid plugin or plugin option
-- named: fixed indentation
-- replaced isOptionEnabled() with getOption()
-- tune2fs and fdisk were not always run against the correct devices/mountpoint
-- added gpg key to package
-- updated README with new svn repo and contributors
-- updated manpage
-- better signal handling
-- caching of rpm -q outputs
-- report filename includes rhnUsername if available
-- report encryption via gpg and support pubkey
-- autofs: removed redundant files
-- filesys: better handling of removable devices
-- added sosReadFile() returns a file's contents
-- return after looping inside a directory
-- collect udevinfo for each block device
-- simply collect output of fdisk -l in one go
-- handle sysreport invocation properly (warn if shell is interactive, otherwise spawn sysreport.legacy)
-- progress bar don't show 100% until finished() is called
-- now runs on RHEL3 as well (python 2.2)
-- replaced commonPrefix() with faster code
-- filesys: one fdisk -l for all
-- selinux: collect fixfilex check output
-- devicemapper: collect udevinfo for all block devices
-- cluster: validate node names according to RFC 2181
-- systemtap: cleaned up and added checkenabled() method
-- added kdump plugin
-- added collection of /etc/inittab
-
-* Wed Aug 13 2007 Navid Sheikhol-Eslami <navid at redhat dot com> - 1.7-8
-- added README.rh-upload-core
-
-* Mon Aug 13 2007 Navid Sheikhol-Eslami <navid at redhat dot com> - 1.7-7
-- added extras/rh-upload-core script from David Mair <dmair at redhat.com>
-
-* Mon Aug  9 2007 Navid Sheikhol-Eslami <navid at redhat dot com> - 1.7-6
-- more language fixes
-- added arabic, italian and french
-- package prepared for release
-- included sysreport as sysreport.legacy
-
-* Mon Aug  9 2007 Navid Sheikhol-Eslami <navid at redhat dot com> - 1.7-5
-- package obsoletes sysreport and creates a link pointing to sosreport
-- added some commands in cluster and process plugins
-- fixed html output (wrong links to cmds, thanks streeter)
-- process: back down sleep if D state doesn't change
-
-* Mon Aug  1 2007 Navid Sheikhol-Eslami <navid at redhat dot com> - 1.7-4
-- catch KeyboardInterrupt when entering sosreport name
-- added color output for increased readability
-- list was sorted twice, removing latter .sort()
-
-* Mon Jul 31 2007 Navid Sheikhol-Eslami <navid at redhat dot com> - 1.7-3
-- added preliminary problem diagnosis support
-- better i18n initialization
-- better user messages
-- more progressbar fixes
-- catch and log python exceptions in report
-- use python native commands to create symlinks
-- limit concurrent running threads
-
-* Mon Jul 28 2007 Navid Sheikhol-Eslami <navid at redhat dot com> - 1.7-2
-- initial language localization support
-- added italian translation
-
-* Mon Jul 16 2007 Navid Sheikhol-Eslami <navid at redhat dot com> - 1.7-1
-- split up command outputs in sub-directories (sos_command/plugin/command instead of sos_command/plugin.command)
-- fixed doExitCode() calling thread.wait() instead of join()
-- curses menu is disabled by default
-- multithreading is enabled by default
-- major progressbar changes (now has ETA)
-- multithreading fixes
-- plugins class descriptions shortened to fix better in --list-plugins
-- rpm -Va in plugins/rpm.py sets eta_weight to 200 (plugin 200 longer than other plugins, for ETA calculation)
-- beautified command output filenames in makeCommandFilename()
-
-* Mon Jul 12 2007 Navid Sheikhol-Eslami <navid at redhat dot com> - 1.7-0
-- curses menu disabled by default (enable with -c)
-- sosreport output friendlier to the user (and similar to sysreport)
-- smarter plugin listing which also shows options and disable/enabled plugins
-- require root permissions only for actual sosreport generation
-- fix in -k where option value was treated as string instead of int
-- made progressbar wider (60 chars)
-- selinux plugin is enabled only if selinux is also enabled on the system
-- made some errors less verbose to the user
-- made sosreport not copy files pointed by symbolic links (same as sysreport, we don't need /usr/bin/X or /sbin/ifup)
-- copy links as links (cp -P)
-- added plugin get_description() that returns a short decription for the plugin
-- guess sosreport name from system's name
-
-* Mon Jul  5 2007 Navid Sheikhol-Eslami <navid at redhat dot com> - 1.6-5
-- Yet more fixes to make package Fedora compliant.
-
-* Mon Jul  5 2007 Navid Sheikhol-Eslami <navid at redhat dot com> - 1.6-4
-- More fixes to make package Fedora compliant.
-
-* Mon Jul  2 2007 Navid Sheikhol-Eslami <navid at redhat dot com> - 1.6-3
-- Other fixes to make package Fedora compliant.
-
-* Mon Jul  2 2007 Navid Sheikhol-Eslami <navid at redhat dot com> - 1.6-2
-- Minor fixes.
-
-* Mon Jul  2 2007 Navid Sheikhol-Eslami <navid at redhat dot com> - 1.6-1
-- Beautified output of --list-plugins.
-- GPL licence is now included in the package.
-- added python-devel requirement for building package
-
-* Fri May 25 2007 Steve Conklin <sconklin at redhat dot com> - 1.5-1
-- Bumped version
-
-* Fri May 25 2007 Steve Conklin <sconklin at redhat dot com> - 1.4-2
-- Fixed a backtrace on nonexistent file in kernel plugin (thanks, David Robinson)
-
-* Mon Apr 30 2007 Steve Conklin <sconklin at redhat dot com> - 1.4-1
-- Fixed an error in option handling
-- Forced the file generated by traceroute to not end in .com
-- Fixed a problem with manpage
-- Added optional traceroute collection to networking plugin
-- Added clalance's patch to gather iptables info.
-- Fixes to the device-mapper plugin
-- Fixed a problem with installation of man page
-
-* Mon Apr 16 2007 Steve Conklin <sconklin at redhat dot com> - 1.3-3
-- including patches to fix the following:
-
-* Tue Feb 20 2007 John Berninger <jwb at redhat dot com> - 1.3-2
-- Add man page
-
-* Fri Dec 15 2006 Steve Conklin <sconklin at redhat dot com> - 1.3-1
-- really fixed bz_219654
-
-* Fri Dec 15 2006 Steve Conklin <sconklin at redhat dot com> - 1.2-1
-- fixed a build problem
-
-* Fri Dec 15 2006 Steve Conklin <sconklin at redhat dot com> - 1.1-1
-- Tighten permissions of tmp directory so only readable by creator bz_219657
-- Don't print message 'Problem at path ...'  bz_219654
-- Removed useless message bz_219670
-- Preserve file modification times bz_219674
-- Removed unneeded message about files on copyProhibitedList bz_219712
-
-* Wed Aug 30 2006 Steve Conklin <sconklin at redhat dot com> - 1.0-1
-- Seperated upstream and RPM versioning
-
-* Mon Aug 21 2006 Steve Conklin <sconklin at redhat dot com> - 0.1-11
-- Code cleanup, fixed a regression in threading
-
-* Mon Aug 14 2006 Steve Conklin <sconklin at redhat dot com> - 0.1-10
-- minor bugfixes, added miltithreading option, setup now quiet
-
-* Mon Jul 17 2006 Steve Conklin <sconklin at redhat dot com> - 0.1-9
-- migrated to svn on 108.redhat.com, fixed a problem with command output linking in report
-
-* Mon Jun 19 2006 Steve Conklin <sconklin at redhat dot com> - 0.1-6
-- Added LICENSE file containing GPL
-
-* Wed May 31 2006 Steve Conklin <sconklin at redhat dot com> - 0.1-5
-- Added fixes to network plugin and prepped for Fedora submission
-
-* Wed May 31 2006 John Berninger <jwb at redhat dot com> - 0.1-4
-- Reconsolidated subpackages into one package per discussion with sconklin
-
-* Mon May 22 2006 John Berninger <jwb at redhat dot com> - 0.1-3
-- Added ftp, ldap, mail, named, samba, squid SOS plugins
-- Fixed various errors in kernel and hardware plugins
-
-* Mon May 22 2006 John Benringer <jwb at redhat dot com> - 0.1-2
-- split off cluster plugin into subpackage
-- correct file payload lists
-
-* Mon May 22 2006 John Berninger <jwb at redhat dot com> - 0.1-1
-- initial package build
-
diff --git a/sources b/sources
index 2478134..df0e872 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-e0bc862529e178815c6fbaaa16c0b691  sos-55c89eb6810e7060845082845653b059aab90e3d.tar.gz
+e3a7790a4c2149a6210ff6b67c80572c  sos-3.2.tar.gz


More information about the scm-commits mailing list