| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
|
| |
Adds the condition that no more plugins are supposed to run when there
are no plugins running to report that sosreport has finished running
plugins.
Resolves: #1354
Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In some cases the concurrent plugins patch will produce output
like the following (with a starting set of plugins of [activemq,
apache, dbus, dhcp, manageiq, openshift, openstack_swift,
puppet]:
Starting 1/8 activemq [Running: activemq]
Starting 2/8 apache [Running: apache]
Starting 4/8 dhcp [Running: apache dhcp]
Starting 5/8 manageiq [Running: apache dhcp manageiq]
Starting 6/8 openshift [Running: apache openshift]
Starting 7/8 openstack_swift [Running: apache openshift openstack_swift]
Starting 8/8 puppet [Running: apache openshift puppet]
Plugin #3 on the list (dbus) has vanished from the plugin run
list.
The ThreadPoolExecutor class uses itertools.izip() to walk the
passed iterable of arguments. Since this references the same
SoSReport.pluglist list that is being concurrently modified by
the collect_plugin() methods it is possible for the pool iterator
to "lose" an entry (another entry is removed by during the call to
its collect_plugin() method, causing the list indices to shift,
and making the index used in the next iteration of the pool's
map() submission loop point one past the correct next entry.
Avoid this problem by initialising a fresh copy of the pluglist
to pass into the pool.
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Previously this had no checks and would run for every sosreport,
many of which don't have puppet installed.
There have been several name changes so I included a lot of package
names to try to cover all of the possible versions/distros.
Resolves: #1345
Signed-off-by: Bryan Quigley <bryan.quigley@canonical.com>
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
|
|
|
|
|
|
| |
skydive is an open source real-time network topology and protocols
analyzer for more info: http://skydive.network/
Resolves: #1351
Signed-off-by: Masco Kaliyamoorthy <mkaliyam@redhat.com>
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
|
|
|
|
|
|
| |
to prevent uncaught exception on py3
also dont import already imported traceback class
Resolves: #1349
Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
| |
I found a permission error when trying to copy /sys/fs/pstore when
running on LXD containers. Adding a permission check first allows
it to skip folders it can't list.
Resolves: #1348
Signed-off-by: Bryan Quigley <bryan.quigley@canonical.com>
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
|
|
| |
Resolves: #1346
Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
|
|
|
|
|
|
| |
Resolves: #1343
Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
|
|
|
|
|
|
| |
Resolves: #1342
Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
|
|
|
|
|
|
| |
Resolves: #1341
Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
|
|
|
|
|
|
|
|
| |
Fixing a regression caused by 8e69d36 .
Resolves: #1337
Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
|
|
|
|
|
|
|
|
|
|
| |
Moving also building of the command from Archive to Plugin class.
Closes: #1196
Resolves: #1338
Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
|
|
|
|
|
|
| |
In some cases, we need to determine what package provides given
binary. This auxiliary function implements it - so far it works
for and will be used by archive methods.
Related to: #1196
Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Fixes an issue where sosreport would not run due to an unset number of
threads if 'sosreport' was run bare, with no options. Any option
(threads or otherwise) would mask this problem due to how the default
threads value was set by the parser. Now sosreport can be run without
any options and run normally, with the concurrency provided by the
threads.
Additionally, changes the status line printed during plugin execution to
be of a fixed length, so that output lines are not mangled when the
status line is updated, rather than a new line being printed (such as
what happens when using --batch).
Resolves: #1336
Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
|
|
|
|
| |
Closes: #1334
Resolves: #1335
Signed-off-by: Amit Ghadge <amitg.b14@gmail.com>
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Adds a new plugin for Microsoft SQL Server on Linux.
Collect log files.
Collect journal logs.
Collect keytab file info if AD auth is configured.
Resolves: #1326
Signed-off-by: Takayoshi Tanaka <tatanaka@redhat.com>
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Since OCP 3.6+, there are some DNS config under /etc/origin/node/ such
as `node-dnsmasq.conf` and `resolv.conf`. Although current sosreport
does not gather them, these are important for troubleshooting of DNS
issues.
This patch updates origin.py to collect {resolv,node-dnsmasq}.conf
under /etc/origin/node/.
Resolves: #1311
Signed-off-by: Kenjiro Nakayama <nakayamakenjiro@gmail.com>
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
1) Do the copy in one call with variables, so it's more efficient.
2) Collect the config tarball
It'll be very useful to collect the config tarball which containers
TripleO Heat Templates used to deploy the undercloud and the Ansible
playbooks generated by config-download as well.
Both of them are archived and compressed in
/home/stack/undercloud-install-*.tar.bzip2 files everytime
install/upgrade commands are run.
3) Collect ephemeral Heat logs
/var/log/heat-launcher is a new directory that contains the
heat-installer sqlite, logs and configuration.
The content is small because it's only used once and it's ephemeral
(purged everytime an operator install or upgrade an undercloud).
However, collecting these files will be useful to help customers.
4) Collect new logfile
When containerizing the undercloud, we're moving install-undercloud.log
into $HOME which makes it more accessible for the users, while we're
removing instack(-undercloud) bits over time.
This patch add $HOME/install-undercloud.log file and document why we're
doing this. Note that we still collect old file for previous releases.
Resolves: #1279
Signed-off-by: Emilien Macchi <emilien@redhat.com>
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Since plugins are now run concurrently the Archive class must be
re-entrant: different plugins may attempt to create the same
paths in the archive, and since they are executing in parallel
and with no locking, there exists a TOCTOU race between the use
of os.path.{exists,isdir, etc.}() and the subsequent creation of
a new path.
Address this by implementing a simple monitor-style locking scheme
for the FileCacheArchive class. A `_path_lock` member is added to
the class and this must be held across any operation that modifies
the namespace of the archive (including file, directory, symlink,
and special node creation).
Additionally, the `_check_path()` Archive method (which checks
for the existence of path components up to the basename of the
file, creating directories as required) is extended to also carry
out a test for the existence of the path, and if the path does
exist, that the object is of the expected type. A mismatch in the
object type generates a ValueError with an appropriate string
description of the problem.
Benchmarking shows a consistent small improvement with the patch:
this is a result of reduced redundant copy operations that the
previous archive structure allowed (since duplicate operations
are now aborted as soon as the _path_lock is acquired).
Resolves: #1340
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Configuration files can exist in three different locations
with the precedence from most important to least as follows:
/run/netplan/*.yaml
/etc/netplan/*.yaml
/lib/netplan/*.yaml
Alphabetically later files, no matter what directory in, will
amend keys if the key does not already exist and override previous keys if they do.
Resolves: #1318
Signed-off-by: Eric Desrochers <eric.desrochers@canonical.com>
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add ubuntu-advantage status which is installed by default on Ubuntu and
shows when various UA items are enabled - esm, fips, and livepatch.
Switch ubuntu-support-status to always --show-all. It takes exactly
the same amount of time to run (in both cases it's relatively slow at
3 seconds), and only adds 30k uncompressed/12k compressed.
Add hwe-support-status to give more details about Ubuntu Hardware
enablement if present.
Resolves: #1330
Signed-off-by: Bryan Quigley <bryan.quigley@canonical.com>
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
| |
plugins added:
- omnipath_manager for OPA fabric subnet manager
- omnipath_client for management/head node of the cluster
Resolves: #1291
Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
I've noted an uptick of users recompressing sosreports to get a
better compression rate for uploading over slow links. My tests
indicate that -2 is a better default and should remove any benefit
of compressing again.
In tested cases -2 does not cause any significant CPU increase
and always has shown an improvment - sometimes substancial. The
worst was 3seconds more for a 15MB savings. I would generally
expect to see similar percentage savings as sosreports get bigger.
-3 and higher were evaluated but had diminshing returns that
didn't seem worth it.
Tests results:
NVMe drive
xz -a --batch
-1 5.9M 30.766s
-2 5.7M 30.673s
-3 5.6M 30.101s
-4 5.5M 35.882s
bz2
bz2 -a --batch
-1 11M 36.675s
-2 8.3M 38.792s
xz -a --all-logs --batch
-1 87M 1m8.994s
-2 72M 1m11.926s
-3 69M 1m18.210s
-4 70M 2m33.930s
Old hard drive
-a --batch
-1 5.3M 14.935s
-2 5.2M 15.611s
-a --batch --all-logs
-1 35M 38.881s
-2 26M 38.337s
Resolves: #1307
Signed-off-by: Bryan Quigley <bryan.quigley@canonical.com>
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Adds a check for the /tmp directory for permissions and selinux
context. If either of these are incorrect, the system in question can
exhibit strange behavior and otherwise be difficult for support teams to
detect.
On systems where SELinux is disabled, the permission check is still
relevant and the command still produces useful output with the -Z
option.
Resolves: #1327
Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
| |
Adds collection of the previous day's worth of events handled by the
daemon, a summarized output of storage needs, and a listing of volumes
known to the daemon.
Resolves: #1328
Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
|
|
|
|
|
|
| |
An early change to the docker plugin corrected the Debian/Ubuntu docker
command to be "docker" instead of "docker.io". This means that the
docker commands run by the plugin are not going to be different across
distributions. As such, the way the commands are built by the plugin
have been simplified to ease readability.
Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
|
|
|
|
|
|
|
|
| |
Don't compute archive's checksum and print a message to stdout rather.
Resolves: #1329
Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
|