aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* [Policies|Plugins] Add services memberJake Hunsaker2018-09-033-5/+142
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Adds a services member to facilitate plugin enablement. This is tied to a new InitSystem class that gets attached to policies. The InitSystem class is used to determine services that are present on the system and what those service statuses currently are (e.g. enabled/disable). Plugins can now specify a set of services to enable the plugin on if that service exists on the system, similar to the file, command, and package checks. Additionally, the Plugin class now has methods to check on service states, and make decisions based off of. For example: def setup(self): if self.is_service('foobar'): self.add_cmd_output('barfoo') Currently, only systemd has actual functionality for this. The base InitSystem inherited by policies by default will always return False for service checks, thus resulting in the same behavior as before this change. The Red Hat family of distributions has been set to systemd, as all current versions of those distributions use systemd. Closes: #83 Resolves: #1387 Signed-off-by: Jake Hunsaker <jhunsake@redhat.com> Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [ovirt_node] New plugin for oVirt NodeNijin Ashok2018-09-031-0/+41
| | | | | | | | | | | oVirt Node is a small scaled down version used for hosting virtual machines. The plugin collects node specific information like upgrade log, the layer structure etc. Resolves: #1381 Signed-off-by: Nijin Ashok nashok@redhat.com Signed-off-by: Bryn M. Reeves bmr@redhat.com
* [multipath] add multipath -t outputJohn Pittman2018-09-031-0/+1
| | | | | | | | | | | | | | | | | | | | | The 'multipath -t' command prints the internal hardware table of device-mapper-multipath. These are the true, hard-coded defaults that multipath will follow if no other configuration is set. The hardware table is specific to the device-mapper-multipath version that is in use, so it is subject to change across release, making it difficult to track. Prior to the -t flag creation, the user would have to check the source package or /usr/share/doc/device-mapper-multipath for the table. The output is needed as a piece of the puzzle in how the 'multipathd show config' command presents the current, running configuration (it uses the .conf and the hardware table). This makes it very useful in troubleshooting activities. Resolves: #1379 Signed-off-by: John Pittman <jpittman@redhat.com> Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [multipath] use -ll for path checker and prio inclusionJohn Pittman2018-09-031-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | The 'multipath -l' command, per the man page, shows the topology as 'fetched in sysfs and the device mapper' and 'multipath -ll' shows the topology from 'all available information'. The '-ll' option, among other things, includes useful items such as prio values and path checkers, without adding much more verbosity. For example, prio value ommission seen below: |-+- policy='service-time 0' prio=0 status=active | |- 2:0:1:2 sdh 8:112 active undef unknown | `- 5:0:1:2 sdal 66:80 active undef unknown `-+- policy='service-time 0' prio=0 status=enabled |- 2:0:0:2 sdc 8:32 active undef unknown `- 5:0:0:2 sdag 66:0 active undef unknown |-+- policy='service-time 0' prio=50 status=active | |- 2:0:1:2 sdh 8:112 active ready running | `- 5:0:1:2 sdal 66:80 active ready running `-+- policy='service-time 0' prio=10 status=enabled |- 2:0:0:2 sdc 8:32 active ready running `- 5:0:0:2 sdag 66:0 active ready running Gather 'multipath -ll' instead of 'multipath -l' as the additional information adds value without additional verbosity. Signed-off-by: John Pittman <jpittman@redhat.com>
* [plugins] Add transport_url to protected keysPaul Peereboom2018-09-0313-12/+16
| | | | Signed-off-by: Paul Peereboom <paul.peereboom@duo.nl>
* [pacemaker] Collect stonith and quorum statusJake Hunsaker2018-09-031-0/+5
| | | | | | | | | Adds collection of stonith and quorum states within the cluster to the pacemaker plugin. If either of these are not used in a given cluster, these commands simply report that the resource is not in use so this is safe to run on all clusters. Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
* [grafana] all_logs to collect all log filesPavel Moravec2018-09-031-1/+1
| | | | | | | | not only *.log ones Resolves: #1371 Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
* [archive] replace FileCacheArchive._makedirs()Bryn M. Reeves2018-09-031-8/+64
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The Python os.makedirs() implementation is inadequate for sos's needs: it will create leading directories given an intended path destination, but it is not able to reflect cases where some of the intermediate paths are actually symbolic links. Replace the use of os.makedirs() with a method that walks over the path, and either creates directories, or symbolic links (and their directory target) to better correspond with the content of the host file system. This fixes a situation where two plugins can race in the archive, leading to an exception in the plugin that runs last: - /foo/bar exists and is a link to /foo/bar.qux - One plugin attempts to collect /foo/bar - Another plugin attempts to collect a link /foo/qux -> /foo/bar/baz If the 2nd plugin happens to run first it will create the path "/foo/bar" as a _directory_ (via _makedirs()). Since the archive now checks for matching object types when a path collision occurs, the first plugin will arrive at add_dir(), note that "/foo/bar" is present and is not a symbolic link, and will raise an exception. Correct this by ensuring that whichever plugin executes first, the correct link/directory path structure will be set up. Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [archive] normalise dest_dir in FileCacheArchive._check_path()Bryn M. Reeves2018-08-311-1/+4
| | | | | | | | Always set a valid dest_dir in _check_path() and do not assume that it can be obtained by splitting the path: in the case of a directory it is the unmodified 'dest' value. Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [archive] simplify FileCacheArchive.makedirs()Bryn M. Reeves2018-08-311-4/+4
| | | | | | | | | | | | | Simplify the makedirs() method of FileCacheArchive and have it bypass _check_path() and directly call os.makedirs(): a subsequent patch will restrict the use of the method to setting up the sos_* directories in the archive root. File, directory and other object type add_* methods will use a new method that correctly handles symbolic links in intermediate path components. Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [sosreport] properly raise exceptions when --debug is givenBryn M. Reeves2018-08-311-1/+4
| | | | | | | | OSError and IOError exceptions were not raised to the terminal when --debug is in effect since they were silently caught in the generic exception handler. Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [archive] Dont copystat /sys and /proc pathsPavel Moravec2018-08-231-6/+7
| | | | | | | | | Stop copying extended attributes of files under /sys and /proc that can raise SELinux denials on that attempt. Resolves: #1399 Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
* [block] collect luksDump for all encrypted devicesPavel Moravec2018-08-231-0/+22
| | | | | | | | Call "cryptsetup luksDump /dev/sd*" for all encrypted devices Resolves: #1390 Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
* [plugins] Add plugin for gssproxyRobbie Harwood2018-08-231-0/+28
| | | | | | | | | | | gssproxy stores its configuration in /etc/gssproxy. Also capture the mech configuration so that we can tell if gssproxy is enabled and any other GSS mechs in use. Resolves: #1386 Signed-off-by: Robbie Harwood <rharwood@redhat.com> Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [krb5] Add more files to krb5 pluginRobbie Harwood2018-08-231-4/+22
| | | | | | | | | | | | | | | | Add files for KDC configuration and logging, including kadmin files and a klist of the K/M stash. Gather any additional configuration snippet files in /etc/krb5.conf.d (which is configured by default on Fedora- and RHEL-like systems, and hopefully on Debian systems in the future). The sssd plugin already takes care of /var/lib/sss/pubconf/krb5.include.d/, so don't include that. Resolves: #1385 Signed-off-by: Robbie Harwood <rharwood@redhat.com> Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [origin] Collect statistics informationJake Hunsaker2018-08-161-6/+20
| | | | | | | | | Adds collection of 'oc adm top' output for images and imagestreams. Resolves: #1165 Closes: #1383 Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
* [kubernetes] Correct config option syntaxJake Hunsaker2018-08-161-1/+1
| | | | | | | | Versions of kubernetes after 1.5 use --kubeconfig instead of --config to specify a configuration file to use for kubectl commands. Update the kubernetes plugin to use the proper syntax. Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
* [kubernetes|etcd] Support OpenShift 3.10 deploymentsJake Hunsaker2018-08-162-76/+83
| | | | | | | | | The 3.10 version of OCP changes the deployment configurations for etcd and kubernetes components, and additionally changes the way the etcdctl command is called when running in a static pod. Update these plugins to support this new deployment style. Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
* [policies] enable RHOSP preset by presence of rhosp-release packagePavel Moravec2018-08-101-0/+2
| | | | | | Resolves: #1395 Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
* [policies] RHOSP preset with -k process.lsof=offPavel Moravec2018-08-101-1/+3
| | | | | | | | Make lsof calls on OSP systems disabled by default. Relevant to: #1395 Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
* [process] make lsof execution optionalPavel Moravec2018-08-101-2/+4
| | | | | | | | | | | Make calling of lsof command optional (but enabled by default). Also remove "collect lsof-threads when --all-logs" as all-logs has nothing in common. Resolves: #1394 Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
* [policies] sanitize report labelPavel Moravec2018-08-101-6/+3
| | | | | | | | | similarly like we sanitize case id, we should sanitize report label to e.g. exclude spaces from final tarball name. Resolves: #1389 Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
* [rhv_analyzer] make naming consistentBryn M. Reeves2018-08-101-2/+2
| | | | | | Closes: #1380. Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [rhv-log-collector-analyzer] Add new plugin for RHVDouglas Schilling Landgraf2018-08-101-0/+40
| | | | | | | | | | This commit adds the plugin rhv-log-collector-analyzer, it will collect: - Output of rhv-log-collector-analyer --json - Generated HTML file from --live Signed-off-by: Douglas Schilling Landgraf <dougsland@redhat.com>
* [apparmor,ceph] fix typo in add_forbidden_pathPavel Moravec2018-08-092-2/+2
| | | | | | | | commit 29a40b7 removed leading '/' from two forbidden paths Resolves: #1388 Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
* [rhui] Fix detection of CDS for RHUI3Pavel Moravec2018-07-121-1/+5
| | | | | | | | | | Detection of CDS node on RHUI 3 cant rely on deprecated pulp-cds package but rather on rhui-mirrorlist one. Resolves: #1375 Signed-off-by: Pavel Moravec <pmoravec@redhat.com> Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [archive] fix stat typoBryan Quigley2018-07-121-4/+4
| | | | | | | | | | | They're just missing the S_ in front of them so if that code gets reached it fails. Fixes: #1373 Resolves: #1374 Signed-off-by: Bryan Quigley <bryan.quigley@canonical.com> Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [sosreport] Add mechanism to encrypt final archiveJake Hunsaker2018-07-125-11/+113
| | | | | | | | | | | | | | | | | | | | | Adds an option to encrypt the resulting archive that sos generates. There are two methods for doing so: --encrypt-key Uses a key-pair for asymmetric encryption --encrypt-pass Uses a password for symmetric encryption For key-pair encryption, the key-to-be-used must be imported into the root user's keyring, as gpg does not allow for the use of keyfiles. If the encryption process fails, sos will not abort as the unencrypted archive will have already been created. The assumption being that the archive is still of use and/or the user has another means of encrypting it. Resolves: #1320 Signed-off-by: Jake Hunsaker <jhunsake@redhat.com> Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [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>