Fix gluster volume name extraction

The get_volume_names() function in the gluster plugin tries to
extract volume names from the output of the "gluster volume info"
command using a slice range. The range start should be 12 to
account for the "Volume Name:" label at the start of the line.

Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
Add distupgrade plugin

Add a new plugin to collect data relating to completed or
attempted distribution upgrades. Currently supports the Red Hat
set of tools and files but other distributions can supply their
own filelists or override setup() to perform other distribution
specific actions.

Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
Fix command output substitution exception

If a comand has a substitution registered via do_cmd_output_sub()
but no data was collected (e.g. command not found) the postproc
code will throw an exception as the return value ('replacements')
is never assigned.

Initialise replacements to None before scanning the list of run
commands and return this if no substitutions were made.

Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
Improve error message when cluster.crm_from is invalid

If a user passes a non-date string value as the crm_from parameter
of the cluster plugin an error message is logged:

  crm_from parameter 'True' is not a valid date

The plugin continues to run and uses the default value (T-72hrs)
as the value of crm_from. Make this clear in the message displayed
to users:

  crm_from parameter 'True' is not a valid date: using default

Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
Remove useless check_enabled() from sar plugin

The sar plugin implemented a check_enabled() to catch cases where
the plugin is force-enabled on a system with no sar installation.

This is better handled by runtime checking in setup() which the
plugin also does. Kill the check and its annoying error message.

Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
Eliminate hard-coded /var/log/sa paths in sar plugin

The Sar plugin classes define a self.sa_path - use it consistently
throughout the plugin when generating strings containing the path.

Suggested by David Kutalek.

Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
Scrub ldap_default_authtok password in sssd plugin

The file sssd.conf collected by the sssd plugin may contain an
ldap password. Add a postproc() method to replace the string with
blanks.

Signed-off-by: Bryn M. Reeeves <bmr@redhat.com>
Replace package check with file check in anacron

The anacron facility may be provided by packages named 'anacron',
'chronie-anacron' etc. They all use a common /etc/anacrontab file
so check for this instead.

Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
Remove the rhevm plugin.

This functionality is now provided by the ovirt-log-collector project [1] and independently shipped
VDSM sos plugin [2].

[1] http://gerrit.ovirt.org/gitweb?p=ovirt-log-collector.git
[2] http://gerrit.ovirt.org/gitweb?p=vdsm.git;a=tree;f=vdsm/sos;hb=HEAD

Signed-off-by: Lee Yarwood <lyarwood@redhat.com>
powerpc: Move VPD related tool under common code

VPD related tools (lsvpd, lscfg, lsmcode) is supported on both
pSeries and PowerNV platform. Hence moving these commands under
common code.

Also added support to grab vpd database (/var/lib/lsvpd).

Signed-off-by: Vasant Hegde <hegdevasant@linux.vnet.ibm.com>
---
 sos/plugins/powerpc.py |    7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)
Add PowerNV specific debug data

This patch adds support to collect more debug files on
PowerNV platform.

Signed-off-by: Vasant Hegde <hegdevasant linux vnet ibm com>
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
---
 sos/plugins/powerpc.py |    5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)
Fix remaining use of obsolete 'get_cmd_dir()' in plugins

The get_cmd_dir() method was renamed to get_cmd_path(). Fix the
two remaining uses in yum and cluster plugins.

Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
Merge pull request #235 from leeyarwood/master

Remove the rhevm plugin.

Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
Update systemd support

- Drop support for 'systemctl dump' as this no longer exists.
- Add 'systemctl list-units' for convenience
- add systemctl show-environment

Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
Add tuned plugin

Resolves Issue #232.

Signed-off-by: Peter Portante <peter.portante@redhat.com>
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
Clean up get_cmd_path/make_cmd_path/make_cmd_dirs mess

Clean up the Plugin helper methods for handling command output
paths. This better matches the proposal in Issue #181 and
simplifies code for plugins that need to generate their own
paths under sos_commands/<plugin>/.

- Rename get_cmd_path() to get_cmd_output_path()
- Add an optional 'name' parameter to specify a subdirectory
  name in the plugin's sos_commands/<plugin>/ directory.
- Default to creating directories if they do not exist

Finally fix up all existing users of get_cmd_path() to use the
new interface and remove handrolled uses of os.path.join(...) for
generating these paths.

Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
Fix broken binary detection in satellite plugin

The satellite plugin attempts to check for the existence of the
'satellite-debug' binary before running it. This was broken by
the mass conversion to PATH for running external commands.

Remove the check and just attempt to run the command regardless.

Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
Rename validatePlugin to validate_plugin

This one somehow didn't get the memo about camelCase not being
cool any more in sos. Rename the method to comply with pep8 and
not be so ugly.

Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
Update policy_tests.py for validate_plugin change

The policy_tests unit tests call validatePlugin(). Update them to
use the new name.

Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
Match plugins against policies

Fixes Issue #238.

When tagging classes are used to enable plugins on multiple
platforms it is possible for there to be more than one valid class
instance for a given policy. For e.g.:

  class DebianFooPlugin(Plugin, DebianPlugin):
  ///
  class UbuntuFooPlugin(Plugin, UbuntuPlugin):
  ///

Since UbuntuPolicy includes both DebianPlugin and UbuntuPlugin in
its valid_subclasses list both classes pass the validity test and
both are added to the loaded_plugins list. This causes plugins
to run twice:

2014-03-12 19:57:50,974 DEBUG: copying file /var/log/mail.log to /var/log/mail.log
2014-03-12 19:57:50,975 DEBUG: added /var/log/mail.log to FileCacheArchive /tmp/sosreport-u1210-vm1-20140312195750
2014-03-12 19:57:51,293 DEBUG: copying file /var/log/mail.log to /var/log/mail.log
2014-03-12 19:57:51,294 DEBUG: added /var/log/mail.log to FileCacheArchive /tmp/sosreport-u1210-vm1-20140312195750

Fix this by adding a match_plugin() method to the policy base
class and prefer plugins that are subclasses of the first entry
in the list. This patch also reverses the order of the
valid_subclasses list for the UbuntuPolicy to ensure preference
is given to native plugins:

  self.valid_subclasses = [UbuntuPlugin, DebianPlugin]

Signed-off-by: Bryn M. Reeves <bmr@redhat.com>