aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* [Plugin|Policy] Only call lsmod once and standardize kmod checksPavel Moravec2019-11-122-13/+8
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit makes two changes to how sos deals with kernel modules and their state during a run of sosreport. First, no longer call `lsmod` for every individual plugin during its enablement check. Instead, call `lsmod` only once during `Policy` initialization, and cache the output for later checks. Second, have `Plugin.is_module_loaded()` check for kmod presence in the saved policy class attr for kernel_mods, rather than checking through `/proc/modules`. Have the plugin enablement checks now also use `is_module_loaded()` to standardize with how `SoSPredicate`s are checked. Note that this change results in a significant performance increase for sos initialization times in a RHEL 7 container. Resolves: #1854 Signed-off-by: Jake Hunsaker <jhunsake@redhat.com> Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
| * [Plugin|Policy] Only call lsmod once and standardize kmod checksJake Hunsaker2019-11-112-13/+8
|/ | | | | | | | | | | | | | | | | | | | | | This commit makes two changes to how sos deals with kernel modules and their state during a run of sosreport. First, no longer call `lsmod` for every individual plugin during its enablement check. Instead, call `lsmod` only once during `Policy` initialization, and cache the output for later checks. Second, have `Plugin.is_module_loaded()` check for kmod presence in the saved policy class attr for kernel_mods, rather than checking through `/proc/modules`. Have the plugin enablement checks now also use `is_module_loaded()` to standardize with how `SoSPredicate`s are checked. Note that this change results in a significant performance increase for sos initialization times in a RHEL 7 container. Resolves: #1854 Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
* [vdsm] fix directory blacklist styleBryn M. Reeves2019-11-041-2/+2
| | | | | | | Plugins must use 'path/to/exclude' rather than 'path/to/exclude/*' in order to omit a directory and all its content from the report. Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [openstack_octavia] fix directory blacklist styleBryn M. Reeves2019-11-041-1/+1
| | | | | | | Plugins must use 'path/to/exclude' rather than 'path/to/exclude/*' in order to omit a directory and all its content from the report. Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [libreswan] fix directory blacklist styleBryn M. Reeves2019-11-041-1/+1
| | | | | | | Plugins must use 'path/to/exclude' rather than 'path/to/exclude/*' in order to omit a directory and all its content from the report. Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [ceph] fix directory blacklist styleBryn M. Reeves2019-11-041-2/+2
| | | | | | | Plugins must use 'path/to/exclude' rather than 'path/to/exclude/*' in order to omit a directory and all its content from the report. Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [Plugin] improve _copy_dir() variable namingBryn M. Reeves2019-11-041-3/+4
| | | | | | | Directory entries found in _copy_dir() may be either files or sub-directories: reflect this in the names of local variables. Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [Plugin] use correct source path when copying directoriesBryn M. Reeves2019-11-041-1/+1
| | | | Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [tests] fix test_copy_dir_forbidden_pathBryn M. Reeves2019-11-011-1/+2
| | | | | | | | | | Rather than call just Plugin.setup() and Plugin._do_copy_path(), add an add_copy_spec() call to the mock plugin setup() method, and invoke copying by calling the Plugin.collect() method. Related: #1845 Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [kernel] remove trailing directory globs in forbidden pathsBryn M. Reeves2019-11-011-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since the forbidden path test now uses an exact match the trailing globs ("/some/directory/path/to/exclude/*") used to exclude trace related directories from collection lead to a failure to properly blacklist these files: The glob is expanded, for e.g.: "/sys/kernel/debug/tracing/per_cpu/*" Expands to unclude a 'cpuN' sub-directory for each CPU present on the machine. These expanded paths are then added to the forbidden paths list for the plugin: /sys/kernel/debug/tracing/per_cpu/cpu0 /sys/kernel/debug/tracing/per_cpu/cpu1 ... When an attempt is made to collect the entire "per_cpu" directory a check is made for the full "/sys/kernel/debug/tracing/per_cpu" path against each entry in the forbidden paths list. Since this is a prefix of the actual paths stored no match is returned and the collection is permitted. Remove the trailing globs from these directory paths and prevent any collection of the directories they reference by the plugin. Related: #1842 Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [Plugin] fix destination paths in _do_copy_path()Bryn M. Reeves2019-11-011-3/+3
| | | | | | | | | | | The path used to copy special device nodes and directories in _do_copy_path() should be the destination path in the archive (without sysroot prefix), and not the source path in the host file system that includes this prefix. Related: #1842 Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [Plugin] remove invalid {strip/join}_sysroot()Pavel Moravec2019-11-011-3/+1
| | | | | | | | | | | Do not strip the sysroot path prefix when calling _do_copy_path() for a symlink target and do not add the sysroot prefix when testing for a forbidden path. Related: #1842 Signed-off-by: Pavel Moravec <pmoravec@redhat.com> Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [kpatch] fix command status typoBryn M. Reeves2019-10-311-1/+1
| | | | Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [podman] Collect network information and cert/hooks listJake Hunsaker2019-10-251-1/+11
| | | | | | | | | | | | First, adds collection of a recursive listing of /etc/containers to show which certs and oci hooks may be present. Second, adds collection of podman networking information. Both the output of 'podman network ls' and a subsequent inspect on each network reported are captured. The inspect outputs are saved to the 'networks' subdir. Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
* [policies] RHOSP preset without --all-logsPavel Moravec2019-10-251-4/+2
| | | | | | | | | OpenStack deployments do not need to collect all logs by default. Resolves: #1841 Signed-off-by: Pavel Moravec <pmoravec@redhat.com> Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
* [grub2] call grub2-config with --no-grubenv-update when appropriatePavel Moravec2019-10-252-3/+11
| | | | | | | | | | | | On some newer grub2 versions, grub2-config removes extra args in $kernel_opts until --no-grubenv-update option is used. Test if the option is present in "grub2-config --help" and if so, use it. Resolves: #1682 Signed-off-by: Pavel Moravec <pmoravec@redhat.com> Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
* [plugins] extend SoSPredicate by command output inclusion testPavel Moravec2019-10-251-8/+49
| | | | | | | | | | | | | | | Add a predicate type in form cmd_outputs={'cmd': 'foo --help', 'output': 'bar'} that checks whether output of given command contains given string. Multiple commands/outputs can be provided in a list. Related to: #1682 Signed-off-by: Pavel Moravec <pmoravec@redhat.com> Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
* [Predicate] Override __bool__ to allow py3 evaluationJake Hunsaker2019-10-241-0/+5
| | | | | | | | | | | | | | | | | | | The check in `Plugin.test_predicate()` relies on a 'is not None' test, which on py2 invokes a call to `SoSPredicate.__nonzero__()` which in turns runs our evaluation of the predicate. On py3 however, this test is an explicit check to see if the object is `NoneType`. As such, `__nonzero__()` never runs and the predicate defaults to always evaluating ad `True`. This effectively removed any gating for command execution on py3. By overriding `SoSPredicate.__bool__()` to wrap `__nonzero__()` we can ensure that predicate evaluation is performed properly on both py2 and py3 runtimes. Closes: #1839 Resolves: #1840 Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
* [subscription_manager] obfuscate proxy password in rhsm.confPavel Moravec2019-10-231-0/+5
| | | | | | | | | | | Obfuscate proxy password in /etc/rhsm/rhsm.conf on line: proxy_password = someSecret Resolves: #1837 Signed-off-by: Pavel Moravec <pmoravec@redhat.com> Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
* [archive] remove obsolete TarFile wrapperBryn M. Reeves2019-10-231-77/+1
| | | | | | | | | | | The _TarFile wrapper in sos.archive is only needed for python 2.6 and earlier: remove it since we no longer support this version. Closes: #1834 Resolves: #1838 Signed-off-by: Bryn M. Reeves <bmr@redhat.com> Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
* [redhat] Automatically enable cantboot preset in emergency/rescue modeJake Hunsaker2019-10-231-0/+4
| | | | | | | | | | If sos is being run in emergency or rescue mode on a RH family system, then automatically load the cantboot preset by default, instead of other package-based presets. Resolves: #1831 Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
* [Plugin] fix plugin option regression (c4d06c5)Bryn M. Reeves2019-10-231-2/+1
| | | | | | | | | | | | | | | | | | | | | | Commit c4d06c5 fixes an LGTM warning about the placement of the else clause in the for loop of Plugin.set_option() but introduces a regression setting valid plugin options: # sosreport -vv --batch --debug --build -k rpm.rpmva=on sosreport (version 3.8) set sysroot to '/' (default) [plugin:ovn_central] could not run 'podman ps': command not found [plugin:ovn_central] could not run 'docker ps': command not found no such option "rpmva" for plugin (rpm) no such option "rpmva" for plugin (rpm) The 'else' here is invalid: rather than applying to the existing if statement inside the loop body the 'return False' should happen unconditionally if the loop exits without finding any match. Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [plugins] remove unused globstr variable from do_cmd_private_subPavel Moravec2019-10-231-1/+0
| | | | | | globstr is assigned but never used Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
* [reporting] Fix html report to make it compliantMikel Olasagasti Uranga2019-10-141-9/+7
| | | | | | | | | Also, removed link to donot.css as it doesn't exist. Resolves: #1830 Signed-off-by: Mikel Olasagasti Uranga <mikel@olasagasti.info> Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [policies] update vendor URLs to use HTTPSMikel Olasagasti Uranga2019-10-143-6/+6
| | | | | | | Resolves: #1829 Signed-off-by: Mikel Olasagasti Uranga <mikel@olasagasti.info> Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [build] update spec file URLs to use HTTPSMikel Olasagasti Uranga2019-10-141-1/+1
| | | | | Signed-off-by: Mikel Olasagasti Uranga <mikel@olasagasti.info> Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [doc] update documentation URLs to use HTTPSMikel Olasagasti Uranga2019-10-143-10/+10
| | | | | | | Related: #1829 Signed-off-by: Mikel Olasagasti Uranga <mikel@olasagasti.info> Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [pcp] fix pmloger_ls output processingBryn M. Reeves2019-10-141-2/+2
| | | | Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [sosrport] only import sos.plugins onceBryn M. Reeves2019-10-141-3/+2
| | | | | | | | | | Remove the from import of 'import_plugin()', and use a single import for the whole of 'sos.plugins' in sos.sosreport. Resolves: #1828 Signed-off-by: Jake Hunsaker <jhunsake@redhat.com> Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [InitSystem] Move load_all_services() out from base __init__()Jake Hunsaker2019-10-141-2/+1
| | | | | | | | Moves the call to load_all_services() out from the base __init__() of InitSystem() and into SystemdInit(), as highlighted by LGTM.com analysis. Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
* [lgtm] Remove unused importsJake Hunsaker2019-10-143-5/+0
| | | | | | Removes several unused imports identified by LGTM. Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
* [kimchi] Remove unused log-size checkJake Hunsaker2019-10-141-1/+0
| | | | | | | Removes a check against the log-size option that is not subsequently used later in the plugin. Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
* [openstack_cinder] Blacklist /etc/cinder/volumesJake Hunsaker2019-10-141-0/+1
| | | | | | | | | | Adds a blacklist to prevent sos from trying to copy volumes when those volumes are configured to be saved under /etc/cinder/volumes. Fixes: #1056 Resolves: #1827 Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
* [kubernetes] Only use kubeconfig file if file is presentJake Hunsaker2019-10-141-1/+3
| | | | | | | | | Updates the plugin for Red Hat systems to only use the OCP kubeconfig file, /etc/origin/master/admin.kubeconfig, if it is actually present. Resolves: #1826 Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
* [nfsganesha] Collect rotated logs when using --all-logsJake Hunsaker2019-10-141-0/+4
| | | | | | | | | If --all-logs is specified, the nfsganesha plugin will now gather the rotated log files from /var/log/ganesha, not just the current log file. Fixes: #1016 Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
* [plugins] Replace /var/run paths by /runPavel Moravec2019-10-1411-18/+16
| | | | | | | | | | | Since FHS 3.0, the system information data since boot are located in /run. Sosreport shall collect the data directly, without the need to follow symlink from /var/run to /run that exists just for the sake of legacy reasons. Resolves: #1824 Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
* [dracut] add plugin to 'boot' profileBryn M. Reeves2019-10-141-0/+1
| | | | | | Related: #1818 Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [subscription_manager] collect list --availableWilliam Bradford Clark2019-10-141-0/+2
| | | | | | | Resolves: #1793 Signed-off-by: William Bradford Clark <wclark@redhat.com> Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [Predicates] Allow predicates to check package installationJake Hunsaker2019-10-141-6/+25
| | | | | | | | | | | Extends the SoSPredicate class to accept and check a list of packages to gate command or file collection on if those packages are present on the system. Resolves: #1785 Signed-off-by: Jake Hunsaker <jhunsake@redhat.com> Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [manageiq] modify plugin to account for regularly large filesdluong2019-10-141-0/+15
| | | | | | | | | | | | | | | | | The following 5 files are usually over the default 25mb limit: ansible_tower.log automation.log evm.log production.log top_output.log Those 5 files interfere with the *.log glob to behave as users expect. These 5 files were broken out to miq_main_log_files. Resolves: #1779 Signed-off by: David Luong <dluong@redhat.com> Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [github] Remind to put 'Closes' for PR'sPablo Iranzo Gómez2019-10-101-0/+2
| | | | | | Resolves: #1815 Signed-off-by: Pablo Iranzo Gómez <Pablo.Iranzo@gmail.com>
* [github] Ease 'clicking' of PRs directly from GH interfacePablo Iranzo Gómez2019-10-101-4/+4
| | | | | | | Resolves: #1814 Signed-off-by: Pablo Iranzo Gómez <Pablo.Iranzo@gmail.com> Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [plugins] Update plugins to only use new consolidated methodsJake Hunsaker2019-10-1062-326/+216
| | | | | | | | | | | | | | | | | | | | | | | | | | | Updates numerous plugins to no longer use `get_command_output()`, `call_ext_prog()`, or `check_ext_prog()` - instead only using `collect_cmd_output()` where the content needs to be saved to the archive, and `exec_cmd()` where it does not. For the vast majority of plugins, these calls were able to be changed in-place with little to no further alteration of plugin code outside of no longer making indenpendent open() calls to files created, as the content of those files is now directly available. Exceptions are noted below. For the dlm, gfs2, and kvm plugins the only use of get_command_output() was to mount /sys/kernel/debugfs which in modern distributions is no longer needed, so those plugins have had that functionality entirely removed instead of being ported to the new `exec_cmd()`. For the networking plugin, many of the checks are handled by SoSPredicates, and so those command collections now use Predicates rather than being gated by individual `exec_cmd()` calls. Resolves: #1807 Signed-off-by: Jake Hunsaker <jhunsake@redhat.com> Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [Plugin] Consolidate command collection APIJake Hunsaker2019-10-102-73/+103
| | | | | | | | | | | | | | | | | | | | | | | Removed `call_ext_prog()`, `check_ext_prog()`, and `get_command_output()` in favor of consolidating Plugin command collection into 3 public methods: `add_cmd_output()`, `collect_cmd_output()`, and `exec_cmd()`. - `add_cmd_output()` remains unchanged and is the interface to use when plugins should collect command output during their collect() phase. - `collect_cmd_output()` will now return the content of a command's execution as well as the filename within the sos archive. This replaces `get_cmd_output_now()` and the rename aims to being a bit more standardization to the API names. `add_cmd_output()` calls will eventually be served by `collect_cmd_output()` during `collect()`. - `exec_cmd()` will run a command immediately, and return its output, without saving it to the archive. This serves to replace the `*_ext_prog()`, and `get_command_output()` calls. Signed-off-by: Jake Hunsaker <jhunsake@redhat.com> Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [ovirt] fix regex formattingBryn M. Reeves2019-10-091-4/+2
| | | | | | | | | | LGTM warns about unmatchable caret and dollar symbols in ovirt's DB_PASS_FILES since they are surrounded by leading and trailing whitespace. Resolves: #1823 Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [Plugin] fix else clause indentationBryn M. Reeves2019-10-091-2/+2
| | | | Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [corosync] fix logging call string formattingBryn M. Reeves2019-10-091-1/+1
| | | | Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [ipa] collect kdcproxy configsPavel Moravec2019-10-081-0/+3
| | | | | | Resolves: #1806 Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
* [pulp,katello] move qpid-stat commands to pulp pluginPavel Moravec2019-10-082-1/+43
| | | | | | | | | | These commands are rather pulp-related and they are required to be collected also on Satellite6 Capsules where no katello but pulp is present. Resolves: #1805 Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
* [foreman] collect http[|s]_proxy env.variablesPavel Moravec2019-10-081-0/+3
| | | | | | | | Presence or values of the variables is crucial in some foreman-installer issues. Resolves: #1804 Signed-off-by: Pavel Moravec <pmoravec@redhat.com>