| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
| |
For python3, calling `.keys()` on a dict no longer returns a list, so we
need to explicitly make it a list of values to behave as expected.
Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
| |
Moves SoSReport() from a standalone class to a subclass of
SoSComponent() in order to take advantage of the new 4.0 redesign.
This commit also pulls out methods that were previously transitioned to
other places, e.g. logging setup moving from SoSReport() to the base
SoSComponent() class.
Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
|
|
|
|
| |
Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
|
|
|
|
|
|
|
|
|
| |
For the 3.x line, many classes subclassed `object` directly, in order to
use the 'new-style' objects introduced with python3, while still
maintaining python2 functionality. As sos-4.0 is python3 only, we no
longer need to do this.
Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
|
|
|
|
|
|
|
|
| |
Moving the `_sos_ definition wrapper for gettext into utilities proved
to be the wrong direction, so this moves it back into sos/__init__.py in
order to preserve the ability to properly import it elsewhere.
Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Adds Policy loading into `SoSComponent()` so that any subcommand can, if
it needs it, have policies loaded consistenly. This is controlled via
the `load_policy` class attr, which defaults to True. Future subcommands
that do not need to have a policy loaded (E.G. the planned `info`
command), can simply set this to False in order to skip this step.
Moves `SoSComponent()` out of sos/__init__.py and into sos/component.py
to ease import conflicts arising from policy loading.
Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
|
|
|
|
|
|
| |
Adds the exit handling from SoSReport() directly into SoSComponent()
Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
As we are moving to decouple SoSOptions() from report, we need to adjust
how some of the option loading is handled, such as loading values from a
conf file. The previous approach was to instantiate a new SoSOptions()
object, read into it from the config file, and then merge that with the
"main" SoSOptions() object. This worked well when we only had report to
worry about since the arguments were more or less static.
However, in allowing new subcommands to define their own options this
presented a problem due to the behavior of merging. This was compounded
by the fact that merging still functioned how we expected/needed for
actions like merging commandline options against the defaults.
As such, the new approach is to use the "main" SoSOptions() instance to
read the config file specifications and then directly modify the needed
values rather than relying on the merging behavior.
Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
| |
Moves logging setup into `SoSComponent`, and logging is setup by default
at component initialization, unless the `configure_logging` class attr
is set to `False`.
Moves the TempFileUtil() class out of report and into utilities for
easier usage by all sos components.
Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
|
|
|
|
|
|
|
|
| |
This is the first of probably a number of commits aimed at making
SoSOptions() a generic option handling class for all components in sos,
rather than being tightly bound to `report`.
Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
|
|
|
|
|
|
|
|
|
|
| |
Now dynamically build the usage string reported by --help for the
top-level parser (I.E. `sos --help`) to print available components.
Additionally, rework the subparser usage strings to accurately report
the syntax for subcommands.
Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
|
|
|
|
| |
Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
|
|
|
|
| |
Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
|
|
|
|
|
|
|
|
|
| |
Moves `SoSOptions()` and the related bits to a new sos/options.py
location. This should allow for easier maintenance and ongoing
development as our option handling approach will be shared across
components.
Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is the first patch to add a new `sos` binary to act as the new
commandline interface for users.
It adds the basic `SoS()` and `SoSComponent()` classes that will be
built out and used going forward for new subcommand development. Actual
functionality will be added in coming patches, as this is mainly serving
as a checkpoint to avoid over-large commits affecting wide swathes of
changes at once.
Resolves: #1986
Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
|
|
|
|
| |
Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
|
|
|
|
|
|
|
|
| |
Removes the redundant __run__.py from the project root, as it has not
been used for quite some time and the legacy `sosreport` binary was its
replacement.
Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
|
|
|
|
|
|
|
| |
Moves the legacy sosreport.py into sos/report/__init__.py as part of the
reorganization for 4.0
Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
| |
Updates the uses of 'from sos.plugins' to 'from sos.report.plugins' in
order to fix imports across the project with the new tree organization.
Additionally, the legacy `sosreport` binary now injects the user's
current working directory into the path the python interpreter uses in
order to allow local execution from a git checkout.
Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is the beginning of the sos-4.0 design rework.
First, move the existing `sosreport` binary into a new top-level `bin`
dir. The future `sos` binary will also live here.
Second, create a `report` subdir within the `sos` module, and move the
relevant `sosreport` bits to that subdir. A following commit will update
all references like `from sos.plugins` to `from sos.report.plugins`.
Related: #1986
Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
|
|
|
|
|
|
|
|
|
|
| |
Removes the add_udev_info method as its original purpose was to easily
iterate over a list of devices which is now handled (better) by
add_blockdev_cmd.
Resolves: #1508
Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
|
|
|
|
|
|
|
| |
Updates the scsi plugin to use the new add_blockdev_cmd() method instead
of add_udev_info().
Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
|
|
|
|
|
|
|
| |
Updates the fibrechannel plugin to replace the ad-hoc device enumeration
with the new add_blockdev_cmd method.
Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
|
|
|
|
|
|
|
| |
Updates the nvme plugin to replace the ad-hoc device enumeration and
command building with the new add_blockdev_cmd method.
Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
|
|
|
|
|
|
|
| |
Updates the block plugin to replace the ad-hoc device enumeration and
command building with using the new add_blockdev_cmd method.
Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Adds a new mechanism for iterating over a list of devices with a given
command or list of commands. This is to allow us to stop doing ad-hoc
device enumeration in multiple plugins and instead provide a consistent
behavior for iterating over devices such as disks.
Before setting up plugins, sos will now enumerate a list of block
devices and fibre devices that is made available to the plugins. From
there the new 'add_blockdev_cmd()' method may be passed a command or
list of commands that will be iterated over for every device. Commands
passed need to include '%(dev)s' in the appropriate place for device
name substitution. By default this will iterate over all discovered
block devices. The 'devices' parameter may be used to change this,
either by passing 'fibre' to instead iterate over fibre devices, or by
passing a list of devices to use directly.
To filter out or restrict commands to running on specific types of
devices, the blacklist and whitelist parameters can be used respectively
and can accept either a single regex string or a list of regexes.
Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
|
|
|
|
|
|
|
|
|
|
| |
Updates the plugin to use the new `ContainerRuntime` abstraction
provided by the loaded `Policy` rather than shelling out again to get
the same data loaded during `Policy` initialization.
Resolves: #1873
Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
|
|
|
|
|
|
|
|
| |
Updates the plugin to use the new `ContainerRuntime` abstraction
provided by the loaded `Policy` rather than shelling out again to get
the same data loaded during `Policy` initialization.
Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
|
|
|
|
|
|
|
| |
Updates the `rabbitmq` plugin to use the new ContainerRuntime
abstraction.
Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
| |
Updates `ovn_central` to use the new ContainerRuntime methods exposed to
the `Plugin` class.
Rather than manually checking for runtimes, and then manually building
the exec commands, the plugin now relies on the `Plugin` methods for
discovering containers and formatting commands to be run in a container,
if applicable.
Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
|
|
|
|
|
|
|
|
| |
Removes the duplicated container runtime checks from individual plugins,
and updates them to use the new methods exposed in `Plugin`, thus
reducing the number of times sos calls out to the runtime.
Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Integrates the ContainerRuntime checks to the Plugin API -
`Plugin.exec_cmd()` now accepts a `container` argument that, if set,
will first check to see if the container exists and if it does, format
the requested command to be executed by the runtime in the selected
container. If the runtime is not available, or the container does not
exist, the command is not run.
Additionally adds a `container_exists()` call to check to see if a
container is present/running, and a `fmt_container_cmd()` call that
wraps the `ContainerRuntime` method to allow for easy formatting of
commands for `add_cmd_output()` calls.
Closes: #1866
Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Adds a `ContainerRuntime()` class to allow policies to specify a
container runtime to allow plugins to utilize.
The `ContainerRuntime` is intended to allow for the discovery of
containers, including specific ones by name, and for the execution of
commands inside those containers.
This is meant to remove the overhead of manually defining ways to
determine an active runtime and if a component is containerized within
plugins.
Related: #1866
Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
|
|
|
|
|
|
|
|
|
| |
Adds collection of log files for metrics, setup, and vmconsole
Resolves: #2002
Signed-off-by: Ehud Yonasi <eyonasi@redhat.com>
Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
|
|
|
|
|
|
|
|
|
| |
This plugin adds the output of the command
lshw, and its output complements what we
already collect with dmidecode.
Signed-off-by: Jose Castillo <jcastillo@redhat.com>
Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
|
|
|
|
|
|
|
|
|
| |
Add a new plugin to retrieve an oVirt engine database backup.
Resolves: #1977
Signed-off-by: Miguel Martin <mmartinv@redhat.com>
Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
By default, plugins will now capture service status information from the
init system for any services defined in the plugin's `services` member,
provided that that service actually exists on the system.
This is done by calling a new method, `add_default_collections()` before
we call `Plugin.setup()` for each plugin. This will allow us to more
easily extend default collection behaviors going forward.
Resolves: #1965
Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Enabled by presence of /etc/sos.extras.d/ directory, the plugin will
execute all commands from all files in the directory, in order to
collect extra user-defined data e.g. specific for a given system
or product (or not yet being collected by sosreport otherwise).
Empty lines or lines starting by '#' are ignored.
Files or file patterns to be collected must be preceded by ':' ,
optionally followed by sizelimit. Examples:
:/path/to/file
:/path/to/files* sizelimit
Other lines are treated as commands to execute, with output stored under
sos_commands/sos_extras/<filename>/<command>
directory.
Resolves: #1663
Resolves: #1788
Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The Validation Framework provides an overview of deployed services.
For now, this Framework is linked to OpenStack and TripleO[1], but since
it might be used by other products, it's probably better to get a generic
name.
Resolves: #1970
Signed-off-by: Cédric Jeanneret <cjeanner@redhat.com>
Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
|
|
|
|
|
|
|
|
|
|
| |
Adding commands which collects smart proxies
details.
Closes: #1972
Signed-off-by: Jan Jansky <jjansky@redhat.com>
Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
| |
We no longer have to workaround an odd LXD/Travis interaction
so make simple.sh not treat Travis special.
Closes: #1921
Resolves: #1983
Signed-off-by: Bryan Quigley <bryan.quigley@canonical.com>
Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
|
|
|
|
|
|
|
|
|
|
| |
Add a new plugin for collecting information about console and keyboard
including the status of console and Scroll Lock flag.
Resolves: #1981
Signed-off-by: Kazuhito Hagio <k-hagio-ab@nec.com>
Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Commit d334c5dedbcf ("[sar] Fix the parameter specified in
add_copy_spec() to wildcard") appended the wildcard to the sa_path.
But since it is passed to os.listdir() as is, the following warning
is printed and later commands are not collected.
[plugin:sar] sar: could not list /var/log/sa/*
Resolves: #1978
Signed-off-by: Kazuhito Hagio <k-hagio-ab@nec.com>
Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
|
|
|
|
|
|
|
|
|
|
| |
On RHEL 8, modules and contexts are not in /etc/selinux/<policy>
directory anymore, but in /var/lib/selinux/<policy> directory.
Resolves: #1976
Signed-off-by: Renaud Métrich <rmetrich@redhat.com>
Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
|
|
|
|
|
|
|
|
|
| |
Removes the check_enablement() override for this plugin and replaces it
with the new architecture enablement check.
Closes: #1975
Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
|
|
|
|
|
|
|
|
|
| |
Replaces the check_enablement() override with the standard package
check, and the new arch check functionality.
Related: #1975
Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
|
|
|
|
|
|
|
|
|
|
| |
From support team feedback, power systems may not have useful pci
information. Now, gate `lspci` command collection behind the presence of
bus directories under /proc/bus/pci.
Related: #1975
Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
| |
Plugins may now set an 'architectures' tuple when instantiating a Plugin
to restrict that plugin from enabling only on those architectures
provided any other enablement checks pass as well.
By default, a plugin is considered to be runnable on any architecture.
Related: #1975
Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Extends SoSPredicate to allow for 'negative' presence checks, e.g. a
package is _not_ installed or a system is _not_ of a specified list of
architectures.
This is done by setting the relevant test in the 'required' dict handed
to SoSPredicate instances to be set to 'none' (the string, not the
NoneType).
For example, in order to run a command provided that a particular
service is not running, the following predicate would be used:
SoSPredicate(self, services='foobar', required={'services':
'none'})
Related: #1975
Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Extends `SoSPredicate()` so that plugins may test for being run on
specific architectures.
This predicate test only really supports the 'any' test as a system can
only have one architecture, so the use of an 'all' predicate test does
not make sense.
Related: #1975
Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
|