| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
| |
Instead of using the "name=value" pretty printer to format the
preset options for logging, use the SoSOptions.to_args() method
to convert them to a list of command line style arguments.
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
|
|
|
| |
If we encounter a JSON error while loading a preset skip that
file and continue to load any other valid preset files.
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The XmlReport class in sos.sosreport traverses the list of plugins
and prepares a report including each collected file.
The access to the file is wrapped in an except block but the recent
change to pycodestyle modified this from a 'naked' except into a
'except IOError' block.
Attempting to open a non-existent path yields an IOError, however
attempting to stat a non-existent path (or a dangling symlink
without lstat()) yields OSError:
# ln -s foo qux
# cat qux
cat: qux: No such file or directory
>>> os.stat("/foo/qux")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
OSError: [Errno 2] No such file or directory: '/foo/qux'
Catch both exception classes in this method.
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
| |
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
|
|
|
|
| |
When switching a Python string to a raw string escape sequences
like "\\n" must have the first `\` stripped or the literal value
will be taken when the string is used.
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
| |
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
| |
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
|
|
|
|
| |
Since the default for --verbosity must be set (to make it 0 rather
than None), use the _arg_defaults[] dictionary since the value is
not the default for the corresponding ArgumentParser action.
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The changes to prevent attempts to write builtin presets also
prevent user presets from being written:
# ./sosreport --batch --debug --profile system --add-preset qux2
sosreport (version 3.5)
Could not add preset: Cannot write built-in preset
This is because although we correctly clear pd.builtin on preset
load, we do not clear the flag when initialising a new user
preset from the command line.
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
| |
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Move the formatting of SoSOptions into sosreport command line
arguments from SoSReport.list_presets() into SoSOptions.to_args().
This allows the function to be simplified since it has access to
the raw arguments rather than their string representation.
The method returns a list of string '--argument value' pairs, and
suppresses null, default and True argument values.
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The --verbosity arg is a bit awkward in preset listings as it is
a count type. The literal value is 1, 2, or 3, but the user enters
it by repeating either the short or long option.
Ideally, a user should be able to paste the arguments from the
--list-presets output into the terminal and use them as arguments
to sosreport: using the long option for this is... verbose:
"--verbosity --verbosity --verbosity". Special case this option
and use the short version instead: "-vvv".
name: vvverbose-debug
description:
options: --debug -vvv
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
| |
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
|
|
|
|
| |
If an unknown preset is given on the command line, display an
error message and set self.opts.list_presets=True to show the
list of available presets.
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
| |
When merging options (e.g. to combine command line and preset
arguments), concatenate list-typed argument values rather than
overwriting the target list with the source value.
This allows users to extend preset-defined arguments for options
like --only-plugins and --profiles on the command line.
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
| |
The reasoning for the use of deques in sos.sosreport is lost to
the mists of CVS, but may have had something to do with limitations
in setting default values in old versions of optparse: nothing in
the module appears to depend on deque-like behaviour at all.
Pull it all out and replace them with plain lists. This simplifies
JSON handling and option merging for these types.
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When formatting a human readable string representation of an
SoSOptions object, convert any sequence types (lists, tuples, or
deques) into a human readable string.
This gives output like:
onlyplugins=foo,bar,baz,qux
Rather than:
onlyplugins=[u'foo', u'bar', u'baz', u'qux']
This is used by --list-presets to produce lists of preset options
in command line notation:
options: --batch, --build, --debug=1, --onlyplugins=kernel,logs,
--verbosity=1
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Re-format the output of --list-presets to be more compact and
readable: add labels for each field (name, description, notes,
and options), right justify all field labels to 15 chars, and
convert SoSOptions() string representations into command line
argument notation.
logs-only : A preset to only run the logs plugin
opts: all_logs=False, batch=False, build=False, case_id=,
chroot=auto, compression_type=auto, config_file=, debug=False,
enableplugins=[], experimental=False, label=,
list_plugins=False, list_presets=False, list_profiles=False,
log_size=10, noplugins=[], noreport=False, onlyplugins=[],
plugopts=[], preset=, profiles=deque([]), quiet=False,
sysroot=None, tmp_dir=, usealloptions=False, verbosity=0,
verify=False
Vs.:
name: logs-only
description: A preset to only run the logs plugin
options: --onlyplugins=logs
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
|
|
|
|
| |
For hysterical raisins --alloptions maps to cmd_args.usealloptions
rather than cmd_args.alloptions. Make the argument name and the
options member name match.
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
|
|
|
| |
Preset arguments should not be included in presets: simplify the
filtering to use lists of filtered argument names.
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
|
|
|
| |
Preset arguments should not be included in presets: simplify the
filtering to use lists of filtered argument names.
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
| |
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
| |
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
|
|
|
|
|
| |
Allow user-defined named presets, stored by default in the
/var/lib/sos/presets directory. A description and note for user
presets may be optionally spefified using the --desc/--description
and --note options.
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
| |
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
| |
Add a method to convert an SoSOptions() instance into a dict:
the keys of the dictionary are the argument names and the values
are the current option values.
Any argument with a deque() value is converted to a plain list
prior to processing.
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
|
|
|
|
|
|
| |
Instead of hard-coding a tuple for every member of SoSOptions
(% (self.foo, self.bar, ...)), use a list comprehension on the
existing _arg_names list to obtain the attribute values via
getattr(). This avoids the need to maintain the tuple manually
as options are added or removed.
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
|
|
| |
Add a command line option to list out presets and their options:
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add the ability for the Policy class to load presets in JSON
format: a PresetDefaults object maps directly to the JSON file
structure: the outer container is a dictionary whose keys are the
names of the contained presets, and each preset may contain a
"name", "desc", "note", and "opts" member.
Methods are provided to load, write, delete, user presets, and
to register policy-defined built-in presets:
PresetDefaults.write()
PresetDefaults.delete()
Policy.register_presets()
Policy.load_presets()
policy.add_preset()
policy.del_preset()
The name is used to select a preset (in the same way as a policy
defined preset), and the description and note give further
information on the preset and its behaviour (for e.g. performance
impact).
The "opts" key maps to a further dictionary mapping sos argument
names to their preset values.
Loaded presets are added to the active policie's presets store
and are available to the user via --preset.
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add a new special value for the --preset argument, 'auto', which
enables automatic detection of the preset identifier string by
the policy class.
A new method, probe_preset() is added which should be implemented
by derived classes of Policy to return a ProductDefaults() object
initialised appropriately for the running preset.
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
| |
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
|
|
|
|
| |
Add initial RHEL product family presets to the RHELPolicy class
and implement automatic preset detection for known Red Hat
products (RHEL, Satellite, and Atomic).
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
| |
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
| |
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
| |
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
|
|
|
|
| |
To be consistent with other deque()-typed arguments make the
defined value of SoSOptions.profile be [] (this simplifies JSON
encoding of the object).
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
| |
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
|
|
|
|
|
| |
The options object now needs to be referenced in both the main
sosreport script, and the policy classes: move its definition
from the sos.sosreport module to sos to avoid recursive import
errors between sosreport and policy.
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
| |
Add a method to merge a pair of SoSOptions, replacing unset or
default values with those from the source options (and optionally
overwriting already set values).
This will be used to allow the policy framework to define default
command line behaviour for specific products.
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
|
|
|
| |
Add a dictionary mapping all argument names with a non-zero
default value to the appropriate default.
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
|
|
| |
Debugging is either on or off: make the argument match the option.
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
| |
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
| |
Simplify the SoSOptions class by removing the wrapping of the
command line options and individual property methods.
This removes some validation for API users implemented via the
property methods: this can be re-added later if required as the
interface is formalised.
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
| |
If the caller does not specific an explicit size limit (or 0 to
disable limits) automatically set the sizelimit argument for the
add_copy_spec(), add_cmd_output(), and add_journal() methods to
the value of the "log_size" option.
Resolves: #1325
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
|
|
|
| |
The add_journal() method _must_ use explicit kwarg notation when
calling the _add_cmd_output() helper.
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
|
|
|
| |
The add_cmd_output() method _must_ use explicit kwarg notation
when calling the _add_cmd_output() helper.
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Fixes an issue where verbosity would be set to 'None' rather than 0 in
the event that a sosreport was run with options, when those options did
not include -v at all. This meant that if any options were specified, a
newline would be printed for each started plugin when instead we should
still have been refreshing a single line.
Related to this, the previous newline behavior was beneficial when
running with --batch, so that behavior is maintained if --batch is
specified.
Resolves: #1355
Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The 'pep8' tool has been renamed to 'pycodestyle' to avoid confusion
with pep8 the document. pep8 (the tool) will no longer be updated and as
such we should transition to the new pycodestyle.
This commit fixes a number of PEP8 issues with the new pycodestyle
linter that has tests for new additions to PEP8 that the pep8 tool did
not include. Most of these are exception handling fixes like:
sos/plugins/logs.py:96:13: E722 do not use bare 'except'
Which are relatively straight forward to address, by instead catching
just the applicable exceptions, e.g. IOError, ValueError, etc... In
cases where there were many possible exceptions or where the "bare
'except'" was a final catch-all, we now use 'except Exception' to catch
anything from the base exception class.
Another frequent correction was for escape sequencing, such as:
sos/plugins/logs.py:48:15: W605 invalid escape sequence '\S'
The solution for this is to mark these regex strings as raw strings,
which is preferred by `re` as future releases of that module may/will
become more strict in its parsing of regex strings.
Resolves: #1344
Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
|
|
|
|
|
| |
Catch and log any exception and set port as string before
concatenating it.
Resolves: #1352
Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
| |
Use a list comprehension to both generate the list of paths to
collect, and to filter out any directories in the standard list
of fibrechannel paths that do not exist on the running system.
Resolves: #1353
Related: #1341
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|