Blame SOURCES/sos-bz1923938-sos-log-effective-options.patch

2ed6e8
From 00d12ad3cf24dcc6c73e9bcf63db1d3f17e58bb1 Mon Sep 17 00:00:00 2001
2ed6e8
From: Jake Hunsaker <jhunsake@redhat.com>
2ed6e8
Date: Thu, 1 Jul 2021 10:50:54 -0400
2ed6e8
Subject: [PATCH] [sosnode] Properly format skip-commands and skip-files on
2ed6e8
 nodes
2ed6e8
2ed6e8
Fixes an issue where options provided for `skip-commands` and
2ed6e8
`skip-files` were not properly formatted, thus causing an exception
2ed6e8
during the finalization of the node's sos command.
2ed6e8
2ed6e8
Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
2ed6e8
---
2ed6e8
 sos/collector/sosnode.py | 5 +++--
2ed6e8
 1 file changed, 3 insertions(+), 2 deletions(-)
2ed6e8
2ed6e8
diff --git a/sos/collector/sosnode.py b/sos/collector/sosnode.py
2ed6e8
index 6597d236..426edcba 100644
2ed6e8
--- a/sos/collector/sosnode.py
2ed6e8
+++ b/sos/collector/sosnode.py
2ed6e8
@@ -734,11 +734,12 @@ class SosNode():
2ed6e8
         if self.check_sos_version('4.1'):
2ed6e8
             if self.opts.skip_commands:
2ed6e8
                 sos_opts.append(
2ed6e8
-                    '--skip-commands=%s' % (quote(self.opts.skip_commands))
2ed6e8
+                    '--skip-commands=%s' % (
2ed6e8
+                        quote(','.join(self.opts.skip_commands)))
2ed6e8
                 )
2ed6e8
             if self.opts.skip_files:
2ed6e8
                 sos_opts.append(
2ed6e8
-                    '--skip-files=%s' % (quote(self.opts.skip_files))
2ed6e8
+                    '--skip-files=%s' % (quote(','.join(self.opts.skip_files)))
2ed6e8
                 )
2ed6e8
 
2ed6e8
         if self.check_sos_version('4.2'):
2ed6e8
-- 
2ed6e8
2.31.1
2ed6e8
2ed6e8
From de7edce3f92ed50abcb28dd0dbcbeb104dc7c679 Mon Sep 17 00:00:00 2001
2ed6e8
From: Pavel Moravec <pmoravec@redhat.com>
2ed6e8
Date: Fri, 2 Jul 2021 09:52:11 +0200
2ed6e8
Subject: [PATCH] [collector] fix a typo in --plugin-option
2ed6e8
2ed6e8
Sos report uses --plugin-option or --plugopts.
2ed6e8
2ed6e8
Relevant: #2606
2ed6e8
2ed6e8
Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
2ed6e8
---
2ed6e8
 sos/collector/__init__.py | 2 +-
2ed6e8
 1 file changed, 1 insertion(+), 1 deletion(-)
2ed6e8
2ed6e8
diff --git a/sos/collector/__init__.py b/sos/collector/__init__.py
2ed6e8
index 6d96d692..f072287e 100644
2ed6e8
--- a/sos/collector/__init__.py
2ed6e8
+++ b/sos/collector/__init__.py
2ed6e8
@@ -272,7 +272,7 @@ class SoSCollector(SoSComponent):
2ed6e8
                              help="chroot executed commands to SYSROOT")
2ed6e8
         sos_grp.add_argument('-e', '--enable-plugins', action="extend",
2ed6e8
                              help='Enable specific plugins for sosreport')
