aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* [sosreport] accept -q as alias for --quietBryn M. Reeves2018-07-021-1/+1
| | | | Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [Policy] allow final archive messages to bypass --quietBryn M. Reeves2018-07-021-4/+4
| | | | | | | Always output the tarball or build tree location, regardless of the value of -q/--quiet. Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [archive] fix add_string()/do_*_sub() regressionBryn M. Reeves2018-07-022-14/+12
| | | | | | | | | | | | | A change in the handling of add_string() operations in the archive class causes the Plugin string substitution methods to fail (since the archive was enforcing a check that the path did not already exist - for substitutions this is always the case). Maintain the check for content that is being copied into the archive anew, but make the add_string() method override this and disable the existence checks. Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [devicemapper] add device-mapper statistics commandsBryn M. Reeves2018-06-281-1/+3
| | | | | | | Collect a 'list' and 'print --allregions' (do not generate a report as this will re-set region counters in the kernel). Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [unpackaged,watchdog] fix license headersBryn M. Reeves2018-06-252-27/+15
| | | | | | Resolves: #1365 Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [plugins] Remove unnecessary sizelimits3.6Jake Hunsaker2018-06-2553-228/+141
| | | | | | | | | | | | | | Since setting sizelimit to be equal to the log_size option unless explicitly set otherwise, there is no longer a need for plugins to do something like: self.limit = self.get_option('log_size') self.add_copy_spec('/foo/bar', sizelimit=self.limit) As such, update plugins that were just using the log_size setting to no longer set this sizelimit value unnecessarily. Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
* [redhat] Fix RHELPolicy.dist_version()Jake Hunsaker2018-06-251-6/+5
| | | | | | | | | | The RHELPolicy dist_version() was always returning False due to an invalid call to all_pkgs_by_name_regex(). Correct this call and use the discovered redhat-release package to determine version. Resolves: #216 Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
* [utilities] Allow commands to filter environment variablesJake Hunsaker2018-06-251-2/+5
| | | | | | | | | Allows commands that set their own environment variables to also filter out variables that are undesired for the given command. Plugins that need to do this should set the environment variable in question None when setting 'env' for an add_cmd_output() call. Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
* [i18n] Fix locale environmentJake Hunsaker2018-06-251-1/+1
| | | | | | | | Removes the LC_ALL environment variable from the collection of 'locale' which would cause all locale output to show a setting of 'C' which was set earlier to get consistent output across sos commands collected. Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
* [kernel] handle case when bpftool installed but not implementedPavel Moravec2018-06-251-2/+4
| | | | | | | | | | | | on older kernels, bpftool can return error "can't get next program: Function not implemented" that lacks "id" we search for in the dict. Resolves: #1363 Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
* [build] bump sos and sos.spec version to match releaseBryn M. Reeves2018-06-252-2/+2
| | | | Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [unpackaged] Fixed issue with the exclusion list of directoriesPierguido Lambri2018-06-221-1/+2
| | | | | | | | In the all_files_system() function there's the possibility to pass a list of directories to be excluded. This wasn't working properly. It should now exclude the list of dirs. Signed-off-by: Pierguido Lambri <plambri@redhat.com>
* [policies/redhat] handle UsrMove packages with content in /s?binBryn M. Reeves2018-06-222-1/+14
| | | | | | | | | | Some packages in post-UsrMove Red Hat systems still install files to /bin or /sbin: the RPM and mailx packages are known examples. Treat these paths specially and ensure both the UsrMove and old path are present in the list of package managed files. Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [unpackaged] add pluginPierguido Lambri2018-06-221-0/+79
| | | | | | | | | | | | | | | | This plugin will collect a list of all binary files that are available in the standard $PATH and that are not managed by the distribution package manager. For now this works only for the distributions that use the RedHatPolicy (RHEL and Fedora): other policies may add support by implementing the 'files_command' policy initialiser callback, and adding the relevant tagging class to the plugin. Resolves: #1066 Signed-off-by: Pierguido Lambri <plambri@redhat.com> Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [sosreport] Add check_usrmove() and mangle_package_path()Pierguido Lambri2018-06-221-9/+34
| | | | | | | | | | This adds two new methods to the class RedHatPolicy. These two methods helps to handle an UsrMove system. In particular mangle_package_path() can be used to substitute the usual /[s]bin references with the real target /usr/[s]bin. Signed-off-by: Pierguido Lambri <plambri@redhat.com>
* [sosreport] adds a per-policy package manager file listPierguido Lambri2018-06-222-1/+24
| | | | | | | | | | | | | | | Add a 'files' member to the PackageManager class, and a new 'files_command' kwarg to the initialiser. If the 'files_command' is defined it is used to obtain a list of all package managed files present on the system. The list may be retrieved by calling PackageManager.all_files(). An implementation of 'files_command' is added to the Red Hat policy classes. Signed-off-by: Pierguido Lambri <plambri@redhat.com> Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [sosreport] fix effective options log message typoBryn M. Reeves2018-06-221-1/+1
| | | | | | 'steup' for 'setup'. Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [sosreport] Fix --threads having no effectJake Hunsaker2018-06-221-1/+1
| | | | | | | | | | | The threads option was missing from the _arg_names list which meant it could not actually be changed by the command line option. Add threads to this list so the number of threads is user-controllable. Resolves: #1359 Signed-off-by: Jake Hunsaker <jhunsake@redhat.com> Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [infiniband] fix ports_cmds typoPavel Moravec2018-06-211-1/+1
| | | | | | Resolves: #1358 Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
* [utilities] Ensure slots in deque is always integerJake Hunsaker2018-06-211-1/+1
| | | | | | | | With python3, the 'slots' calculation returns a decimal number which deque() will not accept, thus throwing an exception. Always make sure slots is an integer value. Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
* [fibrechannel] fix list comprehension filter scopeBryn M. Reeves2018-06-211-1/+1
| | | | | | | | | | | The 'devs' list comprehension generates a list of present FC sysfs paths by filtering a list of possible directory paths with isdir(). The isdir() test must be on the outer ('for d in dirs') scope rather than the inner: otherwise listdir() may be called with a non-existent directory. Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [logs] fix RedHatLogs syslog/journal handlingBryn M. Reeves2018-06-211-5/+7
| | | | | | | | | | | | | | | Fix the detection of syslog logs in RedHatLogs.setup() by storing the absolute path ("/var/log/messages"), and using this to detect the presence of the path with os.path.exists() and append the "*" in-place when making the add_copy_spec() call. Also improve the readability of the method and use an explicit variable, "have_messages", to indicate pressence of syslog style logs. Resolves: #1312 Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [policies/redhat] fix preset constant in RHELPolicy.probe_preset()Bryn M. Reeves2018-06-211-1/+1
| | | | Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [logs] restore secure* and messages* log collectionBryn M. Reeves2018-06-211-6/+6
| | | | | | | | | | | | | Commit 5d25dd3 "fixed" a longstanding problem with the RedHatLogs plugin, in that the normal --all-logs behaviour (only collect the current log unless the option is given) is not respected for the messages and secure files. Based on feedback from contributors and support engineers this has now been reversed and all copies of these logs will now be included in reports by default again. Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [policies/redhat] remove --all-logs from RHV presetBryn M. Reeves2018-06-211-1/+1
| | | | Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [sos] SoSOptions: always compare strings when filtering argumentsBryn M. Reeves2018-06-211-1/+1
| | | | | | | | Use string-string comparison when testing option values against defaults in order to filter out default valued arguments from display listings. Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [policies/redhat] clean up and improve Red Hat policy presetsBryn M. Reeves2018-06-211-20/+16
| | | | Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [Plugin] pass correct sizelimit value to _add_cmd_output()Bryn M. Reeves2018-06-211-1/+1
| | | | | | | | | In the refactoring of the limit setting in add_journal(), the variable used to store the final setting was changed from the 'sizelimit' arg to a new 'log_size' local variable. Make sure the correct 'log_size' is passed on to _add_cmd_output(). Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [sosreport] log preset options in command line notationBryn M. Reeves2018-06-211-3/+4
| | | | | | | | 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>
* [policies] handle ValueError in sos.policies.load_presets()Bryn M. Reeves2018-06-211-1/+5
| | | | | | | 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>
* [sosreport] handle OSError in XmlReport.report()Bryn M. Reeves2018-06-211-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* [plugin] clean up journal log_size handlingBryn M. Reeves2018-06-211-7/+3
| | | | Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [rpm] do not double escape characters in raw stringBryn M. Reeves2018-06-211-1/+1
| | | | | | | | 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>
* [policies/redhat] update Red Hat product presetsBryn M. Reeves2018-06-201-2/+3
| | | | Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [sos] make log_size default match master (25)Bryn M. Reeves2018-06-201-1/+1
| | | | Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [sosreport] make -v/--verbosity use _arg_defaultsBryn M. Reeves2018-06-202-4/+8
| | | | | | | | 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>
* [policies] mark new user preset as not builtinBryn M. Reeves2018-06-201-0/+1
| | | | | | | | | | | | | | | | | 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>
* [sos] fix SoSOptions().__repr__()Bryn M. Reeves2018-06-201-9/+14
| | | | Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [sos] move options-to-args formatting into SoSOptions.to_args()Bryn M. Reeves2018-06-202-39/+52
| | | | | | | | | | | | | 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>
* [sosreport] use short option -v for verbosity in --list-presetsBryn M. Reeves2018-06-201-2/+10
| | | | | | | | | | | | | | | | | | 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>
* [sos] simplify SoSOptions.merge()Bryn M. Reeves2018-06-201-2/+3
| | | | Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [sosreport] make unknown --preset an error and display helpBryn M. Reeves2018-06-201-2/+9
| | | | | | | | 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>
* [sos] concatenate list-typed args in SoSOptions.merge()Bryn M. Reeves2018-06-201-14/+23
| | | | | | | | | | | 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>
* [sosreport] remove deque() use from sosBryn M. Reeves2018-06-201-15/+13
| | | | | | | | | | | | 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>
* [sos] reformat sequence types in SoSOptions.__str__()Bryn M. Reeves2018-06-201-1/+13
| | | | | | | | | | | | | | | | | | | | | | 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>
* [sosreport] beautify --list-presets outputBryn M. Reeves2018-06-201-5/+30
| | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* [sosreport] make --alloptions SoSOptions member matchBryn M. Reeves2018-06-202-6/+6
| | | | | | | | 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>
* [sosreport] improve --list-preset argument filteringBryn M. Reeves2018-06-201-3/+2
| | | | | | | 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>
* [sos] improve preset argument filteringBryn M. Reeves2018-06-201-2/+2
| | | | | | | 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>
* [policies] return None in find_preset() if preset not foundBryn M. Reeves2018-06-202-4/+3
| | | | Signed-off-by: Bryn M. Reeves <bmr@redhat.com>