aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--man/en/sosreport.193
-rw-r--r--sos/policies/__init__.py10
-rw-r--r--sos/sosreport.py34
3 files changed, 89 insertions, 48 deletions
diff --git a/man/en/sosreport.1 b/man/en/sosreport.1
index e28e7581..b5a56974 100644
--- a/man/en/sosreport.1
+++ b/man/en/sosreport.1
@@ -1,6 +1,6 @@
.TH SOSREPORT 1 "Tue Apr 08 2010"
.SH NAME
-sosreport \- Generate debugging information for this system
+sosreport \- Collect and package diagnostic and support data
.SH SYNOPSIS
.B sosreport
[-l|--list-plugins]\fR
@@ -13,71 +13,112 @@ sosreport \- Generate debugging information for this system
[--debug] [--upload] [--tmp-dir directory]\fR
[--profile] [--help]\fR
.SH DESCRIPTION
-\fBsosreport\fR generates a compressed tarball of debugging information
-for the system it is run on that can be sent to technical support
-reps that will give them a more complete view of the overall system
-status.
+\fBsosreport\fR generates a compressed tar archive of diagnostic
+information from the running system. The archive may be stored
+locally or centrally for recording or tracking purposes or may
+be sent to technical support representatives, developers or
+system administrators to assist with technical fault-finding and
+debugging.
+.LP
+Sos is modular in design and is able to collect data from a wide
+range of subsystems and packages that may be installed. An
+XML or HTML report summarizing the collected information is
+optionally generated and stored within the archive.
.SH OPTIONS
.TP
.B \-l, \--list-plugins
-This will list all available plugins showing which ones will be enabled by the current configuration. It will also show all plugin options which can be
-modified using the -k option (see below).
+List all available plugins and their options. Plug-ins that would
+not be enabled by the current configuration are listed separately.
.TP
.B \-n, --skip-plugins PLUGNAME[,PLUGNAME]
-Do not load specified plugin(s). To specify multiple plugins, separate them with a comma.
+Disable the specified plugin(s). Multiple plug-ins may be specified
+by repeating the option or as a comma-separated list.
.TP
.B \-e, --enable-plugins PLUGNAME[,PLUGNAME]
-Enable the specified plugin(s). To specify multiple plugins, separate them with a comma.
+Enable the specified plugin(s). Multiple plug-ins may be specified
+by repeating the option or as a comma-separated list.
.TP
.B \-o, --only-plugins PLUGNAME[,PLUGNAME]
-Enable the specified plugin(s) only (all other plugins should be disabled). To specify multiple plugins, separate them with a comma.
+Enable the specified plugin(s) only (all other plugins should be
+disabled). Multiple plugins may be specified by repeating the option
+or as a comma-separated list.
.TP
.B \-k PLUGNAME.PLUGOPT[=VALUE]
-This is used to specify options for plugins. A list of available plugin options can be obtained from the output of --list-plugins.
-If no value is specified and the option is a boolean (on/off), it will be set to "on".
+Specify plug-in options. The option PLUGOPT is enabled, or set to the
+specified value in the plug-in PLUGNAME.
.TP
.B \-a, \--alloptions
-Enable all (boolean) options for all loaded plugins.
+Set all boolean options to True for all enabled plug-ins.
.TP
.B \--upload FTP_SERVER
-Upload the report to Red Hat (use exclusively if advised from a Red Hat support representative).
+Upload the report to the configured destination.
.TP
.B \-v, \--verbose
-Increase the verbosity of the output as sosreport is running. Multiple -v mean more verbosity.
+Increase logging verbosity. May be specified multiple times to enable
+additional debugging messages.
+.TP
+.B \-q, \--quiet
+Only log fatal errors to stderr.
.TP
.B \--report
-Enable html/xml report writing
+Enable HTML/XML report writing.
.TP
.B \--config-file CONFIG
-Specify alternate configuration file
+Specify alternate configuration file.
.TP
.B \--tmp-dir DIRECTORY
-Specify alternate temporary directory to copy data as well as the compressed report.
+Specify alternate temporary directory to copy data as well as the
+compressed report.
.TP
.B \--batch
-Perform data gathering unattended
+Generate archive without prompting for interactive input.
.TP
.B \--name NAME
-Define a unique name for archive
+Specify a name to be used for the archive.
.TP
.B \--ticket-number NUMBER
-Define a unique number for archive
+Specify a ticket number to be used for archive
.TP
.B \--build
-Do not archive copied data, leave directory tree untouched for further modification
+Do not archive copied data. Causes sosreport to leave an uncompressed
+archive as a temporary file or directory tree.
.TP
.B \--debug
-Give opportunity to debug python exceptions through the python debugger.
+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
-Turn on profiling for cmds run
+Enable profiler logging.
.TP
.B \--help
-Display sosreport help system.
+Display usage message.
.SH MAINTAINER
.nf
-Adam Stokes <astokes@fedoraproject.org>
+Bryn M. Reeves <bmr@redhat.com>
.fi
+.SH AUTHORS & CONTRIBUTORS
+
+Adam Stokes,
+Ben Turner,
+Bryn M. Reeves,
+Eugene Teo,
+Gary Kotton,
+Jesse Jaggars,
+Joey Boggs,
+John Berninger,
+Justin Payne,
+Keith Kearnan,
+Kent Lamb,
+Marc Sauton,
+Navid Sheikhol-Eslami,
+Pierre Amadio ,
+Pierre Carrier,
+Ranjith Rajaram,
+Sadique Puthen,
+Shijoe George,
+Steve Conklin,
+Tomas Smetana
+.nf
.SH TRANSLATIONS
.nf
Translations are handled by transifex (https://fedorahosted.org/transifex/)
diff --git a/sos/policies/__init__.py b/sos/policies/__init__.py
index 2ec0970a..224abdd8 100644
--- a/sos/policies/__init__.py
+++ b/sos/policies/__init__.py
@@ -339,8 +339,8 @@ No changes will be made to system configuration.
def _print(self, msg=None):
"""A wrapper around print that only prints if we are not running in
- silent mode"""
- if not self.commons['cmdlineopts'].silent:
+ quiet mode"""
+ if not self.commons['cmdlineopts'].quiet:
if msg:
print msg
else:
@@ -352,14 +352,14 @@ No changes will be made to system configuration.
the user in non-batch mode. If your policy sets self.distro that
text will be substituted accordingly. You can also override this
method to do something more complicated."""
- width = 60
+ width = 58
_msg = self.msg % {'distro': self.distro, 'vendor': self.vendor,
'vendor_url': self.vendor_url,
'vendor_text': self.vendor_text,
'tmpdir': self.commons['tmpdir']}
_fmt = ""
for line in _msg.splitlines():
- _fmt = _fmt + fill(line, width, replace_whitespace = False) + '\n'
+ _fmt = _fmt + fill(" " + line, width, replace_whitespace = False) + '\n'
return _fmt
@@ -430,7 +430,7 @@ class LinuxPolicy(Policy):
localname = self.getLocalName()
- if not self.commons['cmdlineopts'].batch and not self.commons['cmdlineopts'].silent:
+ if not self.commons['cmdlineopts'].batch and not self.commons['cmdlineopts'].quiet:
try:
self.reportName = raw_input(_("Please enter your first initial and last name [%s]: ") % localname)
diff --git a/sos/sosreport.py b/sos/sosreport.py
index ef49a09c..b5691c05 100644
--- a/sos/sosreport.py
+++ b/sos/sosreport.py
@@ -198,7 +198,7 @@ class XmlReport(object):
class SoSReport(object):
- def __init__(self, opts):
+ def __init__(self, args):
self.loaded_plugins = deque()
self.skipped_plugins = deque()
self.all_options = deque()
@@ -212,7 +212,7 @@ class SoSReport(object):
pass # not available in java, but we don't care
- self.opts, self.args = self.parse_options(opts)
+ self.opts = self.parse_options(args)[0]
self.tempfile_util = TempFileUtil(tmp_dir=self.opts.tmp_dir)
self._set_debug()
self._read_config()
@@ -322,7 +322,7 @@ class SoSReport(object):
flog.setLevel(logging.INFO)
self.soslog.addHandler(flog)
- if not self.opts.silent:
+ if not self.opts.quiet:
console = logging.StreamHandler(sys.stderr)
console.setFormatter(logging.Formatter('%(message)s'))
if self.opts.verbosity > 1:
@@ -344,7 +344,7 @@ class SoSReport(object):
self.ui_log.addHandler(ui_fhandler)
- if not self.opts.silent:
+ if not self.opts.quiet:
ui_console = logging.StreamHandler(sys.stdout)
ui_console.setFormatter(logging.Formatter('%(message)s'))
ui_console.setLevel(logging.INFO)
@@ -641,7 +641,7 @@ class SoSReport(object):
for i in izip(self.loaded_plugins):
plugruncount += 1
plugname, plug = i[0]
- if not self.opts.silent:
+ if not self.opts.quiet:
sys.stdout.write("\r Running %d/%d: %s... " % (plugruncount, len(self.loaded_plugins), plugname))
sys.stdout.flush()
try:
@@ -791,7 +791,7 @@ class SoSReport(object):
self.soslog.error(_("no valid plugins were enabled"))
self._exit(1)
- def parse_options(self, opts):
+ def parse_options(self, args):
""" Parse command line options """
self.parser = parser = OptionParserExtended(option_class=SosOption)
@@ -800,14 +800,14 @@ class SoSReport(object):
help="list plugins and available plugin options")
parser.add_option("-n", "--skip-plugins", action="extend",
dest="noplugins", type="string",
- help="skip these plugins", default = deque())
+ help="disable these plugins", default = deque())
parser.add_option("-e", "--enable-plugins", action="extend",
dest="enableplugins", type="string",
help="enable these plugins", default = deque())
parser.add_option("-o", "--only-plugins", action="extend",
dest="onlyplugins", type="string",
help="enable these plugins only", default = deque())
- parser.add_option("-k", action="append",
+ parser.add_option("-k", "--plugin-option", action="append",
dest="plugopts", type="string",
help="plugin options in plugname.option=value format (see -l)")
parser.add_option("-a", "--alloptions", action="store_true",
@@ -818,22 +818,22 @@ class SoSReport(object):
help="upload the report to an ftp server")
parser.add_option("--batch", action="store_true",
dest="batch", default=False,
- help="do not ask any question (batch mode)")
+ help="batch mode - do not prompt interactively")
parser.add_option("-v", "--verbose", action="count",
dest="verbosity",
help="increase verbosity")
- parser.add_option("", "--silent", action="store_true",
- dest="silent", default=False,
- help="Only display FATAL errors on stdout")
+ parser.add_option("", "--quiet", action="store_true",
+ dest="quiet", default=False,
+ help="only print fatal errors")
parser.add_option("--debug", action="count",
dest="debug",
- help="enabling debugging through python debugger")
+ help="enable interactive debugging using the python debugger")
parser.add_option("--ticket-number", action="store",
dest="ticketNumber",
- help="set ticket number")
+ help="specify ticket number")
parser.add_option("--name", action="store",
dest="customerName",
- help="define customer name")
+ help="specify report name")
parser.add_option("--config-file", action="store",
dest="config_file",
help="specify alternate configuration file")
@@ -842,7 +842,7 @@ class SoSReport(object):
help="specify alternate temporary directory", default=tempfile.gettempdir())
parser.add_option("--report", action="store_true",
dest="report",
- help="Enable html/xml reporting", default=False)
+ help="Enable HTML/XML reporting", default=False)
parser.add_option("--profile", action="store_true",
dest="profiler",
help="turn on profiling", default=False)
@@ -850,7 +850,7 @@ class SoSReport(object):
help="compression technology to use [auto, zip, gzip, bzip2, xz] (default=auto)",
default="auto")
- return parser.parse_args(opts)
+ return parser.parse_args(args)
def set_option(self, name, value=None):
"""Allows setting of 'command line options' without passing in a