2ed6e8
-        sos_grp.add_argument('-k', '--plugin-options', action="extend",
2ed6e8
+        sos_grp.add_argument('-k', '--plugin-option', action="extend",
2ed6e8
                              help='Plugin option as plugname.option=value')
2ed6e8
         sos_grp.add_argument('--log-size', default=0, type=int,
2ed6e8
                              help='Limit the size of individual logs (in MiB)')
2ed6e8
-- 
2ed6e8
2.31.1
2ed6e8
2ed6e8
From 24a79ae8df8f29276f6139c68d4ba9b05114f951 Mon Sep 17 00:00:00 2001
2ed6e8
From: Pavel Moravec <pmoravec@redhat.com>
2ed6e8
Date: Fri, 2 Jul 2021 09:53:47 +0200
2ed6e8
Subject: [PATCH] [options] allow variant option names in config file
2ed6e8
2ed6e8
While cmdline allows --plugin-option as well as --plugopts,
2ed6e8
it stores the value under `plugopts` key. Therefore parsing
2ed6e8
config file ignores --plugin-option.
2ed6e8
2ed6e8
Similarly for --name/--label and --profile/--profiles.
2ed6e8
2ed6e8
When processing config file, we must unify those potentially duplicit
2ed6e8
keys.
2ed6e8
2ed6e8
Resolves: #2606
2ed6e8
2ed6e8
Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
2ed6e8
---
2ed6e8
 sos/options.py | 9 +++++++++
2ed6e8
 1 file changed, 9 insertions(+)
2ed6e8
2ed6e8
diff --git a/sos/options.py b/sos/options.py
2ed6e8
index 1eda55d6..a014a022 100644
2ed6e8
--- a/sos/options.py
2ed6e8
+++ b/sos/options.py
2ed6e8
@@ -186,9 +186,18 @@ class SoSOptions():
2ed6e8
                 if 'verbose' in odict.keys():
2ed6e8
                     odict['verbosity'] = int(odict.pop('verbose'))
2ed6e8
                 # convert options names
2ed6e8
+                # unify some of them if multiple variants of the
2ed6e8
+                # cmdoption exist
2ed6e8
+                rename_opts = {
2ed6e8
+                    'name': 'label',
2ed6e8
+                    'plugin_option': 'plugopts',
2ed6e8
+                    'profile': 'profiles'
2ed6e8
+                }
2ed6e8
                 for key in list(odict):
2ed6e8
                     if '-' in key:
2ed6e8
                         odict[key.replace('-', '_')] = odict.pop(key)
2ed6e8
+                    if key in rename_opts:
2ed6e8
+                        odict[rename_opts[key]] = odict.pop(key)
2ed6e8
                 # set the values according to the config file
2ed6e8
                 for key, val in odict.items():
2ed6e8
                     if isinstance(val, str):
2ed6e8
-- 
2ed6e8
2.31.1
2ed6e8
2ed6e8
From c7d3644c0c64e9e5439806250592a55c8e2de26f Mon Sep 17 00:00:00 2001
2ed6e8
From: Pavel Moravec <pmoravec@redhat.com>
2ed6e8
Date: Thu, 1 Jul 2021 08:11:15 +0200
2ed6e8
Subject: [PATCH] [report,collect] unify --map-file arguments
2ed6e8
2ed6e8
Unify --map[-file] argument among report/collect/clean.
2ed6e8
2ed6e8
Resolves: #2602
2ed6e8
2ed6e8
Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
2ed6e8
---
2ed6e8
 sos/cleaner/__init__.py   | 2 +-
2ed6e8
 sos/collector/__init__.py | 2 +-
2ed6e8
 sos/report/__init__.py    | 2 +-
2ed6e8
 3 files changed, 3 insertions(+), 3 deletions(-)
2ed6e8
2ed6e8
diff --git a/sos/cleaner/__init__.py b/sos/cleaner/__init__.py
2ed6e8
index 7414b55e0..4c9837826 100644
2ed6e8
--- a/sos/cleaner/__init__.py
2ed6e8
+++ b/sos/cleaner/__init__.py
2ed6e8
@@ -192,7 +192,7 @@ def add_parser_options(cls, parser):
2ed6e8
                                      'file for obfuscation'))
2ed6e8
         clean_grp.add_argument('--no-update', dest='no_update', default=False,
2ed6e8
                                action='store_true',
2ed6e8
-                               help='Do not update the --map file with new '
2ed6e8
+                               help='Do not update the --map-file with new '
2ed6e8
                                     'mappings from this run')
