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" -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 ---- - 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 -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 -Signed-off-by: Bryn M. Reeves ---- - 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 -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 -Signed-off-by: Bryn M. Reeves ---- - 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 +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 +--- + 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" -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 ---- - 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?= -Date: Mon, 29 May 2017 15:47:29 +0200 -Subject: [PATCH] [samba] Fix dc-connect winbind logfile path - -Guenther - -Signed-off-by: Guenther Deschner ---- - 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" -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 -Signed-off-by: Bryn M. Reeves ---- - 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 -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 -Signed-off-by: Bryn M. Reeves ---- - 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" -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 ---- - 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" -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 ---- - 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" -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 ---- - 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" -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)() --> 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 ---- - 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" -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 ---- - 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 -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 ---- - 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 -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 -Signed-off-by: Bryn M. Reeves ---- - 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 +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 +--- + 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 -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 -Signed-off-by: Adam Stokes ---- - 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 -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 ---- - 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 -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 -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 -Signed-off-by: Bryn M. Reeves ---- - 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 -+# Copyright (C) 2017 Red Hat, Inc., Martin Schuppert - - # 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 -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 -Signed-off-by: Adam Stokes ---- - 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 -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 ---- - 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 -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 ---- - 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 +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 +--- + 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 +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 +--- + 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 +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 +--- + 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 +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 +--- + 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 +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 +--- + 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 -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 -Signed-off-by: Adam Stokes ---- - 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 -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 -Signed-off-by: Adam Stokes ---- - 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 +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 +--- + 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 +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 +--- + 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 +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 +--- + 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 +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 +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 +--- + 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 +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 +--- + 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 +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 +--- + 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 +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 +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 +--- + 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 +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 +--- + 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 -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 ---- - 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 -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 -Signed-off-by: Bryn M. Reeves ---- - 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 -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 -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 ---- - 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 -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 ---- - 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 -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 ---- - 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" -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 ---- - 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 -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 -Signed-off-by: Pavel Moravec ---- - 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 -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 ---- - 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 - # Copyright (C) 2014 Red Hat, Inc., Sandro Bonazzola - # Copyright (C) 2013 Chris J Arges - # Copyright (C) 2012-2013 Red Hat, Inc., Bryn M. Reeves -@@ -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 -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 ---- - 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 -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 ---- - 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 -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 ---- - 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 +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 +--- + 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 +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 +--- + 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 +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 +--- + 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 +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 +--- + 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 +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 + +Fixes: #1138 + +Signed-off-by: Bryn M. Reeves +--- + 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 +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 +--- + 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 +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 +--- + 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 +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 +--- + 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 +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{ +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 +Signed-off-by: John Eckersberg +--- + 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 +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 +--- + 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 +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 +Signed-off-by: Bryn M. Reeves +--- + 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 +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 +--- + 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 +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 +--- + 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 +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 +--- + 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 +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 +--- + 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 - 3.4-13.el7.centos -- Roll in CentOS Branding - -* Thu Jan 04 2018 Pavel Moravec = 3.4-13 +* Tue Feb 13 2018 Pavel Moravec = 3.5-6 +- [ipa] set ipa_version variable before referencing it + Resolves: bz1535390 + +* Tue Feb 13 2018 Pavel Moravec = 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 = 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 = 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 = 3.4-11 + Resolves: bz1506908 + +* Fri Dec 08 2017 Pavel Moravec = 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 = 3.4-10 -- [postgresql] Collect data for postgreSQL from RHSCL - Resolves: bz1515113 - -* Wed Nov 15 2017 Pavel Moravec = 3.4-9 -- [openstack_*] further updates to OSP plugins in containers - Resolves: bz1511087 - -* Thu Oct 12 2017 Pavel Moravec = 3.4-8 -- [gnocchi] Tripleo specific containerized services logs - Resolves: bz1463635 +* Thu Nov 02 2017 Pavel Moravec = 3.5-1 +- New upstream release sos-3.5 * Tue Oct 10 2017 Pavel Moravec = 3.4-7 - [openstack plugins] Tripleo specific containerized services