5261563507
Update sos to the 3.1 upstream release and add post-release patches from the development tree.
245 lines
9.3 KiB
Diff
245 lines
9.3 KiB
Diff
From 4553f0942c00b47342deea7fc47bb9822484a65e Mon Sep 17 00:00:00 2001
|
|
From: "Bryn M. Reeves" <bmr@redhat.com>
|
|
Date: Tue, 25 Mar 2014 17:28:31 +0000
|
|
Subject: [PATCH 39/61] Remove --profile support
|
|
|
|
The handrolled profile logging support in sos hasn't been widely
|
|
used in a long time and is a problem better solved with external
|
|
profiling and coverage tools.
|
|
|
|
Rip out all the support and documentation. This shortens and
|
|
simplifies numerous Plugin class methods.
|
|
|
|
Fixes Issue #244.
|
|
|
|
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
---
|
|
man/en/sosreport.1 | 5 +----
|
|
sos/plugins/__init__.py | 30 ------------------------------
|
|
sos/sosreport.py | 35 +----------------------------------
|
|
tests/plugin_tests.py | 4 +---
|
|
4 files changed, 3 insertions(+), 71 deletions(-)
|
|
|
|
diff --git a/man/en/sosreport.1 b/man/en/sosreport.1
|
|
index c800576..e189433 100644
|
|
--- a/man/en/sosreport.1
|
|
+++ b/man/en/sosreport.1
|
|
@@ -11,7 +11,7 @@ sosreport \- Collect and package diagnostic and support data
|
|
[--report] [--config-file conf] [--batch]\fR
|
|
[--build] [--name name] [--ticket-number number]
|
|
[--debug] [--tmp-dir directory]\fR
|
|
- [--profile] [--help]\fR
|
|
+ [--help]\fR
|
|
.SH DESCRIPTION
|
|
\fBsosreport\fR generates a compressed tar archive of diagnostic
|
|
information from the running system. The archive may be stored
|
|
@@ -84,9 +84,6 @@ archive as a temporary file or directory tree.
|
|
Enable interactive debugging using the python debugger. Exceptions in
|
|
sos or plug-in code will cause a trap to the pdb shell.
|
|
.TP
|
|
-.B \--profile
|
|
-Enable profiler logging.
|
|
-.TP
|
|
.B \--help
|
|
Display usage message.
|
|
.SH MAINTAINER
|
|
diff --git a/sos/plugins/__init__.py b/sos/plugins/__init__.py
|
|
index efb6950..cf2a710 100644
|
|
--- a/sos/plugins/__init__.py
|
|
+++ b/sos/plugins/__init__.py
|
|
@@ -137,7 +137,6 @@ class Plugin(object):
|
|
self.collect_cmds = []
|
|
|
|
self.soslog = self.commons['soslog'] if 'soslog' in self.commons else logging.getLogger('sos')
|
|
- self.proflog = self.commons['proflog'] if 'proflog' in self.commons else logging.getLogger('sosprofile')
|
|
|
|
# get the option list into a dictionary
|
|
for opt in self.option_list:
|
|
@@ -171,9 +170,6 @@ class Plugin(object):
|
|
|
|
This function returns the number of replacements made.
|
|
'''
|
|
- if self.commons['cmdlineopts'].profiler:
|
|
- start_time = time()
|
|
-
|
|
globstr = '*' + cmd + '*'
|
|
self.soslog.debug("substituting '%s' for '%s' in commands matching %s"
|
|
% (subst, regexp, globstr))
|
|
@@ -200,11 +196,6 @@ class Plugin(object):
|
|
msg = 'regex substitution failed for %s in plugin %s with: "%s"'
|
|
self.soslog.error(msg % (called['exe'], self.name(), e))
|
|
replacements = None
|
|
-
|
|
- if self.commons['cmdlineopts'].profiler:
|
|
- time_passed = time() - start_time
|
|
- self.proflog.debug("subst: %-75s time: %f"
|
|
- % (globstr, time_passed))
|
|
return replacements
|
|
|
|
def do_file_sub(self, srcpath, regexp, subst):
|
|
@@ -215,9 +206,6 @@ class Plugin(object):
|
|
|
|
This function returns the number of replacements made.
|
|
'''
|
|
- if self.commons['cmdlineopts'].profiler:
|
|
- start_time = time()
|
|
-
|
|
try:
|
|
path = self._get_dest_for_srcpath(srcpath)
|
|
self.soslog.debug("substituting '%s' for '%s' in %s"
|
|
@@ -234,10 +222,6 @@ class Plugin(object):
|
|
msg = 'regex substitution failed for %s in plugin %s with: "%s"'
|
|
self.soslog.error(msg % (path, self.name(), e))
|
|
replacements = 0
|
|
- if self.commons['cmdlineopts'].profiler:
|
|
- time_passed = time() - start_time
|
|
- self.proflog.debug("subst : %-75s time: %f"
|
|
- % (srcpath, time_passed))
|
|
return replacements
|
|
|
|
def do_regex_find_all(self, regex, fname):
|
|
@@ -314,10 +298,6 @@ class Plugin(object):
|
|
/etc/my_file.conf the file would end up at
|
|
/configurations/my_file.conf.
|
|
'''
|
|
-
|
|
- if self.commons['cmdlineopts'].profiler:
|
|
- start_time = time()
|
|
-
|
|
if self._path_in_path_list(srcpath, self.forbidden_paths):
|
|
self.soslog.debug("%s is in the forbidden path list" % srcpath)
|
|
return ''
|
|
@@ -358,9 +338,6 @@ class Plugin(object):
|
|
'dstpath':dest,
|
|
'symlink':"no"})
|
|
|
|
- if self.commons['cmdlineopts'].profiler:
|
|
- time_passed = time() - start_time
|
|
- self.proflog.debug("copied: %-75s time: %f" % (srcpath, time_passed))
|
|
except Exception as e:
|
|
self.soslog.error("Unable to copy %s to %s" % (srcpath, dest))
|
|
self.soslog.error(traceback.format_exc())
|
|
@@ -560,9 +537,6 @@ class Plugin(object):
|
|
"""Execute a command and save the output to a file for inclusion in the
|
|
report.
|
|
"""
|
|
- if self.commons['cmdlineopts'].profiler:
|
|
- start_time = time()
|
|
-
|
|
# pylint: disable-msg = W0612
|
|
status, shout, runtime = self.get_command_output(exe, timeout=timeout)
|
|
if (status == 127):
|
|
@@ -582,10 +556,6 @@ class Plugin(object):
|
|
self.executed_commands.append({'exe': exe, 'file':outfn_strip}) # save in our list
|
|
self.commons['xmlreport'].add_command(cmdline=exe,exitcode=status,f_stdout=outfn_strip,runtime=runtime)
|
|
|
|
- if self.commons['cmdlineopts'].profiler:
|
|
- time_passed = time() - start_time
|
|
- self.proflog.debug("output: %-75s time: %f" % (exe, time_passed))
|
|
-
|
|
return os.path.join(self.archive.get_archive_path(), outfn)
|
|
|
|
# For adding output
|
|
diff --git a/sos/sosreport.py b/sos/sosreport.py
|
|
index 13a46bf..afa5371 100644
|
|
--- a/sos/sosreport.py
|
|
+++ b/sos/sosreport.py
|
|
@@ -220,7 +220,6 @@ class SoSOptions(object):
|
|
_config_file = ""
|
|
_tmp_dir = ""
|
|
_report = True
|
|
- _profiler = False
|
|
_compression_type = 'auto'
|
|
|
|
_options = None
|
|
@@ -431,19 +430,6 @@ class SoSOptions(object):
|
|
self._report = value
|
|
|
|
@property
|
|
- def profiler(self):
|
|
- if self._options != None:
|
|
- return self._options.profiler
|
|
- return self._profiler
|
|
-
|
|
- @profiler.setter
|
|
- def profiler(self, value):
|
|
- self._check_options_initialized()
|
|
- if not isinstance(value, bool):
|
|
- raise TypeError("SoSOptions.profiler expects a boolean")
|
|
- self._profiler = value
|
|
-
|
|
- @property
|
|
def compression_type(self):
|
|
if self._options != None:
|
|
return self._options.compression_type
|
|
@@ -508,9 +494,6 @@ class SoSOptions(object):
|
|
parser.add_option("--no-report", action="store_true",
|
|
dest="report",
|
|
help="Disable HTML/XML reporting", default=False)
|
|
- parser.add_option("--profile", action="store_true",
|
|
- dest="profiler",
|
|
- help="turn on profiling", default=False)
|
|
parser.add_option("-z", "--compression-type", dest="compression_type",
|
|
help="compression technology to use [auto, zip, gzip, bzip2, xz] (default=auto)",
|
|
default="auto")
|
|
@@ -563,7 +546,6 @@ class SoSReport(object):
|
|
'rptdir': self.rptdir,
|
|
'tmpdir': self.tmpdir,
|
|
'soslog': self.soslog,
|
|
- 'proflog' : self.proflog,
|
|
'policy': self.policy,
|
|
'verbosity': self.opts.verbosity,
|
|
'xmlreport': self.xml_report,
|
|
@@ -680,32 +662,17 @@ class SoSReport(object):
|
|
ui_console.setLevel(logging.INFO)
|
|
self.ui_log.addHandler(ui_console)
|
|
|
|
- # profile logging
|
|
- if self.opts.profiler:
|
|
- self.proflog = logging.getLogger('sosprofile')
|
|
- self.proflog.setLevel(logging.DEBUG)
|
|
- self.sos_profile_log_file = self.get_temp_file()
|
|
- plog = logging.FileHandler(self.sos_profile_log_file.name)
|
|
- plog.setFormatter(logging.Formatter('%(message)s'))
|
|
- plog.setLevel(logging.DEBUG)
|
|
- self.proflog.addHandler(plog)
|
|
- else:
|
|
- self.proflog = logging.getLogger('sosprofile')
|
|
- self.proflog.setLevel(logging.FATAL)
|
|
-
|
|
def _finish_logging(self):
|
|
logging.shutdown()
|
|
|
|
# the logging module seems to persist in the jython/jboss/eap world
|
|
# so the handlers need to be removed
|
|
- for logger in [logging.getLogger(x) for x in ('sos', 'sosprofile', 'sos_ui')]:
|
|
+ for logger in [logging.getLogger(x) for x in ('sos', 'sos_ui')]:
|
|
for h in logger.handlers:
|
|
logger.removeHandler(h)
|
|
|
|
if getattr(self, "sos_log_file", None):
|
|
self.archive.add_file(self.sos_log_file.name, dest=os.path.join('sos_logs', 'sos.log'))
|
|
- if getattr(self, "sos_profile_log_file", None):
|
|
- self.archive.add_file(self.sos_profile_log_file.name, dest=os.path.join('sos_logs', 'profile.log'))
|
|
if getattr(self, "sos_ui_log_file", None):
|
|
self.archive.add_file(self.sos_ui_log_file.name, dest=os.path.join('sos_logs', 'ui.log'))
|
|
|
|
diff --git a/tests/plugin_tests.py b/tests/plugin_tests.py
|
|
index 31ffae4..0f8ef5d 100644
|
|
--- a/tests/plugin_tests.py
|
|
+++ b/tests/plugin_tests.py
|
|
@@ -89,9 +89,7 @@ class EnablerPlugin(Plugin):
|
|
|
|
|
|
class MockOptions(object):
|
|
-
|
|
- profiler = False
|
|
-
|
|
+ pass
|
|
|
|
|
|
class PluginToolTests(unittest.TestCase):
|
|
--
|
|
1.7.11.7
|
|
|