2ed6e8
         clean_grp.add_argument('--keep-binary-files', default=False,
2ed6e8
                                action='store_true',
2ed6e8
diff --git a/sos/collector/__init__.py b/sos/collector/__init__.py
2ed6e8
index 7b8cfcf72..6d96d6923 100644
2ed6e8
--- a/sos/collector/__init__.py
2ed6e8
+++ b/sos/collector/__init__.py
2ed6e8
@@ -427,7 +427,7 @@ def add_parser_options(cls, parser):
2ed6e8
         cleaner_grp.add_argument('--no-update', action='store_true',
2ed6e8
                                  default=False, dest='no_update',
2ed6e8
                                  help='Do not update the default cleaner map')
2ed6e8
-        cleaner_grp.add_argument('--map', dest='map_file',
2ed6e8
+        cleaner_grp.add_argument('--map-file', dest='map_file',
2ed6e8
                                  default='/etc/sos/cleaner/default_mapping',
2ed6e8
                                  help=('Provide a previously generated mapping'
2ed6e8
                                        ' file for obfuscation'))
2ed6e8
diff --git a/sos/report/__init__.py b/sos/report/__init__.py
2ed6e8
index 7ad2d24a4..411c4eb03 100644
2ed6e8
--- a/sos/report/__init__.py
2ed6e8
+++ b/sos/report/__init__.py
2ed6e8
@@ -341,7 +341,7 @@ def add_parser_options(cls, parser):
2ed6e8
         cleaner_grp.add_argument('--no-update', action='store_true',
2ed6e8
                                  default=False, dest='no_update',
2ed6e8
                                  help='Do not update the default cleaner map')
2ed6e8
-        cleaner_grp.add_argument('--map', dest='map_file',
2ed6e8
+        cleaner_grp.add_argument('--map-file', dest='map_file',
2ed6e8
                                  default='/etc/sos/cleaner/default_mapping',
2ed6e8
                                  help=('Provide a previously generated mapping'
2ed6e8
                                        ' file for obfuscation'))
2ed6e8
From fd75745e7a5a6c5def8e6d23190227872b9912c3 Mon Sep 17 00:00:00 2001
2ed6e8
From: Jake Hunsaker <jhunsake@redhat.com>
2ed6e8
Date: Wed, 11 Aug 2021 10:48:41 -0400
2ed6e8
Subject: [PATCH] [sosnode] Fix passing of plugin options when using
2ed6e8
 `--only-plugins`
2ed6e8
2ed6e8
Fixes the handling of plugin options passed by `sos collect` to each
2ed6e8
node by first aligning the SoSOption name to those of `report`
2ed6e8
(`plugopts`), and second re-arranges the handling of plugin options and
2ed6e8
preset options passed by the user when also using `--only-plugins` so
2ed6e8
that the former are preserved and passed only with the `--only-plugins`
2ed6e8
option value.
2ed6e8
2ed6e8
Resolves: #2641
2ed6e8
2ed6e8
Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
2ed6e8
---
2ed6e8
 sos/collector/__init__.py |  5 +++--
2ed6e8
 sos/collector/sosnode.py  | 34 +++++++++++++++++-----------------
2ed6e8
 2 files changed, 20 insertions(+), 19 deletions(-)
2ed6e8
2ed6e8
diff --git a/sos/collector/__init__.py b/sos/collector/__init__.py
2ed6e8
index 57ef074e..70b7a69e 100644
2ed6e8
--- a/sos/collector/__init__.py
2ed6e8
+++ b/sos/collector/__init__.py
2ed6e8
@@ -84,7 +84,7 @@ class SoSCollector(SoSComponent):
2ed6e8
         'only_plugins': [],
2ed6e8
         'password': False,
2ed6e8
         'password_per_node': False,
2ed6e8
-        'plugin_options': [],
2ed6e8
+        'plugopts': [],
2ed6e8
         'plugin_timeout': None,
2ed6e8
         'cmd_timeout': None,
2ed6e8
         'preset': '',
2ed6e8
@@ -273,7 +273,8 @@ class SoSCollector(SoSComponent):
2ed6e8
                              help="chroot executed commands to SYSROOT")
2ed6e8
         sos_grp.add_argument('-e', '--enable-plugins', action="extend",
2ed6e8
                              help='Enable specific plugins for sosreport')
2ed6e8
-        sos_grp.add_argument('-k', '--plugin-option', action="extend",
2ed6e8
+        sos_grp.add_argument('-k', '--plugin-option', '--plugopts',
2ed6e8
+                             action="extend", dest='plugopts',
2ed6e8
                              help='Plugin option as plugname.option=value')
2ed6e8
         sos_grp.add_argument('--log-size', default=0, type=int,
2ed6e8
                              help='Limit the size of individual logs (in MiB)')
2ed6e8
diff --git a/sos/collector/sosnode.py b/sos/collector/sosnode.py
2ed6e8
index 426edcba..5d05c297 100644
2ed6e8
--- a/sos/collector/sosnode.py
2ed6e8
+++ b/sos/collector/sosnode.py
2ed6e8
@@ -667,10 +667,10 @@ class SosNode():
2ed6e8
 
2ed6e8
         if self.cluster.sos_plugin_options:
2ed6e8
             for opt in self.cluster.sos_plugin_options:
2ed6e8
-                if not any(opt in o for o in self.plugin_options):
2ed6e8
+                if not any(opt in o for o in self.plugopts):
2ed6e8
                     option = '%s=%s' % (opt,
2ed6e8
                                         self.cluster.sos_plugin_options[opt])
2ed6e8
-                    self.plugin_options.append(option)
2ed6e8
+                    self.plugopts.append(option)
2ed6e8
 
2ed6e8
         # set master-only options
2ed6e8
         if self.cluster.check_node_is_master(self):
2ed6e8
@@ -688,7 +688,7 @@ class SosNode():
2ed6e8
         self.only_plugins = list(self.opts.only_plugins)
2ed6e8
         self.skip_plugins = list(self.opts.skip_plugins)
2ed6e8
         self.enable_plugins = list(self.opts.enable_plugins)
2ed6e8
-        self.plugin_options = list(self.opts.plugin_options)
2ed6e8
+        self.plugopts = list(self.opts.plugopts)
2ed6e8
         self.preset = list(self.opts.preset)
2ed6e8
 
2ed6e8
     def finalize_sos_cmd(self):
2ed6e8
@@ -754,6 +754,20 @@ class SosNode():
2ed6e8
             os.path.join(self.host.sos_bin_path, self.sos_bin)
2ed6e8
         )
2ed6e8
 
2ed6e8
+        if self.plugopts:
2ed6e8
+            opts = [o for o in self.plugopts
2ed6e8
+                    if self._plugin_exists(o.split('.')[0])
2ed6e8
+                    and self._plugin_option_exists(o.split('=')[0])]
2ed6e8
+            if opts:
2ed6e8
+                sos_opts.append('-k %s' % quote(','.join(o for o in opts)))
2ed6e8
+
2ed6e8
+        if self.preset:
2ed6e8
+            if self._preset_exists(self.preset):
2ed6e8
+                sos_opts.append('--preset=%s' % quote(self.preset))
2ed6e8
+            else:
2ed6e8
+                self.log_debug('Requested to enable preset %s but preset does '
2ed6e8
+                               'not exist on node' % self.preset)
2ed6e8
+
2ed6e8
         if self.only_plugins:
2ed6e8
             plugs = [o for o in self.only_plugins if self._plugin_exists(o)]
2ed6e8
             if len(plugs) != len(self.only_plugins):
2ed6e8
@@ -792,20 +806,6 @@ class SosNode():
2ed6e8
             if enable:
2ed6e8
                 sos_opts.append('--enable-plugins=%s' % quote(enable))
2ed6e8
 
2ed6e8
-        if self.plugin_options:
2ed6e8
-            opts = [o for o in self.plugin_options
2ed6e8
-                    if self._plugin_exists(o.split('.')[0])
2ed6e8
-                    and self._plugin_option_exists(o.split('=')[0])]
2ed6e8
-            if opts:
2ed6e8
-                sos_opts.append('-k %s' % quote(','.join(o for o in opts)))
2ed6e8
-
2ed6e8
-        if self.preset:
2ed6e8
-            if self._preset_exists(self.preset):
2ed6e8
-                sos_opts.append('--preset=%s' % quote(self.preset))
2ed6e8
-            else:
2ed6e8
-                self.log_debug('Requested to enable preset %s but preset does '
2ed6e8
-                               'not exist on node' % self.preset)
2ed6e8
-
2ed6e8
         self.sos_cmd = "%s %s" % (sos_cmd, ' '.join(sos_opts))
2ed6e8
         self.log_info('Final sos command set to %s' % self.sos_cmd)
2ed6e8
         self.manifest.add_field('final_sos_command', self.sos_cmd)
2ed6e8
-- 
2ed6e8
2.31.1
2ed6e8