diff --git a/.gitignore b/.gitignore
index c63cd5b..737aeda 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1 @@
-SOURCES/3.4.tar.gz
+SOURCES/3.5.tar.gz
diff --git a/.sos.metadata b/.sos.metadata
index a550778..6563c38 100644
--- a/.sos.metadata
+++ b/.sos.metadata
@@ -1 +1 @@
-76b088e728d79fa8110d2a16a66ffbc00c7e9170 SOURCES/3.4.tar.gz
+645a3c29e0cde8ba07b876dc3698afdaec224c46 SOURCES/3.5.tar.gz
diff --git a/SOURCES/sos-bz1148381-libvirt-cgroups-collection.patch b/SOURCES/sos-bz1148381-libvirt-cgroups-collection.patch
deleted file mode 100644
index d51c8b2..0000000
--- a/SOURCES/sos-bz1148381-libvirt-cgroups-collection.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From d7af5cddbbb9d93e3af5bff3753d29ff1c02cd8b Mon Sep 17 00:00:00 2001
-From: "Bryn M. Reeves" <bmr@redhat.com>
-Date: Mon, 15 May 2017 17:32:06 +0100
-Subject: [PATCH] [libvirt] fix per-process cgroup collection
-
-The per-pid cgroup data is in a pseudofile named 'cgroup', and not
-'cgroups' as in commit 2523ad5.
-
-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 cbb4fb4..674dd67 100644
---- a/sos/plugins/libvirt.py
-+++ b/sos/plugins/libvirt.py
-@@ -65,7 +65,7 @@ class Libvirt(Plugin, RedHatPlugin, UbuntuPlugin, DebianPlugin):
-         # get details of processes of KVM hosts
-         for pidfile in glob.glob("/var/run/libvirt/*/*.pid"):
-             pid = open(pidfile).read().splitlines()[0]
--            for pf in ["environ", "cgroups", "maps", "numa_maps", "limits"]:
-+            for pf in ["environ", "cgroup", "maps", "numa_maps", "limits"]:
-                 self.add_copy_spec("/proc/%s/%s" % (pid, pf))
- 
-     def postproc(self):
--- 
-2.7.4
-
diff --git a/SOURCES/sos-bz1250346-openstack-tripleo.patch b/SOURCES/sos-bz1250346-openstack-tripleo.patch
deleted file mode 100644
index 227d360..0000000
--- a/SOURCES/sos-bz1250346-openstack-tripleo.patch
+++ /dev/null
@@ -1,239 +0,0 @@
-From c26ab810bf4b55516a477d96d551f51f0087156c Mon Sep 17 00:00:00 2001
-From: Martin Schuppert <mschuppert@redhat.com>
-Date: Tue, 2 May 2017 11:56:50 +0200
-Subject: [PATCH] [openstack_*] fix issue with --verify option
-
-If --verify option got specified, the package list was not handled
-properly and resulted in trace.
-
-Resolves: #1000.
-
-Signed-off-by: Martin Schuppert <mschuppe@redhat.com>
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/plugins/openstack_ceilometer.py | 2 +-
- sos/plugins/openstack_cinder.py     | 2 +-
- sos/plugins/openstack_glance.py     | 2 +-
- sos/plugins/openstack_heat.py       | 2 +-
- sos/plugins/openstack_horizon.py    | 2 +-
- sos/plugins/openstack_instack.py    | 2 +-
- sos/plugins/openstack_ironic.py     | 2 +-
- sos/plugins/openstack_keystone.py   | 2 +-
- sos/plugins/openstack_neutron.py    | 2 +-
- sos/plugins/openstack_nova.py       | 2 +-
- sos/plugins/openstack_sahara.py     | 2 +-
- sos/plugins/openstack_swift.py      | 2 +-
- sos/plugins/openstack_trove.py      | 2 +-
- 13 files changed, 13 insertions(+), 13 deletions(-)
-
-diff --git a/sos/plugins/openstack_ceilometer.py b/sos/plugins/openstack_ceilometer.py
-index 94b73b6..571723c 100644
---- a/sos/plugins/openstack_ceilometer.py
-+++ b/sos/plugins/openstack_ceilometer.py
-@@ -38,7 +38,7 @@ class OpenStackCeilometer(Plugin):
-                                sizelimit=self.limit)
-         self.add_copy_spec("/etc/ceilometer/")
-         if self.get_option("verify"):
--            self.add_cmd_output("rpm -V %s" % ' '.join(packages))
-+            self.add_cmd_output("rpm -V %s" % ' '.join(self.packages))
- 
-     def postproc(self):
-         protect_keys = [
-diff --git a/sos/plugins/openstack_cinder.py b/sos/plugins/openstack_cinder.py
-index 157f23d..a46dd56 100644
---- a/sos/plugins/openstack_cinder.py
-+++ b/sos/plugins/openstack_cinder.py
-@@ -45,7 +45,7 @@ class OpenStackCinder(Plugin):
-             self.add_copy_spec("/var/log/cinder/*.log", sizelimit=self.limit)
- 
-         if self.get_option("verify"):
--            self.add_cmd_output("rpm -V %s" % ' '.join(packages))
-+            self.add_cmd_output("rpm -V %s" % ' '.join(self.packages))
- 
-     def postproc(self):
-         protect_keys = [
-diff --git a/sos/plugins/openstack_glance.py b/sos/plugins/openstack_glance.py
-index e18be9c..0db5025 100644
---- a/sos/plugins/openstack_glance.py
-+++ b/sos/plugins/openstack_glance.py
-@@ -45,7 +45,7 @@ class OpenStackGlance(Plugin):
-         self.add_copy_spec("/etc/glance/")
- 
-         if self.get_option("verify"):
--            self.add_cmd_output("rpm -V %s" % ' '.join(packages))
-+            self.add_cmd_output("rpm -V %s" % ' '.join(self.packages))
- 
-         vars = [p in os.environ for p in [
-                 'OS_USERNAME', 'OS_PASSWORD', 'OS_TENANT_NAME']]
-diff --git a/sos/plugins/openstack_heat.py b/sos/plugins/openstack_heat.py
-index c002bbd..3638aa3 100644
---- a/sos/plugins/openstack_heat.py
-+++ b/sos/plugins/openstack_heat.py
-@@ -52,7 +52,7 @@ class OpenStackHeat(Plugin):
-         self.add_copy_spec("/etc/heat/")
- 
-         if self.get_option("verify"):
--            self.add_cmd_output("rpm -V %s" % ' '.join(packages))
-+            self.add_cmd_output("rpm -V %s" % ' '.join(self.packages))
- 
-     def postproc(self):
-         protect_keys = [
-diff --git a/sos/plugins/openstack_horizon.py b/sos/plugins/openstack_horizon.py
-index 25a9916..88ed910 100644
---- a/sos/plugins/openstack_horizon.py
-+++ b/sos/plugins/openstack_horizon.py
-@@ -40,7 +40,7 @@ class OpenStackHorizon(Plugin):
-         self.add_forbidden_path("*.py[co]")
- 
-         if self.get_option("verify"):
--            self.add_cmd_output("rpm -V %s" % ' '.join(packages))
-+            self.add_cmd_output("rpm -V %s" % ' '.join(self.packages))
- 
-     def postproc(self):
-         protect_keys = [
-diff --git a/sos/plugins/openstack_instack.py b/sos/plugins/openstack_instack.py
-index 30acecf..3cbc008 100644
---- a/sos/plugins/openstack_instack.py
-+++ b/sos/plugins/openstack_instack.py
-@@ -30,7 +30,7 @@ class OpenStackInstack(Plugin):
-         self.add_copy_spec("/home/stack/instackenv.json")
-         self.add_copy_spec("/home/stack/undercloud.conf")
-         if self.get_option("verify"):
--            self.add_cmd_output("rpm -V %s" % ' '.join(packages))
-+            self.add_cmd_output("rpm -V %s" % ' '.join(self.packages))
- 
-         self.limit = self.get_option("log_size")
-         if self.get_option("all_logs"):
-diff --git a/sos/plugins/openstack_ironic.py b/sos/plugins/openstack_ironic.py
-index 760ca43..6a75124 100644
---- a/sos/plugins/openstack_ironic.py
-+++ b/sos/plugins/openstack_ironic.py
-@@ -38,7 +38,7 @@ class OpenStackIronic(Plugin):
-         self.add_cmd_output('ls -laRt /var/lib/ironic/')
- 
-         if self.get_option("verify"):
--            self.add_cmd_output("rpm -V %s" % ' '.join(packages))
-+            self.add_cmd_output("rpm -V %s" % ' '.join(self.packages))
- 
-         vars = [p in os.environ for p in [
-                 'OS_USERNAME', 'OS_PASSWORD', 'OS_TENANT_NAME']]
-diff --git a/sos/plugins/openstack_keystone.py b/sos/plugins/openstack_keystone.py
-index ce177fb..e7cda2f 100644
---- a/sos/plugins/openstack_keystone.py
-+++ b/sos/plugins/openstack_keystone.py
-@@ -42,7 +42,7 @@ class OpenStackKeystone(Plugin):
-             self.add_copy_spec("/var/log/keystone/*.log", sizelimit=self.limit)
- 
-         if self.get_option("verify"):
--            self.add_cmd_output("rpm -V %s" % ' '.join(packages))
-+            self.add_cmd_output("rpm -V %s" % ' '.join(self.packages))
- 
-         vars = [p in os.environ for p in [
-                 'OS_USERNAME', 'OS_PASSWORD', 'OS_TENANT_NAME']]
-diff --git a/sos/plugins/openstack_neutron.py b/sos/plugins/openstack_neutron.py
-index 590194c..8cf7357 100644
---- a/sos/plugins/openstack_neutron.py
-+++ b/sos/plugins/openstack_neutron.py
-@@ -36,7 +36,7 @@ class OpenStackNeutron(Plugin):
-         self.add_copy_spec("/etc/neutron/")
-         self.add_copy_spec("/var/lib/neutron/")
-         if self.get_option("verify"):
--            self.add_cmd_output("rpm -V %s" % ' '.join(packages))
-+            self.add_cmd_output("rpm -V %s" % ' '.join(self.packages))
- 
-         vars = [p in os.environ for p in [
-                 'OS_USERNAME', 'OS_PASSWORD', 'OS_TENANT_NAME']]
-diff --git a/sos/plugins/openstack_nova.py b/sos/plugins/openstack_nova.py
-index 8e0a19a..14bdfbd 100644
---- a/sos/plugins/openstack_nova.py
-+++ b/sos/plugins/openstack_nova.py
-@@ -70,7 +70,7 @@ class OpenStackNova(Plugin):
-         self.add_copy_spec("/etc/nova/")
- 
-         if self.get_option("verify"):
--            self.add_cmd_output("rpm -V %s" % ' '.join(packages))
-+            self.add_cmd_output("rpm -V %s" % ' '.join(self.packages))
- 
-     def postproc(self):
-         protect_keys = [
-diff --git a/sos/plugins/openstack_sahara.py b/sos/plugins/openstack_sahara.py
-index 5a2a5c3..cbc5bd9 100644
---- a/sos/plugins/openstack_sahara.py
-+++ b/sos/plugins/openstack_sahara.py
-@@ -37,7 +37,7 @@ class OpenStackSahara(Plugin):
-             self.add_copy_spec("/var/log/sahara/*.log", sizelimit=self.limit)
- 
-         if self.get_option("verify"):
--            self.add_cmd_output("rpm -V %s" % ' '.join(packages))
-+            self.add_cmd_output("rpm -V %s" % ' '.join(self.packages))
- 
-     def postproc(self):
-         protect_keys = [
-diff --git a/sos/plugins/openstack_swift.py b/sos/plugins/openstack_swift.py
-index 1ac3509..6edc056 100644
---- a/sos/plugins/openstack_swift.py
-+++ b/sos/plugins/openstack_swift.py
-@@ -38,7 +38,7 @@ class OpenStackSwift(Plugin):
-         self.add_copy_spec("/etc/swift/")
- 
-         if self.get_option("verify"):
--            self.add_cmd_output("rpm -V %s" % ' '.join(packages))
-+            self.add_cmd_output("rpm -V %s" % ' '.join(self.packages))
- 
-     def postproc(self):
-         protect_keys = [
-diff --git a/sos/plugins/openstack_trove.py b/sos/plugins/openstack_trove.py
-index e8306e5..539cbb3 100644
---- a/sos/plugins/openstack_trove.py
-+++ b/sos/plugins/openstack_trove.py
-@@ -37,7 +37,7 @@ class OpenStackTrove(Plugin):
-         self.add_copy_spec('/etc/trove/')
- 
-         if self.get_option("verify"):
--            self.add_cmd_output("rpm -V %s" % ' '.join(packages))
-+            self.add_cmd_output("rpm -V %s" % ' '.join(self.packages))
- 
-     def postproc(self):
- 
--- 
-2.7.4
-
-From 02b95e468211406989fd488e649f99bf9e9dfc1c Mon Sep 17 00:00:00 2001
-From: Martin Schuppert <mschuppert@redhat.com>
-Date: Tue, 2 May 2017 12:14:47 +0200
-Subject: [PATCH] [openstack_instack] extended packages list
-
-Extended packages list to verify triplo packages if --verify is
-specified.
-
-Resolves: #1001.
-
-Signed-off-by: Martin Schuppert <mschuppe@redhat.com>
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/plugins/openstack_instack.py | 9 +++++++++
- 1 file changed, 9 insertions(+)
-
-diff --git a/sos/plugins/openstack_instack.py b/sos/plugins/openstack_instack.py
-index 3cbc008..bd836ba 100644
---- a/sos/plugins/openstack_instack.py
-+++ b/sos/plugins/openstack_instack.py
-@@ -114,6 +114,15 @@ class RedHatRDOManager(OpenStackInstack, RedHatPlugin):
-     packages = [
-         'instack',
-         'instack-undercloud',
-+        'openstack-tripleo',
-+        'openstack-tripleo-common',
-+        'openstack-tripleo-heat-templates',
-+        'openstack-tripleo-image-elements',
-+        'openstack-tripleo-puppet-elements',
-+        'openstack-tripleo-ui',
-+        'openstack-tripleo-validations',
-+        'puppet-tripleo',
-+        'python-tripleoclient'
-     ]
- 
-     def setup(self):
--- 
-2.7.4
-
diff --git a/SOURCES/sos-bz1353873-pcp-logsize.patch b/SOURCES/sos-bz1353873-pcp-logsize.patch
new file mode 100644
index 0000000..9a816bd
--- /dev/null
+++ b/SOURCES/sos-bz1353873-pcp-logsize.patch
@@ -0,0 +1,27 @@
+From 1932d96dcf9071d1180286b96abfd998e20a09fd Mon Sep 17 00:00:00 2001
+From: Pavel Moravec <pmoravec@redhat.com>
+Date: Thu, 11 Jan 2018 12:52:34 +0100
+Subject: [PATCH] [pcp] really apply sizelimit to logs collected
+
+add_copy_spec must be called to files and not dirs, to apply sizelimit
+
+Resolves: #1187
+
+Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
+---
+ sos/plugins/pcp.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/sos/plugins/pcp.py b/sos/plugins/pcp.py
+index 12537526b..8f17a5de5 100644
+--- a/sos/plugins/pcp.py
++++ b/sos/plugins/pcp.py
+@@ -122,7 +122,7 @@ def setup(self):
+         if self.pcp_hostname != '':
+             for pmdir in ('pmlogger', 'pmmgr'):
+                 path = os.path.join(self.pcp_log_dir, pmdir,
+-                                    self.pcp_hostname)
++                                    self.pcp_hostname, '*')
+                 self.add_copy_spec(path, sizelimit=self.limit)
+ 
+         self.add_copy_spec([
diff --git a/SOURCES/sos-bz1393961-missing-filesystem-nonfatal.patch b/SOURCES/sos-bz1393961-missing-filesystem-nonfatal.patch
deleted file mode 100644
index 03b5c7b..0000000
--- a/SOURCES/sos-bz1393961-missing-filesystem-nonfatal.patch
+++ /dev/null
@@ -1,60 +0,0 @@
-From 4df4897146d4f2a0589a8b32532f912f1ea2ed8c Mon Sep 17 00:00:00 2001
-From: "Bryn M. Reeves" <bmr@redhat.com>
-Date: Mon, 22 May 2017 16:30:35 +0100
-Subject: [PATCH] [policies/redhat] make missing 'filesystem' package non-fatal
-
-On Red Hat systems, we use the version of the installed filesystem'
-package to enable handling of UsrMove[1] in the PATH used when
-running commands from sos.
-
-If the package is not present (e.g. because of a broken system
-configuration, rpm timeout, corrupt database or other cause),
-previous versions would fail immediately. In this situation
-there was no way for the user to attempt a complete run (short
-of fixing the problem related to the 'filesystem' package).
-
-Now that the timeout has been lengthened for this command, make
-the UsrMove determination a bit more robust to prevent users from
-being unable to run sos at all:
-
-  - If RPM fails entirely, exit (plugin enablement tests will fail)
-  - If RPM succeeds but 'filesystem' is missing assume UsrMove
-    (this is true for all supported Red Hat distros today)
-  - Otherwise apply the normal PATH logic.
-
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/policies/redhat.py | 12 ++++++++++--
- 1 file changed, 10 insertions(+), 2 deletions(-)
-
-diff --git a/sos/policies/redhat.py b/sos/policies/redhat.py
-index b801b5e..ec1d974 100644
---- a/sos/policies/redhat.py
-+++ b/sos/policies/redhat.py
-@@ -58,13 +58,21 @@ class RedHatPolicy(LinuxPolicy):
- 
-         pkgs = self.package_manager.all_pkgs()
- 
--        # If rpm query timed out after timeout duration exit
-+        # If rpm query failed, exit
-         if not pkgs:
-             print("Could not obtain installed package list", file=sys.stderr)
-             sys.exit(1)
- 
-         # handle PATH for UsrMove
--        if pkgs['filesystem']['version'][0] == '3':
-+        if 'filesystem' not in pkgs:
-+            print("Could not find 'filesystem' package: "
-+                  "assuming PATH settings")
-+            usrmove = True
-+        else:
-+            filesys_version = pkgs['filesystem']['version']
-+            usrmove = True if filesys_version[0] == '3' else False
-+
-+        if usrmove:
-             self.PATH = "/usr/sbin:/usr/bin:/root/bin"
-         else:
-             self.PATH = "/sbin:/bin:/usr/sbin:/usr/bin:/root/bin"
--- 
-2.7.4
-
diff --git a/SOURCES/sos-bz1400407-samba-dc-connect.patch b/SOURCES/sos-bz1400407-samba-dc-connect.patch
deleted file mode 100644
index f353560..0000000
--- a/SOURCES/sos-bz1400407-samba-dc-connect.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From ca831062bafa88f5be651d2cf6c8afd2162dea04 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?G=C3=BCnther=20Deschner?= <gd@samba.org>
-Date: Mon, 29 May 2017 15:47:29 +0200
-Subject: [PATCH] [samba] Fix dc-connect winbind logfile path
-
-Guenther
-
-Signed-off-by: Guenther Deschner <gd@samba.org>
----
- sos/plugins/samba.py | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/sos/plugins/samba.py b/sos/plugins/samba.py
-index 377eb889..dfe01d49 100644
---- a/sos/plugins/samba.py
-+++ b/sos/plugins/samba.py
-@@ -35,7 +35,7 @@ def setup(self):
-         self.add_copy_spec("/var/log/samba/log.winbindd", sizelimit=self.limit)
-         self.add_copy_spec("/var/log/samba/log.winbindd-idmap",
-                            sizelimit=self.limit)
--        self.add_copy_spec("/var/log/samba/log.winbindd-dc-connet",
-+        self.add_copy_spec("/var/log/samba/log.winbindd-dc-connect",
-                            sizelimit=self.limit)
-         self.add_copy_spec("/var/log/samba/log.wb-*", sizelimit=self.limit)
- 
-
diff --git a/SOURCES/sos-bz1416535-pacemaker-user-logs.patch b/SOURCES/sos-bz1416535-pacemaker-user-logs.patch
deleted file mode 100644
index fc6e37f..0000000
--- a/SOURCES/sos-bz1416535-pacemaker-user-logs.patch
+++ /dev/null
@@ -1,123 +0,0 @@
-From 17809273cecd83c068931e5d7e73d126d98e6ac1 Mon Sep 17 00:00:00 2001
-From: "Bryn M. Reeves" <bmr@redhat.com>
-Date: Tue, 9 May 2017 14:34:13 +0100
-Subject: [PATCH 1/2] [pacemaker] Collect /etc/default/pacemaker for
- Debian/Ubuntu
-
-Make /etc/default/pacemaker the default location for the Pacemaker
-defaults file, and have the RedHatPlugin override this to the
-/etc/sysconfig/pacemaker location as required.
-
-Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/plugins/pacemaker.py | 14 ++++++++++++--
- 1 file changed, 12 insertions(+), 2 deletions(-)
-
-diff --git a/sos/plugins/pacemaker.py b/sos/plugins/pacemaker.py
-index 0dac1da..74de433 100644
---- a/sos/plugins/pacemaker.py
-+++ b/sos/plugins/pacemaker.py
-@@ -17,12 +17,13 @@ from datetime import datetime, timedelta
- import re
- 
- 
--class Pacemaker(Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin):
-+class Pacemaker(Plugin, DebianPlugin, UbuntuPlugin):
-     """HA Cluster resource manager"""
- 
-     plugin_name = "pacemaker"
-     profiles = ("cluster", )
-     packages = ["pacemaker"]
-+    defaults = "/etc/default/pacemaker"
- 
-     option_list = [
-         ("crm_from", "specify the start time for crm_report", "fast", False),
-@@ -32,7 +33,7 @@ class Pacemaker(Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin):
-     def setup(self):
-         self.add_copy_spec([
-             "/var/lib/pacemaker/cib/cib.xml",
--            "/etc/sysconfig/pacemaker",
-+            self.defaults,
-             "/var/log/pacemaker.log",
-             "/var/log/pcsd/pcsd.log"
-         ])
-@@ -76,4 +77,13 @@ class Pacemaker(Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin):
-             r"\1********"
-         )
- 
-+
-+class RedHatPacemaker(Pacemaker, RedHatPlugin):
-+    """ Handle alternate location of pacemaker defaults file.
-+    """
-+    def setup(self):
-+        self.defaults = "/etc/sysconfig/pacemaker"
-+        super(RedHatPacemaker, self).setup()
-+
-+
- # vim: et ts=4 sw=4
--- 
-2.7.4
-
-
-From 15b01889292ee3fca68ea76523be93af3be138f6 Mon Sep 17 00:00:00 2001
-From: Pavel Moravec <pmoravec@redhat.com>
-Date: Wed, 3 May 2017 09:48:29 +0200
-Subject: [PATCH 2/2] [pacemaker] Collect user-defined logfile
-
-/etc/sysconfig/pacemaker or /etc/default/pacemaker can specify pacemaker's
-logfile that sos should collect.
-
-Resolves: #1002.
-
-Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/plugins/pacemaker.py | 17 +++++++++++++++++
- 1 file changed, 17 insertions(+)
-
-diff --git a/sos/plugins/pacemaker.py b/sos/plugins/pacemaker.py
-index 74de433..9393831 100644
---- a/sos/plugins/pacemaker.py
-+++ b/sos/plugins/pacemaker.py
-@@ -15,6 +15,7 @@
- from sos.plugins import Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin
- from datetime import datetime, timedelta
- import re
-+import os.path
- 
- 
- class Pacemaker(Plugin, DebianPlugin, UbuntuPlugin):
-@@ -45,6 +46,7 @@ class Pacemaker(Plugin, DebianPlugin, UbuntuPlugin):
-             "pcs status",
-             "pcs property list --all"
-         ])
-+
-         # crm_report needs to be given a --from "YYYY-MM-DD HH:MM:SS" start
-         # time in order to collect data.
-         crm_from = (datetime.today() -
-@@ -70,6 +72,21 @@ class Pacemaker(Plugin, DebianPlugin, UbuntuPlugin):
-                             (crm_scrub, crm_dest, crm_from),
-                             chroot=self.tmp_in_sysroot())
- 
-+        # collect user-defined logfiles, matching pattern:
-+        # PCMK_loggfile=filename
-+        # specified in the pacemaker defaults file.
-+        pattern = '^\s*PCMK_logfile=[\'\"]?(\S+)[\'\"]?\s*(\s#.*)?$'
-+        if os.path.isfile(self.defaults):
-+            with open(self.defaults) as f:
-+                for line in f:
-+                    if re.match(pattern, line):
-+                        # remove trailing and leading quote marks, in case the
-+                        # line is e.g. PCMK_logfile="/var/log/pacemaker.log"
-+                        logfile = re.search(pattern, line).group(1)
-+                        for regexp in [r'^"', r'"$', r'^\'', r'\'$']:
-+                            logfile = re.sub(regexp, '', logfile)
-+                        self.add_copy_spec(logfile)
-+
-     def postproc(self):
-         self.do_cmd_output_sub(
-             "pcs config",
--- 
-2.7.4
-
diff --git a/SOURCES/sos-bz1438257-collect-cmds-with-return-1.patch b/SOURCES/sos-bz1438257-collect-cmds-with-return-1.patch
deleted file mode 100644
index 973f551..0000000
--- a/SOURCES/sos-bz1438257-collect-cmds-with-return-1.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From a2c387ae1687170e827e0aa2b49faf759c015798 Mon Sep 17 00:00:00 2001
-From: "Bryn M. Reeves" <bmr@redhat.com>
-Date: Wed, 19 Apr 2017 14:22:50 +0100
-Subject: [PATCH] [Pugin] revert 77eb4ab (do not return output from failed
- commands)
-
-Revert this commit: individual plugins must test the command
-status (if they care): plugins that attempt to access command
-output without testing command status are buggy and need to be
-fixed.
-
-Resolves: #986.
-
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/plugins/__init__.py | 3 ---
- 1 file changed, 3 deletions(-)
-
-diff --git a/sos/plugins/__init__.py b/sos/plugins/__init__.py
-index 5286e4b..35edcb1 100644
---- a/sos/plugins/__init__.py
-+++ b/sos/plugins/__init__.py
-@@ -692,9 +692,6 @@ class Plugin(object):
-         if result['status'] == 126 or result['status'] == 127:
-             return None
- 
--        if result['status'] == 1:
--            return None
--
-         self._log_debug("collected output of '%s' in %s"
-                         % (exe.split()[0], time() - start))
- 
--- 
-2.7.4
-
diff --git a/SOURCES/sos-bz1438269-ceph-collect-etc-calamari.patch b/SOURCES/sos-bz1438269-ceph-collect-etc-calamari.patch
deleted file mode 100644
index e3901c5..0000000
--- a/SOURCES/sos-bz1438269-ceph-collect-etc-calamari.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From 44f3e7332516f09738dc865e943eb70eceb50553 Mon Sep 17 00:00:00 2001
-From: "Bryn M. Reeves" <bmr@redhat.com>
-Date: Thu, 20 Apr 2017 16:19:46 +0100
-Subject: [PATCH] [ceph] fix list formatting
-
-Fix the formatting of the add_copy_spec() lists in ceph: make the
-first conform to the sos bracing and indenting rules for lists in
-argument tuples, and fix a missing comma in the second.
-
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/plugins/ceph.py | 5 +++--
- 1 file changed, 3 insertions(+), 2 deletions(-)
-
-diff --git a/sos/plugins/ceph.py b/sos/plugins/ceph.py
-index 06b8605..afb6e24 100644
---- a/sos/plugins/ceph.py
-+++ b/sos/plugins/ceph.py
-@@ -40,7 +40,8 @@ class Ceph(Plugin, RedHatPlugin, UbuntuPlugin):
-             self.add_copy_spec([
-                 "/var/log/ceph/*.log",
-                 "/var/log/radosgw/*.log",
--                "/var/log/calamari/*.log"], sizelimit=limit)
-+                "/var/log/calamari/*.log"
-+            ], sizelimit=limit)
-         else:
-             self.add_copy_spec([
-                 "/var/log/ceph/",
-@@ -50,7 +51,7 @@ class Ceph(Plugin, RedHatPlugin, UbuntuPlugin):
- 
-         self.add_copy_spec([
-             "/etc/ceph/",
--            "/etc/calamari/"
-+            "/etc/calamari/",
-             "/var/lib/ceph/",
-             "/var/run/ceph/"
-         ])
--- 
-2.7.4
-
diff --git a/SOURCES/sos-bz1442078-container-test-oci.patch b/SOURCES/sos-bz1442078-container-test-oci.patch
deleted file mode 100644
index 3b01b8f..0000000
--- a/SOURCES/sos-bz1442078-container-test-oci.patch
+++ /dev/null
@@ -1,180 +0,0 @@
-From 471d8e86c3c174f7b075c306542c732f30893281 Mon Sep 17 00:00:00 2001
-From: "Bryn M. Reeves" <bmr@redhat.com>
-Date: Wed, 3 May 2017 16:39:25 +0100
-Subject: [PATCH 1/3] [reporting] imrove readability of Six string workaround
-
-Improve the readability of the changes to work around Six issue
-emphasise the fact that the buffer contains line oriented data,
-and introduce a helper function to test whether the string needs
-the workaround to be applied or not: this shortens the list
-comprehension which would otherwise overflow a single line due
-to the longer buffer variable name.
-
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/reporting.py | 25 ++++++++++++++++++-------
- 1 file changed, 18 insertions(+), 7 deletions(-)
-
-diff --git a/sos/reporting.py b/sos/reporting.py
-index 0bb7d29..a4941ad 100644
---- a/sos/reporting.py
-+++ b/sos/reporting.py
-@@ -118,6 +118,17 @@ class Note(Leaf):
-         self.data = content
- 
- 
-+def ends_bs(string):
-+    """ Return True if 'string' ends with a backslash, and False otherwise.
-+
-+        Define this as a named function for no other reason than that pep8
-+        now forbids binding of a lambda expression to a name:
-+
-+        'E731 do not assign a lambda expression, use a def'
-+    """
-+    return string.endswith('\\')
-+
-+
- class PlainTextReport(object):
-     """Will generate a plain text report from a top_level Report object"""
- 
-@@ -134,16 +145,16 @@ class PlainTextReport(object):
-         (Note, NOTE,         "-  notes:"),
-     )
- 
--    buf = []
-+    line_buf = []
- 
-     def __init__(self, report_node):
-         self.report_node = report_node
- 
-     def unicode(self):
--        self.buf = buf = []
-+        self.line_buf = line_buf = []
-         for section_name, section_contents in sorted(iteritems(
-                 self.report_node.data)):
--            buf.append(section_name + "\n" + self.DIVIDER)
-+            line_buf.append(section_name + "\n" + self.DIVIDER)
-             for type_, format_, header in self.subsections:
-                 self.process_subsection(section_contents, type_.ADDS_TO,
-                                         header, format_)
-@@ -151,10 +162,10 @@ class PlainTextReport(object):
-         # Workaround python.six mishandling of strings ending in '/' by
-         # adding a single space following any '\' at end-of-line.
-         # See Six issue #60.
--        buf = [(val + " ") if val.endswith('\\') else val for val in buf]
-+        line_buf = [line + " " if ends_bs(line) else line for line in line_buf]
- 
-         output = u'\n'.join(map(lambda i: (i if isinstance(i, six.text_type)
--                                           else six.u(i)), buf))
-+                                           else six.u(i)), line_buf))
-         if six.PY3:
-             return output
-         else:
-@@ -162,8 +173,8 @@ class PlainTextReport(object):
- 
-     def process_subsection(self, section, key, header, format_):
-         if key in section:
--            self.buf.append(header)
-+            self.line_buf.append(header)
-             for item in section.get(key):
--                self.buf.append(format_ % item)
-+                self.line_buf.append(format_ % item)
- 
- # vim: set et ts=4 sw=4 :
--- 
-2.7.4
-
-
-From a81243cdd3f0e7db152251caeb478c19cd801277 Mon Sep 17 00:00:00 2001
-From: "Bryn M. Reeves" <bmr@redhat.com>
-Date: Wed, 3 May 2017 16:42:10 +0100
-Subject: [PATCH 2/3] [plugins] work around Six string problems in HTML reports
-
-A workaround for Six string encoding problems involving strings
-that end in '\' characters was introduced for plain text reports
-in commit 3d23564: a similar fix is also needed for HTML reports,
-since the same string encoding problem can occur there too:
-
-> /usr/lib/python2.7/site-packages/six.py(647)u()
--> return unicode(s.replace(r'\\', r'\\\\'), "unicode_escape")
-(Pdb) bt
-  /usr/sbin/sosreport(25)<module>()
--> main(sys.argv[1:])
-  /usr/lib/python2.7/site-packages/sos/sosreport.py(1632)main()
--> sos.execute()
-  /usr/lib/python2.7/site-packages/sos/sosreport.py(1606)execute()
--> self.html_report()
-  /usr/lib/python2.7/site-packages/sos/sosreport.py(1373)html_report()
--> self._html_report()
-  /usr/lib/python2.7/site-packages/sos/sosreport.py(1434)_html_report()
--> self.handle_exception()
-  /usr/lib/python2.7/site-packages/sos/sosreport.py(1432)_html_report()
--> html = plug.report()
-  /usr/lib/python2.7/site-packages/sos/plugins/__init__.py(930)report()
--> + "/" + _to_u(cmd['file'])
-  /usr/lib/python2.7/site-packages/sos/plugins/__init__.py(44)_to_u()
--> s = six.u(s)
-> /usr/lib/python2.7/site-packages/six.py(647)u()
--> return unicode(s.replace(r'\\', r'\\\\'), "unicode_escape")
-
-Avoid this by applying the same workaround ('\$' -> '\ $') in the
-existing Plugin _to_u() helper function.
-
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/plugins/__init__.py | 5 +++++
- 1 file changed, 5 insertions(+)
-
-diff --git a/sos/plugins/__init__.py b/sos/plugins/__init__.py
-index 49da6f2..cd34d19 100644
---- a/sos/plugins/__init__.py
-+++ b/sos/plugins/__init__.py
-@@ -36,6 +36,11 @@ from six.moves import zip, filter
- 
- def _to_u(s):
-     if not isinstance(s, six.text_type):
-+        # Workaround python.six mishandling of strings ending in '\' by
-+        # adding a single space following any '\' at end-of-line.
-+        # See Six issue #60.
-+        if s.endswith('\\'):
-+            s += " "
-         s = six.u(s)
-     return s
- 
--- 
-2.7.4
-
-
-From 5e3ae1cf78cbd7dd122ed229add39e89aefdc21e Mon Sep 17 00:00:00 2001
-From: "Bryn M. Reeves" <bmr@redhat.com>
-Date: Wed, 3 May 2017 16:47:04 +0100
-Subject: [PATCH 3/3] [policies/redhat] accept 'oci' as a valid container type
-
-Currently the Red Hat container policy accepts 'container=docker'
-as a valid indication that we are running in a container and to
-enable sysroot and host sysroot checks.
-
-More recent Red Hat container infrastructure has change to setting
-'container=oci', so recognise this value as well.
-
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/policies/redhat.py | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/sos/policies/redhat.py b/sos/policies/redhat.py
-index a1565c6..a6e3712 100644
---- a/sos/policies/redhat.py
-+++ b/sos/policies/redhat.py
-@@ -84,7 +84,7 @@ class RedHatPolicy(LinuxPolicy):
-         specific initialisation based on ENV_HOST_SYSROOT.
-         """
-         if ENV_CONTAINER in os.environ:
--            if os.environ[ENV_CONTAINER] == 'docker':
-+            if os.environ[ENV_CONTAINER] in ['docker', 'oci']:
-                 self._in_container = True
-         if ENV_HOST_SYSROOT in os.environ:
-             self._host_sysroot = os.environ[ENV_HOST_SYSROOT]
--- 
-2.7.4
-
diff --git a/SOURCES/sos-bz1444641-virsh-uncaught-exception.patch b/SOURCES/sos-bz1444641-virsh-uncaught-exception.patch
deleted file mode 100644
index 34abe2f..0000000
--- a/SOURCES/sos-bz1444641-virsh-uncaught-exception.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-From 3b41178154354277efc2f42a425904f32cef2c66 Mon Sep 17 00:00:00 2001
-From: Pavel Moravec <pmoravec@redhat.com>
-Date: Sun, 23 Apr 2017 20:41:52 +0200
-Subject: [PATCH] [virsh] Handle properly cases when virsh commands fail
-
-When parsing output of "virsh -r *" commands, handle properly cases
-when either command fails - do not parse the output then.
-
-Resolves: #997
-
-Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
----
- sos/plugins/virsh.py | 14 +++++++-------
- 1 file changed, 7 insertions(+), 7 deletions(-)
-
-diff --git a/sos/plugins/virsh.py b/sos/plugins/virsh.py
-index bc0a35f..4150522 100644
---- a/sos/plugins/virsh.py
-+++ b/sos/plugins/virsh.py
-@@ -52,10 +52,10 @@ class LibvirtClient(Plugin, RedHatPlugin, UbuntuPlugin, DebianPlugin):
-         # get network, pool and nwfilter elements
-         for k in ['net', 'nwfilter', 'pool']:
-             self.add_cmd_output('%s %s-list' % (cmd, k))
--            k_file = self.get_cmd_output_now('%s %s-list' % (cmd, k))
--            if k_file:
--                k_lines = open(k_file, 'r').read().splitlines()
--                # the 'name' column position changes between virsh cmds
-+            k_list = self.get_command_output('%s %s-list' % (cmd, k))
-+            if k_list and k_list['status'] == 0:
-+                k_lines = k_list['output'].splitlines()
-+                # the 'Name' column position changes between virsh cmds
-                 pos = k_lines[0].split().index('Name')
-                 for j in filter(lambda x: x, k_lines[2:]):
-                     n = j.split()[pos]
-@@ -63,9 +63,9 @@ class LibvirtClient(Plugin, RedHatPlugin, UbuntuPlugin, DebianPlugin):
- 
-         # cycle through the VMs/domains list, ignore 2 header lines and latest
-         # empty line, and dumpxml domain name in 2nd column
--        domains_file = self.get_cmd_output_now('%s list --all' % cmd)
--        if domains_file:
--            domains_lines = open(domains_file, "r").read().splitlines()[2:]
-+        domains_output = self.get_command_output('%s list --all' % cmd)
-+        if domains_output and domains_output['status'] == 0:
-+            domains_lines = domains_output['output'].splitlines()[2:]
-             for domain in filter(lambda x: x, domains_lines):
-                 d = domain.split()[1]
-                 for x in ['dumpxml', 'dominfo', 'domblklist']:
--- 
-2.7.4
-
diff --git a/SOURCES/sos-bz1449904-ceph-tmp-mount-exclude.patch b/SOURCES/sos-bz1449904-ceph-tmp-mount-exclude.patch
deleted file mode 100644
index c47ea8d..0000000
--- a/SOURCES/sos-bz1449904-ceph-tmp-mount-exclude.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From 7da0d24619928690f4999ffc1693b643b612f130 Mon Sep 17 00:00:00 2001
-From: Tomas Petr <tpetr@redhat.com>
-Date: Thu, 11 May 2017 11:16:33 +0200
-Subject: [PATCH] [ceph] exclude temporary mount locations from collection
-
-Do not collect temporary mount paths at /var/lib/ceph/tmp/mnt.XXXX.
-
-Resolves #1006
-Replaces #1005
-
-Signed-off-by: Tomas Petr <tpetr@redhat.com>
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/plugins/ceph.py | 7 +++++++
- 1 file changed, 7 insertions(+)
-
-diff --git a/sos/plugins/ceph.py b/sos/plugins/ceph.py
-index 1be7fd9..0b375d1 100644
---- a/sos/plugins/ceph.py
-+++ b/sos/plugins/ceph.py
-@@ -81,6 +81,13 @@ class Ceph(Plugin, RedHatPlugin, UbuntuPlugin):
-         self.add_forbidden_path("/var/lib/ceph/*/*/*keyring*")
-         self.add_forbidden_path("/var/lib/ceph/osd/*")
-         self.add_forbidden_path("/var/lib/ceph/mon/*")
-+
-+# Excludes temporary ceph-osd mount location like
-+# /var/lib/ceph/tmp/mnt.XXXX from sos collection.
-+# In the /var/lib/ceph/tmp/ can still other files of potential
-+# interest exists, so exclude only known temporary mount locations.
-+
-+        self.add_forbidden_path("/var/lib/ceph/tmp/*mnt*")
-         self.add_forbidden_path("/etc/ceph/*bindpass*")
- 
- # vim: set et ts=4 sw=4 :
--- 
-2.7.4
-
diff --git a/SOURCES/sos-bz1463509-oc-adm-diagnostics.patch b/SOURCES/sos-bz1463509-oc-adm-diagnostics.patch
new file mode 100644
index 0000000..64a765d
--- /dev/null
+++ b/SOURCES/sos-bz1463509-oc-adm-diagnostics.patch
@@ -0,0 +1,40 @@
+From 30285352cad7b393c67a7c7c64a6fce902190bef Mon Sep 17 00:00:00 2001
+From: Pavel Moravec <pmoravec@redhat.com>
+Date: Thu, 16 Nov 2017 16:51:40 +0100
+Subject: [PATCH] [origin] fix typo in oc adm diagnostics
+ --prevent-modification
+
+The argument is singular --prevent-modification .
+
+Resolves: #1150
+
+Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
+---
+ sos/plugins/origin.py | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/sos/plugins/origin.py b/sos/plugins/origin.py
+index d7ba0817..4e50bdee 100644
+--- a/sos/plugins/origin.py
++++ b/sos/plugins/origin.py
+@@ -48,7 +48,7 @@ class OpenShiftOrigin(Plugin):
+     option_list = [
+         ("diag", "run 'oc adm diagnostics' to collect its output",
+          'fast', True),
+-        ("diag-prevent", "set --prevent-modifications on 'oc adm diagnostics'",
++        ("diag-prevent", "set --prevent-modification on 'oc adm diagnostics'",
+          'fast', False),
+     ]
+ 
+@@ -137,7 +137,7 @@ class OpenShiftOrigin(Plugin):
+             if self.get_option('diag'):
+                 diag_cmd = "%s adm diagnostics -l 0" % self.oc_cmd_admin
+                 if self.get_option('diag-prevent'):
+-                    diag_cmd += " --prevent-modifications=true"
++                    diag_cmd += " --prevent-modification=true"
+                 self.add_cmd_output(diag_cmd)
+             self.add_journal(units=["atomic-openshift-master",
+                                     "atomic-openshift-master-api",
+-- 
+2.13.6
+
diff --git a/SOURCES/sos-bz1463635-openstack-containerized-tripleo.patch b/SOURCES/sos-bz1463635-openstack-containerized-tripleo.patch
deleted file mode 100644
index 332e32b..0000000
--- a/SOURCES/sos-bz1463635-openstack-containerized-tripleo.patch
+++ /dev/null
@@ -1,1533 +0,0 @@
-From 665b85fcf25c016cbb467f8d9e3e93c2005b0fb9 Mon Sep 17 00:00:00 2001
-From: Bogdan Dobrelya <bdobreli@redhat.com>
-Date: Wed, 28 Jun 2017 21:34:39 +0200
-Subject: [PATCH] [plugins] Tripleo specific containerized services logs
- (#1046)
-
-Add Tripleo Pike opinionated logs paths to be collected
-for services, when running in containers. This is a temporary
-and will be reworked for Queens, like switching those to syslog
-or fluentd shipping logs to Elasticsearch cluster.
-
-Partial bug: https://bugs.launchpad.net/tripleo/+bug/1700909
-Related blueprint: https://review.openstack.org/#/c/462900
-
-Signed-off-by: Bogdan Dobrelya <bdobreli@redhat.com>
-Signed-off-by: Adam Stokes <battlemidget@users.noreply.github.com>
----
- sos/plugins/mongodb.py              |  3 ++-
- sos/plugins/mysql.py                |  2 ++
- sos/plugins/openstack_ceilometer.py |  7 +++++--
- sos/plugins/openstack_cinder.py     |  8 ++++++--
- sos/plugins/openstack_glance.py     |  8 ++++++--
- sos/plugins/openstack_heat.py       |  8 ++++++--
- sos/plugins/openstack_horizon.py    |  8 ++++++--
- sos/plugins/openstack_instack.py    | 12 ++++++++----
- sos/plugins/openstack_ironic.py     |  8 ++++++--
- sos/plugins/openstack_keystone.py   |  8 ++++++--
- sos/plugins/openstack_manila.py     |  6 ++++--
- sos/plugins/openstack_neutron.py    |  8 ++++++--
- sos/plugins/openstack_nova.py       |  8 ++++++--
- sos/plugins/openstack_sahara.py     |  8 ++++++--
- sos/plugins/openstack_swift.py      |  8 ++++++--
- sos/plugins/openstack_trove.py      |  8 ++++++--
- sos/plugins/pacemaker.py            |  3 ++-
- sos/plugins/rabbitmq.py             |  3 ++-
- sos/plugins/redis.py                |  6 ++++--
- 19 files changed, 95 insertions(+), 35 deletions(-)
-
-diff --git a/sos/plugins/mongodb.py b/sos/plugins/mongodb.py
-index 5d7d601..46b0251 100644
---- a/sos/plugins/mongodb.py
-+++ b/sos/plugins/mongodb.py
-@@ -30,7 +30,8 @@ class MongoDb(Plugin, DebianPlugin, UbuntuPlugin):
-     def setup(self):
-         self.add_copy_spec([
-             "/etc/mongodb.conf",
--            "/var/log/mongodb/mongodb.log"
-+            "/var/log/mongodb/mongodb.log",
-+            "/var/log/containers/mongodb/mongodb.log"
-         ])
- 
-     def postproc(self):
-diff --git a/sos/plugins/mysql.py b/sos/plugins/mysql.py
-index b750ed3..7bf933a 100644
---- a/sos/plugins/mysql.py
-+++ b/sos/plugins/mysql.py
-@@ -40,12 +40,14 @@ class Mysql(Plugin):
-             # Required for MariaDB under pacemaker (MariaDB-Galera)
-             "/var/log/mysqld.log",
-             "/var/log/mysql/mysqld.log",
-+            "/var/log/containers/mysql/mysqld.log",
-             "/var/log/mariadb/mariadb.log",
-         ])
- 
-         if self.get_option("all_logs"):
-             self.add_copy_spec([
-                 "/var/log/mysql*",
-+                "/var/log/containers/mysql*",
-                 "/var/log/mariadb*"
-             ])
- 
-diff --git a/sos/plugins/openstack_ceilometer.py b/sos/plugins/openstack_ceilometer.py
-index 8e3e8e9..2c3a809 100644
---- a/sos/plugins/openstack_ceilometer.py
-+++ b/sos/plugins/openstack_ceilometer.py
-@@ -32,9 +32,12 @@ class OpenStackCeilometer(Plugin):
-         # Ceilometer
-         self.limit = self.get_option("log_size")
-         if self.get_option("all_logs"):
--            self.add_copy_spec("/var/log/ceilometer/", sizelimit=self.limit)
-+            self.add_copy_spec(["/var/log/ceilometer/",
-+                                "/var/log/containers/ceilometer/"],
-+                               sizelimit=self.limit)
-         else:
--            self.add_copy_spec("/var/log/ceilometer/*.log",
-+            self.add_copy_spec(["/var/log/ceilometer/*.log",
-+                                "/var/log/containers/ceilometer/*.log"],
-                                sizelimit=self.limit)
-         self.add_copy_spec("/etc/ceilometer/")
-         if self.get_option("verify"):
-diff --git a/sos/plugins/openstack_cinder.py b/sos/plugins/openstack_cinder.py
-index 0383a8a..ffec62b 100644
---- a/sos/plugins/openstack_cinder.py
-+++ b/sos/plugins/openstack_cinder.py
-@@ -40,9 +40,13 @@ class OpenStackCinder(Plugin):
- 
-         self.limit = self.get_option("log_size")
-         if self.get_option("all_logs"):
--            self.add_copy_spec("/var/log/cinder/", sizelimit=self.limit)
-+            self.add_copy_spec(["/var/log/cinder/",
-+                                "/var/log/containers/cinder/"],
-+                               sizelimit=self.limit)
-         else:
--            self.add_copy_spec("/var/log/cinder/*.log", sizelimit=self.limit)
-+            self.add_copy_spec(["/var/log/cinder/*.log",
-+                                "/var/log/containers/cinder/*.log"],
-+                               sizelimit=self.limit)
- 
-         if self.get_option("verify"):
-             self.add_cmd_output("rpm -V %s" % ' '.join(self.packages))
-diff --git a/sos/plugins/openstack_glance.py b/sos/plugins/openstack_glance.py
-index 1aa0cb7..88d06e3 100644
---- a/sos/plugins/openstack_glance.py
-+++ b/sos/plugins/openstack_glance.py
-@@ -38,9 +38,13 @@ class OpenStackGlance(Plugin):
- 
-         self.limit = self.get_option("log_size")
-         if self.get_option("all_logs"):
--            self.add_copy_spec("/var/log/glance/", sizelimit=self.limit)
-+            self.add_copy_spec(["/var/log/glance/",
-+                                "/var/log/containers/glance/"],
-+                               sizelimit=self.limit)
-         else:
--            self.add_copy_spec("/var/log/glance/*.log", sizelimit=self.limit)
-+            self.add_copy_spec(["/var/log/glance/*.log",
-+                                "/var/log/containers/glance/*.log"],
-+                               sizelimit=self.limit)
- 
-         self.add_copy_spec("/etc/glance/")
- 
-diff --git a/sos/plugins/openstack_heat.py b/sos/plugins/openstack_heat.py
-index 451bad3..2dad83f 100644
---- a/sos/plugins/openstack_heat.py
-+++ b/sos/plugins/openstack_heat.py
-@@ -45,9 +45,13 @@ class OpenStackHeat(Plugin):
- 
-         self.limit = self.get_option("log_size")
-         if self.get_option("all_logs"):
--            self.add_copy_spec("/var/log/heat/", sizelimit=self.limit)
-+            self.add_copy_spec(["/var/log/heat/",
-+                                "/var/log/containers/heat/"],
-+                               sizelimit=self.limit)
-         else:
--            self.add_copy_spec("/var/log/heat/*.log", sizelimit=self.limit)
-+            self.add_copy_spec(["/var/log/heat/*.log",
-+                                "/var/log/containers/heat/*.log"],
-+                               sizelimit=self.limit)
- 
-         self.add_copy_spec("/etc/heat/")
- 
-diff --git a/sos/plugins/openstack_horizon.py b/sos/plugins/openstack_horizon.py
-index f778b91..75ad3ce 100644
---- a/sos/plugins/openstack_horizon.py
-+++ b/sos/plugins/openstack_horizon.py
-@@ -32,9 +32,13 @@ class OpenStackHorizon(Plugin):
- 
-         self.limit = self.get_option("log_size")
-         if self.get_option("all_logs"):
--            self.add_copy_spec("/var/log/horizon/", sizelimit=self.limit)
-+            self.add_copy_spec(["/var/log/horizon/",
-+                                "/var/log/containers/horizon/"],
-+                               sizelimit=self.limit)
-         else:
--            self.add_copy_spec("/var/log/horizon/*.log", sizelimit=self.limit)
-+            self.add_copy_spec(["/var/log/horizon/*.log",
-+                                "/var/log/containers/horizon/*.log"],
-+                               sizelimit=self.limit)
- 
-         self.add_copy_spec("/etc/openstack-dashboard/")
-         self.add_forbidden_path("*.py[co]")
-diff --git a/sos/plugins/openstack_instack.py b/sos/plugins/openstack_instack.py
-index 3c87de8..87ec59f 100644
---- a/sos/plugins/openstack_instack.py
-+++ b/sos/plugins/openstack_instack.py
-@@ -34,14 +34,18 @@ class OpenStackInstack(Plugin):
- 
-         self.limit = self.get_option("log_size")
-         if self.get_option("all_logs"):
--            self.add_copy_spec("/var/log/mistral/",
-+            self.add_copy_spec(["/var/log/mistral/",
-+                                "/var/log/containers/mistral/"],
-                                sizelimit=self.limit)
--            self.add_copy_spec("/var/log/zaqar/",
-+            self.add_copy_spec(["/var/log/zaqar/",
-+                                "/var/log/containers/zaqar/"],
-                                sizelimit=self.limit)
-         else:
--            self.add_copy_spec("/var/log/mistral/*.log",
-+            self.add_copy_spec(["/var/log/mistral/*.log",
-+                                "/var/log/containers/mistral/*.log"],
-                                sizelimit=self.limit)
--            self.add_copy_spec("/var/log/zaqar/*.log",
-+            self.add_copy_spec(["/var/log/zaqar/*.log",
-+                                "/var/log/containers/zaqar/*.log"],
-                                sizelimit=self.limit)
- 
-         vars = [p in os.environ for p in [
-diff --git a/sos/plugins/openstack_ironic.py b/sos/plugins/openstack_ironic.py
-index f225427..e4e320d 100644
---- a/sos/plugins/openstack_ironic.py
-+++ b/sos/plugins/openstack_ironic.py
-@@ -31,9 +31,13 @@ class OpenStackIronic(Plugin):
- 
-         self.limit = self.get_option("log_size")
-         if self.get_option("all_logs"):
--            self.add_copy_spec("/var/log/ironic/", sizelimit=self.limit)
-+            self.add_copy_spec(["/var/log/ironic/",
-+                                "/var/log/containers/ironic/"],
-+                               sizelimit=self.limit)
-         else:
--            self.add_copy_spec("/var/log/ironic/*.log", sizelimit=self.limit)
-+            self.add_copy_spec(["/var/log/ironic/*.log",
-+                                "/var/log/containers/ironic/*.log"],
-+                               sizelimit=self.limit)
- 
-         self.add_cmd_output('ls -laRt /var/lib/ironic/')
- 
-diff --git a/sos/plugins/openstack_keystone.py b/sos/plugins/openstack_keystone.py
-index cb8a626..5a8f4e2 100644
---- a/sos/plugins/openstack_keystone.py
-+++ b/sos/plugins/openstack_keystone.py
-@@ -37,9 +37,13 @@ class OpenStackKeystone(Plugin):
- 
-         self.limit = self.get_option("log_size")
-         if self.get_option("all_logs"):
--            self.add_copy_spec("/var/log/keystone/", sizelimit=self.limit)
-+            self.add_copy_spec(["/var/log/keystone/",
-+                                "/var/log/containers/keystone/"],
-+                               sizelimit=self.limit)
-         else:
--            self.add_copy_spec("/var/log/keystone/*.log", sizelimit=self.limit)
-+            self.add_copy_spec(["/var/log/keystone/*.log",
-+                                "/var/log/containers/keystone/*.log"],
-+                               sizelimit=self.limit)
- 
-         if self.get_option("verify"):
-             self.add_cmd_output("rpm -V %s" % ' '.join(self.packages))
-diff --git a/sos/plugins/openstack_manila.py b/sos/plugins/openstack_manila.py
-index ce50a31..c1e6609 100644
---- a/sos/plugins/openstack_manila.py
-+++ b/sos/plugins/openstack_manila.py
-@@ -29,10 +29,12 @@ class OpenStackManila(Plugin):
- 
-         self.limit = self.get_option("log_size")
-         if self.get_option("all_logs"):
--            self.add_copy_spec("/var/log/manila/*",
-+            self.add_copy_spec(["/var/log/manila/*",
-+                                "/var/log/containers/manila/*"],
-                                sizelimit=self.limit)
-         else:
--            self.add_copy_spec("/var/log/manila/*.log",
-+            self.add_copy_spec(["/var/log/manila/*.log",
-+                                "/var/log/containers/manila/*.log"],
-                                sizelimit=self.limit)
- 
-     def postproc(self):
-diff --git a/sos/plugins/openstack_neutron.py b/sos/plugins/openstack_neutron.py
-index 62fd1c3..b0f6699 100644
---- a/sos/plugins/openstack_neutron.py
-+++ b/sos/plugins/openstack_neutron.py
-@@ -29,9 +29,13 @@ class OpenStackNeutron(Plugin):
- 
-         self.limit = self.get_option("log_size")
-         if self.get_option("all_logs"):
--            self.add_copy_spec("/var/log/neutron/", sizelimit=self.limit)
-+            self.add_copy_spec(["/var/log/neutron/",
-+                                "/var/log/containers/neutron/"],
-+                               sizelimit=self.limit)
-         else:
--            self.add_copy_spec("/var/log/neutron/*.log", sizelimit=self.limit)
-+            self.add_copy_spec(["/var/log/neutron/*.log",
-+                                "/var/log/containers/neutron/*.log"],
-+                               sizelimit=self.limit)
- 
-         self.add_copy_spec("/etc/neutron/")
-         self.add_copy_spec("/var/lib/neutron/")
-diff --git a/sos/plugins/openstack_nova.py b/sos/plugins/openstack_nova.py
-index 14bdfbd..3dda7af 100644
---- a/sos/plugins/openstack_nova.py
-+++ b/sos/plugins/openstack_nova.py
-@@ -63,9 +63,13 @@ class OpenStackNova(Plugin):
- 
-         self.limit = self.get_option("log_size")
-         if self.get_option("all_logs"):
--            self.add_copy_spec("/var/log/nova/", sizelimit=self.limit)
-+            self.add_copy_spec(["/var/log/nova/",
-+                                "/var/log/containers/nova/"],
-+                               sizelimit=self.limit)
-         else:
--            self.add_copy_spec("/var/log/nova/*.log", sizelimit=self.limit)
-+            self.add_copy_spec(["/var/log/nova/*.log",
-+                                "/var/log/containers/nova/*.log"],
-+                               sizelimit=self.limit)
- 
-         self.add_copy_spec("/etc/nova/")
- 
-diff --git a/sos/plugins/openstack_sahara.py b/sos/plugins/openstack_sahara.py
-index adbad32..adaedf9 100644
---- a/sos/plugins/openstack_sahara.py
-+++ b/sos/plugins/openstack_sahara.py
-@@ -32,9 +32,13 @@ class OpenStackSahara(Plugin):
- 
-         self.limit = self.get_option("log_size")
-         if self.get_option("all_logs"):
--            self.add_copy_spec("/var/log/sahara/", sizelimit=self.limit)
-+            self.add_copy_spec(["/var/log/sahara/",
-+                                "/var/log/containers/sahara/"],
-+                               sizelimit=self.limit)
-         else:
--            self.add_copy_spec("/var/log/sahara/*.log", sizelimit=self.limit)
-+            self.add_copy_spec(["/var/log/sahara/*.log",
-+                                "/var/log/containers/sahara/*.log"],
-+                               sizelimit=self.limit)
- 
-         if self.get_option("verify"):
-             self.add_cmd_output("rpm -V %s" % ' '.join(self.packages))
-diff --git a/sos/plugins/openstack_swift.py b/sos/plugins/openstack_swift.py
-index 790a4cb..9906b94 100644
---- a/sos/plugins/openstack_swift.py
-+++ b/sos/plugins/openstack_swift.py
-@@ -31,9 +31,13 @@ class OpenStackSwift(Plugin):
- 
-         self.limit = self.get_option("log_size")
-         if self.get_option("all_logs"):
--            self.add_copy_spec("/var/log/swift/", sizelimit=self.limit)
-+            self.add_copy_spec(["/var/log/swift/",
-+                                "/var/log/containers/swift/"],
-+                               sizelimit=self.limit)
-         else:
--            self.add_copy_spec("/var/log/swift/*.log", sizelimit=self.limit)
-+            self.add_copy_spec(["/var/log/swift/*.log",
-+                                "/var/log/containers/swift/*.log"],
-+                               sizelimit=self.limit)
- 
-         self.add_copy_spec("/etc/swift/")
- 
-diff --git a/sos/plugins/openstack_trove.py b/sos/plugins/openstack_trove.py
-index 4d526b0..5183ad1 100644
---- a/sos/plugins/openstack_trove.py
-+++ b/sos/plugins/openstack_trove.py
-@@ -30,9 +30,13 @@ class OpenStackTrove(Plugin):
- 
-         self.limit = self.get_option("log_size")
-         if self.get_option("all_logs"):
--            self.add_copy_spec("/var/log/trove/", sizelimit=self.limit)
-+            self.add_copy_spec(["/var/log/trove/",
-+                                "/var/log/containers/trove/"],
-+                               sizelimit=self.limit)
-         else:
--            self.add_copy_spec("/var/log/trove/*.log", sizelimit=self.limit)
-+            self.add_copy_spec(["/var/log/trove/*.log",
-+                                "/var/log/containers/trove/*.log"],
-+                               sizelimit=self.limit)
- 
-         self.add_copy_spec('/etc/trove/')
- 
-diff --git a/sos/plugins/pacemaker.py b/sos/plugins/pacemaker.py
-index 9775284..5780c81 100644
---- a/sos/plugins/pacemaker.py
-+++ b/sos/plugins/pacemaker.py
-@@ -36,7 +36,8 @@ class Pacemaker(Plugin, DebianPlugin, UbuntuPlugin):
-             "/var/lib/pacemaker/cib/cib.xml",
-             self.defaults,
-             "/var/log/pacemaker.log",
--            "/var/log/pcsd/pcsd.log"
-+            "/var/log/pcsd/pcsd.log",
-+            "/var/log/pacemaker/bundles/*/",
-         ])
-         self.add_cmd_output([
-             "crm_mon -1 -A -n -r -t",
-diff --git a/sos/plugins/rabbitmq.py b/sos/plugins/rabbitmq.py
-index d9871a0..8d73835 100644
---- a/sos/plugins/rabbitmq.py
-+++ b/sos/plugins/rabbitmq.py
-@@ -29,6 +29,7 @@ class RabbitMQ(Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin):
-         self.add_cmd_output("rabbitmqctl list_policies")
- 
-         self.add_copy_spec("/etc/rabbitmq/*")
--        self.add_copy_spec("/var/log/rabbitmq/*",
-+        self.add_copy_spec(["/var/log/rabbitmq/*",
-+                            "/var/log/containers/rabbitmq/*"],
-                            sizelimit=self.get_option('log_size'))
- # vim: set et ts=4 sw=4 :
-diff --git a/sos/plugins/redis.py b/sos/plugins/redis.py
-index befa3d3..9ac2397 100644
---- a/sos/plugins/redis.py
-+++ b/sos/plugins/redis.py
-@@ -32,10 +32,12 @@ class Redis(Plugin, RedHatPlugin):
-         self.limit = self.get_option("log_size")
-         self.add_cmd_output("redis-cli info")
-         if self.get_option("all_logs"):
--            self.add_copy_spec("/var/log/redis/redis.log*",
-+            self.add_copy_spec(["/var/log/redis/redis.log*",
-+                                "/var/log/containers/redis/redis.log*"],
-                                sizelimit=self.limit)
-         else:
--            self.add_copy_spec("/var/log/redis/redis.log",
-+            self.add_copy_spec(["/var/log/redis/redis.log",
-+                                "/var/log/containers/redis/redis.log"],
-                                sizelimit=self.limit)
- 
-     def postproc(self):
--- 
-2.7.5
-
-From 5bbe32f49f3406368ac794e638b61a3234da1d11 Mon Sep 17 00:00:00 2001
-From: stuggi <github@schuppert.net>
-Date: Wed, 28 Jun 2017 21:35:45 +0200
-Subject: [PATCH] [openstack plugins] run openstack command when correct ENV is
- set (#1048)
-
-With Tripleo Pike the default ENV changed from OS_TENANT_NAME to
-OS_PROJECT_NAME. The commands of the openstack plugins against
-the env should run when either OSP_TENANT_NAME or OS_PROJECT_NAME
-is set.
-
-Signed-off-by: Martin Schuppert mschuppe@redhat.com
-Signed-off-by: Adam Stokes <battlemidget@users.noreply.github.com>
----
- sos/plugins/gnocchi.py            | 10 +++++++---
- sos/plugins/openstack_glance.py   | 10 +++++++---
- sos/plugins/openstack_heat.py     | 10 +++++++---
- sos/plugins/openstack_instack.py  | 10 +++++++---
- sos/plugins/openstack_ironic.py   | 10 +++++++---
- sos/plugins/openstack_keystone.py | 10 +++++++---
- sos/plugins/openstack_neutron.py  | 10 +++++++---
- sos/plugins/openstack_nova.py     | 10 +++++++---
- 8 files changed, 56 insertions(+), 24 deletions(-)
-
-diff --git a/sos/plugins/gnocchi.py b/sos/plugins/gnocchi.py
-index 14baf55..dc79a0f 100644
---- a/sos/plugins/gnocchi.py
-+++ b/sos/plugins/gnocchi.py
-@@ -44,9 +44,13 @@ class GnocchiPlugin(Plugin, RedHatPlugin):
-             self.add_copy_spec("/var/log/gnocchi/*.log",
-                                sizelimit=self.limit)
- 
--        vars = [p in os.environ for p in [
--                'OS_USERNAME', 'OS_PASSWORD', 'OS_TENANT_NAME']]
--        if not all(vars):
-+        vars_all = [p in os.environ for p in [
-+                    'OS_USERNAME', 'OS_PASSWORD']]
-+
-+        vars_any = [p in os.environ for p in [
-+                    'OS_TENANT_NAME', 'OS_PROJECT_NAME']]
-+
-+        if not (all(vars_all) and any(vars_any)):
-             self.soslog.warning("Not all environment variables set. Source "
-                                 "the environment file for the user intended "
-                                 "to connect to the OpenStack environment.")
-diff --git a/sos/plugins/openstack_glance.py b/sos/plugins/openstack_glance.py
-index 88d06e3..6202c49 100644
---- a/sos/plugins/openstack_glance.py
-+++ b/sos/plugins/openstack_glance.py
-@@ -51,9 +51,13 @@ class OpenStackGlance(Plugin):
-         if self.get_option("verify"):
-             self.add_cmd_output("rpm -V %s" % ' '.join(self.packages))
- 
--        vars = [p in os.environ for p in [
--                'OS_USERNAME', 'OS_PASSWORD', 'OS_TENANT_NAME']]
--        if not all(vars):
-+        vars_all = [p in os.environ for p in [
-+                    'OS_USERNAME', 'OS_PASSWORD']]
-+
-+        vars_any = [p in os.environ for p in [
-+                    'OS_TENANT_NAME', 'OS_PROJECT_NAME']]
-+
-+        if not (all(vars_all) and any(vars_any)):
-             self.soslog.warning("Not all environment variables set. Source "
-                                 "the environment file for the user intended "
-                                 "to connect to the OpenStack environment.")
-diff --git a/sos/plugins/openstack_heat.py b/sos/plugins/openstack_heat.py
-index 2dad83f..0f457d9 100644
---- a/sos/plugins/openstack_heat.py
-+++ b/sos/plugins/openstack_heat.py
-@@ -34,9 +34,13 @@ class OpenStackHeat(Plugin):
-             suggest_filename="heat_db_version"
-         )
- 
--        vars = [p in os.environ for p in [
--                'OS_USERNAME', 'OS_PASSWORD', 'OS_TENANT_NAME']]
--        if not all(vars):
-+        vars_all = [p in os.environ for p in [
-+                    'OS_USERNAME', 'OS_PASSWORD']]
-+
-+        vars_any = [p in os.environ for p in [
-+                    'OS_TENANT_NAME', 'OS_PROJECT_NAME']]
-+
-+        if not (all(vars_all) and any(vars_any)):
-             self.soslog.warning("Not all environment variables set. Source "
-                                 "the environment file for the user intended "
-                                 "to connect to the OpenStack environment.")
-diff --git a/sos/plugins/openstack_instack.py b/sos/plugins/openstack_instack.py
-index 87ec59f..f990476 100644
---- a/sos/plugins/openstack_instack.py
-+++ b/sos/plugins/openstack_instack.py
-@@ -48,9 +48,13 @@ class OpenStackInstack(Plugin):
-                                 "/var/log/containers/zaqar/*.log"],
-                                sizelimit=self.limit)
- 
--        vars = [p in os.environ for p in [
--                'OS_USERNAME', 'OS_PASSWORD', 'OS_TENANT_NAME']]
--        if not all(vars):
-+        vars_all = [p in os.environ for p in [
-+                    'OS_USERNAME', 'OS_PASSWORD']]
-+
-+        vars_any = [p in os.environ for p in [
-+                    'OS_TENANT_NAME', 'OS_PROJECT_NAME']]
-+
-+        if not (all(vars_all) and any(vars_any)):
-             self.soslog.warning("Not all environment variables set. Source "
-                                 "the environment file for the user intended "
-                                 "to connect to the OpenStack environment.")
-diff --git a/sos/plugins/openstack_ironic.py b/sos/plugins/openstack_ironic.py
-index e4e320d..0396cc6 100644
---- a/sos/plugins/openstack_ironic.py
-+++ b/sos/plugins/openstack_ironic.py
-@@ -44,9 +44,13 @@ class OpenStackIronic(Plugin):
-         if self.get_option("verify"):
-             self.add_cmd_output("rpm -V %s" % ' '.join(self.packages))
- 
--        vars = [p in os.environ for p in [
--                'OS_USERNAME', 'OS_PASSWORD', 'OS_TENANT_NAME']]
--        if not all(vars):
-+        vars_all = [p in os.environ for p in [
-+                    'OS_USERNAME', 'OS_PASSWORD']]
-+
-+        vars_any = [p in os.environ for p in [
-+                    'OS_TENANT_NAME', 'OS_PROJECT_NAME']]
-+
-+        if not (all(vars_all) and any(vars_any)):
-             self.soslog.warning("Not all environment variables set. Source "
-                                 "the environment file for the user intended "
-                                 "to connect to the OpenStack environment.")
-diff --git a/sos/plugins/openstack_keystone.py b/sos/plugins/openstack_keystone.py
-index 5a8f4e2..82e987a 100644
---- a/sos/plugins/openstack_keystone.py
-+++ b/sos/plugins/openstack_keystone.py
-@@ -48,9 +48,13 @@ class OpenStackKeystone(Plugin):
-         if self.get_option("verify"):
-             self.add_cmd_output("rpm -V %s" % ' '.join(self.packages))
- 
--        vars = [p in os.environ for p in [
--                'OS_USERNAME', 'OS_PASSWORD', 'OS_TENANT_NAME']]
--        if not all(vars):
-+        vars_all = [p in os.environ for p in [
-+                    'OS_USERNAME', 'OS_PASSWORD']]
-+
-+        vars_any = [p in os.environ for p in [
-+                    'OS_TENANT_NAME', 'OS_PROJECT_NAME']]
-+
-+        if not (all(vars_all) and any(vars_any)):
-             self.soslog.warning("Not all environment variables set. Source "
-                                 "the environment file for the user intended "
-                                 "to connect to the OpenStack environment.")
-diff --git a/sos/plugins/openstack_neutron.py b/sos/plugins/openstack_neutron.py
-index b0f6699..d2bfe6b 100644
---- a/sos/plugins/openstack_neutron.py
-+++ b/sos/plugins/openstack_neutron.py
-@@ -42,9 +42,13 @@ class OpenStackNeutron(Plugin):
-         if self.get_option("verify"):
-             self.add_cmd_output("rpm -V %s" % ' '.join(self.packages))
- 
--        vars = [p in os.environ for p in [
--                'OS_USERNAME', 'OS_PASSWORD', 'OS_TENANT_NAME']]
--        if not all(vars):
-+        vars_all = [p in os.environ for p in [
-+                    'OS_USERNAME', 'OS_PASSWORD']]
-+
-+        vars_any = [p in os.environ for p in [
-+                    'OS_TENANT_NAME', 'OS_PROJECT_NAME']]
-+
-+        if not (all(vars_all) and any(vars_any)):
-             self.soslog.warning("Not all environment variables set. Source "
-                                 "the environment file for the user intended "
-                                 "to connect to the OpenStack environment.")
-diff --git a/sos/plugins/openstack_nova.py b/sos/plugins/openstack_nova.py
-index 3dda7af..c0e8109 100644
---- a/sos/plugins/openstack_nova.py
-+++ b/sos/plugins/openstack_nova.py
-@@ -35,9 +35,13 @@ class OpenStackNova(Plugin):
-         self.add_cmd_output("nova-manage fixed list")
-         self.add_cmd_output("nova-manage floating list")
- 
--        vars = [p in os.environ for p in [
--                'OS_USERNAME', 'OS_PASSWORD', 'OS_TENANT_NAME']]
--        if not all(vars):
-+        vars_all = [p in os.environ for p in [
-+                    'OS_USERNAME', 'OS_PASSWORD']]
-+
-+        vars_any = [p in os.environ for p in [
-+                    'OS_TENANT_NAME', 'OS_PROJECT_NAME']]
-+
-+        if not (all(vars_all) and any(vars_any)):
-             self.soslog.warning("Not all environment variables set. Source "
-                                 "the environment file for the user intended "
-                                 "to connect to the OpenStack environment.")
--- 
-2.7.5
-
-From f379776da6d2d3f4e3f31bf34b12908674dc122d Mon Sep 17 00:00:00 2001
-From: Martin Schuppert <mschuppert@redhat.com>
-Date: Wed, 28 Jun 2017 16:21:05 +0200
-Subject: [PATCH] [gnocchi] Tripleo specific containerized services logs
-
-This is an addition to pull request 1046 to collect gnocchi logs
-correct when service is running in a container.
-
-Signed-off-by: Martin Schuppert mschuppert@redhat.com
----
- sos/plugins/gnocchi.py | 14 ++++++++++----
- 1 file changed, 10 insertions(+), 4 deletions(-)
-
-diff --git a/sos/plugins/gnocchi.py b/sos/plugins/gnocchi.py
-index dc79a0f..724e41b 100644
---- a/sos/plugins/gnocchi.py
-+++ b/sos/plugins/gnocchi.py
-@@ -38,11 +38,17 @@ class GnocchiPlugin(Plugin, RedHatPlugin):
- 
-         self.limit = self.get_option("log_size")
-         if self.get_option("all_logs"):
--            self.add_copy_spec("/var/log/gnocchi/",
--                               sizelimit=self.limit)
-+            self.add_copy_spec([
-+                "/var/log/gnocchi/*",
-+                "/var/log/containers/gnocchi/*"],
-+                sizelimit=self.limit
-+            )
-         else:
--            self.add_copy_spec("/var/log/gnocchi/*.log",
--                               sizelimit=self.limit)
-+            self.add_copy_spec([
-+                "/var/log/gnocchi/*.log",
-+                "/var/log/containers/gnocchi/*.log"],
-+                sizelimit=self.limit
-+            )
- 
-         vars_all = [p in os.environ for p in [
-                     'OS_USERNAME', 'OS_PASSWORD']]
--- 
-2.7.5
-
-From 55800f71bdcfdea22b1d6e1c68848e58eb087d1c Mon Sep 17 00:00:00 2001
-From: Martin Schuppert <mschuppert@redhat.com>
-Date: Sun, 9 Jul 2017 15:22:30 +0200
-Subject: [PATCH] [openstack plugins] Tripleo specific containerized services
- configs
-
-Add Tripleo Pike opinionated config paths to be collected
-for services, when running in containers. Each service has a
-config dir in /var/lib/config-data/puppet-generated on the host
-which gets bind mounted read only into the container.
-
-Closes #1054
-
-Signed-off-by: Martin Schuppert <mschuppe@redhat.com>
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/plugins/gnocchi.py              | 18 +++++++++++++-
- sos/plugins/haproxy.py              |  6 ++++-
- sos/plugins/iscsi.py                |  2 ++
- sos/plugins/mongodb.py              | 15 +++++++++++-
- sos/plugins/mysql.py                |  5 ++--
- sos/plugins/openstack_ceilometer.py | 24 ++++++++++++------
- sos/plugins/openstack_glance.py     | 25 +++++++++++++------
- sos/plugins/openstack_heat.py       | 49 ++++++++++++++++++++++++++++++-------
- sos/plugins/openstack_horizon.py    | 48 ++++++++++++++++++++++++++----------
- sos/plugins/openstack_keystone.py   | 28 +++++++++++++++------
- sos/plugins/openstack_manila.py     | 25 +++++++++++++------
- sos/plugins/openstack_neutron.py    | 27 ++++++++++++++------
- sos/plugins/openstack_nova.py       | 37 ++++++++++++++++++++++------
- sos/plugins/openstack_sahara.py     | 24 ++++++++++++------
- sos/plugins/openstack_swift.py      | 30 +++++++++++++++++------
- sos/plugins/openstack_trove.py      | 25 +++++++++++++------
- sos/plugins/rabbitmq.py             | 22 +++++++++++++----
- sos/plugins/redis.py                | 40 ++++++++++++++++++++++++------
- 18 files changed, 345 insertions(+), 105 deletions(-)
-
-diff --git a/sos/plugins/gnocchi.py b/sos/plugins/gnocchi.py
-index 724e41b..c7a9709 100644
---- a/sos/plugins/gnocchi.py
-+++ b/sos/plugins/gnocchi.py
-@@ -33,8 +33,17 @@ class GnocchiPlugin(Plugin, RedHatPlugin):
- 
-     requires_root = False
- 
-+    var_puppet_gen = "/var/lib/config-data/puppet-generated/gnocchi"
-+
-     def setup(self):
--        self.add_copy_spec("/etc/gnocchi/")
-+        self.add_copy_spec([
-+            "/etc/gnocchi/*",
-+            self.var_puppet_gen + "/etc/gnocchi/*",
-+            self.var_puppet_gen + "/etc/httpd/conf/*",
-+            self.var_puppet_gen + "/etc/httpd/conf.d/*",
-+            self.var_puppet_gen + "/etc/httpd/conf.modules.d/wsgi.conf",
-+            self.var_puppet_gen + "/etc/my.cnf.d/tripleo.cnf"
-+        ])
- 
-         self.limit = self.get_option("log_size")
-         if self.get_option("all_logs"):
-@@ -76,5 +85,12 @@ class GnocchiPlugin(Plugin, RedHatPlugin):
-             r"password=(.*)",
-             r"password=*****",
-         )
-+        self.do_file_sub(
-+            self.var_puppet_gen + "/etc/gnocchi/"
-+            "gnocchi.conf",
-+            r"password=(.*)",
-+            r"password=*****",
-+        )
-+
- 
- # vim: set et ts=4 sw=4 :
-diff --git a/sos/plugins/haproxy.py b/sos/plugins/haproxy.py
-index 6ec98d2..9084506 100644
---- a/sos/plugins/haproxy.py
-+++ b/sos/plugins/haproxy.py
-@@ -27,7 +27,11 @@ class HAProxy(Plugin, RedHatPlugin, DebianPlugin):
-     packages = ('haproxy',)
- 
-     def setup(self):
--        self.add_copy_spec("/etc/haproxy/haproxy.cfg")
-+        var_puppet_gen = "/var/lib/config-data/puppet-generated/haproxy"
-+        self.add_copy_spec([
-+            "/etc/haproxy/haproxy.cfg",
-+            var_puppet_gen + "/etc/haproxy/haproxy.cfg"
-+        ])
-         self.add_copy_spec("/etc/haproxy/conf.d/*")
-         self.add_cmd_output("haproxy -f /etc/haproxy/haproxy.cfg -c")
- 
-diff --git a/sos/plugins/iscsi.py b/sos/plugins/iscsi.py
-index 7324b26..66aa632 100644
---- a/sos/plugins/iscsi.py
-+++ b/sos/plugins/iscsi.py
-@@ -30,9 +30,11 @@ class RedHatIscsi(Iscsi, RedHatPlugin):
- 
-     def setup(self):
-         super(RedHatIscsi, self).setup()
-+        var_puppet_gen = "/var/lib/config-data/puppet-generated/iscsid"
-         self.add_copy_spec([
-             "/etc/iscsi/iscsid.conf",
-             "/etc/iscsi/initiatorname.iscsi",
-+            var_puppet_gen + "/etc/iscsi/initiatorname.iscsi",
-             "/var/lib/iscsi"
-         ])
-         self.add_cmd_output([
-diff --git a/sos/plugins/mongodb.py b/sos/plugins/mongodb.py
-index 46b0251..8c89517 100644
---- a/sos/plugins/mongodb.py
-+++ b/sos/plugins/mongodb.py
-@@ -25,11 +25,18 @@ class MongoDb(Plugin, DebianPlugin, UbuntuPlugin):
-     profiles = ('services',)
- 
-     packages = ('mongodb-server',)
--    files = ('/etc/mongodb.conf',)
-+    var_puppet_gen = "/var/lib/config-data/puppet-generated/mongodb"
-+
-+    files = (
-+        '/etc/mongodb.conf',
-+        var_puppet_gen + '/etc/mongod.conf'
-+    )
- 
-     def setup(self):
-         self.add_copy_spec([
-             "/etc/mongodb.conf",
-+            self.var_puppet_gen + "/etc/",
-+            self.var_puppet_gen + "/etc/systemd/system/mongod.service.d/",
-             "/var/log/mongodb/mongodb.log",
-             "/var/log/containers/mongodb/mongodb.log"
-         ])
-@@ -41,6 +48,12 @@ class MongoDb(Plugin, DebianPlugin, UbuntuPlugin):
-             r"mms-token = ********"
-         )
- 
-+        self.do_file_sub(
-+            self.var_puppet_gen + "/etc/mongodb.conf",
-+            r"(mms-token\s*=\s*.*)",
-+            r"mms-token = ********"
-+        )
-+
- 
- class RedHatMongoDb(MongoDb, RedHatPlugin):
- 
-diff --git a/sos/plugins/mysql.py b/sos/plugins/mysql.py
-index 7bf933a..decca69 100644
---- a/sos/plugins/mysql.py
-+++ b/sos/plugins/mysql.py
-@@ -93,9 +93,10 @@ class RedHatMysql(Mysql, RedHatPlugin):
-         super(RedHatMysql, self).setup()
-         self.add_copy_spec([
-             "/etc/ld.so.conf.d/mysql-*.conf",
--            "/etc/ld.so.conf.d/mariadb-*.conf"
-+            "/etc/ld.so.conf.d/mariadb-*.conf",
-+            "/etc/my.cnf.d/*",
-+            "/var/lib/config-data/puppet-generated/mysql/etc/my.cnf.d/*"
-         ])
--        self.add_copy_spec("/etc/my.cnf.d/*")
- 
- 
- class DebianMysql(Mysql, DebianPlugin, UbuntuPlugin):
-diff --git a/sos/plugins/openstack_ceilometer.py b/sos/plugins/openstack_ceilometer.py
-index 2c3a809..b3c6bd8 100644
---- a/sos/plugins/openstack_ceilometer.py
-+++ b/sos/plugins/openstack_ceilometer.py
-@@ -27,19 +27,25 @@ class OpenStackCeilometer(Plugin):
-     profiles = ('openstack', 'openstack_controller', 'openstack_compute')
- 
-     option_list = []
-+    var_puppet_gen = "/var/lib/config-data/puppet-generated/ceilometer"
- 
-     def setup(self):
-         # Ceilometer
-         self.limit = self.get_option("log_size")
-         if self.get_option("all_logs"):
--            self.add_copy_spec(["/var/log/ceilometer/",
--                                "/var/log/containers/ceilometer/"],
--                               sizelimit=self.limit)
-+            self.add_copy_spec([
-+                "/var/log/ceilometer/*",
-+                "/var/log/containers/ceilometer/*"
-+            ], sizelimit=self.limit)
-         else:
--            self.add_copy_spec(["/var/log/ceilometer/*.log",
--                                "/var/log/containers/ceilometer/*.log"],
--                               sizelimit=self.limit)
--        self.add_copy_spec("/etc/ceilometer/")
-+            self.add_copy_spec([
-+                "/var/log/ceilometer/*.log",
-+                "/var/log/containers/ceilometer/*.log"
-+            ], sizelimit=self.limit)
-+        self.add_copy_spec([
-+            "/etc/ceilometer/*",
-+            self.var_puppet_gen + "/etc/ceilometer/*"
-+        ])
-         if self.get_option("verify"):
-             self.add_cmd_output("rpm -V %s" % ' '.join(self.packages))
- 
-@@ -54,6 +60,10 @@ class OpenStackCeilometer(Plugin):
- 
-         regexp = r"((?m)^\s*(%s)\s*=\s*)(.*)" % "|".join(protect_keys)
-         self.do_path_regex_sub("/etc/ceilometer/*", regexp, r"\1*********")
-+        self.do_path_regex_sub(
-+            self.var_puppet_gen + "/etc/ceilometer/*",
-+            regexp, r"\1*********"
-+        )
- 
- 
- class DebianCeilometer(OpenStackCeilometer, DebianPlugin,
-diff --git a/sos/plugins/openstack_glance.py b/sos/plugins/openstack_glance.py
-index 6202c49..0a2bdc1 100644
---- a/sos/plugins/openstack_glance.py
-+++ b/sos/plugins/openstack_glance.py
-@@ -28,6 +28,7 @@ class OpenStackGlance(Plugin):
-     profiles = ('openstack', 'openstack_controller')
- 
-     option_list = []
-+    var_puppet_gen = "/var/lib/config-data/puppet-generated/glance_api"
- 
-     def setup(self):
-         # Glance
-@@ -38,15 +39,21 @@ class OpenStackGlance(Plugin):
- 
-         self.limit = self.get_option("log_size")
-         if self.get_option("all_logs"):
--            self.add_copy_spec(["/var/log/glance/",
--                                "/var/log/containers/glance/"],
--                               sizelimit=self.limit)
-+            self.add_copy_spec([
-+                "/var/log/glance/",
-+                "/var/log/containers/glance/"
-+            ], sizelimit=self.limit)
-         else:
--            self.add_copy_spec(["/var/log/glance/*.log",
--                                "/var/log/containers/glance/*.log"],
--                               sizelimit=self.limit)
-+            self.add_copy_spec([
-+                "/var/log/glance/*.log",
-+                "/var/log/containers/glance/*.log"
-+            ], sizelimit=self.limit)
- 
--        self.add_copy_spec("/etc/glance/")
-+        self.add_copy_spec([
-+            "/etc/glance/",
-+            self.var_puppet_gen + "/etc/glance/",
-+            self.var_puppet_gen + "/etc/my.cnf.d/tripleo.cnf"
-+        ])
- 
-         if self.get_option("verify"):
-             self.add_cmd_output("rpm -V %s" % ' '.join(self.packages))
-@@ -73,6 +80,10 @@ class OpenStackGlance(Plugin):
- 
-         regexp = r"((?m)^\s*(%s)\s*=\s*)(.*)" % "|".join(protect_keys)
-         self.do_path_regex_sub("/etc/glance/*", regexp, r"\1*********")
-+        self.do_path_regex_sub(
-+            self.var_puppet_gen + "/etc/glance/*",
-+            regexp, r"\1*********"
-+        )
- 
- 
- class DebianGlance(OpenStackGlance, DebianPlugin, UbuntuPlugin):
-diff --git a/sos/plugins/openstack_heat.py b/sos/plugins/openstack_heat.py
-index 0f457d9..a73916b 100644
---- a/sos/plugins/openstack_heat.py
-+++ b/sos/plugins/openstack_heat.py
-@@ -26,6 +26,7 @@ class OpenStackHeat(Plugin):
-     profiles = ('openstack', 'openstack_controller')
- 
-     option_list = []
-+    var_puppet_gen = "/var/lib/config-data/puppet-generated/heat"
- 
-     def setup(self):
-         # Heat
-@@ -49,15 +50,31 @@ class OpenStackHeat(Plugin):
- 
-         self.limit = self.get_option("log_size")
-         if self.get_option("all_logs"):
--            self.add_copy_spec(["/var/log/heat/",
--                                "/var/log/containers/heat/"],
--                               sizelimit=self.limit)
-+            self.add_copy_spec([
-+                "/var/log/heat/",
-+                "/var/log/containers/heat/"
-+            ], sizelimit=self.limit)
-         else:
--            self.add_copy_spec(["/var/log/heat/*.log",
--                                "/var/log/containers/heat/*.log"],
--                               sizelimit=self.limit)
--
--        self.add_copy_spec("/etc/heat/")
-+            self.add_copy_spec([
-+                "/var/log/heat/*.log",
-+                "/var/log/containers/heat/*.log"
-+            ], sizelimit=self.limit)
-+
-+        self.add_copy_spec([
-+            "/etc/heat/",
-+            self.var_puppet_gen + "/etc/heat/",
-+            self.var_puppet_gen + "/etc/my.cnf.d/tripleo.cnf",
-+            self.var_puppet_gen + "_api/etc/heat/",
-+            self.var_puppet_gen + "_api/etc/httpd/conf/",
-+            self.var_puppet_gen + "_api/etc/httpd/conf.d/",
-+            self.var_puppet_gen + "_api/etc/httpd/conf.modules.d/*.conf",
-+            self.var_puppet_gen + "_api/var/spool/cron/heat",
-+            self.var_puppet_gen + "_api_cfn/etc/heat/",
-+            self.var_puppet_gen + "_api_cfn/etc/httpd/conf/",
-+            self.var_puppet_gen + "_api_cfn/etc/httpd/conf.d/",
-+            self.var_puppet_gen + "_api_cfn/etc/httpd/conf.modules.d/*.conf",
-+            self.var_puppet_gen + "_api_cfn/var/spool/cron/heat",
-+        ])
- 
-         if self.get_option("verify"):
-             self.add_cmd_output("rpm -V %s" % ' '.join(self.packages))
-@@ -69,7 +86,21 @@ class OpenStackHeat(Plugin):
-         ]
- 
-         regexp = r"((?m)^\s*(%s)\s*=\s*)(.*)" % "|".join(protect_keys)
--        self.do_path_regex_sub("/etc/heat/*", regexp, r"\1*********")
-+        self.do_path_regex_sub(
-+            "/etc/heat/*",
-+            regexp, r"\1*********")
-+        self.do_path_regex_sub(
-+            self.var_puppet_gen + "/etc/heat/*",
-+            regexp, r"\1*********"
-+        )
-+        self.do_path_regex_sub(
-+            self.var_puppet_gen + "_api/etc/heat/*",
-+            regexp, r"\1*********"
-+        )
-+        self.do_path_regex_sub(
-+            self.var_puppet_gen + "_api_cfn/etc/heat/*",
-+            regexp, r"\1*********"
-+        )
- 
- 
- class DebianHeat(OpenStackHeat, DebianPlugin, UbuntuPlugin):
-diff --git a/sos/plugins/openstack_horizon.py b/sos/plugins/openstack_horizon.py
-index 75ad3ce..a9a7fab 100644
---- a/sos/plugins/openstack_horizon.py
-+++ b/sos/plugins/openstack_horizon.py
-@@ -27,36 +27,58 @@ class OpenStackHorizon(Plugin):
-     plugin_name = "openstack_horizon"
-     profiles = ('openstack', 'openstack_controller')
-     option_list = []
-+    var_puppet_gen = "/var/lib/config-data/puppet-generated"
- 
-     def setup(self):
- 
-         self.limit = self.get_option("log_size")
-         if self.get_option("all_logs"):
--            self.add_copy_spec(["/var/log/horizon/",
--                                "/var/log/containers/horizon/"],
--                               sizelimit=self.limit)
-+            self.add_copy_spec([
-+                "/var/log/horizon/",
-+                "/var/log/containers/horizon/"
-+            ], sizelimit=self.limit)
-         else:
--            self.add_copy_spec(["/var/log/horizon/*.log",
--                                "/var/log/containers/horizon/*.log"],
--                               sizelimit=self.limit)
--
--        self.add_copy_spec("/etc/openstack-dashboard/")
-+            self.add_copy_spec([
-+                "/var/log/horizon/*.log",
-+                "/var/log/containers/horizon/*.log"
-+            ], sizelimit=self.limit)
-+
-+        self.add_copy_spec([
-+            "/etc/openstack-dashboard/",
-+            self.var_puppet_gen + "/horizon/etc/openstack-dashboard/",
-+            self.var_puppet_gen + "/horizon/etc/httpd/conf/",
-+            self.var_puppet_gen + "/horizon/etc/httpd/conf.d/",
-+            self.var_puppet_gen + "/horizon/etc/httpd/conf.modules.d/*.conf",
-+            self.var_puppet_gen + "/memcached/etc/sysconfig/memcached"
-+        ])
-         self.add_forbidden_path("*.py[co]")
- 
-         if self.get_option("verify"):
-             self.add_cmd_output("rpm -V %s" % ' '.join(self.packages))
- 
-     def postproc(self):
-+        var_puppet_gen = self.var_puppet_gen + "/horizon"
-         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/.*\.json",
--                               regexp, r"\1*********")
--        self.do_path_regex_sub("/etc/openstack-dashboard/local_settings/ + \
--                               .*\.conf.*",
--                               regexp, r"\1*********")
-+        self.do_path_regex_sub(
-+            "/etc/openstack-dashboard/.*\.json",
-+            regexp, r"\1*********"
-+        )
-+        self.do_path_regex_sub(
-+            var_puppet_gen + "/etc/openstack-dashboard/.*\.json",
-+            regexp, r"\1*********"
-+        )
-+        self.do_path_regex_sub(
-+            "/etc/openstack-dashboard/local_settings/.*\.conf.*",
-+            regexp, r"\1*********"
-+        )
-+        self.do_path_regex_sub(
-+            var_puppet_gen + "/etc/openstack-dashboard/.*\.conf.*",
-+            regexp, r"\1*********"
-+        )
- 
- 
- class DebianHorizon(OpenStackHorizon, DebianPlugin):
-diff --git a/sos/plugins/openstack_keystone.py b/sos/plugins/openstack_keystone.py
-index 82e987a..bdcb61d 100644
---- a/sos/plugins/openstack_keystone.py
-+++ b/sos/plugins/openstack_keystone.py
-@@ -26,24 +26,34 @@ class OpenStackKeystone(Plugin):
-     profiles = ('openstack', 'openstack_controller')
- 
-     option_list = [("nopw", "dont gathers keystone passwords", "slow", True)]
-+    var_puppet_gen = "/var/lib/config-data/puppet-generated/keystone"
- 
-     def setup(self):
-         self.add_copy_spec([
-             "/etc/keystone/default_catalog.templates",
-             "/etc/keystone/keystone.conf",
-             "/etc/keystone/logging.conf",
--            "/etc/keystone/policy.json"
-+            "/etc/keystone/policy.json",
-+            self.var_puppet_gen + "/etc/keystone/*.conf",
-+            self.var_puppet_gen + "/etc/keystone/*.json",
-+            self.var_puppet_gen + "/etc/httpd/conf/",
-+            self.var_puppet_gen + "/etc/httpd/conf.d/",
-+            self.var_puppet_gen + "/etc/httpd/conf.modules.d/*.conf",
-+            self.var_puppet_gen + "/var/spool/cron/",
-+            self.var_puppet_gen + "/etc/my.cnf.d/tripleo.cnf"
-         ])
- 
-         self.limit = self.get_option("log_size")
-         if self.get_option("all_logs"):
--            self.add_copy_spec(["/var/log/keystone/",
--                                "/var/log/containers/keystone/"],
--                               sizelimit=self.limit)
-+            self.add_copy_spec([
-+                "/var/log/keystone/",
-+                "/var/log/containers/keystone/"
-+            ], sizelimit=self.limit)
-         else:
--            self.add_copy_spec(["/var/log/keystone/*.log",
--                                "/var/log/containers/keystone/*.log"],
--                               sizelimit=self.limit)
-+            self.add_copy_spec([
-+                "/var/log/keystone/*.log",
-+                "/var/log/containers/keystone/*.log"
-+            ], sizelimit=self.limit)
- 
-         if self.get_option("verify"):
-             self.add_cmd_output("rpm -V %s" % ' '.join(self.packages))
-@@ -71,6 +81,10 @@ class OpenStackKeystone(Plugin):
- 
-         regexp = r"((?m)^\s*(%s)\s*=\s*)(.*)" % "|".join(protect_keys)
-         self.do_path_regex_sub("/etc/keystone/*", regexp, r"\1*********")
-+        self.do_path_regex_sub(
-+            self.var_puppet_gen + "/etc/keystone/*",
-+            regexp, r"\1*********"
-+        )
- 
- 
- class DebianKeystone(OpenStackKeystone, DebianPlugin, UbuntuPlugin):
-diff --git a/sos/plugins/openstack_manila.py b/sos/plugins/openstack_manila.py
-index c1e6609..92bca6f 100644
---- a/sos/plugins/openstack_manila.py
-+++ b/sos/plugins/openstack_manila.py
-@@ -24,18 +24,25 @@ class OpenStackManila(Plugin):
-     profiles = ('openstack', 'openstack_controller')
-     option_list = []
- 
-+    var_puppet_gen = "/var/lib/config-data/puppet-generated/manila"
-+
-     def setup(self):
--        self.add_copy_spec("/etc/manila/")
-+        self.add_copy_spec([
-+            "/etc/manila/",
-+            self.var_puppet_gen + "/etc/manila/"
-+        ])
- 
-         self.limit = self.get_option("log_size")
-         if self.get_option("all_logs"):
--            self.add_copy_spec(["/var/log/manila/*",
--                                "/var/log/containers/manila/*"],
--                               sizelimit=self.limit)
-+            self.add_copy_spec([
-+                "/var/log/manila/*",
-+                "/var/log/containers/manila/*"
-+            ], sizelimit=self.limit)
-         else:
--            self.add_copy_spec(["/var/log/manila/*.log",
--                                "/var/log/containers/manila/*.log"],
--                               sizelimit=self.limit)
-+            self.add_copy_spec([
-+                "/var/log/manila/*.log",
-+                "/var/log/containers/manila/*.log"
-+            ], sizelimit=self.limit)
- 
-     def postproc(self):
-         protect_keys = [
-@@ -47,6 +54,10 @@ class OpenStackManila(Plugin):
- 
-         regexp = r"((?m)^\s*(%s)\s*=\s*)(.*)" % "|".join(protect_keys)
-         self.do_path_regex_sub("/etc/manila/*", regexp, r"\1*********")
-+        self.do_path_regex_sub(
-+            self.var_puppet_gen + "/etc/manila/*",
-+            regexp, r"\1*********"
-+        )
- 
- 
- class DebianManila(OpenStackManila, DebianPlugin, UbuntuPlugin):
-diff --git a/sos/plugins/openstack_neutron.py b/sos/plugins/openstack_neutron.py
-index d2bfe6b..b6116c7 100644
---- a/sos/plugins/openstack_neutron.py
-+++ b/sos/plugins/openstack_neutron.py
-@@ -25,19 +25,26 @@ class OpenStackNeutron(Plugin):
-     plugin_name = "openstack_neutron"
-     profiles = ('openstack', 'openstack_controller', 'openstack_compute')
- 
-+    var_puppet_gen = "/var/lib/config-data/puppet-generated/neutron"
-+
-     def setup(self):
- 
-         self.limit = self.get_option("log_size")
-         if self.get_option("all_logs"):
--            self.add_copy_spec(["/var/log/neutron/",
--                                "/var/log/containers/neutron/"],
--                               sizelimit=self.limit)
-+            self.add_copy_spec([
-+                "/var/log/neutron/",
-+                "/var/log/containers/neutron/"
-+            ], sizelimit=self.limit)
-         else:
--            self.add_copy_spec(["/var/log/neutron/*.log",
--                                "/var/log/containers/neutron/*.log"],
--                               sizelimit=self.limit)
--
--        self.add_copy_spec("/etc/neutron/")
-+            self.add_copy_spec([
-+                "/var/log/neutron/*.log",
-+                "/var/log/containers/neutron/*.log"
-+            ], sizelimit=self.limit)
-+
-+        self.add_copy_spec([
-+            "/etc/neutron/",
-+            self.var_puppet_gen + "/etc/neutron/"
-+        ])
-         self.add_copy_spec("/var/lib/neutron/")
-         if self.get_option("verify"):
-             self.add_cmd_output("rpm -V %s" % ' '.join(self.packages))
-@@ -75,6 +82,10 @@ class OpenStackNeutron(Plugin):
-         regexp = r"((?m)^\s*(%s)\s*=\s*)(.*)" % "|".join(protect_keys)
- 
-         self.do_path_regex_sub("/etc/neutron/*", regexp, r"\1*********")
-+        self.do_path_regex_sub(
-+            self.var_puppet_gen + "/etc/neutron/*",
-+            regexp, r"\1*********"
-+        )
- 
- 
- class DebianNeutron(OpenStackNeutron, DebianPlugin, UbuntuPlugin):
-diff --git a/sos/plugins/openstack_nova.py b/sos/plugins/openstack_nova.py
-index c0e8109..75dd372 100644
---- a/sos/plugins/openstack_nova.py
-+++ b/sos/plugins/openstack_nova.py
-@@ -29,6 +29,8 @@ class OpenStackNova(Plugin):
-     plugin_name = "openstack_nova"
-     profiles = ('openstack', 'openstack_controller', 'openstack_compute')
- 
-+    var_puppet_gen = "/var/lib/config-data/puppet-generated/nova"
-+
-     def setup(self):
-         # commands we do not need to source the environment file
-         self.add_cmd_output("nova-manage db version")
-@@ -67,15 +69,28 @@ class OpenStackNova(Plugin):
- 
-         self.limit = self.get_option("log_size")
-         if self.get_option("all_logs"):
--            self.add_copy_spec(["/var/log/nova/",
--                                "/var/log/containers/nova/"],
--                               sizelimit=self.limit)
-+            self.add_copy_spec([
-+                "/var/log/nova/",
-+                "/var/log/containers/nova/"
-+            ], sizelimit=self.limit)
-         else:
--            self.add_copy_spec(["/var/log/nova/*.log",
--                                "/var/log/containers/nova/*.log"],
--                               sizelimit=self.limit)
-+            self.add_copy_spec([
-+                "/var/log/nova/*.log",
-+                "/var/log/containers/nova/*.log"
-+            ], sizelimit=self.limit)
- 
--        self.add_copy_spec("/etc/nova/")
-+        self.add_copy_spec([
-+            "/etc/nova/",
-+            self.var_puppet_gen + "/etc/nova/",
-+            self.var_puppet_gen + "/etc/my.cnf.d/tripleo.cnf",
-+            self.var_puppet_gen + "_placement/var/spool/cron/nova",
-+            self.var_puppet_gen + "_placement/etc/nova/",
-+            self.var_puppet_gen + "_placement/etc/httpd/conf/",
-+            self.var_puppet_gen + "_placement/etc/httpd/conf.d/",
-+            self.var_puppet_gen + "_placement/etc/httpd/conf.modules.d/*.conf",
-+            self.var_puppet_gen + "_placement/etc/my.cnf.d/tripleo.cnf",
-+            self.var_puppet_gen + "/../memcached/etc/sysconfig/memcached"
-+        ])
- 
-         if self.get_option("verify"):
-             self.add_cmd_output("rpm -V %s" % ' '.join(self.packages))
-@@ -92,6 +107,14 @@ class OpenStackNova(Plugin):
- 
-         regexp = r"((?m)^\s*(%s)\s*=\s*)(.*)" % "|".join(protect_keys)
-         self.do_path_regex_sub("/etc/nova/*", regexp, r"\1*********")
-+        self.do_path_regex_sub(
-+            self.var_puppet_gen + "/etc/nova/*",
-+            regexp, r"\1*********"
-+        )
-+        self.do_path_regex_sub(
-+            self.var_puppet_gen + "_placement/etc/nova/*",
-+            regexp, r"\1*********"
-+        )
- 
- 
- class DebianNova(OpenStackNova, DebianPlugin, UbuntuPlugin):
-diff --git a/sos/plugins/openstack_sahara.py b/sos/plugins/openstack_sahara.py
-index adaedf9..68cf0b3 100644
---- a/sos/plugins/openstack_sahara.py
-+++ b/sos/plugins/openstack_sahara.py
-@@ -23,22 +23,28 @@ class OpenStackSahara(Plugin):
-     profiles = ('openstack', 'openstack_controller')
- 
-     option_list = []
-+    var_puppet_gen = "/var/lib/config-data/puppet-generated/sahara"
- 
-     def setup(self):
--        self.add_copy_spec("/etc/sahara/")
-+        self.add_copy_spec([
-+            "/etc/sahara/",
-+            self.var_puppet_gen + "/etc/sahara/"
-+        ])
-         self.add_journal(units="openstack-sahara-all")
-         self.add_journal(units="openstack-sahara-api")
-         self.add_journal(units="openstack-sahara-engine")
- 
-         self.limit = self.get_option("log_size")
-         if self.get_option("all_logs"):
--            self.add_copy_spec(["/var/log/sahara/",
--                                "/var/log/containers/sahara/"],
--                               sizelimit=self.limit)
-+            self.add_copy_spec([
-+                "/var/log/sahara/",
-+                "/var/log/containers/sahara/"
-+            ], sizelimit=self.limit)
-         else:
--            self.add_copy_spec(["/var/log/sahara/*.log",
--                                "/var/log/containers/sahara/*.log"],
--                               sizelimit=self.limit)
-+            self.add_copy_spec([
-+                "/var/log/sahara/*.log",
-+                "/var/log/containers/sahara/*.log"
-+            ], sizelimit=self.limit)
- 
-         if self.get_option("verify"):
-             self.add_cmd_output("rpm -V %s" % ' '.join(self.packages))
-@@ -52,6 +58,10 @@ class OpenStackSahara(Plugin):
- 
-         regexp = r"((?m)^\s*(%s)\s*=\s*)(.*)" % "|".join(protect_keys)
-         self.do_path_regex_sub("/etc/sahara/*", regexp, r"\1*********")
-+        self.do_path_regex_sub(
-+            self.var_puppet_gen + "/etc/sahara/*",
-+            regexp, r"\1*********"
-+        )
- 
- 
- class DebianSahara(OpenStackSahara, DebianPlugin, UbuntuPlugin):
-diff --git a/sos/plugins/openstack_swift.py b/sos/plugins/openstack_swift.py
-index 9906b94..1cfff2b 100644
---- a/sos/plugins/openstack_swift.py
-+++ b/sos/plugins/openstack_swift.py
-@@ -27,19 +27,29 @@ class OpenStackSwift(Plugin):
- 
-     option_list = []
- 
-+    var_puppet_gen = "/var/lib/config-data/puppet-generated"
-+
-     def setup(self):
- 
-         self.limit = self.get_option("log_size")
-         if self.get_option("all_logs"):
--            self.add_copy_spec(["/var/log/swift/",
--                                "/var/log/containers/swift/"],
--                               sizelimit=self.limit)
-+            self.add_copy_spec([
-+                "/var/log/swift/",
-+                "/var/log/containers/swift/"
-+            ], sizelimit=self.limit)
-         else:
--            self.add_copy_spec(["/var/log/swift/*.log",
--                                "/var/log/containers/swift/*.log"],
--                               sizelimit=self.limit)
--
--        self.add_copy_spec("/etc/swift/")
-+            self.add_copy_spec([
-+                "/var/log/swift/*.log",
-+                "/var/log/containers/swift/*.log"
-+            ], sizelimit=self.limit)
-+
-+        self.add_copy_spec([
-+            "/etc/swift/",
-+            self.var_puppet_gen + "/swift/etc/*",
-+            self.var_puppet_gen + "/swift/etc/swift/*",
-+            self.var_puppet_gen + "/swift/etc/xinetd.d/*",
-+            self.var_puppet_gen + "/memcached/etc/sysconfig/memcached"
-+        ])
- 
-         if self.get_option("verify"):
-             self.add_cmd_output("rpm -V %s" % ' '.join(self.packages))
-@@ -54,6 +64,10 @@ class OpenStackSwift(Plugin):
- 
-         regexp = r"((?m)^\s*(%s)\s*=\s*)(.*)" % "|".join(protect_keys)
-         self.do_path_regex_sub("/etc/swift/.*\.conf.*", regexp, r"\1*********")
-+        self.do_path_regex_sub(
-+            self.var_puppet_gen + "/swift/etc/swift/.*\.conf.*",
-+            regexp, r"\1*********"
-+        )
- 
- 
- class DebianSwift(OpenStackSwift, DebianPlugin, UbuntuPlugin):
-diff --git a/sos/plugins/openstack_trove.py b/sos/plugins/openstack_trove.py
-index 5183ad1..093e5d5 100644
---- a/sos/plugins/openstack_trove.py
-+++ b/sos/plugins/openstack_trove.py
-@@ -26,19 +26,26 @@ class OpenStackTrove(Plugin):
-     profiles = ('openstack', 'openstack_controller')
-     option_list = []
- 
-+    var_puppet_gen = "/var/lib/config-data/puppet-generated/trove"
-+
-     def setup(self):
- 
-         self.limit = self.get_option("log_size")
-         if self.get_option("all_logs"):
--            self.add_copy_spec(["/var/log/trove/",
--                                "/var/log/containers/trove/"],
--                               sizelimit=self.limit)
-+            self.add_copy_spec([
-+                "/var/log/trove/",
-+                "/var/log/containers/trove/"
-+            ], sizelimit=self.limit)
-         else:
--            self.add_copy_spec(["/var/log/trove/*.log",
--                                "/var/log/containers/trove/*.log"],
--                               sizelimit=self.limit)
-+            self.add_copy_spec([
-+                "/var/log/trove/*.log",
-+                "/var/log/containers/trove/*.log"
-+            ], sizelimit=self.limit)
- 
--        self.add_copy_spec('/etc/trove/')
-+        self.add_copy_spec([
-+            '/etc/trove/',
-+            self.var_puppet_gen + '/etc/trove/'
-+        ])
- 
-         if self.get_option("verify"):
-             self.add_cmd_output("rpm -V %s" % ' '.join(self.packages))
-@@ -53,6 +60,10 @@ class OpenStackTrove(Plugin):
- 
-         regexp = r"((?m)^\s*(%s)\s*=\s*)(.*)" % "|".join(protect_keys)
-         self.do_path_regex_sub("/etc/trove/*", regexp, r"\1*********")
-+        self.do_path_regex_sub(
-+            self.var_puppet_gen + "/etc/trove/*",
-+            regexp, r"\1*********"
-+        )
- 
- 
- class DebianTrove(OpenStackTrove, DebianPlugin, UbuntuPlugin):
-diff --git a/sos/plugins/rabbitmq.py b/sos/plugins/rabbitmq.py
-index 8d73835..2c7e428 100644
---- a/sos/plugins/rabbitmq.py
-+++ b/sos/plugins/rabbitmq.py
-@@ -20,7 +20,11 @@ class RabbitMQ(Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin):
-     """
-     plugin_name = 'rabbitmq'
-     profiles = ('services',)
--    files = ('/etc/rabbitmq/rabbitmq.conf',)
-+    var_puppet_gen = "/var/lib/config-data/puppet-generated/rabbitmq"
-+    files = (
-+        '/etc/rabbitmq/rabbitmq.conf',
-+        var_puppet_gen + '/etc/rabbitmq/rabbitmq.config'
-+    )
-     packages = ('rabbitmq-server',)
- 
-     def setup(self):
-@@ -28,8 +32,16 @@ class RabbitMQ(Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin):
-         self.add_cmd_output("rabbitmqctl cluster_status")
-         self.add_cmd_output("rabbitmqctl list_policies")
- 
--        self.add_copy_spec("/etc/rabbitmq/*")
--        self.add_copy_spec(["/var/log/rabbitmq/*",
--                            "/var/log/containers/rabbitmq/*"],
--                           sizelimit=self.get_option('log_size'))
-+        self.add_copy_spec([
-+            "/etc/rabbitmq/*",
-+            self.var_puppet_gen + "/etc/rabbitmq/*",
-+            self.var_puppet_gen + "/etc/security/limits.d/",
-+            self.var_puppet_gen + "/etc/systemd/"
-+        ])
-+        self.add_copy_spec([
-+            "/var/log/rabbitmq/*",
-+            "/var/log/containers/rabbitmq/*"
-+        ], sizelimit=self.get_option('log_size'))
-+
-+
- # vim: set et ts=4 sw=4 :
-diff --git a/sos/plugins/redis.py b/sos/plugins/redis.py
-index 9ac2397..088a9a2 100644
---- a/sos/plugins/redis.py
-+++ b/sos/plugins/redis.py
-@@ -1,4 +1,5 @@
- # Copyright (C) 2015 Red Hat, Inc., Abhijeet Kasurde <akasurde@redhat.com>
-+# Copyright (C) 2017 Red Hat, Inc., Martin Schuppert <mschuppe@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
-@@ -25,20 +26,32 @@ class Redis(Plugin, RedHatPlugin):
-     profiles = ('services',)
- 
-     packages = ('redis',)
--    files = ('/etc/redis.conf', '/var/log/redis')
-+    var_puppet_gen = "/var/lib/config-data/puppet-generated/redis"
-+    files = (
-+        '/etc/redis.conf',
-+        '/var/log/redis',
-+        var_puppet_gen + '/etc/redis.conf'
-+    )
- 
-     def setup(self):
--        self.add_copy_spec("/etc/redis.conf")
-+        self.add_copy_spec([
-+            "/etc/redis.conf",
-+            self.var_puppet_gen + "/etc/redis*",
-+            self.var_puppet_gen + "/etc/redis/",
-+            self.var_puppet_gen + "/etc/security/limits.d/"
-+        ])
-         self.limit = self.get_option("log_size")
-         self.add_cmd_output("redis-cli info")
-         if self.get_option("all_logs"):
--            self.add_copy_spec(["/var/log/redis/redis.log*",
--                                "/var/log/containers/redis/redis.log*"],
--                               sizelimit=self.limit)
-+            self.add_copy_spec([
-+                "/var/log/redis/redis.log*",
-+                "/var/log/containers/redis/redis.log*"
-+            ], sizelimit=self.limit)
-         else:
--            self.add_copy_spec(["/var/log/redis/redis.log",
--                                "/var/log/containers/redis/redis.log"],
--                               sizelimit=self.limit)
-+            self.add_copy_spec([
-+                "/var/log/redis/redis.log",
-+                "/var/log/containers/redis/redis.log"
-+            ], sizelimit=self.limit)
- 
-     def postproc(self):
-         self.do_file_sub(
-@@ -51,5 +64,16 @@ class Redis(Plugin, RedHatPlugin):
-             r"(requirepass\s).*",
-             r"\1********"
-         )
-+        self.do_path_regex_sub(
-+            self.var_puppet_gen + "/etc/redis.conf*",
-+            r"(masterauth\s).*",
-+            r"\1*********"
-+        )
-+        self.do_path_regex_sub(
-+            self.var_puppet_gen + "/etc/redis.conf*",
-+            r"(requirepass\s).*",
-+            r"\1*********"
-+        )
-+
- 
- # vim: set et ts=4 sw=4 :
--- 
-2.7.5
-
diff --git a/SOURCES/sos-bz1470573-tripleo-add-ui-logs.patch b/SOURCES/sos-bz1470573-tripleo-add-ui-logs.patch
deleted file mode 100644
index 78de519..0000000
--- a/SOURCES/sos-bz1470573-tripleo-add-ui-logs.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From de9864a01cdd6ef9f27305990a34e9ca5b7baa5b Mon Sep 17 00:00:00 2001
-From: Honza Pokorny <me@honza.ca>
-Date: Thu, 6 Jul 2017 14:40:03 -0300
-Subject: [PATCH] [tripleo] Add ui logs (#1052)
-
-We're using the "openstack" command to stream the ui log file to stdout.
-
-Signed-off-by: Honza Pokorny <honza@redhat.com>
-Signed-off-by: Adam Stokes <battlemidget@users.noreply.github.com>
----
- sos/plugins/openstack_instack.py | 3 +++
- 1 file changed, 3 insertions(+)
-
-diff --git a/sos/plugins/openstack_instack.py b/sos/plugins/openstack_instack.py
-index f990476..a2c1617 100644
---- a/sos/plugins/openstack_instack.py
-+++ b/sos/plugins/openstack_instack.py
-@@ -83,6 +83,9 @@ class OpenStackInstack(Plugin):
-                             deployment + ".log",
-                             timeout=600)
- 
-+            self.add_cmd_output("openstack object save "
-+                                "tripleo-ui-logs tripleo-ui.logs --file -")
-+
-     def postproc(self):
-         protected_keys = [
-             "UNDERCLOUD_TUSKAR_PASSWORD", "UNDERCLOUD_ADMIN_PASSWORD",
--- 
-2.7.5
-
diff --git a/SOURCES/sos-bz1482574-jars-redundant-os-walk.patch b/SOURCES/sos-bz1482574-jars-redundant-os-walk.patch
deleted file mode 100644
index 8b036f7..0000000
--- a/SOURCES/sos-bz1482574-jars-redundant-os-walk.patch
+++ /dev/null
@@ -1,106 +0,0 @@
-From 6fc42802b87f95dba1d6bfda49ae158143e7799c Mon Sep 17 00:00:00 2001
-From: Michal Srb <michal@redhat.com>
-Date: Mon, 21 Aug 2017 16:29:23 +0200
-Subject: [PATCH 1/2] [jars] Scan only /usr/{share,lib}/java by default
-
-Other known locations can be added via:
--k jars.all_known_locations
-
-Additional user-specified locations can be added via:
--k jars.append_locations=...
-
-Signed-off-by: Michal Srb <michal@redhat.com>
----
- sos/plugins/jars.py | 20 +++++++++++++++-----
- 1 file changed, 15 insertions(+), 5 deletions(-)
-
-diff --git a/sos/plugins/jars.py b/sos/plugins/jars.py
-index c6cba96..486ac05 100644
---- a/sos/plugins/jars.py
-+++ b/sos/plugins/jars.py
-@@ -31,7 +31,8 @@ class Jars(Plugin, RedHatPlugin):
-     profiles = ("java",)
-     option_list = [
-         ("append_locations", "colon-separated list of additional JAR paths",
--         "fast", "")
-+         "fast", ""),
-+        ("all_known_locations", "scan all known paths", "slow", False)
-     ]
- 
-     # There is no standard location for JAR files and scanning
-@@ -39,7 +40,12 @@ class Jars(Plugin, RedHatPlugin):
-     # scan directories in which JARs can be typically found.
-     jar_locations = (
-         "/usr/share/java",  # common location for JARs
--        "/usr/lib/java",    # common location for JARs containing native code
-+        "/usr/lib/java"     # common location for JARs containing native code
-+    )
-+
-+    # Following paths can be optionally scanned as well. Note the scan can take
-+    # *very* long time.
-+    extra_jar_locations = (
-         "/opt",             # location for RHSCL and 3rd party software
-         "/usr/local",       # used by sysadmins when installing SW locally
-         "/var/lib"          # Java services commonly explode WARs there
-@@ -50,9 +56,13 @@ class Jars(Plugin, RedHatPlugin):
-         jar_paths = []
- 
-         locations = list(Jars.jar_locations)
--        extra_locations = self.get_option("append_locations")
--        if extra_locations:
--            locations += extra_locations.split(":")
-+        if self.get_option("all_known_locations"):
-+            locations += list(Jars.extra_jar_locations)
-+
-+        # append also user-defined locations, if any
-+        user_locations = self.get_option("append_locations")
-+        if user_locations:
-+            locations += user_locations.split(":")
- 
-         # find all JARs in given locations
-         for location in locations:
--- 
-2.7.5
-
-From d33c63a230092e94f966551968c51e8c5760742f Mon Sep 17 00:00:00 2001
-From: Michal Srb <michal@redhat.com>
-Date: Mon, 21 Aug 2017 18:11:04 +0200
-Subject: [PATCH 2/2] [jars] Catch zipfile.BadZipfile exception
-
-Bad ZIP files can raise zipfile.BadZipfile exception.
-
-Fixes:
-Traceback (most recent call last):
-  File "/home/msrb/projects/sos/sos/sosreport.py", line 1252, in setup
-    plug.setup()
-  File "/home/msrb/projects/sos/sos/plugins/jars.py", line 72, in setup
-    if Jars.is_jar(path):
-  File "/home/msrb/projects/sos/sos/plugins/jars.py", line 98, in is_jar
-    with zipfile.ZipFile(path) as f:
-  File "/usr/lib64/python2.7/zipfile.py", line 770, in __init__
-    self._RealGetContents()
-  File "/usr/lib64/python2.7/zipfile.py", line 842, in _RealGetContents
-    raise BadZipfile("Bad magic number for central directory")
-BadZipfile: Bad magic number for central directory
-
-Signed-off-by: Michal Srb <michal@redhat.com>
----
- sos/plugins/jars.py | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/sos/plugins/jars.py b/sos/plugins/jars.py
-index 486ac05..8c6b54f 100644
---- a/sos/plugins/jars.py
-+++ b/sos/plugins/jars.py
-@@ -98,7 +98,7 @@ class Jars(Plugin, RedHatPlugin):
-                 with zipfile.ZipFile(path) as f:
-                     if "META-INF/MANIFEST.MF" in f.namelist():
-                         return True
--            except IOError:
-+            except (IOError, zipfile.BadZipfile):
-                 pass
-         return False
- 
--- 
-2.7.5
-
diff --git a/SOURCES/sos-bz1483414-opendaylight-plugin.patch b/SOURCES/sos-bz1483414-opendaylight-plugin.patch
new file mode 100644
index 0000000..bc8f746
--- /dev/null
+++ b/SOURCES/sos-bz1483414-opendaylight-plugin.patch
@@ -0,0 +1,182 @@
+From 6013308e2ebfc45d72ef87c3d18fb2edce61d549 Mon Sep 17 00:00:00 2001
+From: Pavel Moravec <pmoravec@redhat.com>
+Date: Thu, 9 Nov 2017 13:10:15 +0100
+Subject: [PATCH] [opendaylight] new plugin for OpenDaylight
+
+Collecting logs and configs.
+
+Resolves: #1143
+
+Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
+---
+ sos/plugins/opendaylight.py | 38 ++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 38 insertions(+)
+ create mode 100644 sos/plugins/opendaylight.py
+
+diff --git a/sos/plugins/opendaylight.py b/sos/plugins/opendaylight.py
+new file mode 100644
+index 00000000..33b4bdb3
+--- /dev/null
++++ b/sos/plugins/opendaylight.py
+@@ -0,0 +1,38 @@
++# 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.,
++# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
++
++from sos.plugins import Plugin, RedHatPlugin
++
++
++class OpenDaylight(Plugin, RedHatPlugin):
++    """OpenDaylight network manager
++    """
++
++    plugin_name = 'opendaylight'
++    profiles = ('openstack', 'openstack_controller')
++
++    packages = ('opendaylight',)
++
++    def setup(self):
++        self.add_copy_spec("/opt/opendaylight/etc/")
++
++        self.limit = self.get_option("log_size")
++        if self.get_option("all_logs"):
++            self.add_copy_spec("/opt/opendaylight/data/log/",
++                               sizelimit=self.limit)
++        else:
++            self.add_copy_spec("/opt/opendaylight/data/log/*log",
++                               sizelimit=self.limit)
++
++# vim: set et ts=4 sw=4 :
+-- 
+2.13.6
+
+From e7552dd922d262ad13441f050b5223aea68d44ac Mon Sep 17 00:00:00 2001
+From: Pavel Moravec <pmoravec@redhat.com>
+Date: Thu, 9 Nov 2017 13:07:59 +0100
+Subject: [PATCH] [openvswitch] collect few ovs-ofctl dumps and OVS list
+
+Required for/by OpenDaylight.
+
+Related to: #1143
+
+Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
+---
+ sos/plugins/openvswitch.py | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/sos/plugins/openvswitch.py b/sos/plugins/openvswitch.py
+index b3bc4054..a137eda7 100644
+--- a/sos/plugins/openvswitch.py
++++ b/sos/plugins/openvswitch.py
+@@ -76,6 +76,8 @@ class OpenVSwitch(Plugin):
+             "ovs-appctl upcall/show",
+             # Capture DPDK and other parameters
+             "ovs-vsctl -t 5 get Open_vSwitch . other_config",
++            # Capture OVS list
++            "ovs-vsctl list Open_vSwitch",
+             # Capture DPDK datapath packet counters and config
+             "ovs-appctl dpctl/show -s",
+             # Capture DPDK queue to pmd mapping
+@@ -126,6 +128,9 @@ class OpenVSwitch(Plugin):
+                 for flow in flow_versions:
+                     if flow in br_protos:
+                         self.add_cmd_output([
++                            "ovs-ofctl -O %s show %s" % (flow, br),
++                            "ovs-ofctl -O %s dump-groups %s" % (flow, br),
++                            "ovs-ofctl -O %s dump-group-stats %s" % (flow, br),
+                             "ovs-ofctl -O %s dump-flows %s" % (flow, br),
+                             "ovs-ofctl -O %s dump-ports-desc %s" % (flow, br)
+                         ])
+-- 
+2.13.6
+
+From c68f2daf4751e0547743b207aa8e07b4df0759ab Mon Sep 17 00:00:00 2001
+From: Pavel Moravec <pmoravec@redhat.com>
+Date: Tue, 6 Feb 2018 12:07:11 +0100
+Subject: [PATCH] [opendaylight] Enable plugin by puppet-opendaylight package
+
+Required for ODL running in a container.
+
+Resolves: #1207
+
+Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
+---
+ sos/plugins/opendaylight.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/sos/plugins/opendaylight.py b/sos/plugins/opendaylight.py
+index 33b4bdb3..44e12b01 100644
+--- a/sos/plugins/opendaylight.py
++++ b/sos/plugins/opendaylight.py
+@@ -22,7 +22,7 @@ class OpenDaylight(Plugin, RedHatPlugin):
+     plugin_name = 'opendaylight'
+     profiles = ('openstack', 'openstack_controller')
+
+-    packages = ('opendaylight',)
++    packages = ('opendaylight', 'puppet-opendaylight')
+
+     def setup(self):
+         self.add_copy_spec("/opt/opendaylight/etc/")
+-- 
+2.13.6
+
+From 86d0855b3c41c77b264b0076b128f22335897f7b Mon Sep 17 00:00:00 2001
+From: Pavel Moravec <pmoravec@redhat.com>
+Date: Wed, 20 Dec 2017 12:13:30 +0100
+Subject: [PATCH] [opendaylight] collect more logs and puppet config
+
+collect puppet-generated config, container and docker logs
+
+Resolves: #1171
+
+Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
+---
+ sos/plugins/opendaylight.py | 21 ++++++++++++++++-----
+ 1 file changed, 16 insertions(+), 5 deletions(-)
+
+diff --git a/sos/plugins/opendaylight.py b/sos/plugins/opendaylight.py
+index 33b4bdb3d..cb9e1e85a 100644
+--- a/sos/plugins/opendaylight.py
++++ b/sos/plugins/opendaylight.py
+@@ -24,15 +24,26 @@ class OpenDaylight(Plugin, RedHatPlugin):
+ 
+     packages = ('opendaylight', 'puppet-opendaylight')
+ 
++    var_puppet_gen = "/var/lib/config-data/puppet-generated/opendaylight"
++
+     def setup(self):
+-        self.add_copy_spec("/opt/opendaylight/etc/")
++        self.add_copy_spec([
++            "/opt/opendaylight/etc/",
++            self.var_puppet_gen + "/opt/opendaylight/etc/",
++        ])
+ 
+         self.limit = self.get_option("log_size")
+         if self.get_option("all_logs"):
+-            self.add_copy_spec("/opt/opendaylight/data/log/",
+-                               sizelimit=self.limit)
++            self.add_copy_spec([
++                "/opt/opendaylight/data/log/",
++                "/var/log/containers/opendaylight/",
++            ], sizelimit=self.limit)
+         else:
+-            self.add_copy_spec("/opt/opendaylight/data/log/*log",
+-                               sizelimit=self.limit)
++            self.add_copy_spec([
++                "/opt/opendaylight/data/log/*.log*",
++                "/var/log/containers/opendaylight/*.log*",
++            ], sizelimit=self.limit)
++
++        self.add_cmd_output("docker logs opendaylight_api")
+ 
+ # vim: set et ts=4 sw=4 :
diff --git a/SOURCES/sos-bz1491042-keystone-domains.patch b/SOURCES/sos-bz1491042-keystone-domains.patch
new file mode 100644
index 0000000..9ff1339
--- /dev/null
+++ b/SOURCES/sos-bz1491042-keystone-domains.patch
@@ -0,0 +1,69 @@
+From 6d5c4d23d1a8fef70ab2e6b907104241322b3a49 Mon Sep 17 00:00:00 2001
+From: Pavel Moravec <pmoravec@redhat.com>
+Date: Wed, 15 Nov 2017 17:28:42 +0100
+Subject: [PATCH] [openstack_keystone] Properly collect (non)default keystone
+ domains
+
+- call crudini instead of (wrapper and not necessarily installed)
+ openstack-config
+- collect default /etc/keystone/domains only when crudini fails
+- scrub passwords in /etc/keystone/domains as well, when collected
+
+Resolves: #1147
+
+Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
+---
+ sos/plugins/openstack_keystone.py | 21 ++++++++++-----------
+ 1 file changed, 10 insertions(+), 11 deletions(-)
+
+diff --git a/sos/plugins/openstack_keystone.py b/sos/plugins/openstack_keystone.py
+index 72c7f8e2..631e02b2 100644
+--- a/sos/plugins/openstack_keystone.py
++++ b/sos/plugins/openstack_keystone.py
+@@ -34,7 +34,6 @@ class OpenStackKeystone(Plugin):
+             "/etc/keystone/keystone.conf",
+             "/etc/keystone/logging.conf",
+             "/etc/keystone/policy.json",
+-            "/etc/keystone/domains",
+             self.var_puppet_gen + "/etc/keystone/*.conf",
+             self.var_puppet_gen + "/etc/keystone/*.json",
+             self.var_puppet_gen + "/etc/httpd/conf/",
+@@ -58,14 +57,15 @@ class OpenStackKeystone(Plugin):
+                 "/var/log/containers/httpd/keystone/*log"
+             ], sizelimit=self.limit)
+ 
+-        # collect domain config directory, if exists
+-        self.domain_config_dir_added = False
++        # collect domain config directory, if specified
++        # if not, collect default /etc/keystone/domains
+         self.domain_config_dir = self.get_cmd_output_now(
+-                "openstack-config --get /etc/keystone/keystone.conf "
++                "crudini --get /etc/keystone/keystone.conf "
+                 "identity domain_config_dir")
+-        if self.domain_config_dir and os.path.isdir(self.domain_config_dir):
+-            self.add_copy_spec(self.domain_config_dir)
+-            self.domain_config_dir_added = True
++        if self.domain_config_dir is None or \
++                not(os.path.isdir(self.domain_config_dir)):
++            self.domain_config_dir = "/etc/keystone/domains"
++        self.add_copy_spec(self.domain_config_dir)
+ 
+         if self.get_option("verify"):
+             self.add_cmd_output("rpm -V %s" % ' '.join(self.packages))
+@@ -98,10 +98,9 @@ class OpenStackKeystone(Plugin):
+             regexp, r"\1*********"
+         )
+ 
+-        # obfuscate LDAP plaintext passwords in domain config dir, if collected
+-        if self.domain_config_dir_added:
+-            self.do_path_regex_sub(self.domain_config_dir,
+-                                   r"((?m)^\s*(%s)\s*=\s*)(.*)", r"\1********")
++        # obfuscate LDAP plaintext passwords in domain config dir
++        self.do_path_regex_sub(self.domain_config_dir,
++                               r"((?m)^\s*(%s)\s*=\s*)(.*)", r"\1********")
+ 
+ 
+ class DebianKeystone(OpenStackKeystone, DebianPlugin, UbuntuPlugin):
+-- 
+2.13.6
+
diff --git a/SOURCES/sos-bz1491964-gluster-block-plugin.patch b/SOURCES/sos-bz1491964-gluster-block-plugin.patch
deleted file mode 100644
index b968fc5..0000000
--- a/SOURCES/sos-bz1491964-gluster-block-plugin.patch
+++ /dev/null
@@ -1,90 +0,0 @@
-From 07e6ce3ee1f18a09fa8eaa77fc10729c970bf5f6 Mon Sep 17 00:00:00 2001
-From: vredara <redara@redhat.com>
-Date: Thu, 29 Jun 2017 00:36:37 +0530
-Subject: [PATCH] [gluster_block] Added new plugin gluster_block (#1041)
-
-gluster_block plugin collects config/log files related to blocks
-
-Signed-off-by: venkata edara <redara@redhat.com>
-Signed-off-by: Adam Stokes <battlemidget@users.noreply.github.com>
----
- sos/plugins/gluster_block.py | 39 +++++++++++++++++++++++++++++++++++++++
- 1 file changed, 39 insertions(+)
- create mode 100644 sos/plugins/gluster_block.py
-
-diff --git a/sos/plugins/gluster_block.py b/sos/plugins/gluster_block.py
-new file mode 100644
-index 0000000..39efbd7
---- /dev/null
-+++ b/sos/plugins/gluster_block.py
-@@ -0,0 +1,39 @@
-+# 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.,
-+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-+import glob
-+from sos.plugins import Plugin, RedHatPlugin
-+
-+
-+class GlusterBlock(Plugin, RedHatPlugin):
-+    """Gluster Block"""
-+
-+    plugin_name = 'gluster_block'
-+    profiles = ('storage',)
-+    packages = ("gluster-block",)
-+    files = ("/usr/sbin/gluster-block",)
-+
-+    def setup(self):
-+
-+        # collect logs - apply log_size for any individual file
-+        # all_logs takes precedence over logsize
-+        if not self.get_option("all_logs"):
-+            limit = self.get_option("log_size")
-+        else:
-+            limit = 0
-+
-+        if limit:
-+            for f in glob.glob("/var/log/gluster-block/*.log"):
-+                self.add_copy_spec(f, limit)
-+        else:
-+            self.add_copy_spec("/var/log/gluster-block")
--- 
-2.7.5
-
-From 9c3302597630e601213561b7f6dba8def0fcc448 Mon Sep 17 00:00:00 2001
-From: vredara <redara@redhat.com>
-Date: Thu, 29 Jun 2017 00:38:01 +0530
-Subject: [PATCH] [targetcli] added one item (#1044)
-
-collecting the /sys/kernel/config/target
-
-Signed-off-by: venkata edara <redara@redhat.com>
-Signed-off-by: Adam Stokes <battlemidget@users.noreply.github.com>
----
- sos/plugins/targetcli.py | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/sos/plugins/targetcli.py b/sos/plugins/targetcli.py
-index 14be1bf..2a93379 100644
---- a/sos/plugins/targetcli.py
-+++ b/sos/plugins/targetcli.py
-@@ -31,6 +31,7 @@ class TargetCli(Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin):
-             "systemctl status target.service"
-         ])
-         self.add_journal(units="targetcli")
-+        self.add_copy_spec("/sys/kernel/config/target")
-         self.add_copy_spec("/etc/target")
- 
- # vim: set et ts=4 sw=4 :
--- 
-2.7.5
-
diff --git a/SOURCES/sos-bz1494420-postgresql-scl-path.patch b/SOURCES/sos-bz1494420-postgresql-scl-path.patch
new file mode 100644
index 0000000..0262a16
--- /dev/null
+++ b/SOURCES/sos-bz1494420-postgresql-scl-path.patch
@@ -0,0 +1,467 @@
+From 0b93d1f69ccfcc76e1896ea0e5ff7854be69be13 Mon Sep 17 00:00:00 2001
+From: Pavel Moravec <pmoravec@redhat.com>
+Date: Sat, 25 Nov 2017 12:47:35 +0100
+Subject: [PATCH] [plugins] set proper PATH for SCL commands
+
+As SCL packages are deployed under /opt/${provider}/${scl}/,
+calling a SCL command needs that prefix in any path in PATH.
+
+Consequently, distro-specific SCL default path prefix of the provider must be
+defined in sos policies.
+
+Relevant to: #1154
+
+Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
+---
+ sos/plugins/__init__.py  | 37 ++++++++++++++++++++++++++++++-------
+ sos/policies/__init__.py |  4 ++++
+ sos/policies/redhat.py   |  1 +
+ 3 files changed, 35 insertions(+), 7 deletions(-)
+
+diff --git a/sos/plugins/__init__.py b/sos/plugins/__init__.py
+index aa69b19d..2a8bc516 100644
+--- a/sos/plugins/__init__.py
++++ b/sos/plugins/__init__.py
+@@ -1066,25 +1066,48 @@ class SCLPlugin(RedHatPlugin):
+         output = sos_get_command_output("scl -l")["output"]
+         return [scl.strip() for scl in output.splitlines()]
+ 
++    def convert_cmd_scl(self, scl, cmd):
++        """wrapping command in "scl enable" call and adds proper PATH
++        """
++        # load default SCL prefix to PATH
++        prefix = self.policy().get_default_scl_prefix()
++        # read prefix from /etc/scl/prefixes/${scl} and strip trailing '\n'
++        try:
++            prefix = open('/etc/scl/prefixes/%s' % scl, 'r').read()\
++                     .rstrip('\n')
++        except Exception as e:
++            self._log_error("Failed to find prefix for SCL %s, using %s"
++                            % (scl, prefix))
++
++        # expand PATH by equivalent prefixes under the SCL tree
++        path = os.environ["PATH"]
++        for p in path.split(':'):
++            path = '%s/%s%s:%s' % (prefix, scl, p, path)
++
++        scl_cmd = "scl enable %s \"PATH=%s %s\"" % (scl, path, cmd)
++        return scl_cmd
++
+     def add_cmd_output_scl(self, scl, cmds, **kwargs):
+         """Same as add_cmd_output, except that it wraps command in
+-        "scl enable" call.
++        "scl enable" call and sets proper PATH.
+         """
+         if isinstance(cmds, six.string_types):
+             cmds = [cmds]
+         scl_cmds = []
+-        scl_cmd_tpl = "scl enable %s \"%s\""
+         for cmd in cmds:
+-            scl_cmds.append(scl_cmd_tpl % (scl, cmd))
++            scl_cmds.append(convert_cmd_scl(scl, cmd))
+         self.add_cmd_output(scl_cmds, **kwargs)
+ 
+-    # config files for Software Collections are under /etc/opt/rh/${scl} and
+-    # var files are under /var/opt/rh/${scl}. So we need to insert the paths
+-    # after the appropriate root dir.
++    # config files for Software Collections are under /etc/${prefix}/${scl} and
++    # var files are under /var/${prefix}/${scl} where the ${prefix} is distro
++    # specific path. So we need to insert the paths after the appropriate root
++    # dir.
+     def convert_copyspec_scl(self, scl, copyspec):
++        scl_prefix = self.policy().get_default_scl_prefix()
+         for rootdir in ['etc', 'var']:
+             p = re.compile('^/%s/' % rootdir)
+-            copyspec = p.sub('/%s/opt/rh/%s/' % (rootdir, scl), copyspec)
++            copyspec = p.sub('/%s/%s/%s/' % (rootdir, scl_prefix, scl),
++                             copyspec)
+         return copyspec
+ 
+     def add_copy_spec_scl(self, scl, copyspecs):
+diff --git a/sos/policies/__init__.py b/sos/policies/__init__.py
+index dffd801c..dc043105 100644
+--- a/sos/policies/__init__.py
++++ b/sos/policies/__init__.py
+@@ -194,6 +194,7 @@ No changes will be made to system configuration.
+     vendor_url = "http://www.example.com/"
+     vendor_text = ""
+     PATH = ""
++    default_scl_prefix = ""
+ 
+     _in_container = False
+     _host_sysroot = '/'
+@@ -271,6 +272,9 @@ No changes will be made to system configuration.
+             return tempfile.gettempdir()
+         return opt_tmp_dir
+ 
++    def get_default_scl_prefix(self):
++        return self.default_scl_prefix
++
+     def match_plugin(self, plugin_classes):
+         if len(plugin_classes) > 1:
+             for p in plugin_classes:
+diff --git a/sos/policies/redhat.py b/sos/policies/redhat.py
+index c7449439..2dfe0589 100644
+--- a/sos/policies/redhat.py
++++ b/sos/policies/redhat.py
+@@ -44,6 +44,7 @@ class RedHatPolicy(LinuxPolicy):
+     _rpmv_filter = ["debuginfo", "-devel"]
+     _in_container = False
+     _host_sysroot = '/'
++    default_scl_prefix = '/opt/rh'
+ 
+     def __init__(self, sysroot=None):
+         super(RedHatPolicy, self).__init__(sysroot=sysroot)
+-- 
+2.13.6
+
+From 419ebe48ea408b6596ff4d7d9837079dc3057fcf Mon Sep 17 00:00:00 2001
+From: Pavel Moravec <pmoravec@redhat.com>
+Date: Sat, 25 Nov 2017 12:58:16 +0100
+Subject: [PATCH] [postgresql] Call SCL pg_dump with proper path
+
+Also stop storing pg_dump in an auxiliary tempdir but under regular
+sos_commands/postgresql directory.
+
+Resolves: #1154
+
+Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
+---
+ sos/plugins/postgresql.py | 43 ++++++++-----------------------------------
+ 1 file changed, 8 insertions(+), 35 deletions(-)
+
+diff --git a/sos/plugins/postgresql.py b/sos/plugins/postgresql.py
+index 45c87e89..9ba696be 100644
+--- a/sos/plugins/postgresql.py
++++ b/sos/plugins/postgresql.py
+@@ -34,8 +34,6 @@ class PostgreSQL(Plugin):
+ 
+     packages = ('postgresql',)
+ 
+-    tmp_dir = None
+-
+     password_warn_text = " (password visible in process listings)"
+ 
+     option_list = [
+@@ -47,11 +45,9 @@ class PostgreSQL(Plugin):
+         ('dbport', 'database server port number', '', '5432')
+     ]
+ 
+-    def pg_dump(self, pg_dump_command="pg_dump", filename="sos_pgdump.tar"):
++    def do_pg_dump(self, scl=None, filename="pgdump.tar"):
+         if self.get_option("dbname"):
+             if self.get_option("password") or "PGPASSWORD" in os.environ:
+-                self.tmp_dir = tempfile.mkdtemp()
+-                dest_file = os.path.join(self.tmp_dir, filename)
+                 # We're only modifying this for ourself and our children so
+                 # there is no need to save and restore environment variables if
+                 # the user decided to pass the password on the command line.
+@@ -59,30 +55,21 @@ class PostgreSQL(Plugin):
+                     os.environ["PGPASSWORD"] = str(self.get_option("password"))
+ 
+                 if self.get_option("dbhost"):
+-                    cmd = "%s -U %s -h %s -p %s -w -f %s -F t %s" % (
+-                        pg_dump_command,
++                    cmd = "pg_dump -U %s -h %s -p %s -w -F t %s" % (
+                         self.get_option("username"),
+                         self.get_option("dbhost"),
+                         self.get_option("dbport"),
+-                        dest_file,
+                         self.get_option("dbname")
+                     )
+                 else:
+-                    cmd = "%s -C -U %s -w -f %s -F t %s " % (
+-                        pg_dump_command,
++                    cmd = "pg_dump -C -U %s -w -F t %s " % (
+                         self.get_option("username"),
+-                        dest_file,
+                         self.get_option("dbname")
+                     )
+ 
+-                result = self.call_ext_prog(cmd)
+-                if (result['status'] == 0):
+-                    self.add_copy_spec(dest_file)
+-                else:
+-                    self._log_info(
+-                        "Unable to execute pg_dump. Error(%s)" %
+-                        (result['output'])
+-                    )
++                if scl is not None:
++                    cmd = self.convert_cmd_scl(scl, cmd)
++                self.add_cmd_output(cmd, suggest_filename=filename)
+             else:  # no password in env or options
+                 self.soslog.warning(
+                     "password must be supplied to dump a database."
+@@ -92,18 +79,7 @@ class PostgreSQL(Plugin):
+                 )
+ 
+     def setup(self):
+-        self.pg_dump()
+-
+-    def postproc(self):
+-        import shutil
+-        if self.tmp_dir:
+-            try:
+-                shutil.rmtree(self.tmp_dir)
+-            except shutil.Error:
+-                self.soslog.exception(
+-                    "Unable to remove %s." % (self.tmp_dir)
+-                )
+-                self.add_alert("ERROR: Unable to remove %s." % (self.tmp_dir))
++        self.do_pg_dump()
+ 
+ 
+ class RedHatPostgreSQL(PostgreSQL, SCLPlugin):
+@@ -140,10 +116,7 @@ class RedHatPostgreSQL(PostgreSQL, SCLPlugin):
+         )
+ 
+         if scl in self.scls_matched:
+-            self.pg_dump(
+-                pg_dump_command="scl enable rh-postgresql95 -- pg_dump",
+-                filename="sos_scl_pgdump.tar"
+-            )
++            self.do_pg_dump(scl=scl, filename="pgdump-scl-%s.tar" % scl)
+ 
+ 
+ class DebianPostgreSQL(PostgreSQL, DebianPlugin, UbuntuPlugin):
+-- 
+2.13.6
+
+From 3f0fa8ef20bcc8ec2fb1ff54815141813d07b033 Mon Sep 17 00:00:00 2001
+From: Pavel Moravec <pmoravec@redhat.com>
+Date: Wed, 20 Dec 2017 11:47:33 +0100
+Subject: [PATCH] [plugins] allow add_cmd_output to collect binary output
+
+If a command output is a true binary data, allow add_cmd_output to
+collect the raw content and dont try to decode it as UTF-8.
+
+Resolves: #1169
+
+Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
+---
+ sos/archive.py            | 11 ++++++++++
+ sos/plugins/__init__.py   | 51 +++++++++++++++++++++++++++++++----------------
+ sos/plugins/postgresql.py |  4 +++-
+ sos/utilities.py          |  5 +++--
+ 4 files changed, 51 insertions(+), 20 deletions(-)
+
+diff --git a/sos/archive.py b/sos/archive.py
+index 607312a71..80e27b846 100644
+--- a/sos/archive.py
++++ b/sos/archive.py
+@@ -85,6 +85,9 @@ def add_file(self, src, dest=None):
+     def add_string(self, content, dest):
+         raise NotImplementedError
+ 
++    def add_binary(self, content, dest):
++        raise NotImplementedError
++
+     def add_link(self, source, link_name):
+         raise NotImplementedError
+ 
+@@ -215,6 +218,14 @@ def add_string(self, content, dest):
+         self.log_debug("added string at '%s' to FileCacheArchive '%s'"
+                        % (src, self._archive_root))
+ 
++    def add_binary(self, content, dest):
++        dest = self.dest_path(dest)
++        self._check_path(dest)
++        f = codecs.open(dest, 'wb', encoding=None)
++        f.write(content)
++        self.log_debug("added binary content at '%s' to FileCacheArchive '%s'"
++                       % (dest, self._archive_root))
++
+     def add_link(self, source, link_name):
+         dest = self.dest_path(link_name)
+         self._check_path(dest)
+diff --git a/sos/plugins/__init__.py b/sos/plugins/__init__.py
+index 2a8bc516e..0eccd40a1 100644
+--- a/sos/plugins/__init__.py
++++ b/sos/plugins/__init__.py
+@@ -222,6 +222,11 @@ def do_cmd_private_sub(self, cmd):
+             for called in self.executed_commands:
+                 if called['file'] is None:
+                     continue
++                if called['binary'] == 'yes':
++                    self._log_warn(("Command output '%s' collected as " +
++                                    "binary, output isn't scrubbed despite " +
++                                    "asked for") % called['exe'])
++                    continue
+                 if fnmatch.fnmatch(called['exe'], globstr):
+                     path = os.path.join(self.commons['cmddir'], called['file'])
+                     readable = self.archive.open_file(path)
+@@ -260,6 +265,11 @@ def do_cmd_output_sub(self, cmd, regexp, subst):
+                 # was anything collected?
+                 if called['file'] is None:
+                     continue
++                if called['binary'] == 'yes':
++                    self._log_warn(("Command output '%s' collected as " +
++                                    "binary, output isn't scrubbed despite " +
++                                    "asked for") % called['exe'])
++                    continue
+                 if fnmatch.fnmatch(called['exe'], globstr):
+                     path = os.path.join(self.commons['cmddir'], called['file'])
+                     self._log_debug("applying substitution to '%s'" % path)
+@@ -587,7 +597,8 @@ def getmtime(path):
+                 self.archive.add_link(link_path, _file)
+ 
+     def get_command_output(self, prog, timeout=300, stderr=True,
+-                           chroot=True, runat=None, env=None):
++                           chroot=True, runat=None, env=None,
++                           binary=False):
+         if chroot or self.commons['cmdlineopts'].chroot == 'always':
+             root = self.sysroot
+         else:
+@@ -595,7 +606,7 @@ def get_command_output(self, prog, timeout=300, stderr=True,
+ 
+         result = sos_get_command_output(prog, timeout=timeout, stderr=stderr,
+                                         chroot=root, chdir=runat,
+-                                        env=env)
++                                        env=env, binary=binary)
+ 
+         if result['status'] == 124:
+             self._log_warn("command '%s' timed out after %ds"
+@@ -611,7 +622,8 @@ def get_command_output(self, prog, timeout=300, stderr=True,
+                                    % (prog.split()[0], root))
+                     return self.get_command_output(prog, timeout=timeout,
+                                                    chroot=False, runat=runat,
+-                                                   env=env)
++                                                   env=env,
++                                                   binary=binary)
+             self._log_debug("could not run '%s': command not found" % prog)
+         return result
+ 
+@@ -632,14 +644,14 @@ def check_ext_prog(self, prog):
+ 
+     def _add_cmd_output(self, cmd, suggest_filename=None,
+                         root_symlink=None, timeout=300, stderr=True,
+-                        chroot=True, runat=None, env=None):
++                        chroot=True, runat=None, env=None, binary=False):
+         """Internal helper to add a single command to the collection list."""
+         cmdt = (
+             cmd, suggest_filename,
+             root_symlink, timeout, stderr,
+-            chroot, runat, env
++            chroot, runat, env, binary
+         )
+-        _tuplefmt = "('%s', '%s', '%s', %s, '%s', '%s', '%s', '%s')"
++        _tuplefmt = "('%s', '%s', '%s', %s, '%s', '%s', '%s', '%s', '%s')"
+         _logstr = "packed command tuple: " + _tuplefmt
+         self._log_debug(_logstr % cmdt)
+         self.collect_cmds.append(cmdt)
+@@ -647,7 +659,7 @@ def _add_cmd_output(self, cmd, suggest_filename=None,
+ 
+     def add_cmd_output(self, cmds, suggest_filename=None,
+                        root_symlink=None, timeout=300, stderr=True,
+-                       chroot=True, runat=None, env=None):
++                       chroot=True, runat=None, env=None, binary=False):
+         """Run a program or a list of programs and collect the output"""
+         if isinstance(cmds, six.string_types):
+             cmds = [cmds]
+@@ -656,7 +668,7 @@ def add_cmd_output(self, cmds, suggest_filename=None,
+         for cmd in cmds:
+             self._add_cmd_output(cmd, suggest_filename,
+                                  root_symlink, timeout, stderr,
+-                                 chroot, runat, env)
++                                 chroot, runat, env, binary)
+ 
+     def get_cmd_output_path(self, name=None, make=True):
+         """Return a path into which this module should store collected
+@@ -712,14 +724,15 @@ def add_string_as_file(self, content, filename):
+ 
+     def get_cmd_output_now(self, exe, suggest_filename=None,
+                            root_symlink=False, timeout=300, stderr=True,
+-                           chroot=True, runat=None, env=None):
++                           chroot=True, runat=None, env=None,
++                           binary=False):
+         """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,
+-                                         env=env)
++                                         env=env, binary=binary)
+         self._log_debug("collected output of '%s' in %s"
+                         % (exe.split()[0], time() - start))
+ 
+@@ -729,13 +742,17 @@ def get_cmd_output_now(self, exe, suggest_filename=None,
+             outfn = self._make_command_filename(exe)
+ 
+         outfn_strip = outfn[len(self.commons['cmddir'])+1:]
+-        self.archive.add_string(result['output'], outfn)
++        if binary:
++            self.archive.add_binary(result['output'], outfn)
++        else:
++            self.archive.add_string(result['output'], outfn)
+         if root_symlink:
+             self.archive.add_link(outfn, root_symlink)
+ 
+         # save info for later
+         # save in our list
+-        self.executed_commands.append({'exe': exe, 'file': outfn_strip})
++        self.executed_commands.append({'exe': exe, 'file': outfn_strip,
++                                       'binary': 'yes' if binary else 'no'})
+         self.commons['xmlreport'].add_command(cmdline=exe,
+                                               exitcode=result['status'],
+                                               f_stdout=outfn_strip)
+@@ -839,16 +856,16 @@ def _collect_cmd_output(self):
+                 timeout,
+                 stderr,
+                 chroot, runat,
+-                env
++                env, binary
+             ) = progs[0]
+-            self._log_debug("unpacked command tuple: " +
+-                            "('%s', '%s', '%s', %s, '%s', '%s', '%s', '%s')" %
+-                            progs[0])
++            self._log_debug(("unpacked command tuple: " +
++                             "('%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,
+-                                    env=env)
++                                    env=env, binary=binary)
+ 
+     def _collect_strings(self):
+         for string, file_name in self.copy_strings:
+diff --git a/sos/plugins/postgresql.py b/sos/plugins/postgresql.py
+index 9ba696be2..2e330c9b5 100644
+--- a/sos/plugins/postgresql.py
++++ b/sos/plugins/postgresql.py
+@@ -69,7 +69,9 @@ def do_pg_dump(self, scl=None, filename="pgdump.tar"):
+ 
+                 if scl is not None:
+                     cmd = self.convert_cmd_scl(scl, cmd)
+-                self.add_cmd_output(cmd, suggest_filename=filename)
++                self.add_cmd_output(cmd, suggest_filename=filename,
++                                    binary=True)
++
+             else:  # no password in env or options
+                 self.soslog.warning(
+                     "password must be supplied to dump a database."
+diff --git a/sos/utilities.py b/sos/utilities.py
+index 55bb1dc96..b5aa571b7 100644
+--- a/sos/utilities.py
++++ b/sos/utilities.py
+@@ -110,7 +110,8 @@ def is_executable(command):
+ 
+ 
+ def sos_get_command_output(command, timeout=300, stderr=False,
+-                           chroot=None, chdir=None, env=None):
++                           chroot=None, chdir=None, env=None,
++                           binary=False):
+     """Execute a command and return a dictionary of status and output,
+     optionally changing root or current working directory before
+     executing command.
+@@ -164,7 +165,7 @@ def _child_prep_fn():
+ 
+     return {
+         'status': p.returncode,
+-        'output': stdout.decode('utf-8', 'ignore')
++        'output': stdout if binary else stdout.decode('utf-8', 'ignore')
+     }
+ 
+ 
diff --git a/SOURCES/sos-bz1506908-openstack-containerized.patch b/SOURCES/sos-bz1506908-openstack-containerized.patch
new file mode 100644
index 0000000..167e435
--- /dev/null
+++ b/SOURCES/sos-bz1506908-openstack-containerized.patch
@@ -0,0 +1,503 @@
+From e63c17d902f99d96cbd4cb2a06d9cbbf8a4d4c18 Mon Sep 17 00:00:00 2001
+From: Martin Schuppert <mschuppert@redhat.com>
+Date: Tue, 7 Nov 2017 18:07:47 +0100
+Subject: [PATCH] [openstack_nova] added missing nova container config
+
+Tripleo Pike opinionated config+log paths to be collected
+for services, when running in containers.
+
+The nova configuration for the nova and placement container
+was included, but the nova configuration libvirt container
+was missing. Also the httpd configs for the nova contaier
+were added.
+
+This is a change to #1130
+
+Signed-off-by: Martin Schuppert mschuppe@redhat.com
+---
+ sos/plugins/openstack_nova.py | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/sos/plugins/openstack_nova.py b/sos/plugins/openstack_nova.py
+index 1fbfa76a..cdd29760 100644
+--- a/sos/plugins/openstack_nova.py
++++ b/sos/plugins/openstack_nova.py
+@@ -87,7 +87,10 @@ class OpenStackNova(Plugin):
+             "/etc/nova/",
+             self.var_puppet_gen + "/etc/nova/",
+             self.var_puppet_gen + "/etc/my.cnf.d/tripleo.cnf",
+-            self.var_puppet_gen + "_placement/var/spool/cron/nova",
++            self.var_puppet_gen + "/var/spool/cron/nova",
++            self.var_puppet_gen + "/etc/httpd/conf/",
++            self.var_puppet_gen + "/etc/httpd/conf.d/",
++            self.var_puppet_gen + "/etc/httpd/conf.modules.d/*.conf",
+             self.var_puppet_gen + "_placement/etc/nova/",
+             self.var_puppet_gen + "_placement/etc/httpd/conf/",
+             self.var_puppet_gen + "_placement/etc/httpd/conf.d/",
+@@ -96,6 +99,7 @@ class OpenStackNova(Plugin):
+             self.var_puppet_gen + "/../memcached/etc/sysconfig/memcached",
+             self.var_puppet_gen + "_libvirt/etc/libvirt/",
+             self.var_puppet_gen + "_libvirt/etc/my.cnf.d/tripleo.cnf",
++            self.var_puppet_gen + "_libvirt/etc/nova/",
+             self.var_puppet_gen + "_libvirt/etc/nova/migration/"
+             "authorized_keys",
+             self.var_puppet_gen + "_libvirt/var/lib/nova/.ssh/config",
+-- 
+2.13.6
+
+From 410733862a1f5ea1f9666d1fa41a7b5d3390e3c6 Mon Sep 17 00:00:00 2001
+From: Martin Schuppert <mschuppert@redhat.com>
+Date: Wed, 8 Nov 2017 17:57:54 +0100
+Subject: [PATCH] [openstack_[glance|heat|cinder|nova]] limit command run
+
+Collect "glance-manage db_version" and similar commands from the
+four plugins only if the relevant services or containers are
+running. Otherwise the commands get stuck and timeout.
+
+This is an enhancement to #1124 to check for containers + do the
+same for nova + cinder.
+
+Signed-off-by: Martin Schuppert mschuppe@redhat.com
+
+Edited to remove use of shell syntax.
+
+Fixes: #1139
+
+Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
+---
+ sos/plugins/openstack_cinder.py | 30 ++++++++++---
+ sos/plugins/openstack_glance.py | 33 +++++++++++----
+ sos/plugins/openstack_heat.py   | 23 ++++++++--
+ sos/plugins/openstack_nova.py   | 94 +++++++++++++++++++++++++++--------------
+ 4 files changed, 129 insertions(+), 51 deletions(-)
+
+diff --git a/sos/plugins/openstack_cinder.py b/sos/plugins/openstack_cinder.py
+index abfd267b..a023105c 100644
+--- a/sos/plugins/openstack_cinder.py
++++ b/sos/plugins/openstack_cinder.py
+@@ -27,16 +27,34 @@ class OpenStackCinder(Plugin):
+     plugin_name = "openstack_cinder"
+     profiles = ('openstack', 'openstack_controller')
+ 
+-    option_list = [("db", "gathers openstack cinder db version", "slow",
+-                    False)]
+-
+     var_puppet_gen = "/var/lib/config-data/puppet-generated/cinder"
+ 
+     def setup(self):
+-        if self.get_option("db"):
++
++        # collect commands output only if the openstack-cinder-api service
++        # is running
++        service_status = self.get_command_output(
++            "systemctl status openstack-cinder-api.service"
++        )
++
++        container_status = self.get_command_output("docker ps")
++        in_container = False
++        if container_status['status'] == 0:
++            for line in container_status['output'].splitlines():
++                if line.endswith("cinder_api"):
++                    in_container = True
++
++        if (service_status['status'] == 0) or in_container:
++            cinder_config = ""
++            # if containerized we need to pass the config to the cont.
++            if in_container:
++                cinder_config = "--config-dir " + self.var_puppet_gen + \
++                                "/etc/cinder/"
++
+             self.add_cmd_output(
+-                "cinder-manage db version",
+-                suggest_filename="cinder_db_version")
++                "cinder-manage " + cinder_config + " db version",
++                suggest_filename="cinder_db_version"
++            )
+ 
+         self.add_copy_spec([
+             "/etc/cinder/",
+diff --git a/sos/plugins/openstack_glance.py b/sos/plugins/openstack_glance.py
+index fdd789a8..4cdc6dc6 100644
+--- a/sos/plugins/openstack_glance.py
++++ b/sos/plugins/openstack_glance.py
+@@ -54,22 +54,37 @@ class OpenStackGlance(Plugin):
+         if self.get_option("verify"):
+             self.add_cmd_output("rpm -V %s" % ' '.join(self.packages))
+ 
+-        vars_all = [p in os.environ for p in [
+-                    'OS_USERNAME', 'OS_PASSWORD']]
+-
+-        vars_any = [p in os.environ for p in [
+-                    'OS_TENANT_NAME', 'OS_PROJECT_NAME']]
+-
+         # collect commands output only if the openstack-glance-api service
+         # is running
+         service_status = self.get_command_output(
+-                "systemctl status openstack-glance-api.service"
++            "systemctl status openstack-glance-api.service"
+         )
+-        if service_status['status'] == 0:
++
++        container_status = self.get_command_output("docker ps")
++        in_container = False
++        if container_status['status'] == 0:
++            for line in container_status['output'].splitlines():
++                if line.endswith("cinder_api"):
++                    in_container = True
++
++        if (service_status['status'] == 0) or in_container:
++            glance_config = ""
++            # if containerized we need to pass the config to the cont.
++            if in_container:
++                glance_config = "--config-dir " + self.var_puppet_gen + \
++                                "/etc/glance/"
++
+             self.add_cmd_output(
+-                "glance-manage db_version",
++                "glance-manage " + glance_config + " db_version",
+                 suggest_filename="glance_db_version"
+             )
++
++            vars_all = [p in os.environ for p in [
++                        'OS_USERNAME', 'OS_PASSWORD']]
++
++            vars_any = [p in os.environ for p in [
++                        'OS_TENANT_NAME', 'OS_PROJECT_NAME']]
++
+             if not (all(vars_all) and any(vars_any)):
+                 self.soslog.warning("Not all environment variables set. "
+                                     "Source the environment file for the user "
+diff --git a/sos/plugins/openstack_heat.py b/sos/plugins/openstack_heat.py
+index de34ed15..e3395fab 100644
+--- a/sos/plugins/openstack_heat.py
++++ b/sos/plugins/openstack_heat.py
+@@ -32,11 +32,26 @@ class OpenStackHeat(Plugin):
+ 
+         # collect commands output only if the openstack-heat-api service
+         # is running
+-        service_status = self.get_command_output("systemctl status "
+-                                                 "openstack-heat-api.service")
+-        if service_status['status'] == 0:
++        service_status = self.get_command_output(
++            "systemctl status openstack-heat-api.service"
++        )
++
++        container_status = self.get_command_output("docker ps")
++        in_container = False
++        if container_status['status'] == 0:
++            for line in container_status['output'].splitlines():
++                if line.endswith("cinder_api"):
++                    in_container = True
++
++        if (service_status['status'] == 0) or in_container:
++            heat_config = ""
++            # if containerized we need to pass the config to the cont.
++            if in_container:
++                heat_config = "--config-dir " + self.var_puppet_gen + \
++                                "_api/etc/heat/"
++
+             self.add_cmd_output(
+-                "heat-manage db_version",
++                "heat-manage " + heat_config + " db_version",
+                 suggest_filename="heat_db_version"
+             )
+ 
+diff --git a/sos/plugins/openstack_nova.py b/sos/plugins/openstack_nova.py
+index cdd29760..e8839a2a 100644
+--- a/sos/plugins/openstack_nova.py
++++ b/sos/plugins/openstack_nova.py
+@@ -32,40 +32,70 @@ class OpenStackNova(Plugin):
+     var_puppet_gen = "/var/lib/config-data/puppet-generated/nova"
+ 
+     def setup(self):
+-        # commands we do not need to source the environment file
+-        self.add_cmd_output("nova-manage db version")
+-        self.add_cmd_output("nova-manage fixed list")
+-        self.add_cmd_output("nova-manage floating list")
+ 
+-        vars_all = [p in os.environ for p in [
+-                    'OS_USERNAME', 'OS_PASSWORD']]
+-
+-        vars_any = [p in os.environ for p in [
+-                    'OS_TENANT_NAME', 'OS_PROJECT_NAME']]
++        # collect commands output only if the openstack-nova-api service
++        # is running
++        service_status = self.get_command_output(
++            "systemctl status openstack-nova-api.service"
++        )
+ 
+-        if not (all(vars_all) and any(vars_any)):
+-            self.soslog.warning("Not all environment variables set. Source "
+-                                "the environment file for the user intended "
+-                                "to connect to the OpenStack environment.")
+-        else:
+-            self.add_cmd_output("nova service-list")
+-            self.add_cmd_output("openstack flavor list --long")
+-            self.add_cmd_output("nova network-list")
+-            self.add_cmd_output("nova list")
+-            self.add_cmd_output("nova agent-list")
+-            self.add_cmd_output("nova version-list")
+-            self.add_cmd_output("nova host-list")
+-            self.add_cmd_output("openstack quota show")
+-            self.add_cmd_output("openstack hypervisor stats show")
+-            # get details for each nova instance
+-            cmd = "openstack server list -f value"
+-            nova_instances = self.call_ext_prog(cmd)['output']
+-            for instance in nova_instances.splitlines():
+-                instance = instance.split()[0]
+-                cmd = "openstack server show %s" % (instance)
+-                self.add_cmd_output(
+-                    cmd,
+-                    suggest_filename="instance-" + instance + ".log")
++        container_status = self.get_command_output("docker ps")
++        in_container = False
++        if container_status['status'] == 0:
++            for line in container_status['output'].splitlines():
++                if line.endswith("cinder_api"):
++                    in_container = True
++
++        if (service_status['status'] == 0) or in_container:
++            nova_config = ""
++            # if containerized we need to pass the config to the cont.
++            if in_container:
++                nova_config = "--config-dir " + self.var_puppet_gen + \
++                                "/etc/nova/"
++
++            self.add_cmd_output(
++                "nova-manage " + nova_config + " db version",
++                suggest_filename="nova-manage_db_version"
++            )
++            self.add_cmd_output(
++                "nova-manage " + nova_config + " fixed list",
++                suggest_filename="nova-manage_fixed_list"
++            )
++            self.add_cmd_output(
++                "nova-manage " + nova_config + " floating list",
++                suggest_filename="nova-manage_floating_list"
++            )
++
++            vars_all = [p in os.environ for p in [
++                        'OS_USERNAME', 'OS_PASSWORD']]
++
++            vars_any = [p in os.environ for p in [
++                        'OS_TENANT_NAME', 'OS_PROJECT_NAME']]
++
++            if not (all(vars_all) and any(vars_any)):
++                self.soslog.warning("Not all environment variables set. "
++                                    "Source the environment file for the user "
++                                    "intended to connect to the OpenStack "
++                                    "environment.")
++            else:
++                self.add_cmd_output("nova service-list")
++                self.add_cmd_output("openstack flavor list --long")
++                self.add_cmd_output("nova network-list")
++                self.add_cmd_output("nova list")
++                self.add_cmd_output("nova agent-list")
++                self.add_cmd_output("nova version-list")
++                self.add_cmd_output("nova hypervisor-list")
++                self.add_cmd_output("openstack quota show")
++                self.add_cmd_output("openstack hypervisor stats show")
++                # get details for each nova instance
++                cmd = "openstack server list -f value"
++                nova_instances = self.call_ext_prog(cmd)['output']
++                for instance in nova_instances.splitlines():
++                    instance = instance.split()[0]
++                    cmd = "openstack server show %s" % (instance)
++                    self.add_cmd_output(
++                        cmd,
++                        suggest_filename="instance-" + instance + ".log")
+ 
+         self.limit = self.get_option("log_size")
+         if self.get_option("all_logs"):
+-- 
+2.13.6
+
+From 404951b99d5e2e46fe0757d27b984eb5ff94cf76 Mon Sep 17 00:00:00 2001
+From: Pavel Moravec <pmoravec@redhat.com>
+Date: Wed, 8 Nov 2017 19:30:57 +0100
+Subject: [PATCH] [etcd] fix typo in etcdctl subcmds
+
+subcmds variable set while "subcmd" referred instead.
+
+Resolves: #1141
+
+Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
+---
+ sos/plugins/etcd.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/sos/plugins/etcd.py b/sos/plugins/etcd.py
+index 4f072a4c..bd5d10d8 100644
+--- a/sos/plugins/etcd.py
++++ b/sos/plugins/etcd.py
+@@ -40,7 +40,7 @@ class etcd(Plugin, RedHatPlugin):
+            'ls --recursive',
+         ]
+ 
+-        self.add_cmd_output(['%s %s' % (self.cmd, sub) for sub in subcmd])
++        self.add_cmd_output(['%s %s' % (self.cmd, sub) for sub in subcmds])
+ 
+         urls = [
+             '/v2/stats/leader',
+-- 
+2.13.6
+
+From 2140b1611565078c4a6536782c013a525722e0da Mon Sep 17 00:00:00 2001
+From: Martin Schuppert <mschuppert@redhat.com>
+Date: Thu, 21 Dec 2017 08:00:41 +0100
+Subject: [PATCH] [openstack_glance|heat|nova] fix api container names
+
+Container names of glance, heat and nova api was not correct
+when verify if a the container is running.
+
+Signed-off-by: Martin Schuppert <mschuppe@redhat.com>
+---
+ sos/plugins/openstack_glance.py | 2 +-
+ sos/plugins/openstack_heat.py   | 2 +-
+ sos/plugins/openstack_nova.py   | 2 +-
+ 3 files changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/sos/plugins/openstack_glance.py b/sos/plugins/openstack_glance.py
+index 4cdc6dc62..d7588abe0 100644
+--- a/sos/plugins/openstack_glance.py
++++ b/sos/plugins/openstack_glance.py
+@@ -64,7 +64,7 @@ def setup(self):
+         in_container = False
+         if container_status['status'] == 0:
+             for line in container_status['output'].splitlines():
+-                if line.endswith("cinder_api"):
++                if line.endswith("glance_api"):
+                     in_container = True
+ 
+         if (service_status['status'] == 0) or in_container:
+diff --git a/sos/plugins/openstack_heat.py b/sos/plugins/openstack_heat.py
+index e3395fabd..0cf7c8595 100644
+--- a/sos/plugins/openstack_heat.py
++++ b/sos/plugins/openstack_heat.py
+@@ -40,7 +40,7 @@ def setup(self):
+         in_container = False
+         if container_status['status'] == 0:
+             for line in container_status['output'].splitlines():
+-                if line.endswith("cinder_api"):
++                if line.endswith("heat_api"):
+                     in_container = True
+ 
+         if (service_status['status'] == 0) or in_container:
+diff --git a/sos/plugins/openstack_nova.py b/sos/plugins/openstack_nova.py
+index e8839a2a6..951e69cba 100644
+--- a/sos/plugins/openstack_nova.py
++++ b/sos/plugins/openstack_nova.py
+@@ -43,7 +43,7 @@ def setup(self):
+         in_container = False
+         if container_status['status'] == 0:
+             for line in container_status['output'].splitlines():
+-                if line.endswith("cinder_api"):
++                if line.endswith("nova_api"):
+                     in_container = True
+ 
+         if (service_status['status'] == 0) or in_container:
+From 6f5295056cbea8220407fe42159b15ea1a135e46 Mon Sep 17 00:00:00 2001
+From: Martin Schuppert <mschuppert@redhat.com>
+Date: Wed, 10 Jan 2018 20:50:46 +0100
+Subject: [PATCH] [plugins] add method to check process list for a named
+ process
+
+In openstack plugins we collect data depending if processes with
+different names are there. This introduces a check_process_by_name
+Plugin method to have a consistent way to do this from any plugin
+where needed.
+
+Signed-off-by: Martin Schuppert mschuppe@redhat.com
+---
+ sos/plugins/__init__.py | 16 ++++++++++++++++
+ 1 file changed, 16 insertions(+)
+
+diff --git a/sos/plugins/__init__.py b/sos/plugins/__init__.py
+index 2a8bc516e..3f3a19558 100644
+--- a/sos/plugins/__init__.py
++++ b/sos/plugins/__init__.py
+@@ -1026,6 +1026,22 @@ def report(self):
+         else:
+             return html
+ 
++    def check_process_by_name(self, process):
++        """Checks if a named process is found in /proc/[0-9]*/cmdline.
++        Returns either True or False."""
++        status = False
++        cmd_line_glob = "/proc/[0-9]*/cmdline"
++        try:
++            cmd_line_paths = glob.glob(cmd_line_glob)
++            for path in cmd_line_paths:
++                f = open(path, 'r')
++                cmd_line = f.read().strip()
++                if process in cmd_line:
++                    status = True
++        except IOError as e:
++            return False
++        return status
++
+ 
+ class RedHatPlugin(object):
+     """Tagging class for Red Hat's Linux distributions"""
+From 12f1c4f851c771a0173f6e00657e1a983af8451c Mon Sep 17 00:00:00 2001
+From: Martin Schuppert <mschuppert@redhat.com>
+Date: Fri, 29 Dec 2017 09:20:33 +0100
+Subject: [PATCH] [openstack_cinder] check for api service running via
+ cinder_wsgi
+
+With OSP11 cinder api changed to run via https wsgi. To check for
+running cinder-manage command we also need to take this situation.
+The change checks for cinder_wsgi process.
+
+Signed-off-by: Martin Schuppert <mschuppert@redhat.com>
+---
+ sos/plugins/__init__.py         | 11 +++++++++++
+ sos/plugins/openstack_cinder.py | 27 +++++++++++++++------------
+ 2 files changed, 26 insertions(+), 12 deletions(-)
+
+diff --git a/sos/plugins/openstack_cinder.py b/sos/plugins/openstack_cinder.py
+index a023105c8..cc9181efa 100644
+--- a/sos/plugins/openstack_cinder.py
++++ b/sos/plugins/openstack_cinder.py
+@@ -31,26 +31,29 @@ class OpenStackCinder(Plugin):
+ 
+     def setup(self):
+ 
+-        # collect commands output only if the openstack-cinder-api service
+-        # is running
+-        service_status = self.get_command_output(
+-            "systemctl status openstack-cinder-api.service"
+-        )
++        # check if either standalone (cinder-api) or httpd wsgi (cinder_wsgi)
++        # is up and running
++        cinder_process = ["cinder_wsgi", "cinder-api"]
++        in_ps = False
++        for process in cinder_process:
++            in_ps = self.check_process_by_name(process)
++            if in_ps:
++                break
+ 
+         container_status = self.get_command_output("docker ps")
+         in_container = False
++        cinder_config = ""
+         if container_status['status'] == 0:
+             for line in container_status['output'].splitlines():
+                 if line.endswith("cinder_api"):
+                     in_container = True
++                    # if containerized we need to pass the config to the cont.
++                    cinder_config = "--config-dir " + self.var_puppet_gen + \
++                                    "/etc/cinder/"
++                    break
+ 
+-        if (service_status['status'] == 0) or in_container:
+-            cinder_config = ""
+-            # if containerized we need to pass the config to the cont.
+-            if in_container:
+-                cinder_config = "--config-dir " + self.var_puppet_gen + \
+-                                "/etc/cinder/"
+-
++        # collect commands output if the standalone, wsgi or container is up
++        if in_ps or in_container:
+             self.add_cmd_output(
+                 "cinder-manage " + cinder_config + " db version",
+                 suggest_filename="cinder_db_version"
diff --git a/SOURCES/sos-bz1509079-vdo.patch b/SOURCES/sos-bz1509079-vdo.patch
new file mode 100644
index 0000000..3aafd7a
--- /dev/null
+++ b/SOURCES/sos-bz1509079-vdo.patch
@@ -0,0 +1,33 @@
+From 2f51f6b7478e69d8f9e8e3a31bddccf6af88c720 Mon Sep 17 00:00:00 2001
+From: Pavel Moravec <pmoravec@redhat.com>
+Date: Tue, 7 Nov 2017 14:28:33 +0100
+Subject: [PATCH] [vdo] collect proper sys paths
+
+VDO plugin shall collect /sys/kvdo and /sys/uds
+instead of original /sys/vdo and /sys/albireo
+
+Resolves: #1134
+
+Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
+---
+ sos/plugins/vdo.py | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/sos/plugins/vdo.py b/sos/plugins/vdo.py
+index e6eff4ad..bdf79886 100644
+--- a/sos/plugins/vdo.py
++++ b/sos/plugins/vdo.py
+@@ -27,8 +27,8 @@ class Vdo(Plugin, RedHatPlugin):
+     profiles = ('storage',)
+     packages = ('vdo',)
+     files = (
+-        '/sys/vdo',
+-        '/sys/albireo',
++        '/sys/kvdo',
++        '/sys/uds',
+         '/etc/vdoconf.yml',
+         '/etc/vdoconf.xml'
+     )
+-- 
+2.13.6
+
diff --git a/SOURCES/sos-bz1511087-openstack-containerized-further-updates.patch b/SOURCES/sos-bz1511087-openstack-containerized-further-updates.patch
deleted file mode 100644
index e500171..0000000
--- a/SOURCES/sos-bz1511087-openstack-containerized-further-updates.patch
+++ /dev/null
@@ -1,936 +0,0 @@
-From 4d1e5ffd2e6e4e9b4d4509af212c11a9ead58740 Mon Sep 17 00:00:00 2001
-From: Pavel Moravec <pmoravec@redhat.com>
-Date: Thu, 12 Oct 2017 14:22:55 +0200
-Subject: [PATCH] [openstack_[glance|heat]] run commands only if service is
- running
-
-Collect "glance-manage db_version" and similar commands from the
-two plugins only if the relevant services are running. Otherwise
-the commands get stuck and timeout.
-
-Resolves: #1124
-
-Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
----
- sos/plugins/openstack_glance.py | 29 +++++++++++++++++------------
- sos/plugins/openstack_heat.py   | 40 +++++++++++++++++++++++-----------------
- 2 files changed, 40 insertions(+), 29 deletions(-)
-
-diff --git a/sos/plugins/openstack_glance.py b/sos/plugins/openstack_glance.py
-index 0a2bdc1bb..642b4593a 100644
---- a/sos/plugins/openstack_glance.py
-+++ b/sos/plugins/openstack_glance.py
-@@ -31,12 +31,6 @@ class OpenStackGlance(Plugin):
-     var_puppet_gen = "/var/lib/config-data/puppet-generated/glance_api"
- 
-     def setup(self):
--        # Glance
--        self.add_cmd_output(
--            "glance-manage db_version",
--            suggest_filename="glance_db_version"
--        )
--
-         self.limit = self.get_option("log_size")
-         if self.get_option("all_logs"):
-             self.add_copy_spec([
-@@ -64,12 +58,23 @@ def setup(self):
-         vars_any = [p in os.environ for p in [
-                     'OS_TENANT_NAME', 'OS_PROJECT_NAME']]
- 
--        if not (all(vars_all) and any(vars_any)):
--            self.soslog.warning("Not all environment variables set. Source "
--                                "the environment file for the user intended "
--                                "to connect to the OpenStack environment.")
--        else:
--            self.add_cmd_output("openstack image list --long")
-+        # collect commands output only if the openstack-glance-api service
-+        # is running
-+        service_status = self.get_command_output(
-+                "systemctl status openstack-glance-api.service"
-+        )
-+        if service_status['status'] == 0:
-+            self.add_cmd_output(
-+                "glance-manage db_version",
-+                suggest_filename="glance_db_version"
-+            )
-+            if not (all(vars_all) and any(vars_any)):
-+                self.soslog.warning("Not all environment variables set. "
-+                                    "Source the environment file for the user "
-+                                    "intended to connect to the OpenStack "
-+                                    "environment.")
-+            else:
-+                self.add_cmd_output("openstack image list --long")
- 
-     def postproc(self):
-         protect_keys = [
-diff --git a/sos/plugins/openstack_heat.py b/sos/plugins/openstack_heat.py
-index a73916b25..66a7f4109 100644
---- a/sos/plugins/openstack_heat.py
-+++ b/sos/plugins/openstack_heat.py
-@@ -29,24 +29,30 @@ class OpenStackHeat(Plugin):
-     var_puppet_gen = "/var/lib/config-data/puppet-generated/heat"
- 
-     def setup(self):
--        # Heat
--        self.add_cmd_output(
--            "heat-manage db_version",
--            suggest_filename="heat_db_version"
--        )
--
--        vars_all = [p in os.environ for p in [
--                    'OS_USERNAME', 'OS_PASSWORD']]
- 
--        vars_any = [p in os.environ for p in [
--                    'OS_TENANT_NAME', 'OS_PROJECT_NAME']]
--
--        if not (all(vars_all) and any(vars_any)):
--            self.soslog.warning("Not all environment variables set. Source "
--                                "the environment file for the user intended "
--                                "to connect to the OpenStack environment.")
--        else:
--            self.add_cmd_output("openstack stack list")
-+        # collect commands output only if the openstack-heat-api service
-+        # is running
-+        service_status = self.get_command_output("systemctl status "
-+                                                 "openstack-heat-api.service")
-+        if service_status['status'] == 0:
-+            self.add_cmd_output(
-+                "heat-manage db_version",
-+                suggest_filename="heat_db_version"
-+            )
-+
-+            vars_all = [p in os.environ for p in [
-+                        'OS_USERNAME', 'OS_PASSWORD']]
-+
-+            vars_any = [p in os.environ for p in [
-+                        'OS_TENANT_NAME', 'OS_PROJECT_NAME']]
-+
-+            if not (all(vars_all) and any(vars_any)):
-+                self.soslog.warning("Not all environment variables set. "
-+                                    "Source the environment file for the user "
-+                                    "intended to connect to the OpenStack "
-+                                    "environment.")
-+            else:
-+                self.add_cmd_output("openstack stack list")
- 
-         self.limit = self.get_option("log_size")
-         if self.get_option("all_logs"):
-From d5ac6cd768acbd6a8d2d1de2ec26f127272089f2 Mon Sep 17 00:00:00 2001
-From: Martin Schuppert <mschuppert@redhat.com>
-Date: Wed, 18 Oct 2017 15:50:23 +0200
-Subject: [PATCH] [openstack_*, logrotate] Tripleo additional directories
-
-Tripleo Pike opinionated config+log paths to be collected
-for services, when running in containers.
-
-This is an addition to #1054 where a couple of things got missed
-
-Fixes: #1130
-
-Signed-off-by: Martin Schuppert <mschuppe@redhat.com>
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/plugins/gnocchi.py            |  6 ++++--
- sos/plugins/logrotate.py          |  6 +++++-
- sos/plugins/openstack_cinder.py   | 34 ++++++++++++++++++++++++-------
- sos/plugins/openstack_glance.py   |  6 ++++--
- sos/plugins/openstack_heat.py     |  8 ++++++--
- sos/plugins/openstack_horizon.py  |  6 ++++--
- sos/plugins/openstack_ironic.py   | 43 +++++++++++++++++++++++++++++++--------
- sos/plugins/openstack_keystone.py |  6 ++++--
- sos/plugins/openstack_manila.py   | 12 ++++++++---
- sos/plugins/openstack_neutron.py  | 10 ++++++---
- sos/plugins/openstack_nova.py     | 19 ++++++++++++++---
- sos/plugins/openstack_swift.py    |  6 ++++--
- 13 files changed, 160 insertions(+), 43 deletions(-)
-
-diff --git a/sos/plugins/gnocchi.py b/sos/plugins/gnocchi.py
-index c7a97097c..d2eda47ea 100644
---- a/sos/plugins/gnocchi.py
-+++ b/sos/plugins/gnocchi.py
-@@ -49,13 +49,15 @@ def setup(self):
-         if self.get_option("all_logs"):
-             self.add_copy_spec([
-                 "/var/log/gnocchi/*",
--                "/var/log/containers/gnocchi/*"],
-+                "/var/log/containers/gnocchi/*",
-+                "/var/log/containers/httpd/gnocchi-api/*"],
-                 sizelimit=self.limit
-             )
-         else:
-             self.add_copy_spec([
-                 "/var/log/gnocchi/*.log",
--                "/var/log/containers/gnocchi/*.log"],
-+                "/var/log/containers/gnocchi/*.log",
-+                "/var/log/containers/httpd/gnocchi-api/*log"],
-                 sizelimit=self.limit
-             )
- 
-diff --git a/sos/plugins/logrotate.py b/sos/plugins/logrotate.py
-index c811192f0..c12cf1bb4 100644
---- a/sos/plugins/logrotate.py
-+++ b/sos/plugins/logrotate.py
-@@ -22,12 +22,16 @@ class LogRotate(Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin):
-     plugin_name = 'logrotate'
-     profiles = ('system',)
- 
-+    var_puppet_gen = "/var/lib/config-data/puppet-generated/crond"
-+
-     def setup(self):
-         self.add_cmd_output("logrotate --debug /etc/logrotate.conf",
-                             suggest_filename="logrotate_debug")
-         self.add_copy_spec([
-             "/etc/logrotate*",
--            "/var/lib/logrotate.status"
-+            "/var/lib/logrotate.status",
-+            self.var_puppet_gen + "/etc/logrotate-crond.conf",
-+            self.var_puppet_gen + "/var/spool/cron/root"
-         ])
- 
- # vim: set et ts=4 sw=4 :
-diff --git a/sos/plugins/openstack_cinder.py b/sos/plugins/openstack_cinder.py
-index ffec62b53..abfd267bb 100644
---- a/sos/plugins/openstack_cinder.py
-+++ b/sos/plugins/openstack_cinder.py
-@@ -30,23 +30,39 @@ class OpenStackCinder(Plugin):
-     option_list = [("db", "gathers openstack cinder db version", "slow",
-                     False)]
- 
-+    var_puppet_gen = "/var/lib/config-data/puppet-generated/cinder"
-+
-     def setup(self):
-         if self.get_option("db"):
-             self.add_cmd_output(
-                 "cinder-manage db version",
-                 suggest_filename="cinder_db_version")
- 
--        self.add_copy_spec(["/etc/cinder/"])
-+        self.add_copy_spec([
-+            "/etc/cinder/",
-+            self.var_puppet_gen + "/etc/cinder/",
-+            self.var_puppet_gen + "/etc/httpd/conf/",
-+            self.var_puppet_gen + "/etc/httpd/conf.d/",
-+            self.var_puppet_gen + "/etc/httpd/conf.modules.d/*.conf",
-+            self.var_puppet_gen + "/etc/my.cnf.d/tripleo.cnf",
-+            self.var_puppet_gen + "/etc/sysconfig/",
-+        ])
- 
-         self.limit = self.get_option("log_size")
-         if self.get_option("all_logs"):
--            self.add_copy_spec(["/var/log/cinder/",
--                                "/var/log/containers/cinder/"],
--                               sizelimit=self.limit)
-+            self.add_copy_spec([
-+                "/var/log/cinder/",
-+                "/var/log/httpd/cinder*",
-+                "/var/log/containers/cinder/",
-+                "/var/log/containers/httpd/cinder-api/"
-+            ], sizelimit=self.limit)
-         else:
--            self.add_copy_spec(["/var/log/cinder/*.log",
--                                "/var/log/containers/cinder/*.log"],
--                               sizelimit=self.limit)
-+            self.add_copy_spec([
-+                "/var/log/cinder/*.log",
-+                "/var/log/httpd/cinder*.log",
-+                "/var/log/containers/cinder/*.log",
-+                "/var/log/containers/httpd/cinder-api/*log"
-+            ], sizelimit=self.limit)
- 
-         if self.get_option("verify"):
-             self.add_cmd_output("rpm -V %s" % ' '.join(self.packages))
-@@ -67,6 +83,10 @@ def postproc(self):
- 
-         regexp = r"((?m)^\s*(%s)\s*=\s*)(.*)" % "|".join(protect_keys)
-         self.do_path_regex_sub("/etc/cinder/*", regexp, r"\1*********")
-+        self.do_path_regex_sub(
-+            self.var_puppet_gen + "/etc/cinder/*",
-+            regexp, r"\1*********"
-+        )
- 
- 
- class DebianCinder(OpenStackCinder, DebianPlugin, UbuntuPlugin):
-diff --git a/sos/plugins/openstack_glance.py b/sos/plugins/openstack_glance.py
-index 642b4593a..fdd789a81 100644
---- a/sos/plugins/openstack_glance.py
-+++ b/sos/plugins/openstack_glance.py
-@@ -35,12 +35,14 @@ def setup(self):
-         if self.get_option("all_logs"):
-             self.add_copy_spec([
-                 "/var/log/glance/",
--                "/var/log/containers/glance/"
-+                "/var/log/containers/glance/",
-+                "/var/log/containers/httpd/glance-api/"
-             ], sizelimit=self.limit)
-         else:
-             self.add_copy_spec([
-                 "/var/log/glance/*.log",
--                "/var/log/containers/glance/*.log"
-+                "/var/log/containers/glance/*.log",
-+                "/var/log/containers/httpd/glance-api/*log"
-             ], sizelimit=self.limit)
- 
-         self.add_copy_spec([
-diff --git a/sos/plugins/openstack_heat.py b/sos/plugins/openstack_heat.py
-index 66a7f4109..de34ed155 100644
---- a/sos/plugins/openstack_heat.py
-+++ b/sos/plugins/openstack_heat.py
-@@ -58,12 +58,16 @@ def setup(self):
-         if self.get_option("all_logs"):
-             self.add_copy_spec([
-                 "/var/log/heat/",
--                "/var/log/containers/heat/"
-+                "/var/log/containers/heat/",
-+                "/var/log/containers/httpd/heat-api/",
-+                "/var/log/containers/httpd/heat-api-cfn"
-             ], sizelimit=self.limit)
-         else:
-             self.add_copy_spec([
-                 "/var/log/heat/*.log",
--                "/var/log/containers/heat/*.log"
-+                "/var/log/containers/heat/*.log",
-+                "/var/log/containers/httpd/heat-api/*log",
-+                "/var/log/containers/httpd/heat-api-cfn/*log"
-             ], sizelimit=self.limit)
- 
-         self.add_copy_spec([
-diff --git a/sos/plugins/openstack_horizon.py b/sos/plugins/openstack_horizon.py
-index a9a7fab3b..d4f457115 100644
---- a/sos/plugins/openstack_horizon.py
-+++ b/sos/plugins/openstack_horizon.py
-@@ -35,12 +35,14 @@ def setup(self):
-         if self.get_option("all_logs"):
-             self.add_copy_spec([
-                 "/var/log/horizon/",
--                "/var/log/containers/horizon/"
-+                "/var/log/containers/horizon/",
-+                "/var/log/containers/httpd/horizon/"
-             ], sizelimit=self.limit)
-         else:
-             self.add_copy_spec([
-                 "/var/log/horizon/*.log",
--                "/var/log/containers/horizon/*.log"
-+                "/var/log/containers/horizon/*.log",
-+                "/var/log/containers/httpd/horizon/*log"
-             ], sizelimit=self.limit)
- 
-         self.add_copy_spec([
-diff --git a/sos/plugins/openstack_ironic.py b/sos/plugins/openstack_ironic.py
-index 0396cc639..f4e0a97d3 100644
---- a/sos/plugins/openstack_ironic.py
-+++ b/sos/plugins/openstack_ironic.py
-@@ -25,21 +25,48 @@ class OpenStackIronic(Plugin):
-     plugin_name = "openstack_ironic"
-     profiles = ('openstack', 'openstack_undercloud')
- 
-+    var_puppet_gen = "/var/lib/config-data/puppet-generated/ironic"
-+
-     def setup(self):
--        self.conf_list = ['/etc/ironic/*']
--        self.add_copy_spec('/etc/ironic/')
-+        self.conf_list = [
-+            "/etc/ironic/*",
-+            self.var_puppet_gen + "/etc/ironic/*",
-+            self.var_puppet_gen + "_api/etc/ironic/*"
-+        ]
-+        self.add_copy_spec([
-+            "/etc/ironic/",
-+            self.var_puppet_gen + "/etc/xinetd.conf",
-+            self.var_puppet_gen + "/etc/xinetd.d/",
-+            self.var_puppet_gen + "/etc/ironic/",
-+            self.var_puppet_gen + "/etc/httpd/conf/",
-+            self.var_puppet_gen + "/etc/httpd/conf.d/",
-+            self.var_puppet_gen + "/etc/httpd/conf.modules.d/*.conf",
-+            self.var_puppet_gen + "/etc/my.cnf.d/tripleo.cnf",
-+            self.var_puppet_gen + "_api/etc/ironic/",
-+            self.var_puppet_gen + "_api/etc/httpd/conf/",
-+            self.var_puppet_gen + "_api/etc/httpd/conf.d/",
-+            self.var_puppet_gen + "_api/etc/httpd/conf.modules.d/*.conf",
-+            self.var_puppet_gen + "_api/etc/my.cnf.d/tripleo.cnf"
-+        ])
- 
-         self.limit = self.get_option("log_size")
-         if self.get_option("all_logs"):
--            self.add_copy_spec(["/var/log/ironic/",
--                                "/var/log/containers/ironic/"],
--                               sizelimit=self.limit)
-+            self.add_copy_spec([
-+                "/var/log/ironic/",
-+                "/var/log/containers/ironic/",
-+                "/var/log/containers/httpd/ironic-api/"
-+            ], sizelimit=self.limit)
-         else:
--            self.add_copy_spec(["/var/log/ironic/*.log",
--                                "/var/log/containers/ironic/*.log"],
--                               sizelimit=self.limit)
-+            self.add_copy_spec([
-+                "/var/log/ironic/*.log",
-+                "/var/log/containers/ironic/*.log",
-+                "/var/log/containers/httpd/ironic-api/*log"
-+            ], sizelimit=self.limit)
- 
-         self.add_cmd_output('ls -laRt /var/lib/ironic/')
-+        self.add_cmd_output(
-+            'ls -laRt ' + self.var_puppet_gen + '/var/lib/ironic/'
-+        )
- 
-         if self.get_option("verify"):
-             self.add_cmd_output("rpm -V %s" % ' '.join(self.packages))
-diff --git a/sos/plugins/openstack_keystone.py b/sos/plugins/openstack_keystone.py
-index d0b144323..72c7f8e2a 100644
---- a/sos/plugins/openstack_keystone.py
-+++ b/sos/plugins/openstack_keystone.py
-@@ -47,12 +47,14 @@ class OpenStackKeystone(Plugin):
-         if self.get_option("all_logs"):
-             self.add_copy_spec([
-                 "/var/log/keystone/",
--                "/var/log/containers/keystone/"
-+                "/var/log/containers/keystone/",
-+                "/var/log/containers/httpd/keystone/"
-             ], sizelimit=self.limit)
-         else:
-             self.add_copy_spec([
-                 "/var/log/keystone/*.log",
--                "/var/log/containers/keystone/*.log"
-+                "/var/log/containers/keystone/*.log",
-+                "/var/log/containers/httpd/keystone/*log"
-             ], sizelimit=self.limit)
- 
-         if self.get_option("verify"):
-diff --git a/sos/plugins/openstack_manila.py b/sos/plugins/openstack_manila.py
-index 92bca6fa8..e29859367 100644
---- a/sos/plugins/openstack_manila.py
-+++ b/sos/plugins/openstack_manila.py
-@@ -29,19 +29,25 @@ class OpenStackManila(Plugin):
-     def setup(self):
-         self.add_copy_spec([
-             "/etc/manila/",
--            self.var_puppet_gen + "/etc/manila/"
-+            self.var_puppet_gen + "/etc/manila/",
-+            self.var_puppet_gen + "/etc/my.cnf.d/tripleo.cnf",
-+            self.var_puppet_gen + "/etc/httpd/conf/",
-+            self.var_puppet_gen + "/etc/httpd/conf.d/",
-+            self.var_puppet_gen + "/etc/httpd/conf.modules.d/*.conf",
-         ])
- 
-         self.limit = self.get_option("log_size")
-         if self.get_option("all_logs"):
-             self.add_copy_spec([
-                 "/var/log/manila/*",
--                "/var/log/containers/manila/*"
-+                "/var/log/containers/manila/*",
-+                "/var/log/containers/httpd/manila-api/*"
-             ], sizelimit=self.limit)
-         else:
-             self.add_copy_spec([
-                 "/var/log/manila/*.log",
--                "/var/log/containers/manila/*.log"
-+                "/var/log/containers/manila/*.log",
-+                "/var/log/containers/httpd/manila-api/*log"
-             ], sizelimit=self.limit)
- 
-     def postproc(self):
-diff --git a/sos/plugins/openstack_neutron.py b/sos/plugins/openstack_neutron.py
-index b6116c731..522686606 100644
---- a/sos/plugins/openstack_neutron.py
-+++ b/sos/plugins/openstack_neutron.py
-@@ -33,17 +33,21 @@ def setup(self):
-         if self.get_option("all_logs"):
-             self.add_copy_spec([
-                 "/var/log/neutron/",
--                "/var/log/containers/neutron/"
-+                "/var/log/containers/neutron/",
-+                "/var/log/containers/httpd/neutron-api/"
-             ], sizelimit=self.limit)
-         else:
-             self.add_copy_spec([
-                 "/var/log/neutron/*.log",
--                "/var/log/containers/neutron/*.log"
-+                "/var/log/containers/neutron/*.log",
-+                "/var/log/containers/httpd/neutron-api/*log"
-             ], sizelimit=self.limit)
- 
-         self.add_copy_spec([
-             "/etc/neutron/",
--            self.var_puppet_gen + "/etc/neutron/"
-+            self.var_puppet_gen + "/etc/neutron/",
-+            self.var_puppet_gen + "/etc/default/neutron-server",
-+            self.var_puppet_gen + "/etc/my.cnf.d/tripleo.cnf"
-         ])
-         self.add_copy_spec("/var/lib/neutron/")
-         if self.get_option("verify"):
-diff --git a/sos/plugins/openstack_nova.py b/sos/plugins/openstack_nova.py
-index 75dd37255..1fbfa76a8 100644
---- a/sos/plugins/openstack_nova.py
-+++ b/sos/plugins/openstack_nova.py
-@@ -71,12 +71,16 @@ def setup(self):
-         if self.get_option("all_logs"):
-             self.add_copy_spec([
-                 "/var/log/nova/",
--                "/var/log/containers/nova/"
-+                "/var/log/containers/nova/",
-+                "/var/log/containers/httpd/nova-api/",
-+                "/var/log/containers/httpd/nova-placement/"
-             ], sizelimit=self.limit)
-         else:
-             self.add_copy_spec([
-                 "/var/log/nova/*.log",
--                "/var/log/containers/nova/*.log"
-+                "/var/log/containers/nova/*.log",
-+                "/var/log/containers/httpd/nova-api/*log",
-+                "/var/log/containers/httpd/nova-placement/*log"
-             ], sizelimit=self.limit)
- 
-         self.add_copy_spec([
-@@ -89,7 +93,12 @@ def setup(self):
-             self.var_puppet_gen + "_placement/etc/httpd/conf.d/",
-             self.var_puppet_gen + "_placement/etc/httpd/conf.modules.d/*.conf",
-             self.var_puppet_gen + "_placement/etc/my.cnf.d/tripleo.cnf",
--            self.var_puppet_gen + "/../memcached/etc/sysconfig/memcached"
-+            self.var_puppet_gen + "/../memcached/etc/sysconfig/memcached",
-+            self.var_puppet_gen + "_libvirt/etc/libvirt/",
-+            self.var_puppet_gen + "_libvirt/etc/my.cnf.d/tripleo.cnf",
-+            self.var_puppet_gen + "_libvirt/etc/nova/migration/"
-+            "authorized_keys",
-+            self.var_puppet_gen + "_libvirt/var/lib/nova/.ssh/config",
-         ])
- 
-         if self.get_option("verify"):
-@@ -115,6 +124,10 @@ def postproc(self):
-             self.var_puppet_gen + "_placement/etc/nova/*",
-             regexp, r"\1*********"
-         )
-+        self.do_path_regex_sub(
-+            self.var_puppet_gen + "_libvirt/etc/nova/*",
-+            regexp, r"\1*********"
-+        )
- 
- 
- class DebianNova(OpenStackNova, DebianPlugin, UbuntuPlugin):
-diff --git a/sos/plugins/openstack_swift.py b/sos/plugins/openstack_swift.py
-index 1cfff2b88..1688112f5 100644
---- a/sos/plugins/openstack_swift.py
-+++ b/sos/plugins/openstack_swift.py
-@@ -35,12 +35,14 @@ def setup(self):
-         if self.get_option("all_logs"):
-             self.add_copy_spec([
-                 "/var/log/swift/",
--                "/var/log/containers/swift/"
-+                "/var/log/containers/swift/",
-+                "/var/log/containers/httpd/swift-proxy/"
-             ], sizelimit=self.limit)
-         else:
-             self.add_copy_spec([
-                 "/var/log/swift/*.log",
--                "/var/log/containers/swift/*.log"
-+                "/var/log/containers/swift/*.log",
-+                "/var/log/containers/httpd/swift-proxy/*log"
-             ], sizelimit=self.limit)
- 
-         self.add_copy_spec([
-From e63c17d902f99d96cbd4cb2a06d9cbbf8a4d4c18 Mon Sep 17 00:00:00 2001
-From: Martin Schuppert <mschuppert@redhat.com>
-Date: Tue, 7 Nov 2017 18:07:47 +0100
-Subject: [PATCH] [openstack_nova] added missing nova container config
-
-Tripleo Pike opinionated config+log paths to be collected
-for services, when running in containers.
-
-The nova configuration for the nova and placement container
-was included, but the nova configuration libvirt container
-was missing. Also the httpd configs for the nova contaier
-were added.
-
-This is a change to #1130
-
-Signed-off-by: Martin Schuppert mschuppe@redhat.com
----
- sos/plugins/openstack_nova.py | 6 +++++-
- 1 file changed, 5 insertions(+), 1 deletion(-)
-
-diff --git a/sos/plugins/openstack_nova.py b/sos/plugins/openstack_nova.py
-index 1fbfa76a8..cdd297608 100644
---- a/sos/plugins/openstack_nova.py
-+++ b/sos/plugins/openstack_nova.py
-@@ -87,7 +87,10 @@ def setup(self):
-             "/etc/nova/",
-             self.var_puppet_gen + "/etc/nova/",
-             self.var_puppet_gen + "/etc/my.cnf.d/tripleo.cnf",
--            self.var_puppet_gen + "_placement/var/spool/cron/nova",
-+            self.var_puppet_gen + "/var/spool/cron/nova",
-+            self.var_puppet_gen + "/etc/httpd/conf/",
-+            self.var_puppet_gen + "/etc/httpd/conf.d/",
-+            self.var_puppet_gen + "/etc/httpd/conf.modules.d/*.conf",
-             self.var_puppet_gen + "_placement/etc/nova/",
-             self.var_puppet_gen + "_placement/etc/httpd/conf/",
-             self.var_puppet_gen + "_placement/etc/httpd/conf.d/",
-@@ -96,6 +99,7 @@ def setup(self):
-             self.var_puppet_gen + "/../memcached/etc/sysconfig/memcached",
-             self.var_puppet_gen + "_libvirt/etc/libvirt/",
-             self.var_puppet_gen + "_libvirt/etc/my.cnf.d/tripleo.cnf",
-+            self.var_puppet_gen + "_libvirt/etc/nova/",
-             self.var_puppet_gen + "_libvirt/etc/nova/migration/"
-             "authorized_keys",
-             self.var_puppet_gen + "_libvirt/var/lib/nova/.ssh/config",
-From 410733862a1f5ea1f9666d1fa41a7b5d3390e3c6 Mon Sep 17 00:00:00 2001
-From: Martin Schuppert <mschuppert@redhat.com>
-Date: Wed, 8 Nov 2017 17:57:54 +0100
-Subject: [PATCH] [openstack_[glance|heat|cinder|nova]] limit command run
-
-Collect "glance-manage db_version" and similar commands from the
-four plugins only if the relevant services or containers are
-running. Otherwise the commands get stuck and timeout.
-
-This is an enhancement to #1124 to check for containers + do the
-same for nova + cinder.
-
-Signed-off-by: Martin Schuppert mschuppe@redhat.com
-
-Edited to remove use of shell syntax.
-
-Fixes: #1139
-
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/plugins/openstack_cinder.py | 30 ++++++++++---
- sos/plugins/openstack_glance.py | 33 +++++++++++----
- sos/plugins/openstack_heat.py   | 23 ++++++++--
- sos/plugins/openstack_nova.py   | 94 +++++++++++++++++++++++++++--------------
- 4 files changed, 129 insertions(+), 51 deletions(-)
-
-diff --git a/sos/plugins/openstack_cinder.py b/sos/plugins/openstack_cinder.py
-index abfd267bb..a023105c8 100644
---- a/sos/plugins/openstack_cinder.py
-+++ b/sos/plugins/openstack_cinder.py
-@@ -27,16 +27,34 @@ class OpenStackCinder(Plugin):
-     plugin_name = "openstack_cinder"
-     profiles = ('openstack', 'openstack_controller')
- 
--    option_list = [("db", "gathers openstack cinder db version", "slow",
--                    False)]
--
-     var_puppet_gen = "/var/lib/config-data/puppet-generated/cinder"
- 
-     def setup(self):
--        if self.get_option("db"):
-+
-+        # collect commands output only if the openstack-cinder-api service
-+        # is running
-+        service_status = self.get_command_output(
-+            "systemctl status openstack-cinder-api.service"
-+        )
-+
-+        container_status = self.get_command_output("docker ps")
-+        in_container = False
-+        if container_status['status'] == 0:
-+            for line in container_status['output'].splitlines():
-+                if line.endswith("cinder_api"):
-+                    in_container = True
-+
-+        if (service_status['status'] == 0) or in_container:
-+            cinder_config = ""
-+            # if containerized we need to pass the config to the cont.
-+            if in_container:
-+                cinder_config = "--config-dir " + self.var_puppet_gen + \
-+                                "/etc/cinder/"
-+
-             self.add_cmd_output(
--                "cinder-manage db version",
--                suggest_filename="cinder_db_version")
-+                "cinder-manage " + cinder_config + " db version",
-+                suggest_filename="cinder_db_version"
-+            )
- 
-         self.add_copy_spec([
-             "/etc/cinder/",
-diff --git a/sos/plugins/openstack_glance.py b/sos/plugins/openstack_glance.py
-index fdd789a81..4cdc6dc62 100644
---- a/sos/plugins/openstack_glance.py
-+++ b/sos/plugins/openstack_glance.py
-@@ -54,22 +54,37 @@ def setup(self):
-         if self.get_option("verify"):
-             self.add_cmd_output("rpm -V %s" % ' '.join(self.packages))
- 
--        vars_all = [p in os.environ for p in [
--                    'OS_USERNAME', 'OS_PASSWORD']]
--
--        vars_any = [p in os.environ for p in [
--                    'OS_TENANT_NAME', 'OS_PROJECT_NAME']]
--
-         # collect commands output only if the openstack-glance-api service
-         # is running
-         service_status = self.get_command_output(
--                "systemctl status openstack-glance-api.service"
-+            "systemctl status openstack-glance-api.service"
-         )
--        if service_status['status'] == 0:
-+
-+        container_status = self.get_command_output("docker ps")
-+        in_container = False
-+        if container_status['status'] == 0:
-+            for line in container_status['output'].splitlines():
-+                if line.endswith("cinder_api"):
-+                    in_container = True
-+
-+        if (service_status['status'] == 0) or in_container:
-+            glance_config = ""
-+            # if containerized we need to pass the config to the cont.
-+            if in_container:
-+                glance_config = "--config-dir " + self.var_puppet_gen + \
-+                                "/etc/glance/"
-+
-             self.add_cmd_output(
--                "glance-manage db_version",
-+                "glance-manage " + glance_config + " db_version",
-                 suggest_filename="glance_db_version"
-             )
-+
-+            vars_all = [p in os.environ for p in [
-+                        'OS_USERNAME', 'OS_PASSWORD']]
-+
-+            vars_any = [p in os.environ for p in [
-+                        'OS_TENANT_NAME', 'OS_PROJECT_NAME']]
-+
-             if not (all(vars_all) and any(vars_any)):
-                 self.soslog.warning("Not all environment variables set. "
-                                     "Source the environment file for the user "
-diff --git a/sos/plugins/openstack_heat.py b/sos/plugins/openstack_heat.py
-index de34ed155..e3395fabd 100644
---- a/sos/plugins/openstack_heat.py
-+++ b/sos/plugins/openstack_heat.py
-@@ -32,11 +32,26 @@ def setup(self):
- 
-         # collect commands output only if the openstack-heat-api service
-         # is running
--        service_status = self.get_command_output("systemctl status "
--                                                 "openstack-heat-api.service")
--        if service_status['status'] == 0:
-+        service_status = self.get_command_output(
-+            "systemctl status openstack-heat-api.service"
-+        )
-+
-+        container_status = self.get_command_output("docker ps")
-+        in_container = False
-+        if container_status['status'] == 0:
-+            for line in container_status['output'].splitlines():
-+                if line.endswith("cinder_api"):
-+                    in_container = True
-+
-+        if (service_status['status'] == 0) or in_container:
-+            heat_config = ""
-+            # if containerized we need to pass the config to the cont.
-+            if in_container:
-+                heat_config = "--config-dir " + self.var_puppet_gen + \
-+                                "_api/etc/heat/"
-+
-             self.add_cmd_output(
--                "heat-manage db_version",
-+                "heat-manage " + heat_config + " db_version",
-                 suggest_filename="heat_db_version"
-             )
- 
-diff --git a/sos/plugins/openstack_nova.py b/sos/plugins/openstack_nova.py
-index cdd297608..e8839a2a6 100644
---- a/sos/plugins/openstack_nova.py
-+++ b/sos/plugins/openstack_nova.py
-@@ -32,40 +32,70 @@ class OpenStackNova(Plugin):
-     var_puppet_gen = "/var/lib/config-data/puppet-generated/nova"
- 
-     def setup(self):
--        # commands we do not need to source the environment file
--        self.add_cmd_output("nova-manage db version")
--        self.add_cmd_output("nova-manage fixed list")
--        self.add_cmd_output("nova-manage floating list")
- 
--        vars_all = [p in os.environ for p in [
--                    'OS_USERNAME', 'OS_PASSWORD']]
--
--        vars_any = [p in os.environ for p in [
--                    'OS_TENANT_NAME', 'OS_PROJECT_NAME']]
-+        # collect commands output only if the openstack-nova-api service
-+        # is running
-+        service_status = self.get_command_output(
-+            "systemctl status openstack-nova-api.service"
-+        )
- 
--        if not (all(vars_all) and any(vars_any)):
--            self.soslog.warning("Not all environment variables set. Source "
--                                "the environment file for the user intended "
--                                "to connect to the OpenStack environment.")
--        else:
--            self.add_cmd_output("nova service-list")
--            self.add_cmd_output("openstack flavor list --long")
--            self.add_cmd_output("nova network-list")
--            self.add_cmd_output("nova list")
--            self.add_cmd_output("nova agent-list")
--            self.add_cmd_output("nova version-list")
--            self.add_cmd_output("nova host-list")
--            self.add_cmd_output("openstack quota show")
--            self.add_cmd_output("openstack hypervisor stats show")
--            # get details for each nova instance
--            cmd = "openstack server list -f value"
--            nova_instances = self.call_ext_prog(cmd)['output']
--            for instance in nova_instances.splitlines():
--                instance = instance.split()[0]
--                cmd = "openstack server show %s" % (instance)
--                self.add_cmd_output(
--                    cmd,
--                    suggest_filename="instance-" + instance + ".log")
-+        container_status = self.get_command_output("docker ps")
-+        in_container = False
-+        if container_status['status'] == 0:
-+            for line in container_status['output'].splitlines():
-+                if line.endswith("cinder_api"):
-+                    in_container = True
-+
-+        if (service_status['status'] == 0) or in_container:
-+            nova_config = ""
-+            # if containerized we need to pass the config to the cont.
-+            if in_container:
-+                nova_config = "--config-dir " + self.var_puppet_gen + \
-+                                "/etc/nova/"
-+
-+            self.add_cmd_output(
-+                "nova-manage " + nova_config + " db version",
-+                suggest_filename="nova-manage_db_version"
-+            )
-+            self.add_cmd_output(
-+                "nova-manage " + nova_config + " fixed list",
-+                suggest_filename="nova-manage_fixed_list"
-+            )
-+            self.add_cmd_output(
-+                "nova-manage " + nova_config + " floating list",
-+                suggest_filename="nova-manage_floating_list"
-+            )
-+
-+            vars_all = [p in os.environ for p in [
-+                        'OS_USERNAME', 'OS_PASSWORD']]
-+
-+            vars_any = [p in os.environ for p in [
-+                        'OS_TENANT_NAME', 'OS_PROJECT_NAME']]
-+
-+            if not (all(vars_all) and any(vars_any)):
-+                self.soslog.warning("Not all environment variables set. "
-+                                    "Source the environment file for the user "
-+                                    "intended to connect to the OpenStack "
-+                                    "environment.")
-+            else:
-+                self.add_cmd_output("nova service-list")
-+                self.add_cmd_output("openstack flavor list --long")
-+                self.add_cmd_output("nova network-list")
-+                self.add_cmd_output("nova list")
-+                self.add_cmd_output("nova agent-list")
-+                self.add_cmd_output("nova version-list")
-+                self.add_cmd_output("nova hypervisor-list")
-+                self.add_cmd_output("openstack quota show")
-+                self.add_cmd_output("openstack hypervisor stats show")
-+                # get details for each nova instance
-+                cmd = "openstack server list -f value"
-+                nova_instances = self.call_ext_prog(cmd)['output']
-+                for instance in nova_instances.splitlines():
-+                    instance = instance.split()[0]
-+                    cmd = "openstack server show %s" % (instance)
-+                    self.add_cmd_output(
-+                        cmd,
-+                        suggest_filename="instance-" + instance + ".log")
- 
-         self.limit = self.get_option("log_size")
-         if self.get_option("all_logs"):
-From 2140b1611565078c4a6536782c013a525722e0da Mon Sep 17 00:00:00 2001
-From: Martin Schuppert <mschuppert@redhat.com>
-Date: Thu, 21 Dec 2017 08:00:41 +0100
-Subject: [PATCH] [openstack_glance|heat|nova] fix api container names
-
-Container names of glance, heat and nova api was not correct
-when verify if a the container is running.
-
-Signed-off-by: Martin Schuppert <mschuppe@redhat.com>
----
- sos/plugins/openstack_glance.py | 2 +-
- sos/plugins/openstack_heat.py   | 2 +-
- sos/plugins/openstack_nova.py   | 2 +-
- 3 files changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/sos/plugins/openstack_glance.py b/sos/plugins/openstack_glance.py
-index 4cdc6dc62..d7588abe0 100644
---- a/sos/plugins/openstack_glance.py
-+++ b/sos/plugins/openstack_glance.py
-@@ -64,7 +64,7 @@ def setup(self):
-         in_container = False
-         if container_status['status'] == 0:
-             for line in container_status['output'].splitlines():
--                if line.endswith("cinder_api"):
-+                if line.endswith("glance_api"):
-                     in_container = True
- 
-         if (service_status['status'] == 0) or in_container:
-diff --git a/sos/plugins/openstack_heat.py b/sos/plugins/openstack_heat.py
-index e3395fabd..0cf7c8595 100644
---- a/sos/plugins/openstack_heat.py
-+++ b/sos/plugins/openstack_heat.py
-@@ -40,7 +40,7 @@ def setup(self):
-         in_container = False
-         if container_status['status'] == 0:
-             for line in container_status['output'].splitlines():
--                if line.endswith("cinder_api"):
-+                if line.endswith("heat_api"):
-                     in_container = True
- 
-         if (service_status['status'] == 0) or in_container:
-diff --git a/sos/plugins/openstack_nova.py b/sos/plugins/openstack_nova.py
-index e8839a2a6..951e69cba 100644
---- a/sos/plugins/openstack_nova.py
-+++ b/sos/plugins/openstack_nova.py
-@@ -43,7 +43,7 @@ def setup(self):
-         in_container = False
-         if container_status['status'] == 0:
-             for line in container_status['output'].splitlines():
--                if line.endswith("cinder_api"):
-+                if line.endswith("nova_api"):
-                     in_container = True
- 
-         if (service_status['status'] == 0) or in_container:
-From 8ce70c4d3683ce977f1243c56b7d4f4b6782c0df Mon Sep 17 00:00:00 2001
-From: Martin Schuppert <mschuppert@redhat.com>
-Date: Fri, 29 Dec 2017 09:20:33 +0100
-Subject: [PATCH] [openstack_cinder] check for api service running via
- cinder_wsgi
-
-With OSP11 cinder api changed to run via https wsgi. To check for
-running cinder-manage command we also need to take this situation.
-The change checks for cinder_wsgi process.
-
-Signed-off-by: Martin Schuppert <mschuppert@redhat.com>
----
- sos/plugins/openstack_cinder.py | 11 ++++++++++-
- 1 file changed, 10 insertions(+), 1 deletion(-)
-
-diff --git a/sos/plugins/openstack_cinder.py b/sos/plugins/openstack_cinder.py
-index a023105c8..6b292d279 100644
---- a/sos/plugins/openstack_cinder.py
-+++ b/sos/plugins/openstack_cinder.py
-@@ -37,14 +37,23 @@ def setup(self):
-             "systemctl status openstack-cinder-api.service"
-         )
- 
-+        ps_status = self.get_command_output("ps -ef")
-+        in_ps = False
-+        if ps_status['status'] == 0:
-+            for line in ps_status['output'].splitlines():
-+                if "cinder_wsgi" in line:
-+                    in_ps = True
-+                    break
-+
-         container_status = self.get_command_output("docker ps")
-         in_container = False
-         if container_status['status'] == 0:
-             for line in container_status['output'].splitlines():
-                 if line.endswith("cinder_api"):
-                     in_container = True
-+                    break
- 
--        if (service_status['status'] == 0) or in_container:
-+        if (service_status['status'] == 0) or in_container or in_ps:
-             cinder_config = ""
-             # if containerized we need to pass the config to the cont.
-             if in_container:
diff --git a/SOURCES/sos-bz1515113-postgresql-from-scl.patch b/SOURCES/sos-bz1515113-postgresql-from-scl.patch
deleted file mode 100644
index 7c33175..0000000
--- a/SOURCES/sos-bz1515113-postgresql-from-scl.patch
+++ /dev/null
@@ -1,868 +0,0 @@
-From 138bc243aa592cd628f6e41a1b3c35f1f01f3c37 Mon Sep 17 00:00:00 2001
-From: "Bryn M. Reeves" <bmr@redhat.com>
-Date: Tue, 8 Aug 2017 16:48:40 +0100
-Subject: [PATCH] [Plugin] add executable command enablement checks
-
-Add a new list/tuple member to the Plugin class that contains a
-list of executable commands that will enable the plugin if any
-are present.
-
-For example, a plugin:
-
-  class MyPlugin(Plugin, RedHatPlugin):
-
-      commands = ('mycmd1', 'mycmd2')
-
-Will be automatically enabled if either 'mycmd1' or 'mycmd2'
-is present and executable in the policy defined PATH for the
-run.
-
-Related: #1051.
-
-Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
----
- sos/plugins/__init__.py | 27 ++++++++++++++++++---------
- 1 file changed, 18 insertions(+), 9 deletions(-)
-
-diff --git a/sos/plugins/__init__.py b/sos/plugins/__init__.py
-index a31297f6c..2d6f6ff58 100644
---- a/sos/plugins/__init__.py
-+++ b/sos/plugins/__init__.py
-@@ -19,7 +19,7 @@
- from __future__ import with_statement
- 
- from sos.utilities import (sos_get_command_output, import_module, grep,
--                           fileobj, tail)
-+                           fileobj, tail, is_executable)
- import os
- import glob
- import re
-@@ -111,6 +111,7 @@ class Plugin(object):
-     version = 'unversioned'
-     packages = ()
-     files = ()
-+    commands = ()
-     archive = None
-     profiles = ()
-     sysroot = '/'
-@@ -865,23 +866,31 @@ def get_description(self):
- 
-     def check_enabled(self):
-         """This method will be used to verify that a plugin should execute
--        given the condition of the underlying environment. The default
--        implementation will return True if neither class.files or
--        class.packages is specified. If either are specified the plugin will
--        check for the existence of any of the supplied files or packages and
--        return True if any exist. It is encouraged to override this method if
--        this behavior isn't applicable.
-+        given the condition of the underlying environment.
-+
-+        The default implementation will return True if none of class.files,
-+        class.packages, nor class.commands is specified. If any of these is
-+        specified the plugin will check for the existence of any of the
-+        corresponding paths, packages or commands and return True if any
-+        are present.
-+
-+        For plugins with more complex enablement checks this method may be
-+        overridden.
-         """
-         # some files or packages have been specified for this package
--        if self.files or self.packages:
-+        if any([self.files, self.packages, self.commands]):
-             if isinstance(self.files, six.string_types):
-                 self.files = [self.files]
- 
-             if isinstance(self.packages, six.string_types):
-                 self.packages = [self.packages]
- 
-+            if isinstance(self.commands, six.string_types):
-+                self.commands = [self.commands]
-+
-             return (any(os.path.exists(fname) for fname in self.files) or
--                    any(self.is_installed(pkg) for pkg in self.packages))
-+                    any(self.is_installed(pkg) for pkg in self.packages) or
-+                    any(is_executable(cmd) for cmd in self.commands))
-         return True
- 
-     def default_enabled(self):
-From 947e7089c58ac239bc2fd535ac0c77f93f11b895 Mon Sep 17 00:00:00 2001
-From: Pavel Moravec <pmoravec@redhat.com>
-Date: Tue, 3 Oct 2017 15:39:43 +0200
-Subject: [PATCH] [plugins] Add class SCLPlugin for Software Collections
- support
-
-Related to #900 and #1090
-
-Original author: Bohuslav Kabrda <bkabrda@redhat.com>
-Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
----
- sos/plugins/__init__.py | 109 ++++++++++++++++++++++++++++++++++++++++++++++--
- 1 file changed, 106 insertions(+), 3 deletions(-)
-
-diff --git a/sos/plugins/__init__.py b/sos/plugins/__init__.py
-index 61a3083e3..540d46596 100644
---- a/sos/plugins/__init__.py
-+++ b/sos/plugins/__init__.py
-@@ -884,6 +884,10 @@ def check_enabled(self):
-         corresponding paths, packages or commands and return True if any
-         are present.
- 
-+        For SCLPlugin subclasses, it will check whether the plugin can be run
-+        for any of installed SCLs. If so, it will store names of these SCLs
-+        on the plugin class in addition to returning True.
-+
-         For plugins with more complex enablement checks this method may be
-         overridden.
-         """
-@@ -898,11 +902,34 @@ def check_enabled(self):
-             if isinstance(self.commands, six.string_types):
-                 self.commands = [self.commands]
- 
--            return (any(os.path.exists(fname) for fname in self.files) or
--                    any(self.is_installed(pkg) for pkg in self.packages) or
--                    any(is_executable(cmd) for cmd in self.commands))
-+            if isinstance(self, SCLPlugin):
-+                # save SCLs that match files or packages
-+                type(self)._scls_matched = []
-+                for scl in self._get_scls():
-+                    files = [f % {"scl_name": scl} for f in self.files]
-+                    packages = [p % {"scl_name": scl} for p in self.packages]
-+                    commands = [c % {"scl_name": scl} for c in self.commands]
-+                    if self._files_pkgs_or_cmds_present(files,
-+                                                        packages,
-+                                                        commands):
-+                        type(self)._scls_matched.append(scl)
-+                return len(type(self)._scls_matched) > 0
-+
-+            return self._files_pkgs_or_cmds_present(self.files,
-+                                                    self.packages,
-+                                                    self.commands)
-+
-+        if isinstance(self, SCLPlugin):
-+            # if files and packages weren't specified, we take all SCLs
-+            type(self)._scls_matched = self._get_scls()
-+
-         return True
- 
-+    def _files_pkgs_or_cmds_present(self, files, packages, commands):
-+            return (any(os.path.exists(fname) for fname in files) or
-+                    any(self.is_installed(pkg) for pkg in packages) or
-+                    any(is_executable(cmd) for cmd in commands))
-+
-     def default_enabled(self):
-         """This decides whether a plugin should be automatically loaded or
-         only if manually specified in the command line."""
-@@ -979,6 +1006,82 @@ class RedHatPlugin(object):
-     pass
- 
- 
-+class SCLPlugin(RedHatPlugin):
-+    """Superclass for plugins operating on Software Collections (SCLs).
-+
-+    Subclasses of this plugin class can specify class.files and class.packages
-+    using "%(scl_name)s" interpolation. The plugin invoking mechanism will try
-+    to match these against all found SCLs on the system. SCLs that do match
-+    class.files or class.packages are then accessible via self.scls_matched
-+    when the plugin is invoked.
-+
-+    Additionally, this plugin class provides "add_cmd_output_scl" (run
-+    a command in context of given SCL), and "add_copy_spec_scl" and
-+    "add_copy_spec_limit_scl" (copy package from file system of given SCL).
-+
-+    For example, you can implement a plugin that will list all global npm
-+    packages in every SCL that contains "npm" package:
-+
-+    class SCLNpmPlugin(Plugin, SCLPlugin):
-+        packages = ("%(scl_name)s-npm",)
-+
-+        def setup(self):
-+            for scl in self.scls_matched:
-+                self.add_cmd_output_scl(scl, "npm ls -g --json")
-+    """
-+
-+    @property
-+    def scls_matched(self):
-+        if not hasattr(type(self), '_scls_matched'):
-+            type(self)._scls_matched = []
-+        return type(self)._scls_matched
-+
-+    def _get_scls(self):
-+        output = sos_get_command_output("scl -l")["output"]
-+        return [scl.strip() for scl in output.splitlines()]
-+
-+    def add_cmd_output_scl(self, scl, cmds, **kwargs):
-+        """Same as add_cmd_output, except that it wraps command in
-+        "scl enable" call.
-+        """
-+        if isinstance(cmds, six.string_types):
-+            cmds = [cmds]
-+        scl_cmds = []
-+        scl_cmd_tpl = "scl enable %s \"%s\""
-+        for cmd in cmds:
-+            scl_cmds.append(scl_cmd_tpl % (scl, cmd))
-+        self.add_cmd_output(scl_cmds, **kwargs)
-+
-+    # config files for Software Collections are under /etc/opt/rh/${scl} and
-+    # var files are under /var/opt/rh/${scl}. So we need to insert the paths
-+    # after the appropriate root dir.
-+    def convert_copyspec_scl(self, scl, copyspec):
-+        for rootdir in ['etc', 'var']:
-+            p = re.compile('^/%s/' % rootdir)
-+            copyspec = p.sub('/%s/opt/rh/%s/' % (rootdir, scl), copyspec)
-+        return copyspec
-+
-+    def add_copy_spec_scl(self, scl, copyspecs):
-+        """Same as add_copy_spec, except that it prepends path to SCL root
-+        to "copyspecs".
-+        """
-+        if isinstance(copyspecs, six.string_types):
-+            copyspecs = [copyspecs]
-+        scl_copyspecs = []
-+        for copyspec in copyspecs:
-+            scl_copyspecs.append(self.convert_copyspec_scl(scl, copyspec))
-+        self.add_copy_spec(scl_copyspecs)
-+
-+    def add_copy_spec_limit_scl(self, scl, copyspec, **kwargs):
-+        """Same as add_copy_spec_limit, except that it prepends path to SCL
-+        root to "copyspec".
-+        """
-+        self.add_copy_spec_limit(
-+            self.convert_copyspec_scl(scl, copyspec),
-+            **kwargs
-+        )
-+
-+
- class PowerKVMPlugin(RedHatPlugin):
-     """Tagging class for IBM PowerKVM Linux"""
-     pass
-From 62d6435198403abb65b925e7bf63fc39f5394e6d Mon Sep 17 00:00:00 2001
-From: Pavel Moravec <pmoravec@redhat.com>
-Date: Mon, 16 Oct 2017 13:20:44 +0200
-Subject: [PATCH] [postgresql] Collect data for postgreSQL from RHSCL
-
-Collect postgreSQL data also when postgreSQL is installed from
-Red Hat Software Collections.
-
-Resolves: #1090
-
-Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
----
- sos/plugins/postgresql.py | 117 +++++++++++++++++++++++++---------------------
- 1 file changed, 65 insertions(+), 52 deletions(-)
-
-diff --git a/sos/plugins/postgresql.py b/sos/plugins/postgresql.py
-index 345532223..45c87e890 100644
---- a/sos/plugins/postgresql.py
-+++ b/sos/plugins/postgresql.py
-@@ -1,3 +1,4 @@
-+# Copyright (C) 2017 Red Hat, Inc., Pavel Moravec <pmoravec@redhat.com>
- # Copyright (C) 2014 Red Hat, Inc., Sandro Bonazzola <sbonazzo@redhat.com>
- # Copyright (C) 2013 Chris J Arges <chris.j.arges@canonical.com>
- # Copyright (C) 2012-2013 Red Hat, Inc., Bryn M. Reeves <bmr@redhat.com>
-@@ -20,7 +21,8 @@
- import os
- import tempfile
- 
--from sos.plugins import Plugin, RedHatPlugin, UbuntuPlugin, DebianPlugin
-+from sos.plugins import (Plugin, RedHatPlugin, UbuntuPlugin, DebianPlugin,
-+                         SCLPlugin)
- from sos.utilities import find
- 
- 
-@@ -45,47 +47,43 @@ class PostgreSQL(Plugin):
-         ('dbport', 'database server port number', '', '5432')
-     ]
- 
--    def pg_dump(self):
--        dest_file = os.path.join(self.tmp_dir, "sos_pgdump.tar")
--        # We're only modifying this for ourself and our children so there
--        # is no need to save and restore environment variables if the user
--        # decided to pass the password on the command line.
--        if self.get_option("password") is not False:
--            os.environ["PGPASSWORD"] = str(self.get_option("password"))
--
--        if self.get_option("dbhost"):
--            cmd = "pg_dump -U %s -h %s -p %s -w -f %s -F t %s" % (
--                self.get_option("username"),
--                self.get_option("dbhost"),
--                self.get_option("dbport"),
--                dest_file,
--                self.get_option("dbname")
--            )
--        else:
--            cmd = "pg_dump -C -U %s -w -f %s -F t %s " % (
--                self.get_option("username"),
--                dest_file,
--                self.get_option("dbname")
--            )
--
--        result = self.call_ext_prog(cmd)
--        if (result['status'] == 0):
--            self.add_copy_spec(dest_file)
--        else:
--            self._log_error(
--                "Unable to execute pg_dump. Error(%s)" % (result['output'])
--            )
--            self.add_alert(
--                "ERROR: Unable to execute pg_dump. Error(%s)" %
--                (result['output'])
--            )
--
--    def setup(self):
-+    def pg_dump(self, pg_dump_command="pg_dump", filename="sos_pgdump.tar"):
-         if self.get_option("dbname"):
-             if self.get_option("password") or "PGPASSWORD" in os.environ:
-                 self.tmp_dir = tempfile.mkdtemp()
--                self.pg_dump()
--            else:
-+                dest_file = os.path.join(self.tmp_dir, filename)
-+                # We're only modifying this for ourself and our children so
-+                # there is no need to save and restore environment variables if
-+                # the user decided to pass the password on the command line.
-+                if self.get_option("password") is not False:
-+                    os.environ["PGPASSWORD"] = str(self.get_option("password"))
-+
-+                if self.get_option("dbhost"):
-+                    cmd = "%s -U %s -h %s -p %s -w -f %s -F t %s" % (
-+                        pg_dump_command,
-+                        self.get_option("username"),
-+                        self.get_option("dbhost"),
-+                        self.get_option("dbport"),
-+                        dest_file,
-+                        self.get_option("dbname")
-+                    )
-+                else:
-+                    cmd = "%s -C -U %s -w -f %s -F t %s " % (
-+                        pg_dump_command,
-+                        self.get_option("username"),
-+                        dest_file,
-+                        self.get_option("dbname")
-+                    )
-+
-+                result = self.call_ext_prog(cmd)
-+                if (result['status'] == 0):
-+                    self.add_copy_spec(dest_file)
-+                else:
-+                    self._log_info(
-+                        "Unable to execute pg_dump. Error(%s)" %
-+                        (result['output'])
-+                    )
-+            else:  # no password in env or options
-                 self.soslog.warning(
-                     "password must be supplied to dump a database."
-                 )
-@@ -93,6 +91,9 @@ def setup(self):
-                     "WARN: password must be supplied to dump a database."
-                 )
- 
-+    def setup(self):
-+        self.pg_dump()
-+
-     def postproc(self):
-         import shutil
-         if self.tmp_dir:
-@@ -105,33 +106,45 @@ def postproc(self):
-                 self.add_alert("ERROR: Unable to remove %s." % (self.tmp_dir))
- 
- 
--class RedHatPostgreSQL(PostgreSQL, RedHatPlugin):
-+class RedHatPostgreSQL(PostgreSQL, SCLPlugin):
-+
-+    packages = ('postgresql', 'rh-postgresql95-postgresql-server', )
- 
-     def setup(self):
-         super(RedHatPostgreSQL, self).setup()
- 
-+        scl = "rh-postgresql95"
-+        pghome = self.get_option("pghome")
-+
-         # Copy PostgreSQL log files.
--        for filename in find("*.log", self.get_option("pghome")):
-+        for filename in find("*.log", pghome):
-+            self.add_copy_spec(filename)
-+        for filename in find("*.log", self.convert_copyspec_scl(scl, pghome)):
-             self.add_copy_spec(filename)
-+
-         # Copy PostgreSQL config files.
--        for filename in find("*.conf", self.get_option("pghome")):
-+        for filename in find("*.conf", pghome):
-+            self.add_copy_spec(filename)
-+        for filename in find("*.conf", self.convert_copyspec_scl(scl, pghome)):
-             self.add_copy_spec(filename)
- 
--        self.add_copy_spec(
--            os.path.join(
--                self.get_option("pghome"),
--                "data",
--                "PG_VERSION"
--            )
--        )
--        self.add_copy_spec(
--            os.path.join(
--                self.get_option("pghome"),
-+        self.add_copy_spec(os.path.join(pghome, "data", "PG_VERSION"))
-+        self.add_copy_spec(os.path.join(pghome, "data", "postmaster.opts"))
-+
-+        self.add_copy_spec_scl(scl, os.path.join(pghome, "data", "PG_VERSION"))
-+        self.add_copy_spec_scl(scl, os.path.join(
-+                pghome,
-                 "data",
-                 "postmaster.opts"
-             )
-         )
- 
-+        if scl in self.scls_matched:
-+            self.pg_dump(
-+                pg_dump_command="scl enable rh-postgresql95 -- pg_dump",
-+                filename="sos_scl_pgdump.tar"
-+            )
-+
- 
- class DebianPostgreSQL(PostgreSQL, DebianPlugin, UbuntuPlugin):
- 
-From 0b93d1f69ccfcc76e1896ea0e5ff7854be69be13 Mon Sep 17 00:00:00 2001
-From: Pavel Moravec <pmoravec@redhat.com>
-Date: Sat, 25 Nov 2017 12:47:35 +0100
-Subject: [PATCH] [plugins] set proper PATH for SCL commands
-
-As SCL packages are deployed under /opt/${provider}/${scl}/,
-calling a SCL command needs that prefix in any path in PATH.
-
-Consequently, distro-specific SCL default path prefix of the provider must be
-defined in sos policies.
-
-Relevant to: #1154
-
-Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
----
- sos/plugins/__init__.py  | 37 ++++++++++++++++++++++++++++++-------
- sos/policies/__init__.py |  4 ++++
- sos/policies/redhat.py   |  1 +
- 3 files changed, 35 insertions(+), 7 deletions(-)
-
-diff --git a/sos/plugins/__init__.py b/sos/plugins/__init__.py
-index aa69b19d..2a8bc516 100644
---- a/sos/plugins/__init__.py
-+++ b/sos/plugins/__init__.py
-@@ -1066,25 +1066,48 @@ class SCLPlugin(RedHatPlugin):
-         output = sos_get_command_output("scl -l")["output"]
-         return [scl.strip() for scl in output.splitlines()]
- 
-+    def convert_cmd_scl(self, scl, cmd):
-+        """wrapping command in "scl enable" call and adds proper PATH
-+        """
-+        # load default SCL prefix to PATH
-+        prefix = self.policy().get_default_scl_prefix()
-+        # read prefix from /etc/scl/prefixes/${scl} and strip trailing '\n'
-+        try:
-+            prefix = open('/etc/scl/prefixes/%s' % scl, 'r').read()\
-+                     .rstrip('\n')
-+        except Exception as e:
-+            self._log_error("Failed to find prefix for SCL %s, using %s"
-+                            % (scl, prefix))
-+
-+        # expand PATH by equivalent prefixes under the SCL tree
-+        path = os.environ["PATH"]
-+        for p in path.split(':'):
-+            path = '%s/%s%s:%s' % (prefix, scl, p, path)
-+
-+        scl_cmd = "scl enable %s \"PATH=%s %s\"" % (scl, path, cmd)
-+        return scl_cmd
-+
-     def add_cmd_output_scl(self, scl, cmds, **kwargs):
-         """Same as add_cmd_output, except that it wraps command in
--        "scl enable" call.
-+        "scl enable" call and sets proper PATH.
-         """
-         if isinstance(cmds, six.string_types):
-             cmds = [cmds]
-         scl_cmds = []
--        scl_cmd_tpl = "scl enable %s \"%s\""
-         for cmd in cmds:
--            scl_cmds.append(scl_cmd_tpl % (scl, cmd))
-+            scl_cmds.append(convert_cmd_scl(scl, cmd))
-         self.add_cmd_output(scl_cmds, **kwargs)
- 
--    # config files for Software Collections are under /etc/opt/rh/${scl} and
--    # var files are under /var/opt/rh/${scl}. So we need to insert the paths
--    # after the appropriate root dir.
-+    # config files for Software Collections are under /etc/${prefix}/${scl} and
-+    # var files are under /var/${prefix}/${scl} where the ${prefix} is distro
-+    # specific path. So we need to insert the paths after the appropriate root
-+    # dir.
-     def convert_copyspec_scl(self, scl, copyspec):
-+        scl_prefix = self.policy().get_default_scl_prefix()
-         for rootdir in ['etc', 'var']:
-             p = re.compile('^/%s/' % rootdir)
--            copyspec = p.sub('/%s/opt/rh/%s/' % (rootdir, scl), copyspec)
-+            copyspec = p.sub('/%s/%s/%s/' % (rootdir, scl_prefix, scl),
-+                             copyspec)
-         return copyspec
- 
-     def add_copy_spec_scl(self, scl, copyspecs):
-diff --git a/sos/policies/__init__.py b/sos/policies/__init__.py
-index dffd801c..dc043105 100644
---- a/sos/policies/__init__.py
-+++ b/sos/policies/__init__.py
-@@ -194,6 +194,7 @@ No changes will be made to system configuration.
-     vendor_url = "http://www.example.com/"
-     vendor_text = ""
-     PATH = ""
-+    default_scl_prefix = ""
- 
-     _in_container = False
-     _host_sysroot = '/'
-@@ -271,6 +272,9 @@ No changes will be made to system configuration.
-             return tempfile.gettempdir()
-         return opt_tmp_dir
- 
-+    def get_default_scl_prefix(self):
-+        return self.default_scl_prefix
-+
-     def match_plugin(self, plugin_classes):
-         if len(plugin_classes) > 1:
-             for p in plugin_classes:
-diff --git a/sos/policies/redhat.py b/sos/policies/redhat.py
-index c7449439..2dfe0589 100644
---- a/sos/policies/redhat.py
-+++ b/sos/policies/redhat.py
-@@ -44,6 +44,7 @@ class RedHatPolicy(LinuxPolicy):
-     _rpmq_cmd = 'rpm -qa --queryformat "%{NAME}|%{VERSION}\\n"'
-     _in_container = False
-     _host_sysroot = '/'
-+    default_scl_prefix = '/opt/rh'
- 
-     def __init__(self, sysroot=None):
-         super(RedHatPolicy, self).__init__(sysroot=sysroot)
--- 
-2.13.6
-
-From 419ebe48ea408b6596ff4d7d9837079dc3057fcf Mon Sep 17 00:00:00 2001
-From: Pavel Moravec <pmoravec@redhat.com>
-Date: Sat, 25 Nov 2017 12:58:16 +0100
-Subject: [PATCH] [postgresql] Call SCL pg_dump with proper path
-
-Also stop storing pg_dump in an auxiliary tempdir but under regular
-sos_commands/postgresql directory.
-
-Resolves: #1154
-
-Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
----
- sos/plugins/postgresql.py | 43 ++++++++-----------------------------------
- 1 file changed, 8 insertions(+), 35 deletions(-)
-
-diff --git a/sos/plugins/postgresql.py b/sos/plugins/postgresql.py
-index 45c87e89..9ba696be 100644
---- a/sos/plugins/postgresql.py
-+++ b/sos/plugins/postgresql.py
-@@ -34,8 +34,6 @@ class PostgreSQL(Plugin):
- 
-     packages = ('postgresql',)
- 
--    tmp_dir = None
--
-     password_warn_text = " (password visible in process listings)"
- 
-     option_list = [
-@@ -47,11 +45,9 @@ class PostgreSQL(Plugin):
-         ('dbport', 'database server port number', '', '5432')
-     ]
- 
--    def pg_dump(self, pg_dump_command="pg_dump", filename="sos_pgdump.tar"):
-+    def do_pg_dump(self, scl=None, filename="pgdump.tar"):
-         if self.get_option("dbname"):
-             if self.get_option("password") or "PGPASSWORD" in os.environ:
--                self.tmp_dir = tempfile.mkdtemp()
--                dest_file = os.path.join(self.tmp_dir, filename)
-                 # We're only modifying this for ourself and our children so
-                 # there is no need to save and restore environment variables if
-                 # the user decided to pass the password on the command line.
-@@ -59,30 +55,21 @@ class PostgreSQL(Plugin):
-                     os.environ["PGPASSWORD"] = str(self.get_option("password"))
- 
-                 if self.get_option("dbhost"):
--                    cmd = "%s -U %s -h %s -p %s -w -f %s -F t %s" % (
--                        pg_dump_command,
-+                    cmd = "pg_dump -U %s -h %s -p %s -w -F t %s" % (
-                         self.get_option("username"),
-                         self.get_option("dbhost"),
-                         self.get_option("dbport"),
--                        dest_file,
-                         self.get_option("dbname")
-                     )
-                 else:
--                    cmd = "%s -C -U %s -w -f %s -F t %s " % (
--                        pg_dump_command,
-+                    cmd = "pg_dump -C -U %s -w -F t %s " % (
-                         self.get_option("username"),
--                        dest_file,
-                         self.get_option("dbname")
-                     )
- 
--                result = self.call_ext_prog(cmd)
--                if (result['status'] == 0):
--                    self.add_copy_spec(dest_file)
--                else:
--                    self._log_info(
--                        "Unable to execute pg_dump. Error(%s)" %
--                        (result['output'])
--                    )
-+                if scl is not None:
-+                    cmd = self.convert_cmd_scl(scl, cmd)
-+                self.add_cmd_output(cmd, suggest_filename=filename)
-             else:  # no password in env or options
-                 self.soslog.warning(
-                     "password must be supplied to dump a database."
-@@ -92,18 +79,7 @@ class PostgreSQL(Plugin):
-                 )
- 
-     def setup(self):
--        self.pg_dump()
--
--    def postproc(self):
--        import shutil
--        if self.tmp_dir:
--            try:
--                shutil.rmtree(self.tmp_dir)
--            except shutil.Error:
--                self.soslog.exception(
--                    "Unable to remove %s." % (self.tmp_dir)
--                )
--                self.add_alert("ERROR: Unable to remove %s." % (self.tmp_dir))
-+        self.do_pg_dump()
- 
- 
- class RedHatPostgreSQL(PostgreSQL, SCLPlugin):
-@@ -140,10 +116,7 @@ class RedHatPostgreSQL(PostgreSQL, SCLPlugin):
-         )
- 
-         if scl in self.scls_matched:
--            self.pg_dump(
--                pg_dump_command="scl enable rh-postgresql95 -- pg_dump",
--                filename="sos_scl_pgdump.tar"
--            )
-+            self.do_pg_dump(scl=scl, filename="pgdump-scl-%s.tar" % scl)
- 
- 
- class DebianPostgreSQL(PostgreSQL, DebianPlugin, UbuntuPlugin):
--- 
-2.13.6
-
-From ede50e9cb4a5f2755eaeaf608fb2b3708f911422 Mon Sep 17 00:00:00 2001
-From: Pavel Moravec <pmoravec@redhat.com>
-Date: Wed, 20 Dec 2017 11:47:33 +0100
-Subject: [PATCH] [plugins] allow add_cmd_output to collect binary output
-
-If a command output is a true binary data, allow add_cmd_output to
-collect the raw content and dont try to decode it as UTF-8.
-
-Resolves: #1169
-
-Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
----
- sos/archive.py            | 16 ++++++++++------
- sos/plugins/__init__.py   | 33 ++++++++++++++++++---------------
- sos/plugins/postgresql.py |  3 ++-
- sos/utilities.py          |  5 +++--
- 4 files changed, 33 insertions(+), 24 deletions(-)
-
-diff --git a/sos/archive.py b/sos/archive.py
-index 607312a71..4bc2bedea 100644
---- a/sos/archive.py
-+++ b/sos/archive.py
-@@ -82,7 +82,7 @@ def log_debug(self, msg):
-     def add_file(self, src, dest=None):
-         raise NotImplementedError
- 
--    def add_string(self, content, dest):
-+    def add_string(self, content, dest, treat_binary):
-         raise NotImplementedError
- 
-     def add_link(self, source, link_name):
-@@ -198,12 +198,14 @@ def add_file(self, src, dest=None):
-         self.log_debug("added %s to FileCacheArchive '%s'" %
-                        (file_name, self._archive_root))
- 
--    def add_string(self, content, dest):
-+    def add_string(self, content, dest, treat_binary=False):
-         src = dest
-         dest = self.dest_path(dest)
-         self._check_path(dest)
--        f = codecs.open(dest, 'w', encoding='utf-8')
--        if isinstance(content, bytes):
-+        f = codecs.open(dest,
-+                        'wb' if treat_binary else 'w',
-+                        encoding=None if treat_binary else 'utf-8')
-+        if isinstance(content, bytes) and not treat_binary:
-             content = content.decode('utf8', 'ignore')
-         f.write(content)
-         if os.path.exists(src):
-@@ -212,8 +214,10 @@ def add_string(self, content, dest):
-             except OSError as e:
-                 self.log_error(
-                     "Unable to add '%s' to FileCacheArchive: %s" % (dest, e))
--        self.log_debug("added string at '%s' to FileCacheArchive '%s'"
--                       % (src, self._archive_root))
-+        self.log_debug("added %sstring at '%s' to FileCacheArchive '%s'"
-+                       % ('binary ' if treat_binary else '',
-+                           src,
-+                           self._archive_root))
- 
-     def add_link(self, source, link_name):
-         dest = self.dest_path(link_name)
-diff --git a/sos/plugins/__init__.py b/sos/plugins/__init__.py
-index 2a8bc516e..156f5ed36 100644
---- a/sos/plugins/__init__.py
-+++ b/sos/plugins/__init__.py
-@@ -587,7 +587,8 @@ def getmtime(path):
-                 self.archive.add_link(link_path, _file)
- 
-     def get_command_output(self, prog, timeout=300, stderr=True,
--                           chroot=True, runat=None, env=None):
-+                           chroot=True, runat=None, env=None,
-+                           treat_binary=False):
-         if chroot or self.commons['cmdlineopts'].chroot == 'always':
-             root = self.sysroot
-         else:
-@@ -595,7 +596,7 @@ def get_command_output(self, prog, timeout=300, stderr=True,
- 
-         result = sos_get_command_output(prog, timeout=timeout, stderr=stderr,
-                                         chroot=root, chdir=runat,
--                                        env=env)
-+                                        env=env, treat_binary=treat_binary)
- 
-         if result['status'] == 124:
-             self._log_warn("command '%s' timed out after %ds"
-@@ -586,7 +586,8 @@ class Plugin(object):
-                                % (prog.split()[0], root))
-                 return self.get_command_output(prog, timeout=timeout,
-                                                chroot=False, runat=runat,
--                                               env=env)
-+                                               env=env,
-+                                               treat_binary=treat_binary)
-             self._log_debug("could not run '%s': command not found" % prog)
-         return result
- 
-@@ -632,14 +634,14 @@ def check_ext_prog(self, prog):
- 
-     def _add_cmd_output(self, cmd, suggest_filename=None,
-                         root_symlink=None, timeout=300, stderr=True,
--                        chroot=True, runat=None, env=None):
-+                        chroot=True, runat=None, env=None, treat_binary=False):
-         """Internal helper to add a single command to the collection list."""
-         cmdt = (
-             cmd, suggest_filename,
-             root_symlink, timeout, stderr,
--            chroot, runat, env
-+            chroot, runat, env, treat_binary
-         )
--        _tuplefmt = "('%s', '%s', '%s', %s, '%s', '%s', '%s', '%s')"
-+        _tuplefmt = "('%s', '%s', '%s', %s, '%s', '%s', '%s', '%s', '%s')"
-         _logstr = "packed command tuple: " + _tuplefmt
-         self._log_debug(_logstr % cmdt)
-         self.collect_cmds.append(cmdt)
-@@ -647,7 +649,7 @@ def _add_cmd_output(self, cmd, suggest_filename=None,
- 
-     def add_cmd_output(self, cmds, suggest_filename=None,
-                        root_symlink=None, timeout=300, stderr=True,
--                       chroot=True, runat=None, env=None):
-+                       chroot=True, runat=None, env=None, treat_binary=False):
-         """Run a program or a list of programs and collect the output"""
-         if isinstance(cmds, six.string_types):
-             cmds = [cmds]
-@@ -656,7 +658,7 @@ def add_cmd_output(self, cmds, suggest_filename=None,
-         for cmd in cmds:
-             self._add_cmd_output(cmd, suggest_filename,
-                                  root_symlink, timeout, stderr,
--                                 chroot, runat, env)
-+                                 chroot, runat, env, treat_binary)
- 
-     def get_cmd_output_path(self, name=None, make=True):
-         """Return a path into which this module should store collected
-@@ -683,14 +684,15 @@ class Plugin(object):
- 
-     def get_cmd_output_now(self, exe, suggest_filename=None,
-                            root_symlink=False, timeout=300, stderr=True,
--                           chroot=True, runat=None, env=None):
-+                           chroot=True, runat=None, env=None,
-+                           treat_binary=False):
-         """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,
--                                         env=env)
-+                                         env=env, treat_binary=treat_binary)
-         # 126 means 'found but not executable'
-         if result['status'] == 126 or result['status'] == 127:
-             return None
-@@ -729,7 +732,7 @@ def get_cmd_output_now(self, exe, suggest_filename=None,
-             outfn = self._make_command_filename(exe)
- 
-         outfn_strip = outfn[len(self.commons['cmddir'])+1:]
--        self.archive.add_string(result['output'], outfn)
-+        self.archive.add_string(result['output'], outfn, treat_binary)
-         if root_symlink:
-             self.archive.add_link(outfn, root_symlink)
- 
-@@ -839,16 +842,16 @@ def _collect_cmd_output(self):
-                 timeout,
-                 stderr,
-                 chroot, runat,
--                env
-+                env, treat_binary
-             ) = progs[0]
--            self._log_debug("unpacked command tuple: " +
--                            "('%s', '%s', '%s', %s, '%s', '%s', '%s', '%s')" %
--                            progs[0])
-+            self._log_debug(("unpacked command tuple: " +
-+                            "('%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,
--                                    env=env)
-+                                    env=env, treat_binary=treat_binary)
- 
-     def _collect_strings(self):
-         for string, file_name in self.copy_strings:
-diff --git a/sos/plugins/postgresql.py b/sos/plugins/postgresql.py
-index 9ba696be2..07db22fdd 100644
---- a/sos/plugins/postgresql.py
-+++ b/sos/plugins/postgresql.py
-@@ -69,7 +69,8 @@ def do_pg_dump(self, scl=None, filename="pgdump.tar"):
- 
-                 if scl is not None:
-                     cmd = self.convert_cmd_scl(scl, cmd)
--                self.add_cmd_output(cmd, suggest_filename=filename)
-+                self.add_cmd_output(cmd, suggest_filename=filename,
-+                                    treat_binary=True)
-             else:  # no password in env or options
-                 self.soslog.warning(
-                     "password must be supplied to dump a database."
-diff --git a/sos/utilities.py b/sos/utilities.py
-index 55bb1dc96..a9040ba28 100644
---- a/sos/utilities.py
-+++ b/sos/utilities.py
-@@ -110,7 +110,8 @@ def is_executable(command):
- 
- 
- def sos_get_command_output(command, timeout=300, stderr=False,
--                           chroot=None, chdir=None, env=None):
-+                           chroot=None, chdir=None, env=None,
-+                           treat_binary=False):
-     """Execute a command and return a dictionary of status and output,
-     optionally changing root or current working directory before
-     executing command.
-@@ -164,7 +165,7 @@ def _child_prep_fn():
- 
-     return {
-         'status': p.returncode,
--        'output': stdout.decode('utf-8', 'ignore')
-+        'output': stdout if treat_binary else stdout.decode('utf-8', 'ignore')
-     }
- 
- 
diff --git a/SOURCES/sos-bz1517767-osp-ironic.patch b/SOURCES/sos-bz1517767-osp-ironic.patch
new file mode 100644
index 0000000..697cf3e
--- /dev/null
+++ b/SOURCES/sos-bz1517767-osp-ironic.patch
@@ -0,0 +1,160 @@
+From 24dc645e5f09af921bd74bf2808ef8c99dd4cfb9 Mon Sep 17 00:00:00 2001
+From: Dmitry Tantsur <divius.inside@gmail.com>
+Date: Thu, 26 Oct 2017 11:59:26 +0000
+Subject: [PATCH 1/4] [openstack_ironic] collect drivers, ports and port groups
+
+Existing collection of ports is extended with the --long option.
+
+Signed-off-by: Dmitry Tantsur <divius.inside@gmail.com>
+---
+ sos/plugins/openstack_ironic.py | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/sos/plugins/openstack_ironic.py b/sos/plugins/openstack_ironic.py
+index f4e0a97d3..b25bf81b2 100644
+--- a/sos/plugins/openstack_ironic.py
++++ b/sos/plugins/openstack_ironic.py
+@@ -82,8 +82,10 @@ def setup(self):
+                                 "the environment file for the user intended "
+                                 "to connect to the OpenStack environment.")
+         else:
++            self.add_cmd_output("openstack baremetal driver list --long")
+             self.add_cmd_output("openstack baremetal node list --long")
+-            self.add_cmd_output("openstack baremetal port list")
++            self.add_cmd_output("openstack baremetal port list --long")
++            self.add_cmd_output("openstack baremetal port group list --long")
+ 
+     def postproc(self):
+         protect_keys = [
+
+From a03031587a3470a92f3c4002c7e645b18867ff61 Mon Sep 17 00:00:00 2001
+From: Dmitry Tantsur <divius.inside@gmail.com>
+Date: Thu, 26 Oct 2017 12:01:46 +0000
+Subject: [PATCH 2/4] [openstack_ironic] collect information about
+ ironic-inspector
+
+ironic-discoverd was renamed to ironic-inspector in the Liberty
+release. This change adds support for the new name.
+
+Signed-off-by: Dmitry Tantsur <divius.inside@gmail.com>
+---
+ sos/plugins/openstack_ironic.py | 24 +++++++++++++++++++++++-
+ 1 file changed, 23 insertions(+), 1 deletion(-)
+
+diff --git a/sos/plugins/openstack_ironic.py b/sos/plugins/openstack_ironic.py
+index b25bf81b2..123d4b7cc 100644
+--- a/sos/plugins/openstack_ironic.py
++++ b/sos/plugins/openstack_ironic.py
+@@ -77,7 +77,9 @@ def setup(self):
+         vars_any = [p in os.environ for p in [
+                     'OS_TENANT_NAME', 'OS_PROJECT_NAME']]
+ 
+-        if not (all(vars_all) and any(vars_any)):
++        self.osc_available = all(vars_all) and any(vars_any)
++
++        if not self.osc_available:
+             self.soslog.warning("Not all environment variables set. Source "
+                                 "the environment file for the user intended "
+                                 "to connect to the OpenStack environment.")
+@@ -137,4 +139,24 @@ def setup(self):
+             self.add_journal(units="openstack-ironic-discoverd")
+             self.add_journal(units="openstack-ironic-discoverd-dnsmasq")
+ 
++        # ironic-discoverd was renamed to ironic-inspector in Liberty
++        self.conf_list.append('/etc/ironic-inspector/*')
++        self.conf_list.append(self.var_puppet_gen + '/etc/ironic-inspector/*')
++        self.add_copy_spec('/etc/ironic-inspector/')
++        self.add_copy_spec(self.var_puppet_gen + '/etc/ironic-inspector/')
++        self.add_copy_spec('/var/lib/ironic-inspector/')
++        if self.get_option("all_logs"):
++            self.add_copy_spec('/var/log/ironic-inspector/')
++            self.add_copy_spec('/var/log/containers/ironic-inspector/')
++        else:
++            self.add_copy_spec('/var/log/ironic-inspector/*.log')
++            self.add_copy_spec('/var/log/ironic-inspector/ramdisk/')
++            self.add_copy_spec('/var/log/containers/ironic-inspector/*.log')
++            self.add_copy_spec('/var/log/containers/ironic-inspector/ramdisk/')
++
++        self.add_journal(units="openstack-ironic-inspector-dnsmasq")
++
++        if self.osc_available:
++            self.add_cmd_output("openstack baremetal introspection list")
++
+ # vim: set et ts=4 sw=4 :
+
+From 9c91e28aa7356b96a198606a74d1b39d7ec66891 Mon Sep 17 00:00:00 2001
+From: Dmitry Tantsur <divius.inside@gmail.com>
+Date: Thu, 26 Oct 2017 12:12:25 +0000
+Subject: [PATCH 3/4] [openstack_ironic] collect PXE environment information
+
+This adds two directories, /httpboot and /tftpboot, as well as version
+of iPXE boot images package.
+
+Signed-off-by: Dmitry Tantsur <divius.inside@gmail.com>
+---
+ sos/plugins/openstack_ironic.py | 7 +++----
+ 1 file changed, 3 insertions(+), 4 deletions(-)
+
+diff --git a/sos/plugins/openstack_ironic.py b/sos/plugins/openstack_ironic.py
+index 123d4b7cc..51118634b 100644
+--- a/sos/plugins/openstack_ironic.py
++++ b/sos/plugins/openstack_ironic.py
+@@ -63,10 +63,9 @@ def setup(self):
+                 "/var/log/containers/httpd/ironic-api/*log"
+             ], sizelimit=self.limit)
+ 
+-        self.add_cmd_output('ls -laRt /var/lib/ironic/')
+-        self.add_cmd_output(
+-            'ls -laRt ' + self.var_puppet_gen + '/var/lib/ironic/'
+-        )
++        for path in ['/var/lib/ironic', '/httpboot', '/tftpboot']:
++            self.add_cmd_output('ls -laRt %s' % path)
++            self.add_cmd_output('ls -laRt %s' % (self.var_puppet_gen + path))
+ 
+         if self.get_option("verify"):
+             self.add_cmd_output("rpm -V %s" % ' '.join(self.packages))
+
+From c33d82592b7145c6a26a47280b750eea41eeb63e Mon Sep 17 00:00:00 2001
+From: Dmitry Tantsur <divius.inside@gmail.com>
+Date: Thu, 26 Oct 2017 12:25:08 +0000
+Subject: [PATCH 4/4] [openstack_ironic] collect introspection data for all
+ nodes
+
+Signed-off-by: Dmitry Tantsur <divius.inside@gmail.com>
+---
+ sos/plugins/openstack_ironic.py | 16 ++++++++++++++++
+ 1 file changed, 16 insertions(+)
+
+diff --git a/sos/plugins/openstack_ironic.py b/sos/plugins/openstack_ironic.py
+index 51118634b..ddb094e01 100644
+--- a/sos/plugins/openstack_ironic.py
++++ b/sos/plugins/openstack_ironic.py
+@@ -125,6 +125,20 @@ class RedHatIronic(OpenStackIronic, RedHatPlugin):
+         'openstack-ironic-discoverd-ramdisk'
+     ]
+ 
++    def collect_introspection_data(self):
++        uuids_result = self.call_ext_prog('openstack baremetal node list '
++                                          '-f value -c UUID')
++        if uuids_result['status']:
++            self.soslog.warning('Failed to fetch list of ironic node UUIDs, '
++                                'introspection data won\'t be collected')
++            return
++
++        uuids = [uuid for uuid in uuids_result['output'].split()
++                 if uuid.strip()]
++        for uuid in uuids:
++            self.add_cmd_output('openstack baremetal introspection '
++                                'data save %s' % uuid)
++
+     def setup(self):
+         super(RedHatIronic, self).setup()
+ 
+@@ -157,5 +171,7 @@ def setup(self):
+ 
+         if self.osc_available:
+             self.add_cmd_output("openstack baremetal introspection list")
++            if self.get_option("all_logs"):
++                self.collect_introspection_data()
+ 
+ # vim: set et ts=4 sw=4 :
diff --git a/SOURCES/sos-bz1519267-haproxy-etcd-tracebacks.patch b/SOURCES/sos-bz1519267-haproxy-etcd-tracebacks.patch
new file mode 100644
index 0000000..c440077
--- /dev/null
+++ b/SOURCES/sos-bz1519267-haproxy-etcd-tracebacks.patch
@@ -0,0 +1,158 @@
+From 0b30e8f72c3c669455209d15b1eb01de20c7d578 Mon Sep 17 00:00:00 2001
+From: Louis Bouchard <louis@ubuntu.com>
+Date: Wed, 8 Nov 2017 14:15:36 +0100
+Subject: [PATCH] [haproxy] Fix py2 specific import syntax for urlparse
+
+urlparse is now part of urllib in python3. Make sure that
+the proxy behaves correctly on both versions.
+
+Closes: #1137
+
+Signed-off-by: Louis Bouchard <louis@ubuntu.com>
+
+Fixes: #1138
+
+Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
+---
+ sos/plugins/haproxy.py | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/sos/plugins/haproxy.py b/sos/plugins/haproxy.py
+index 390b6ddb..eb696c9f 100644
+--- a/sos/plugins/haproxy.py
++++ b/sos/plugins/haproxy.py
+@@ -15,9 +15,13 @@
+ # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ 
+ from sos.plugins import Plugin, RedHatPlugin, DebianPlugin
+-from urlparse import urlparse
+ from re import match
+ 
++try:
++    from urllib.parse import urlparse
++except ImportError:
++    from urlparse import urlparse
++
+ 
+ class HAProxy(Plugin, RedHatPlugin, DebianPlugin):
+     """HAProxy load balancer
+-- 
+2.13.6
+
+From ae56ea578fe6f7443d2dce73e2b8fcf2bd5542d1 Mon Sep 17 00:00:00 2001
+From: Pavel Moravec <pmoravec@redhat.com>
+Date: Tue, 5 Dec 2017 12:44:42 +0100
+Subject: [PATCH] [etcd] dont traceback when etcd package isnt installed
+
+catch exception when etcd package isnt installed and we inspect its
+version
+
+Resolves: #1159
+
+Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
+---
+ sos/plugins/etcd.py | 17 +++++++++++------
+ 1 file changed, 11 insertions(+), 6 deletions(-)
+
+diff --git a/sos/plugins/etcd.py b/sos/plugins/etcd.py
+index bd5d10d8..d80bbeeb 100644
+--- a/sos/plugins/etcd.py
++++ b/sos/plugins/etcd.py
+@@ -61,11 +61,16 @@ class etcd(Plugin, RedHatPlugin):
+                         return line.split('=')[1].replace('"', '').strip()
+         # If we can't read etcd.conf, assume defaults by etcd version
+         except:
+-            ver = self.policy().package_manager.get_pkg_list()['etcd']
+-            ver = ver['version'][0]
+-            if ver == '2':
+-                return 'http://localhost:4001'
+-            if ver == '3':
+-                return 'http://localhost:2379'
++            # assume v3 is the default
++            url = 'http://localhost:2379'
++            try:
++                ver = self.policy().package_manager.get_pkg_list()['etcd']
++                ver = ver['version'][0]
++                if ver == '2':
++                    url = 'http://localhost:4001'
++            except:
++                # fallback when etcd is not installed
++                pass
++            return url
+ 
+ # vim: et ts=5 sw=4
+-- 
+2.13.6
+
+From 119593cff13b1d1d8d34b11fbb92893d70e634d6 Mon Sep 17 00:00:00 2001
+From: Pavel Moravec <pmoravec@redhat.com>
+Date: Tue, 5 Dec 2017 12:52:40 +0100
+Subject: [PATCH] [haproxy] catch exception when parsing haproxy.cfg
+
+catch exception when parsed haproxy.cfg file isnt accessible
+
+Resolves: #1160
+
+Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
+---
+ sos/plugins/haproxy.py | 14 +++++++++-----
+ 1 file changed, 9 insertions(+), 5 deletions(-)
+
+diff --git a/sos/plugins/haproxy.py b/sos/plugins/haproxy.py
+index eb696c9f..1807e6d7 100644
+--- a/sos/plugins/haproxy.py
++++ b/sos/plugins/haproxy.py
+@@ -49,11 +49,15 @@ class HAProxy(Plugin, RedHatPlugin, DebianPlugin):
+         # from the next line
+         matched = None
+         provision_ip = None
+-        for line in open("/etc/haproxy/haproxy.cfg").read().splitlines():
+-            if matched:
+-                provision_ip = line.split()[1]
+-                break
+-            matched = match(".*haproxy\.stats.*", line)
++        try:
++            for line in open("/etc/haproxy/haproxy.cfg").read().splitlines():
++                if matched:
++                    provision_ip = line.split()[1]
++                    break
++                matched = match(".*haproxy\.stats.*", line)
++        except:
++            # fallback when the cfg file is not accessible
++            pass
+ 
+         if not provision_ip:
+             return
+-- 
+2.13.6
+
+From 68e149809d5b487d0c5800b5a1a005aaad83c7be Mon Sep 17 00:00:00 2001
+From: Pavel Moravec <pmoravec@redhat.com>
+Date: Wed, 15 Nov 2017 17:43:45 +0100
+Subject: [PATCH] [docker] fix copy&paste error in a for cycle
+
+"containers" is an unknown variable, "insp" is the correct one
+
+Resolves: #1148
+
+Signed-off-by: Pavel Moravec <pmoravec@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 fea4b96c..4f6c9882 100644
+--- a/sos/plugins/docker.py
++++ b/sos/plugins/docker.py
+@@ -97,7 +97,7 @@ class Docker(Plugin):
+                     )
+                 )
+             if self.get_option('logs'):
+-                for container in containers:
++                for container in insp:
+                     self.add_cmd_output(
+                         "{0} logs {1}".format(
+                             self.docker_cmd,
+-- 
+2.13.6
+
diff --git a/SOURCES/sos-bz1525620-rabbitmq-osp12-containerized.patch b/SOURCES/sos-bz1525620-rabbitmq-osp12-containerized.patch
new file mode 100644
index 0000000..94ca8d2
--- /dev/null
+++ b/SOURCES/sos-bz1525620-rabbitmq-osp12-containerized.patch
@@ -0,0 +1,81 @@
+From 2780f6d6ec3a4db72ed5a00aea15ac750394314c Mon Sep 17 00:00:00 2001
+From: Michele Baldessari <michele@acksyn.org>
+Date: Wed, 17 Jan 2018 15:07:53 +0100
+Subject: [PATCH] [rabbitmq] Log collection fixes when rabbitmq runs in a
+ container
+
+When rabbitmq is running inside a container all the rabbitmqctl
+commands will fail with some obscure (welsh?) error messages like:
+
+$ rabbitmqctl cluster_status
+erno" ienrirto rt elromgigneart ipnrge sienn td)o _booetr"r,o{r: b<a0d.ar2g.,0[>{
+l_prim_loader,check_file_result,3,[]},{init,get_boot,1,[]},{init,get_boot,2,[]},{init,do_boot,3,[]}]}}
+init terminating in do_boot ()
+
+When run inside containers we need to run any rabbitmqctl command inside
+the container, so that output is properly collected:
+$ docker exec -t rabbitmq-bundle-docker-0 rabbitmqctl cluster_status
+Cluster status of node 'rabbit@controller-0' ...
+[{nodes,[{disc,['rabbit@controller-0','rabbit@controller-1',
+                'rabbit@controller-2']}]},
+ {running_nodes,['rabbit@controller-2','rabbit@controller-1',
+                 'rabbit@controller-0']},
+ {cluster_name,<<"rabbit@controller-0.localdomain">>},
+ {partitions,[]},
+ {alarms,[{'rabbit@controller-2',[]},
+          {'rabbit@controller-1',[]},
+          {'rabbit@controller-0',[]}]}]
+
+While we're at it we also collect the logs of any rabbitmq container.
+This is particularly useful in containerized openstack deployments
+where short-lived containers are used to set up the cloud.
+
+Since the info output by 'rabbitmqctl cluster_status' and 'rabbitmqctl
+list_policies' is already contained in 'rabbitmqctl report', we just
+remove the former two commands.
+
+First reported via RHBZ#1525620
+
+Signed-off-by: Michele Baldessari <michele@acksyn.org>
+Signed-off-by: John Eckersberg <jeckersb@redhat.com>
+---
+ sos/plugins/rabbitmq.py | 23 ++++++++++++++++++++---
+ 1 file changed, 20 insertions(+), 3 deletions(-)
+
+diff --git a/sos/plugins/rabbitmq.py b/sos/plugins/rabbitmq.py
+index 2c7e428a..8057dd90 100644
+--- a/sos/plugins/rabbitmq.py
++++ b/sos/plugins/rabbitmq.py
+@@ -28,9 +28,26 @@ class RabbitMQ(Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin):
+     packages = ('rabbitmq-server',)
+ 
+     def setup(self):
+-        self.add_cmd_output("rabbitmqctl report")
+-        self.add_cmd_output("rabbitmqctl cluster_status")
+-        self.add_cmd_output("rabbitmqctl list_policies")
++        container_status = self.get_command_output(
++            "docker ps -a --format='{{ .Names }}'")
++
++        in_container = False
++        container_names = []
++        if container_status['status'] == 0:
++            for line in container_status['output'].splitlines():
++                if line.startswith("rabbitmq"):
++                    in_container = True
++                    container_names.append(line)
++
++        if in_container:
++            for container in container_names:
++                self.add_cmd_output('docker logs {0}'.format(container))
++                self.add_cmd_output(
++                    'docker exec -t {0} rabbitmqctl report'
++                    .format(container)
++                )
++        else:
++            self.add_cmd_output("rabbitmqctl report")
+ 
+         self.add_copy_spec([
+             "/etc/rabbitmq/*",
+-- 
+2.13.6
+
diff --git a/SOURCES/sos-bz1535390-ipa-logs.patch b/SOURCES/sos-bz1535390-ipa-logs.patch
new file mode 100644
index 0000000..787c162
--- /dev/null
+++ b/SOURCES/sos-bz1535390-ipa-logs.patch
@@ -0,0 +1,205 @@
+From 15ba40684bf4dceb0cc5ae535212c005c5bb7f9a Mon Sep 17 00:00:00 2001
+From: Martin Basti <mbasti@redhat.com>
+Date: Wed, 17 May 2017 13:45:41 +0200
+Subject: [PATCH] [ipa] add KRA logs
+
+IPA v4 can be installed with KRA subsystem. Adding particular logs to
+plugin.
+
+Closes: #1010
+
+Signed-off-by: Martin Basti <mbasti@redhat.com>
+---
+ sos/plugins/ipa.py | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/sos/plugins/ipa.py b/sos/plugins/ipa.py
+index dc0eb839..03c601d4 100644
+--- a/sos/plugins/ipa.py
++++ b/sos/plugins/ipa.py
+@@ -60,6 +60,10 @@ class Ipa(Plugin, RedHatPlugin):
+                "/var/log/pki/pki-tomcat/ca/transactions",
+                "/var/log/pki/pki-tomcat/catalina.*",
+                "/var/log/pki/pki-ca-spawn.*"
++               "/var/log/pki/pki-tomcat/kra/debug",
++               "/var/log/pki/pki-tomcat/kra/system",
++               "/var/log/pki/pki-tomcat/kra/transactions",
++               "/var/log/pki/pki-kra-spawn.*"
+             ])
+         elif ipa_version == "v3":
+             self.add_copy_spec([
+-- 
+2.13.6
+
+From 4562b41f0d9dcfc07e7fc0ab3b0b253d609a459f Mon Sep 17 00:00:00 2001
+From: Thorsten Scherf <tscherf@redhat.com>
+Date: Mon, 11 Dec 2017 11:04:17 +0100
+Subject: [PATCH] [ipa] use correct PKI directories for tomcat version
+
+The PKI subsystem uses different folders in IPA v3 and v4 for the NSS DB and
+the configuration files. The plugin needs to take this into account.
+
+Closes: #1163
+
+Signed-off-by: Thorsten Scherf <tscherf@redhat.com>
+Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
+---
+ sos/plugins/ipa.py | 23 ++++++++++++++++++-----
+ 1 file changed, 18 insertions(+), 5 deletions(-)
+
+diff --git a/sos/plugins/ipa.py b/sos/plugins/ipa.py
+index 683f8254..fe6ddf08 100644
+--- a/sos/plugins/ipa.py
++++ b/sos/plugins/ipa.py
+@@ -83,6 +83,9 @@ class Ipa(Plugin, RedHatPlugin):
+         self.pki_tomcat_dir_v4 = "/var/lib/pki/pki-tomcat"
+         self.pki_tomcat_dir_v3 = "/var/lib/pki-ca"
+ 
++        self.pki_tomcat_conf_dir_v4 = "/etc/pki/pki-tomcat/ca"
++        self.pki_tomcat_conf_dir_v3 = "/etc/pki-ca"
++
+         if self.ipa_server_installed():
+             self._log_debug("IPA server install detected")
+ 
+@@ -111,7 +114,6 @@ class Ipa(Plugin, RedHatPlugin):
+             "/etc/dirsrv/slapd-*/schema/99user.ldif",
+             "/etc/hosts",
+             "/etc/named.*",
+-            "/etc/pki-ca/CS.cfg",
+             "/etc/ipa/ca.crt",
+             "/etc/ipa/default.conf",
+             "/var/lib/certmonger/requests/[0-9]*",
+@@ -119,22 +121,33 @@ class Ipa(Plugin, RedHatPlugin):
+         ])
+ 
+         self.add_forbidden_path("/etc/pki/nssdb/key*")
+-        self.add_forbidden_path("/etc/pki-ca/flatfile.txt")
+-        self.add_forbidden_path("/etc/pki-ca/password.conf")
+-        self.add_forbidden_path("/var/lib/pki-ca/alias/key*")
+         self.add_forbidden_path("/etc/dirsrv/slapd-*/key*")
+         self.add_forbidden_path("/etc/dirsrv/slapd-*/pin.txt")
+         self.add_forbidden_path("/etc/dirsrv/slapd-*/pwdfile.txt")
+         self.add_forbidden_path("/etc/named.keytab")
+ 
++        #  Make sure to use the right PKI config and NSS DB folders
++        if ipa_version == "v4":
++            self.pki_tomcat_dir = self.pki_tomcat_dir_v4
++            self.pki_tomcat_conf_dir = self.pki_tomcat_conf_dir_v4
++        else:
++            self.pki_tomcat_dir = self.pki_tomcat_dir_v3
++            self.pki_tomcat_conf_dir = self.pki_tomcat_conf_dir_v3
++
++        self.add_cmd_output("certutil -L -d %s/alias" % self.pki_tomcat_dir)
++        self.add_copy_spec("%s/CS.cfg" % self.pki_tomcat_conf_dir)
++        self.add_forbidden_path("%s/alias/key*" % self.pki_tomcat_dir)
++        self.add_forbidden_path("%s/flatfile.txt" % self.pki_tomcat_conf_dir)
++        self.add_forbidden_path("%s/password.conf" % self.pki_tomcat_conf_dir)
++
+         self.add_cmd_output([
+             "ls -la /etc/dirsrv/slapd-*/schema/",
+             "getcert list",
+-            "certutil -L -d /var/lib/pki-ca/alias",
+             "certutil -L -d /etc/httpd/alias/",
+             "klist -ket /etc/dirsrv/ds.keytab",
+             "klist -ket /etc/httpd/conf/ipa.keytab"
+         ])
++
+         for certdb_directory in glob("/etc/dirsrv/slapd-*/"):
+             self.add_cmd_output(["certutil -L -d %s" % certdb_directory])
+         return
+-- 
+2.13.6
+
+From 66ef850794ad250bfe5c72795f442f908e1e3e19 Mon Sep 17 00:00:00 2001
+From: Pavel Moravec <pmoravec@redhat.com>
+Date: Fri, 26 Jan 2018 15:11:15 +0100
+Subject: [PATCH] [ipa] fix implicit concatenation of one copy_spec
+
+Missing comma between "/var/log/pki/pki-ca-spawn.*"
+and "/var/log/pki/pki-tomcat/kra/debug"
+
+Resolves: #1195
+
+Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
+---
+ sos/plugins/ipa.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/sos/plugins/ipa.py b/sos/plugins/ipa.py
+index fe6ddf08..08f9bcf1 100644
+--- a/sos/plugins/ipa.py
++++ b/sos/plugins/ipa.py
+@@ -59,7 +59,7 @@ class Ipa(Plugin, RedHatPlugin):
+                "/var/log/pki/pki-tomcat/ca/system",
+                "/var/log/pki/pki-tomcat/ca/transactions",
+                "/var/log/pki/pki-tomcat/catalina.*",
+-               "/var/log/pki/pki-ca-spawn.*"
++               "/var/log/pki/pki-ca-spawn.*",
+                "/var/log/pki/pki-tomcat/kra/debug",
+                "/var/log/pki/pki-tomcat/kra/system",
+                "/var/log/pki/pki-tomcat/kra/transactions",
+-- 
+2.13.6
+
+From 37c6601ddbc5ab6559a8420ce8f630d00086b1e1 Mon Sep 17 00:00:00 2001
+From: Martin Basti <mbasti@redhat.com>
+Date: Wed, 17 May 2017 13:53:20 +0200
+Subject: [PATCH] [ipa] add apache profile
+
+httpd error_log collected by apache plugin contains useful
+information about IPA API operations
+
+Closes: #1010
+
+Signed-off-by: Martin Basti <mbasti@redhat.com>
+---
+ sos/plugins/ipa.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/sos/plugins/ipa.py b/sos/plugins/ipa.py
+index 3a0565bc..683f8254 100644
+--- a/sos/plugins/ipa.py
++++ b/sos/plugins/ipa.py
+@@ -24,7 +24,7 @@ class Ipa(Plugin, RedHatPlugin):
+     """
+ 
+     plugin_name = 'ipa'
+-    profiles = ('identity',)
++    profiles = ('identity', 'apache')
+ 
+     ipa_server = False
+     ipa_client = False
+-- 
+2.13.6
+
+From 400f61627fe0e45192fd05c7323ee9c96d2cad37 Mon Sep 17 00:00:00 2001
+From: Pavel Moravec <pmoravec@redhat.com>
+Date: Tue, 13 Feb 2018 16:42:59 +0100
+Subject: [PATCH] [ipa] set ipa_version variable before referencing it
+
+In case neither IPA v3 or v4 is installed, ipa_version remains
+uninitialized before referencing it.
+
+Resolves: #1214
+
+Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
+---
+ sos/plugins/ipa.py | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/sos/plugins/ipa.py b/sos/plugins/ipa.py
+index 08f9bcf1..0d79063f 100644
+--- a/sos/plugins/ipa.py
++++ b/sos/plugins/ipa.py
+@@ -86,6 +86,8 @@ class Ipa(Plugin, RedHatPlugin):
+         self.pki_tomcat_conf_dir_v4 = "/etc/pki/pki-tomcat/ca"
+         self.pki_tomcat_conf_dir_v3 = "/etc/pki-ca"
+ 
++        ipa_version = None
++
+         if self.ipa_server_installed():
+             self._log_debug("IPA server install detected")
+ 
+-- 
+2.13.6
+
diff --git a/SOURCES/sos-bz1539038-etcd-private-keys.patch b/SOURCES/sos-bz1539038-etcd-private-keys.patch
new file mode 100644
index 0000000..a764cc2
--- /dev/null
+++ b/SOURCES/sos-bz1539038-etcd-private-keys.patch
@@ -0,0 +1,28 @@
+From b9ace2788c2f9c327ac519fa007bc08470f4fd2b Mon Sep 17 00:00:00 2001
+From: Jake Hunsaker <jhunsake@redhat.com>
+Date: Thu, 25 Jan 2018 17:43:12 -0500
+Subject: [PATCH] [etcd] Do not collect private etcd keys
+
+Prevents sos from capturing the /etc/etcd/ca directory and its contents,
+which is primarily private keys and the like.
+
+Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
+---
+ sos/plugins/etcd.py | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/sos/plugins/etcd.py b/sos/plugins/etcd.py
+index d80bbeeb..884aa1bd 100644
+--- a/sos/plugins/etcd.py
++++ b/sos/plugins/etcd.py
+@@ -31,6 +31,7 @@ class etcd(Plugin, RedHatPlugin):
+     def setup(self):
+         etcd_url = self.get_etcd_url()
+ 
++        self.add_forbidden_path('/etc/etcd/ca')
+         self.add_copy_spec('/etc/etcd')
+ 
+         subcmds = [
+-- 
+2.13.6
+
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/SPECS/sos.spec b/SPECS/sos.spec
index 753fff1..3dd1ee2 100644
--- a/SPECS/sos.spec
+++ b/SPECS/sos.spec
@@ -1,8 +1,8 @@
 %{!?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.4
-Release: 13%{?dist}
+Version: 3.5
+Release: 6%{?dist}
 Group: Applications/System
 Source0: https://github.com/sosreport/sos/archive/%{version}.tar.gz
 License: GPLv2+
@@ -17,23 +17,18 @@ Requires: bzip2
 Requires: xz
 Obsoletes: sos-plugins-openstack
 Patch0: skip-generating-doc.patch
-Patch1: sos-bz1438257-collect-cmds-with-return-1.patch
-Patch2: sos-bz1438269-ceph-collect-etc-calamari.patch
-Patch3: sos-bz1444641-virsh-uncaught-exception.patch
-Patch4: sos-bz1250346-openstack-tripleo.patch
-Patch5: sos-bz1442078-container-test-oci.patch
-Patch6: sos-bz1416535-pacemaker-user-logs.patch
-Patch7: sos-bz1148381-libvirt-cgroups-collection.patch
-Patch8: sos-bz1449904-ceph-tmp-mount-exclude.patch
-Patch9: sos-bz1393961-missing-filesystem-nonfatal.patch
-Patch10: sos-bz1400407-samba-dc-connect.patch
-Patch11: sos-bz1470573-tripleo-add-ui-logs.patch
-Patch12: sos-bz1463635-openstack-containerized-tripleo.patch
-Patch13: sos-bz1482574-jars-redundant-os-walk.patch
-Patch14: sos-bz1491964-gluster-block-plugin.patch
-Patch15: sos-bz1511087-openstack-containerized-further-updates.patch
-Patch16: sos-bz1515113-postgresql-from-scl.patch
-Patch17: sos-centos-branding.patch
+Patch1: sos-bz1509079-vdo.patch
+Patch2: sos-bz1506908-openstack-containerized.patch
+Patch3: sos-bz1483414-opendaylight-plugin.patch
+Patch4: sos-bz1491042-keystone-domains.patch
+Patch5: sos-bz1519267-haproxy-etcd-tracebacks.patch
+Patch6: sos-bz1463509-oc-adm-diagnostics.patch
+Patch7: sos-bz1494420-postgresql-scl-path.patch
+Patch8: sos-bz1353873-pcp-logsize.patch
+Patch9: sos-bz1517767-osp-ironic.patch
+Patch10: sos-bz1539038-etcd-private-keys.patch
+Patch11: sos-bz1535390-ipa-logs.patch
+Patch12: sos-bz1525620-rabbitmq-osp12-containerized.patch
 
 %description
 Sos is a set of tools that gathers information about system
@@ -56,11 +51,6 @@ support technicians and developers.
 %patch10 -p1
 %patch11 -p1
 %patch12 -p1
-%patch13 -p1
-%patch14 -p1
-%patch15 -p1
-%patch16 -p1
-%patch17 -p1
 
 %build
 make
@@ -84,34 +74,50 @@ rm -rf ${RPM_BUILD_ROOT}
 %config(noreplace) %{_sysconfdir}/sos.conf
 
 %changelog
-* Thu Jan 25 2018 CentOS Sources <bugs@centos.org> - 3.4-13.el7.centos
-- Roll in CentOS Branding
-
-* Thu Jan 04 2018 Pavel Moravec <pmoravec@redhat.com> = 3.4-13
+* Tue Feb 13 2018 Pavel Moravec <pmoravec@redhat.com> = 3.5-6
+- [ipa] set ipa_version variable before referencing it
+  Resolves: bz1535390
+
+* Tue Feb 13 2018 Pavel Moravec <pmoravec@redhat.com> = 3.5-5
+- [rabbitmq] Log collection when run in containerized OSP
+  Resolves: bz1525620
+- [ipa] add KRA logs and correct PKI directories
+  Resolves: bz1535390
+- [opendaylight] Enable plugin by puppet-opendaylight package
+  Resolves: bz1483414
+- [etcd] Do not collect private etcd keys
+  Resolves: bz1539038
+
+* Tue Jan 16 2018 Pavel Moravec <pmoravec@redhat.com> = 3.5-4
+- [pcp] really apply sizelimit to logs collected
+  Resolves: bz1353873
+- [opendaylight] collect more logs and puppet config
+  Resolves: bz1483414
 - [plugins] allow add_cmd_output to collect binary output
-  Resolves: bz1515113
-
-* Thu Jan 04 2018 Pavel Moravec <pmoravec@redhat.com> = 3.4-12
+  Resolves: bz1494420
+- [openstack_ironic] collect drivers, ports and much more
+  Resolves: bz1517767
 - [openstack_cinder] check for api service running
-  Resolves: bz1511087
-- [plugins] allow add_cmd_output to collect binary output
-  Resolves: bz1515113
-
-* Fri Dec 08 2017 Pavel Moravec <pmoravec@redhat.com> = 3.4-11
+  Resolves: bz1506908
+
+* Fri Dec 08 2017 Pavel Moravec <pmoravec@redhat.com> = 3.5-2
+- [vdo] revise collected files
+  Resolves: bz1509079
+- further updates to OSP plugins in containerized environment
+  Resolves: bz1506908
+- [opendaylight] new plugin
+  Resolves: bz1483414
+- collect all keystone domains
+  Resolves: bz1491042
+- haproxy, etcd and docker tracebacks
+  Resolves: bz1519267
+- [origin] fix typo in oc adm diagnostics
+  Resolves: bz1463509
 - [postgresql] Call SCL pg_dump with proper path
-  Resolves: bz1515113
+  Resolves: bz1494420
 
-* Mon Nov 20 2017 Pavel Moravec <pmoravec@redhat.com> = 3.4-10
-- [postgresql] Collect data for postgreSQL from RHSCL
-  Resolves: bz1515113
-
-* Wed Nov 15 2017 Pavel Moravec <pmoravec@redhat.com> = 3.4-9
-- [openstack_*] further updates to OSP plugins in containers
-  Resolves: bz1511087
-
-* Thu Oct 12 2017 Pavel Moravec <pmoravec@redhat.com> = 3.4-8
-- [gnocchi] Tripleo specific containerized services logs
-  Resolves: bz1463635
+* Thu Nov 02 2017 Pavel Moravec <pmoravec@redhat.com> = 3.5-1
+- New upstream release sos-3.5
 
 * Tue Oct 10 2017 Pavel Moravec <pmoravec@redhat.com> = 3.4-7
 - [openstack plugins] Tripleo specific containerized services