diff options
127 files changed, 1382 insertions, 1248 deletions
diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 00000000..fafcbd3d --- /dev/null +++ b/.travis.yml @@ -0,0 +1,18 @@ +language: python +python: + - 2.7 + - 3.2 + - 3.3 + - "pypy" +matrix: + allow_failures: + - python: 3.2 + - python: 3.3 +notifications: + email: false +install: + - "pip install nose nose-cov --use-mirrors" + - "make gpgkey" + - "DESTDIR=. make install" +script: + - "make test" @@ -1,5 +1,6 @@ -Adam Stokes <astokes@redhat.com> +Adam Stokes <adam.stokes@ubuntu.com> Ben Turner <bturner@redhat.com> +Eric Williams <eric.williams@canonical.com> Eugene Teo <eteo@redhat.com> Gary Kotton <gkotton@redhat.com> Jesse Jaggars <jjaggars@redhat.com> @@ -8,6 +9,7 @@ John Berninger <jwb@redhat.com> Justin Payne <jpayne@redhat.com> Keith Kearnan <kearnan_keith@emc.com> Kent Lamb <klamb@redhat.com> +Louis Bouchard <louis.bouchard@canonical.com> Marc Sauton <msauton@redhat.com> Navid Sheikhol-Eslami <navid@redhat.com> Pierre Amadio <pamadio@redhat.com> @@ -48,7 +48,7 @@ install: updateversion install -m755 sosreport $(DESTDIR)/usr/sbin/sosreport install -m644 sosreport.1.gz $(DESTDIR)/usr/share/man/man1/. install -m644 sos.conf.5.gz $(DESTDIR)/usr/share/man/man5/. - install -m644 LICENSE README $(DESTDIR)/usr/share/$(NAME)/. + install -m644 LICENSE README.md $(DESTDIR)/usr/share/$(NAME)/. install -m644 $(NAME).conf $(DESTDIR)/etc/$(NAME).conf install -m644 gpgkeys/$(GPG_TPL)support.pub $(DESTDIR)/usr/share/$(NAME)/. for d in $(SUBDIRS); do make DESTDIR=`cd $(DESTDIR); pwd` -C $$d install; [ $$? = 0 ] || exit 1; done @@ -58,7 +58,7 @@ updateversion: $(NAME)-$(VERSION).tar.gz: clean gpgkey @mkdir -p $(ARCHIVE_DIR) - @tar -cv sosreport sos doc man po sos.conf LICENSE README sos.spec Makefile | tar -x -C $(ARCHIVE_DIR) + @tar -cv sosreport sos doc man po sos.conf LICENSE README.md sos.spec Makefile | tar -x -C $(ARCHIVE_DIR) @mkdir -p $(ARCHIVE_DIR)/gpgkeys @cp gpgkeys/$(GPG_TPL)support.pub $(ARCHIVE_DIR)/gpgkeys/. @tar Ccvzf $(DIST_BUILD_DIR) $(DIST_BUILD_DIR)/$(NAME)-$(VERSION).tar.gz $(NAME)-$(VERSION) @@ -1,3 +1,5 @@ +[![Build Status](https://travis-ci.org/battlemidget/sosreport.png?branch=master)](https://travis-ci.org/battlemidget/sosreport) + This set of tools is designed to provide information to support organizations in an extensible manner, allowing third parties, package maintainers, and anyone else to provide plugins that will collect and report information that @@ -8,15 +10,31 @@ version, to contribute, and for more information, please visit there. To access to the public source code repository for this project run: - git clone git://github.com/sosreport/sosreport.git +``` +git clone git://github.com/sosreport/sosreport.git +``` + +### Manual Installation ### +``` to install locally (as root) ==> make install to build an rpm ==> make rpm to build a deb ==> make deb-unsign to build a zipfile for use with jython ==> make zip +``` + +### Pre-built Packaging ### + +Fedora/RHEL users install via yum: + +``` +yum install sos +``` Debian/Ubuntu users can install via PPA: +``` sudo add-apt-repository ppa:debugmonkeys/sosreport sudo apt-get update sudo apt-get install sos +``` diff --git a/example_plugins/example.py b/example_plugins/example.py index 4b49e423..e13d92b5 100755 --- a/example_plugins/example.py +++ b/example_plugins/example.py @@ -20,7 +20,7 @@ from sos.plugins import Plugin, RedHatPlugin class example(Plugin, RedHatPlugin): '''This is the description for the example plugin''' # Plugin developers want to override setup() from which they will call - # addCopySpec() to collect files and collectExtOutput() to collect programs + # add_copy_spec() to collect files and collectExtOutput() to collect programs # output. # Add your options here, indicate whether they are slow to run, and set @@ -28,7 +28,7 @@ class example(Plugin, RedHatPlugin): # each option is a tuple of the following format: # (name, description, fast or slow, default value) # each option will be addressable like -k name=value - optionList = [("init.d", 'Gathers the init.d directory', 'slow', 0), + option_list = [("init.d", 'Gathers the init.d directory', 'slow', 0), ('follicles', 'Gathers information about each follicle on every toe', 'slow', 0), ('color', 'Gathers toenail polish color', 'fast', 0)] @@ -41,16 +41,16 @@ class example(Plugin, RedHatPlugin): are provided to the output from each command. ''' # Here's how to copy files and directory trees - self.addCopySpec("/etc/hosts") + self.add_copy_spec("/etc/hosts") with open("/proc/cpuinfo") as f: for line in f: if "vendor_id" in line: - self.addAlert("Vendor ID string is: %s <br>\n" % line) + self.add_alert("Vendor ID string is: %s <br>\n" % line) # Here's how to test your options and execute if enabled - if self.isOptionEnabled("init.d"): - self.addCopySpec("/etc/init.d") # copies a whole directory tree + if self.option_enabled("init.d"): + self.add_copy_spec("/etc/init.d") # copies a whole directory tree # Here's how to execute a command self.collectExtOutput("/bin/ps -ef") @@ -44,7 +44,7 @@ rm -rf ${RPM_BUILD_ROOT} %{python_sitelib}/* %{_mandir}/man1/* %{_mandir}/man5/* -%doc README LICENSE +%doc README.md LICENSE %config(noreplace) %{_sysconfdir}/sos.conf %changelog diff --git a/sos/plugins/__init__.py b/sos/plugins/__init__.py index 95a1ea16..b0e3ab3f 100644 --- a/sos/plugins/__init__.py +++ b/sos/plugins/__init__.py @@ -25,7 +25,7 @@ # pylint: disable-msg = W0613 from __future__ import with_statement -from sos.utilities import sosGetCommandOutput, import_module, grep, fileobj, tail +from sos.utilities import sos_get_command_output, import_module, grep, fileobj, tail from sos import _sos as _ import inspect import os @@ -47,26 +47,26 @@ try: except ImportError: import simplejson as json -def commonPrefix(l1, l2, common = None): +def common_prefix(l1, l2, common = None): """Returns a tuple like the following: ([common, elements, from l1, and l2], [[tails, from, l1], [tails, from, l2]]) - >>> commonPrefix(['usr','share','foo'], ['usr','share','bar']) + >>> common_prefix(['usr','share','foo'], ['usr','share','bar']) (['usr','share'], [['foo'], ['bar']]) """ if common is None: common = [] if len(l1) < 1 or len(l2) < 1 or l1[0] != l2[0]: return (common, [l1, l2]) - return commonPrefix(l1[1:], l2[1:], common+[l1[0]]) + return common_prefix(l1[1:], l2[1:], common+[l1[0]]) -def sosRelPath(path1, path2, sep=os.path.sep, pardir=os.path.pardir): +def sos_relative_path(path1, path2, sep=os.path.sep, pardir=os.path.pardir): '''Return a relative path from path1 equivalent to path path2. In particular: the empty string, if path1 == path2; path2, if path1 and path2 have no common prefix. ''' try: - common, (u1, u2) = commonPrefix(path1.split(sep), path2.split(sep)) + common, (u1, u2) = common_prefix(path1.split(sep), path2.split(sep)) except AttributeError: return path2 @@ -112,7 +112,7 @@ class Plugin(object): packages (files) is an iterable of the names of packages (the paths of files) to check for before running this plugin. If any of these packages - or files is found on the system, the default implementation of checkenabled + or files is found on the system, the default implementation of check_enabled will return True. """ @@ -123,30 +123,30 @@ class Plugin(object): files = () def __init__(self, commons): - if not getattr(self, "optionList", False): - self.optionList = [] + if not getattr(self, "option_list", False): + self.option_list = [] - self.copiedFiles = [] - self.executedCommands = [] + self.copied_files = [] + self.executed_commands = [] self.alerts = [] - self.customText = "" - self.optNames = [] - self.optParms = [] - self.cInfo = commons - self.forbiddenPaths = [] - self.copyPaths = [] - self.copyStrings = [] - self.collectProgs = [] + self.custom_text = "" + self.opt_names = [] + self.opt_parms = [] + self.commons = commons + self.forbidden_paths = [] + self.copy_paths = [] + self.copy_strings = [] + self.collect_cmds = [] self.must_exit = False - self.soslog = self.cInfo['soslog'] - self.proflog = self.cInfo['proflog'] + self.soslog = self.commons['soslog'] if self.commons.has_key('soslog') else logging.getLogger('sos') + self.proflog = self.commons['proflog'] if self.commons.has_key('proflog') else logging.getLogger('sosprofile') # get the option list into a dictionary - for opt in self.optionList: - self.optNames.append(opt[0]) - self.optParms.append({'desc':opt[1], 'speed':opt[2], 'enabled':opt[3]}) + for opt in self.option_list: + self.opt_names.append(opt[0]) + self.opt_parms.append({'desc':opt[1], 'speed':opt[2], 'enabled':opt[3]}) @classmethod def name(class_): @@ -158,13 +158,13 @@ class Plugin(object): return class_.__name__.lower() def policy(self): - return self.cInfo["policy"] + return self.commons["policy"] - def isInstalled(self, package_name): + def is_installed(self, package_name): '''Is the package $package_name installed?''' - return (self.policy().pkgByName(package_name) is not None) + return (self.policy().pkg_by_name(package_name) is not None) - def doCmdOutputSub(self, cmd, regexp, subst): + def do_cmd_output_sub(self, cmd, regexp, subst): '''Apply a regexp substitution to command output archived by sosreport. cmd is the command name from which output is collected (i.e. excluding parameters). The regexp can be a string or a compiled re object. The @@ -175,16 +175,16 @@ class Plugin(object): This function returns the number of replacements made. ''' - if self.cInfo['cmdlineopts'].profiler: + if self.commons['cmdlineopts'].profiler: start_time = time() globstr = '*' + cmd + '*' self.soslog.debug("substituting '%s' for '%s' in commands matching %s" % (subst, regexp, globstr)) try: - for called in self.executedCommands: + for called in self.executed_commands: if fnmatch.fnmatch(called['exe'], globstr): - path = os.path.join(self.cInfo['cmddir'], called['file']) + path = os.path.join(self.commons['cmddir'], called['file']) self.soslog.debug("applying substitution to %s" % path) readable = self.archive.open_file(path) result, replacements = re.subn( @@ -197,13 +197,13 @@ class Plugin(object): msg = 'regex substitution failed for %s in plugin %s with: "%s"' self.soslog.error(msg % (path, self.name(), e)) replacements = 0 - if self.cInfo['cmdlineopts'].profiler: + if self.commons['cmdlineopts'].profiler: time_passed = time() - start_time self.proflog.debug("subst: %-75s time: %f" % (globstr, time_passed)) return replacements - def doFileSub(self, srcpath, regexp, subst): + def do_file_sub(self, srcpath, regexp, subst): '''Apply a regexp substitution to a file archived by sosreport. srcpath is the path in the archive where the file can be found. regexp can be a regexp string or a compiled re object. subst is a string to @@ -211,7 +211,7 @@ class Plugin(object): This function returns the number of replacements made. ''' - if self.cInfo['cmdlineopts'].profiler: + if self.commons['cmdlineopts'].profiler: start_time = time() try: @@ -230,13 +230,13 @@ class Plugin(object): msg = 'regex substitution failed for %s in plugin %s with: "%s"' self.soslog.error(msg % (path, self.name(), e)) replacements = 0 - if self.cInfo['cmdlineopts'].profiler: + if self.commons['cmdlineopts'].profiler: time_passed = time() - start_time self.proflog.debug("subst : %-75s time: %f" % (srcpath, time_passed)) return replacements - def doRegexFindAll(self, regex, fname): + def do_regex_find_all(self, regex, fname): return regex_findall(regex, fname) def _path_in_path_list(self, path, path_list): @@ -277,12 +277,12 @@ class Plugin(object): self.archive.add_link(reldest,srcpath) # copy the symlink target translating relative targets - # to absolute paths to pass to doCopyFileOrDir. + # to absolute paths to pass to do_copy_file_or_dir. self.soslog.debug("normalized link target %s as %s" %(linkdest, absdest)) - self.doCopyFileOrDir(absdest) + self.do_copy_file_or_dir(absdest) - self.copiedFiles.append({ + self.copied_files.append({ 'srcpath':srcpath, 'dstpath':srcpath, 'symlink':"yes", @@ -290,16 +290,16 @@ class Plugin(object): def copy_dir(self, srcpath, sub=None): for afile in os.listdir(srcpath): - self.doCopyFileOrDir(os.path.join(srcpath, afile), dest=None, sub=sub) + self.do_copy_file_or_dir(os.path.join(srcpath, afile), dest=None, sub=sub) def _get_dest_for_srcpath(self, srcpath): - for copied in self.copiedFiles: + for copied in self.copied_files: if srcpath == copied["srcpath"]: return copied["dstpath"] return None # Methods for copying files and shelling out - def doCopyFileOrDir(self, srcpath, dest=None, sub=None): + def do_copy_file_or_dir(self, srcpath, dest=None, sub=None): # pylint: disable-msg = R0912 # pylint: disable-msg = R0915 '''Copy file or directory to the destination tree. If a directory, then @@ -311,10 +311,10 @@ class Plugin(object): /configurations/my_file.conf. ''' - if self.cInfo['cmdlineopts'].profiler: + if self.commons['cmdlineopts'].profiler: start_time = time() - if self._path_in_path_list(srcpath, self.forbiddenPaths): + if self._path_in_path_list(srcpath, self.forbidden_paths): self.soslog.debug("%s is in the forbidden path list" % srcpath) return '' @@ -349,12 +349,12 @@ class Plugin(object): else: self.archive.add_file(srcpath, dest) - self.copiedFiles.append({ + self.copied_files.append({ 'srcpath':srcpath, 'dstpath':dest, 'symlink':"no"}) - if self.cInfo['cmdlineopts'].profiler: + if self.commons['cmdlineopts'].profiler: time_passed = time() - start_time self.proflog.debug("copied: %-75s time: %f" % (srcpath, time_passed)) except Exception, e: @@ -362,32 +362,32 @@ class Plugin(object): self.soslog.error(traceback.format_exc()) - def addForbiddenPath(self, forbiddenPath): - """Specify a path to not copy, even if it's part of a copyPaths[] + def add_forbidden_path(self, forbiddenPath): + """Specify a path to not copy, even if it's part of a copy_paths[] entry. """ # Glob case handling is such that a valid non-glob is a reduced glob for filespec in glob.glob(forbiddenPath): - self.forbiddenPaths.append(filespec) + self.forbidden_paths.append(filespec) - def getAllOptions(self): + def get_all_options(self): """return a list of all options selected""" - return (self.optNames, self.optParms) + return (self.opt_names, self.opt_parms) - def setOption(self, optionname, value): + def set_option(self, optionname, value): '''set the named option to value.''' - for name, parms in izip(self.optNames, self.optParms): + for name, parms in izip(self.opt_names, self.opt_parms): if name == optionname: parms['enabled'] = value return True else: return False - def isOptionEnabled(self, optionname): - '''Deprecated, use getOption() instead''' - return self.getOption(optionname) + def option_enabled(self, optionname): + '''Deprecated, use get_option() instead''' + return self.get_option(optionname) - def getOption(self, optionname, default=0): + def get_option(self, optionname, default=0): """Returns the first value that matches 'optionname' in parameters passed in via the command line or set via set_option or via the global_plugin_options dictionary, in that order. @@ -402,30 +402,30 @@ class Plugin(object): else: return key == optionname - for name, parms in izip(self.optNames, self.optParms): + for name, parms in izip(self.opt_names, self.opt_parms): if _check(name): val = parms['enabled'] if val != None: return val - for key, value in self.cInfo.get('global_plugin_options', {}).iteritems(): + for key, value in self.commons.get('global_plugin_options', {}).iteritems(): if _check(key): return value return default - def getOptionAsList(self, optionname, delimiter=",", default=None): + def get_option_as_list(self, optionname, delimiter=",", default=None): '''Will try to return the option as a list separated by the delimiter. ''' - option = self.getOption(optionname) + option = self.get_option(optionname) try: opt_list = [opt.strip() for opt in option.split(delimiter)] return filter(None, opt_list) except Exception: return default - def addCopySpecLimit(self, fname, sizelimit=None, sub=None): + def add_copy_spec_limit(self, fname, sizelimit=None, sub=None): """Add a file or glob but limit it to sizelimit megabytes. If fname is a single file the file will be tailed to meet sizelimit. If the first file in a glob is too large it will be tailed to meet the sizelimit. @@ -447,7 +447,7 @@ class Plugin(object): if sizelimit and cursize > sizelimit: limit_reached = True break - self.addCopySpec(flog, sub) + self.add_copy_spec(flog, sub) if flog == files[0] and limit_reached: flog_name = flog @@ -456,17 +456,17 @@ class Plugin(object): old, new = sub flog_name = flog.replace(old, new) strfile = flog_name.replace(os.path.sep, ".") + ".tailed" - self.addStringAsFile(tail(flog, sizelimit), strfile) + self.add_string_as_file(tail(flog, sizelimit), strfile) self.archive.add_link(os.path.join( os.path.relpath('/', os.path.dirname(flog)), 'sos_strings', self.name(), strfile), flog) - def addCopySpecs(self, copyspecs, sub=None): + def add_copy_specs(self, copyspecs, sub=None): for copyspec in copyspecs: - self.addCopySpec(copyspec, sub) + self.add_copy_spec(copyspec, sub) - def addCopySpec(self, copyspec, sub=None): + def add_copy_spec(self, copyspec, sub=None): """Add a file specification (can be file, dir,or shell glob) to be copied into the sosreport by this module. """ @@ -475,43 +475,43 @@ class Plugin(object): return False # Glob case handling is such that a valid non-glob is a reduced glob for filespec in glob.glob(copyspec): - if filespec not in self.copyPaths: - self.copyPaths.append((filespec, sub)) + if filespec not in self.copy_paths: + self.copy_paths.append((filespec, sub)) - def callExtProg(self, prog, timeout=300): + def call_ext_prog(self, prog, timeout=300): """Execute a command independantly of the output gathering part of sosreport. """ # pylint: disable-msg = W0612 - return sosGetCommandOutput(prog, timeout) + return sos_get_command_output(prog, timeout) - def checkExtprog(self, prog): + def check_ext_prog(self, prog): """Execute a command independently of the output gathering part of sosreport and check the return code. Return True for a return code of 0 and False otherwise. """ - (status, output, runtime) = self.callExtProg(prog) + (status, output, runtime) = self.call_ext_prog(prog) return (status == 0) - def addCmdOutput(self, exe, suggest_filename=None, root_symlink=None, timeout=300): + def add_cmd_output(self, exe, suggest_filename=None, root_symlink=None, timeout=300): """Run a program and collect the output""" - self.collectProgs.append( (exe, suggest_filename, root_symlink, timeout) ) + self.collect_cmds.append( (exe, suggest_filename, root_symlink, timeout) ) - def fileGrep(self, regexp, *fnames): + def file_grep(self, regexp, *fnames): """Returns lines matched in fnames, where fnames can either be pathnames to files to grep through or open file objects to grep through line by line. """ return grep(regexp, *fnames) - def mangleCommand(self, exe): + def mangle_command(self, exe): return mangle_command(exe) - def makeCommandFilename(self, exe): + def make_command_filename(self, exe): """The internal function to build up a filename based on a command.""" - outfn = os.path.join(self.cInfo['cmddir'], self.name(), self.mangleCommand(exe)) + outfn = os.path.join(self.commons['cmddir'], self.name(), self.mangle_command(exe)) # check for collisions if os.path.exists(outfn): @@ -525,62 +525,62 @@ class Plugin(object): return outfn - def addStringAsFile(self, content, filename): + def add_string_as_file(self, content, filename): """Add a string to the archive as a file named `filename`""" - self.copyStrings.append((content, filename)) + self.copy_strings.append((content, filename)) - def getCmdOutputNow(self, exe, suggest_filename=None, root_symlink=False, timeout=300): + def get_cmd_output_now(self, exe, suggest_filename=None, root_symlink=False, timeout=300): """Execute a command and save the output to a file for inclusion in the report. """ - if self.cInfo['cmdlineopts'].profiler: + if self.commons['cmdlineopts'].profiler: start_time = time() # pylint: disable-msg = W0612 - status, shout, runtime = sosGetCommandOutput(exe, timeout=timeout) + status, shout, runtime = sos_get_command_output(exe, timeout=timeout) if (status == 127): self.soslog.info("could not run '%s': command not found" % exe) return None if suggest_filename: - outfn = self.makeCommandFilename(suggest_filename) + outfn = self.make_command_filename(suggest_filename) else: - outfn = self.makeCommandFilename(exe) + outfn = self.make_command_filename(exe) - outfn_strip = outfn[len(self.cInfo['cmddir'])+1:] + outfn_strip = outfn[len(self.commons['cmddir'])+1:] self.archive.add_string(shout, outfn) if root_symlink: self.archive.add_link(outfn, root_symlink) # save info for later - self.executedCommands.append({'exe': exe, 'file':outfn_strip}) # save in our list - self.cInfo['xmlreport'].add_command(cmdline=exe,exitcode=status,f_stdout=outfn_strip,runtime=runtime) + self.executed_commands.append({'exe': exe, 'file':outfn_strip}) # save in our list + self.commons['xmlreport'].add_command(cmdline=exe,exitcode=status,f_stdout=outfn_strip,runtime=runtime) - if self.cInfo['cmdlineopts'].profiler: + if self.commons['cmdlineopts'].profiler: time_passed = time() - start_time self.proflog.debug("output: %-75s time: %f" % (exe, time_passed)) return outfn # For adding output - def addAlert(self, alertstring): + def add_alert(self, alertstring): """Add an alert to the collection of alerts for this plugin. These will be displayed in the report """ self.alerts.append(alertstring) - def addCustomText(self, text): + def add_custom_text(self, text): """Append text to the custom text that is included in the report. This is freeform and can include html. """ - self.customText += text + self.custom_text += text - def copyStuff(self): + def collect(self): """Collect the data for a plugin.""" - for path, sub in self.copyPaths: - self.doCopyFileOrDir(path, sub=sub) + for path, sub in self.copy_paths: + self.do_copy_file_or_dir(path, sub=sub) - for string, file_name in self.copyStrings: + for string, file_name in self.copy_strings: try: self.archive.add_string(string, os.path.join('sos_strings', self.name(), file_name)) @@ -588,11 +588,11 @@ class Plugin(object): self.soslog.debug("could not create %s, traceback follows: %s" % (file_name, e)) - for progs in izip(self.collectProgs): + for progs in izip(self.collect_cmds): prog, suggest_filename, root_symlink, timeout = progs[0] self.soslog.debug("collecting output of '%s'" % prog) try: - self.getCmdOutputNow(prog, suggest_filename, + self.get_cmd_output_now(prog, suggest_filename, root_symlink, timeout) except Exception, e: self.soslog.debug("error collecting output of '%s' (%s)" @@ -609,7 +609,7 @@ class Plugin(object): except: return "<no description available>" - def checkenabled(self): + def check_enabled(self): """This method will be used to verify that a plugin should execute given the condition of the underlying environment. The default implementation will return True if neither class.files or @@ -627,16 +627,16 @@ class Plugin(object): self.packages = [self.packages] return (any(os.path.exists(fname) for fname in self.files) or - any(self.isInstalled(pkg) for pkg in self.packages)) + any(self.is_installed(pkg) for pkg in self.packages)) return True - def defaultenabled(self): + def default_enabled(self): """This devices whether a plugin should be automatically loaded or only if manually specified in the command line.""" return True def setup(self): - """This method must be overridden to add the copyPaths, forbiddenPaths, + """This method must be overridden to add the copy_paths, forbidden_paths, and external programs to be collected at a minimum. """ pass @@ -658,9 +658,9 @@ class Plugin(object): html = html + "<h2> Plugin <em>" + self.name() + "</em></h2>\n" # Files - if len(self.copiedFiles): + if len(self.copied_files): html = html + "<p>Files copied:<br><ul>\n" - for afile in self.copiedFiles: + for afile in self.copied_files: html = html + '<li><a href="%s">%s</a>' % \ (".." + afile['dstpath'], afile['srcpath']) if (afile['symlink'] == "yes"): @@ -669,13 +669,13 @@ class Plugin(object): html = html + "</ul></p>\n" # Command Output - if len(self.executedCommands): + if len(self.executed_commands): html = html + "<p>Commands Executed:<br><ul>\n" # convert file name to relative path from our root # don't use relpath - these are HTML paths not OS paths. - for cmd in self.executedCommands: + for cmd in self.executed_commands: if cmd["file"] and len(cmd["file"]): - cmdOutRelPath = "../" + self.cInfo['cmddir'] \ + cmdOutRelPath = "../" + self.commons['cmddir'] \ + "/" + cmd['file'] html = html + '<li><a href="%s">%s</a></li>\n' % \ (cmdOutRelPath, cmd['exe']) @@ -691,9 +691,9 @@ class Plugin(object): html = html + "</ul></p>\n" # Custom Text - if (self.customText != ""): + if (self.custom_text != ""): html = html + "<p>Additional Information:<br>\n" - html = html + self.customText + "</p>\n" + html = html + self.custom_text + "</p>\n" return html @@ -747,21 +747,21 @@ class AS7Mixin(object): try: return self.query_java(request_obj) except Exception, e: - self.addAlert("JBOSS API call failed, falling back to HTTP: %s" % e) + self.add_alert("JBOSS API call failed, falling back to HTTP: %s" % e) return self.query_http(request_obj) def _get_opt(self, first, second, default=None): - val = self.getOption(first) + val = self.get_option(first) if val: return val - val = self.getOption(second) + val = self.get_option(second) if val: return val return default def query_java(self, request_obj): from org.jboss.dmr import ModelNode - controller_client = self.getOption('controller_client_proxy') + controller_client = self.get_option('controller_client_proxy') if not controller_client: raise AttributeError("Controller Client is not available") @@ -820,7 +820,7 @@ class AS7Mixin(object): return resp.read() except Exception, e: err_msg = "Could not query url: %s; error: %s" % (uri, e) - self.addAlert(err_msg) + self.add_alert(err_msg) return err_msg def set_domain_info(self, parameters=None): @@ -828,8 +828,8 @@ class AS7Mixin(object): if it is present to the desired resource. This is to support domain-mode operation in AS7. """ - host_controller_name = self.getOption("as7_host_controller_name") - server_name = self.getOption("as7_server_name") + host_controller_name = self.get_option("as7_host_controller_name") + server_name = self.get_option("as7_server_name") if host_controller_name and server_name: if not parameters: @@ -847,7 +847,7 @@ class AS7Mixin(object): r = self.Request(resource=resource, parameters=parameters, operation=operation) - self.addStringAsFile(self.query(r), filename=outfile) + self.add_string_as_file(self.query(r), filename=outfile) def import_plugin(name, superclasses=None): diff --git a/sos/plugins/abrt.py b/sos/plugins/abrt.py index 8eff9628..9437c562 100644 --- a/sos/plugins/abrt.py +++ b/sos/plugins/abrt.py @@ -17,27 +17,27 @@ from sos.plugins import Plugin, RedHatPlugin from os.path import exists -class abrt(Plugin, RedHatPlugin): +class Abrt(Plugin, RedHatPlugin): """ABRT log dump """ - optionList = [("backtraces", 'collect backtraces for every report', 'slow', False)] + option_list = [("backtraces", 'collect backtraces for every report', 'slow', False)] - def checkenabled(self): - return self.isInstalled("abrt-cli") or \ + def check_enabled(self): + return self.is_installed("abrt-cli") or \ exists("/var/spool/abrt") def do_backtraces(self): - ret, output, rtime = self.callExtProg('/usr/bin/sqlite3 /var/spool/abrt/abrt-db \'select UUID from abrt_v4\'') + ret, output, rtime = self.call_ext_prog('sqlite3 /var/spool/abrt/abrt-db \'select UUID from abrt_v4\'') try: for uuid in output.split(): - self.addCmdOutput("/usr/bin/abrt-cli -ib %s" % uuid, + self.add_cmd_output("abrt-cli -ib %s" % uuid, suggest_filename=("backtrace_%s" % uuid)) except IndexError: pass def setup(self): - self.addCmdOutput("/usr/bin/abrt-cli -lf", + self.add_cmd_output("abrt-cli -lf", suggest_filename="abrt-log") - if self.getOption('backtraces'): + if self.get_option('backtraces'): self.do_backtraces() diff --git a/sos/plugins/acpid.py b/sos/plugins/acpid.py index 1c092e42..9a2d1236 100644 --- a/sos/plugins/acpid.py +++ b/sos/plugins/acpid.py @@ -14,20 +14,20 @@ from sos.plugins import Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin -class acpid(Plugin): +class Acpid(Plugin): plugin_name = "acpid" -class RedHatAcpid(acpid, RedHatPlugin): +class RedHatAcpid(Acpid, RedHatPlugin): """acpid related information """ def setup(self): - self.addCopySpecs([ + self.add_copy_specs([ "/var/log/acpid*", "/etc/acpi/events/power.conf"]) -class DebianAcpid(acpid, DebianPlugin, UbuntuPlugin): +class DebianAcpid(Acpid, DebianPlugin, UbuntuPlugin): """acpid related information for Debian and Ubuntu """ def setup(self): - self.addCopySpecs([ + self.add_copy_specs([ "/etc/acpi/events/powerbtn*"]) diff --git a/sos/plugins/amd.py b/sos/plugins/amd.py index d5e1673a..4ecb8f54 100644 --- a/sos/plugins/amd.py +++ b/sos/plugins/amd.py @@ -16,13 +16,13 @@ from sos.plugins import Plugin, RedHatPlugin -class amd(Plugin, RedHatPlugin): +class Amd(Plugin, RedHatPlugin): """Amd automounter information """ files = ('/etc/rc.d/init.d/amd',) packages = ('am-utils',) def setup(self): - self.addCopySpecs("/etc/amd.*") - self.addCmdOutput("/bin/egrep -e 'automount|pid.*nfs' /proc/mounts") - self.addCmdOutput("/bin/mount | egrep -e 'automount|pid.*nfs'") + self.add_copy_specs("/etc/amd.*") + self.add_cmd_output("egrep -e 'automount|pid.*nfs' /proc/mounts") + self.add_cmd_output("mount | egrep -e 'automount|pid.*nfs'") diff --git a/sos/plugins/anaconda.py b/sos/plugins/anaconda.py index 06a5b369..dd5f9760 100644 --- a/sos/plugins/anaconda.py +++ b/sos/plugins/anaconda.py @@ -15,7 +15,7 @@ from sos.plugins import Plugin, RedHatPlugin import os -class anaconda(Plugin, RedHatPlugin): +class Anaconda(Plugin, RedHatPlugin): """Anaconda / Installation information """ @@ -36,9 +36,9 @@ class anaconda(Plugin, RedHatPlugin): "/root/install.log", "/root/install.log.syslog"] - self.addCopySpecs(paths) + self.add_copy_specs(paths) def postproc(self): - self.doFileSub("/root/anaconda-ks.cfg", + self.do_file_sub("/root/anaconda-ks.cfg", r"(\s*rootpw\s*).*", r"\1******") diff --git a/sos/plugins/apache.py b/sos/plugins/apache.py index 077c5fb7..d889125a 100644 --- a/sos/plugins/apache.py +++ b/sos/plugins/apache.py @@ -14,14 +14,14 @@ from sos.plugins import Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin -class apache(Plugin): +class Apache(Plugin): """Apache related information """ plugin_name = "apache" - optionList = [("log", "gathers all apache logs", "slow", False)] + option_list = [("log", "gathers all apache logs", "slow", False)] -class RedHatApache(apache, RedHatPlugin): +class RedHatApache(Apache, RedHatPlugin): """Apache related information for Red Hat distributions """ files = ('/etc/httpd/conf/httpd.conf',) @@ -29,24 +29,24 @@ class RedHatApache(apache, RedHatPlugin): def setup(self): super(RedHatApache, self).setup() - self.addCopySpecs([ + self.add_copy_specs([ "/etc/httpd/conf/httpd.conf", "/etc/httpd/conf.d/*.conf"]) - self.addForbiddenPath("/etc/httpd/conf/password.conf") + self.add_forbidden_path("/etc/httpd/conf/password.conf") - if self.getOption("log"): - self.addCopySpec("/var/log/httpd/*") + if self.get_option("log"): + self.add_copy_spec("/var/log/httpd/*") -class DebianApache(apache, DebianPlugin, UbuntuPlugin): +class DebianApache(Apache, DebianPlugin, UbuntuPlugin): """Apache related information for Debian distributions """ files = ('/etc/apache2/apache2.conf',) def setup(self): super(DebianApache, self).setup() - self.addCopySpecs([ + self.add_copy_specs([ "/etc/apache2/*", "/etc/default/apache2"]) - if self.getOption("log"): - self.addCopySpec("/var/log/apache2/*") + if self.get_option("log"): + self.add_copy_spec("/var/log/apache2/*") diff --git a/sos/plugins/apparmor.py b/sos/plugins/apparmor.py index 06c17c71..29ea02a9 100644 --- a/sos/plugins/apparmor.py +++ b/sos/plugins/apparmor.py @@ -15,10 +15,10 @@ from sos.plugins import Plugin, UbuntuPlugin -class apparmor(Plugin, UbuntuPlugin): +class Apparmor(Plugin, UbuntuPlugin): """Apparmor related information """ def setup(self): - self.addCopySpecs([ + self.add_copy_specs([ "/etc/apparmor" ]) diff --git a/sos/plugins/apport.py b/sos/plugins/apport.py index 83618dbe..f565261d 100644 --- a/sos/plugins/apport.py +++ b/sos/plugins/apport.py @@ -15,8 +15,8 @@ from sos.plugins import Plugin, DebianPlugin, UbuntuPlugin -class apport(Plugin, DebianPlugin, UbuntuPlugin): +class Apport(Plugin, DebianPlugin, UbuntuPlugin): """apport information """ def setup(self): - self.addCopySpec("/etc/apport/*") + self.add_copy_spec("/etc/apport/*") diff --git a/sos/plugins/as7.py b/sos/plugins/as7.py index 5d427a7c..52f71203 100644 --- a/sos/plugins/as7.py +++ b/sos/plugins/as7.py @@ -18,7 +18,7 @@ class AS7(Plugin, IndependentPlugin, AS7Mixin): version = "1.0" - optionList = [ + option_list = [ ("home", "JBoss's installation dir (i.e. JBOSS_HOME)", '', False), ("logsize", 'max size (MiB) to collect per log file', '', 15), ("stdjar", 'Collect jar statistics for standard jars.', '', True), @@ -37,17 +37,17 @@ class AS7(Plugin, IndependentPlugin, AS7Mixin): def __alert(self, msg): self.soslog.error(msg) - self.addAlert(msg) + self.add_alert(msg) def __getJbossHome(self): self.__jbossHome = self.get_jboss_home() if not self.__jbossHome: - self.addAlert("ERROR: The JBoss installation directory was not supplied.\ + self.add_alert("ERROR: The JBoss installation directory was not supplied.\ The JBoss SOS plug-in cannot continue.") return False - self.addAlert("INFO: The JBoss installation directory supplied to SOS is " + + self.add_alert("INFO: The JBoss installation directory supplied to SOS is " + self.__jbossHome) return True @@ -94,12 +94,12 @@ class AS7(Plugin, IndependentPlugin, AS7Mixin): if jar_info_list: jar_info_list.sort() - self.addStringAsFile("\n".join([ + self.add_string_as_file("\n".join([ "%s\n%s\n%s\n===\n" % (name, checksum, manifest) for (name, checksum, manifest) in jar_info_list]), 'jarinfo.txt') else: - self.addAlert("WARN: No jars found in JBoss system path (" + self.__jbossHome + ").") + self.add_alert("WARN: No jars found in JBoss system path (" + self.__jbossHome + ").") def get_online_data(self): """ @@ -129,26 +129,26 @@ class AS7(Plugin, IndependentPlugin, AS7Mixin): for dir_ in configDirAry: path = os.path.join(self.__jbossHome, dir_) ## First add forbidden files - self.addForbiddenPath(os.path.join(path, "tmp")) - self.addForbiddenPath(os.path.join(path, "work")) - self.addForbiddenPath(os.path.join(path, "data")) + self.add_forbidden_path(os.path.join(path, "tmp")) + self.add_forbidden_path(os.path.join(path, "work")) + self.add_forbidden_path(os.path.join(path, "data")) if os.path.exists(path): ## First get everything in the conf dir confDir = os.path.join(path, "configuration") - self.addForbiddenPath(os.path.join(confDir, 'mgmt-users.properties')) - self.addForbiddenPath(os.path.join(confDir, 'application-users.properties')) + self.add_forbidden_path(os.path.join(confDir, 'mgmt-users.properties')) + self.add_forbidden_path(os.path.join(confDir, 'application-users.properties')) for logFile in find("*.log", path): - self.addCopySpecLimit(logFile, - self.getOption("logsize"), + self.add_copy_spec_limit(logFile, + self.get_option("logsize"), sub=(self.__jbossHome, 'JBOSSHOME')) for xml in find("*.xml", path): - self.addCopySpec(xml, sub=(self.__jbossHome, 'JBOSSHOME')) + self.add_copy_spec(xml, sub=(self.__jbossHome, 'JBOSSHOME')) for prop in find("*.properties", path): - self.addCopySpec(prop, sub=(self.__jbossHome, 'JBOSSHOME')) + self.add_copy_spec(prop, sub=(self.__jbossHome, 'JBOSSHOME')) deployment_info = self.__get_deployment_info(confDir) deployments = self.__get_deployments(path) @@ -156,7 +156,7 @@ class AS7(Plugin, IndependentPlugin, AS7Mixin): self.__get_listing_from_deployment(deployment, deployment_info) for xml in find("*.xml", os.path.join(self.__jbossHome, 'modules')): - self.addCopySpec(xml, sub=(self.__jbossHome, 'JBOSSHOME')) + self.add_copy_spec(xml, sub=(self.__jbossHome, 'JBOSSHOME')) def __get_deployment_info(self, dir_): """Gets the deployment name to sha1 mapping for all deployments defined @@ -199,12 +199,12 @@ class AS7(Plugin, IndependentPlugin, AS7Mixin): else: path_to, name = os.path.split(path_to) - self.addStringAsFile(output, os.path.join(path_to, "%s.txt" % name)) + self.add_string_as_file(output, os.path.join(path_to, "%s.txt" % name)) except: # this is probably not a zipfile so we don't care pass - def checkenabled(self): + def check_enabled(self): return self.__getJbossHome() def setup(self): @@ -217,11 +217,11 @@ class AS7(Plugin, IndependentPlugin, AS7Mixin): except urllib2.URLError: pass - if self.getOption("stdjar"): + if self.get_option("stdjar"): self.__getStdJarInfo() tree = DirTree(self.__jbossHome).as_string() - self.addStringAsFile(tree, "jboss_home_tree.txt") + self.add_string_as_file(tree, "jboss_home_tree.txt") self.__getFiles(self.__jbossServerConfigDirs) @@ -235,19 +235,19 @@ class AS7(Plugin, IndependentPlugin, AS7Mixin): for dir_ in self.__jbossServerConfigDirs: path = os.path.join(self.__jbossHome, dir_) - self.doFileSub(os.path.join(path,"configuration","*.xml"), + self.do_file_sub(os.path.join(path,"configuration","*.xml"), password_xml_regex, r'<password>********</password>') tmp = os.path.join(path,"configuration") for propFile in find("*-users.properties", tmp): - self.doFileSub(propFile, + self.do_file_sub(propFile, r"=(.*)", r'=********') # Remove PW from -ds.xml files tmp = os.path.join(path, "deployments") for dsFile in find("*-ds.xml", tmp): - self.doFileSub(dsFile, + self.do_file_sub(dsFile, password_xml_regex, r"<password>********</password>") diff --git a/sos/plugins/auditd.py b/sos/plugins/auditd.py index 8ccae7f7..27dda2ba 100644 --- a/sos/plugins/auditd.py +++ b/sos/plugins/auditd.py @@ -14,12 +14,12 @@ from sos.plugins import Plugin, RedHatPlugin -class auditd(Plugin, RedHatPlugin): +class Auditd(Plugin, RedHatPlugin): """Auditd related information """ - optionList = [("syslogsize", "max size (MiB) to collect per syslog file", "", 15)] + option_list = [("syslogsize", "max size (MiB) to collect per syslog file", "", 15)] def setup(self): - self.addCopySpecs(["/etc/audit/auditd.conf", "/etc/audit/audit.rules"]) - self.addCopySpecLimit("/var/log/audit*", sizelimit = self.getOption("syslogsize")) + self.add_copy_specs(["/etc/audit/auditd.conf", "/etc/audit/audit.rules"]) + self.add_copy_spec_limit("/var/log/audit*", sizelimit = self.get_option("syslogsize")) diff --git a/sos/plugins/autofs.py b/sos/plugins/autofs.py index 5d19f8b5..f88d4f8b 100644 --- a/sos/plugins/autofs.py +++ b/sos/plugins/autofs.py @@ -17,7 +17,7 @@ from sos.plugins import Plugin, RedHatPlugin, UbuntuPlugin, DebianPlugin import os, re -class autofs(Plugin): +class Autofs(Plugin): """autofs server-related information """ @@ -30,7 +30,7 @@ class autofs(Plugin): """ testing if autofs debug has been enabled anywhere """ # Global debugging - opt = self.fileGrep(r"^(DEFAULT_LOGGING|DAEMONOPTIONS)=(.*)", *self.files) + opt = self.file_grep(r"^(DEFAULT_LOGGING|DAEMONOPTIONS)=(.*)", *self.files) for opt1 in opt: for opt2 in opt1.split(" "): if opt2 in ("--debug", "debug"): @@ -40,29 +40,29 @@ class autofs(Plugin): def getdaemondebug(self): """ capture daemon debug output """ - debugout = self.fileGrep(r"^(daemon.*)\s+(\/var\/log\/.*)", *self.files) + debugout = self.file_grep(r"^(daemon.*)\s+(\/var\/log\/.*)", *self.files) for i in debugout: return i[1] def setup(self): - self.addCopySpec("/etc/auto*") - self.addCmdOutput("/etc/init.d/autofs status") - self.addCmdOutput("ps auxwww | grep automount") - self.addCmdOutput("/bin/egrep -e 'automount|pid.*nfs' /proc/mounts") - self.addCmdOutput("/bin/mount | egrep -e 'automount|pid.*nfs'") + self.add_copy_spec("/etc/auto*") + self.add_cmd_output("/etc/init.d/autofs status") + self.add_cmd_output("ps auxwww | grep automount") + self.add_cmd_output("egrep -e 'automount|pid.*nfs' /proc/mounts") + self.add_cmd_output("mount | egrep -e 'automount|pid.*nfs'") if self.checkdebug(): - self.addCopySpec(self.getdaemondebug()) + self.add_copy_spec(self.getdaemondebug()) -class RedHatAutofs(autofs, RedHatPlugin): +class RedHatAutofs(Autofs, RedHatPlugin): """autofs server-related on RedHat based distributions""" def setup(self): super(RedHatAutofs, self).setup() - self.addCmdOutput("/bin/rpm -qV autofs") + self.add_cmd_output("rpm -qV autofs") -class DebianAutofs(autofs, DebianPlugin, UbuntuPlugin): +class DebianAutofs(Autofs, DebianPlugin, UbuntuPlugin): """autofs server-related on Debian based distributions""" def setup(self): super(DebianAutofs, self).setup() - self.addCmdOutput("/usr/bin/dpkg-query -s autofs") + self.add_cmd_output("dpkg-query -s autofs") diff --git a/sos/plugins/azure.py b/sos/plugins/azure.py index b2c7f415..ed27f8c8 100644 --- a/sos/plugins/azure.py +++ b/sos/plugins/azure.py @@ -22,7 +22,7 @@ class azure(Plugin, UbuntuPlugin): packages = ('walinuxagent',) def setup(self): - self.addCopySpecs(["/var/log/waagent*", + self.add_copy_specs(["/var/log/waagent*", "/var/lib/cloud", "/etc/default/kv-kvp-daemon-init", "/sys/module/hv_netvsc/parameters/ring_size", diff --git a/sos/plugins/bootloader.py b/sos/plugins/bootloader.py index 1c3cde2a..3b3d2124 100644 --- a/sos/plugins/bootloader.py +++ b/sos/plugins/bootloader.py @@ -14,11 +14,11 @@ from sos.plugins import Plugin, RedHatPlugin, UbuntuPlugin -class bootloader(Plugin, RedHatPlugin, UbuntuPlugin): +class Bootloader(Plugin, RedHatPlugin, UbuntuPlugin): """Bootloader information """ def setup(self): - self.addCopySpecs([ + self.add_copy_specs([ "/etc/lilo.conf", "/etc/milo.conf", "/etc/silo.conf", @@ -27,5 +27,5 @@ class bootloader(Plugin, RedHatPlugin, UbuntuPlugin): "/boot/grub/device.map", "/etc/grub.d", "/boot/yaboot.conf"]) - self.addCmdOutput("/sbin/lilo -q") - self.addCmdOutput("/bin/ls -lanR /boot") + self.add_cmd_output("lilo -q") + self.add_cmd_output("ls -lanR /boot") diff --git a/sos/plugins/ceph.py b/sos/plugins/ceph.py index 7d02ce10..fbcee784 100644 --- a/sos/plugins/ceph.py +++ b/sos/plugins/ceph.py @@ -14,10 +14,10 @@ from sos.plugins import Plugin, RedHatPlugin, UbuntuPlugin -class ceph(Plugin, RedHatPlugin, UbuntuPlugin): +class Ceph(Plugin, RedHatPlugin, UbuntuPlugin): """information on CEPH """ - optionList = [("log", "gathers all ceph logs", "slow", False)] + option_list = [("log", "gathers all ceph logs", "slow", False)] packages = ('ceph', 'ceph-mds', @@ -26,14 +26,14 @@ class ceph(Plugin, RedHatPlugin, UbuntuPlugin): 'ceph-fs-common') def setup(self): - self.addCopySpecs(["/etc/ceph/", + self.add_copy_specs(["/etc/ceph/", "/var/log/ceph/"]) - self.addCmdOutput("/usr/bin/ceph status") - self.addCmdOutput("/usr/bin/ceph health") - self.addCmdOutput("/usr/bin/ceph osd tree") - self.addCmdOutput("/usr/bin/ceph osd stat") - self.addCmdOutput("/usr/bin/ceph osd dump") - self.addCmdOutput("/usr/bin/ceph mon stat") - self.addCmdOutput("/usr/bin/ceph mon dump") + self.add_cmd_output("ceph status") + self.add_cmd_output("ceph health") + self.add_cmd_output("ceph osd tree") + self.add_cmd_output("ceph osd stat") + self.add_cmd_output("ceph osd dump") + self.add_cmd_output("ceph mon stat") + self.add_cmd_output("ceph mon dump") diff --git a/sos/plugins/cgroups.py b/sos/plugins/cgroups.py index 5b217760..1027c04e 100644 --- a/sos/plugins/cgroups.py +++ b/sos/plugins/cgroups.py @@ -14,27 +14,27 @@ from sos.plugins import Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin -class cgroups(Plugin): +class Cgroups(Plugin): """cgroup subsystem information """ plugin_name = "cgroups" -class DebianCgroups(cgroups, DebianPlugin, UbuntuPlugin): +class DebianCgroups(Cgroups, DebianPlugin, UbuntuPlugin): files = ('/proc/cgroups',) def setup(self): - self.addCopySpecs(["/proc/cgroups", + self.add_copy_specs(["/proc/cgroups", "/sys/fs/cgroup"]) return -class RedHatCgroups(cgroups, RedHatPlugin): +class RedHatCgroups(Cgroups, RedHatPlugin): """Red Hat specific cgroup subsystem information """ def setup(self): - self.addCopySpecs(["/etc/sysconfig/cgconfig", + self.add_copy_specs(["/etc/sysconfig/cgconfig", "/etc/sysconfig/cgred.conf", "/etc/cgsnapshot_blacklist.conf", "/etc/cgconfig.conf", diff --git a/sos/plugins/cloudforms.py b/sos/plugins/cloudforms.py index 8f6c0a03..3a11cc42 100644 --- a/sos/plugins/cloudforms.py +++ b/sos/plugins/cloudforms.py @@ -16,22 +16,22 @@ from sos.plugins import Plugin, RedHatPlugin import os -class cloudforms(Plugin, RedHatPlugin): +class Cloudforms(Plugin, RedHatPlugin): """CloudForms related information """ packages = ["katello", "katello-common", "katello-headpin", "aeoleus-conductor"] files = ["/usr/share/katello/script/katello-debug", - "/usr/bin/aeolus-debug"] + "aeolus-debug"] def setup(self): katello_debug = "/usr/share/katello/script/katello-debug" - aeolus_debug = "/usr/bin/aeolus-debug" + aeolus_debug = "aeolus-debug" if os.path.isfile(katello_debug): - katello_debug_path = os.path.join(self.cInfo['dstroot'],"katello-debug") - self.addCmdOutput("%s --notar -d %s" % (katello_debug, katello_debug_path)) + katello_debug_path = os.path.join(self.commons['dstroot'],"katello-debug") + self.add_cmd_output("%s --notar -d %s" % (katello_debug, katello_debug_path)) if os.path.isfile(aeolus_debug): - aeolus_debug_path = os.path.join(self.cInfo['dstroot'],"aeolus-debug") - self.addCmdOutput("%s --notar -d %s" % (aeolus_debug, aeolus_debug_path)) + aeolus_debug_path = os.path.join(self.commons['dstroot'],"aeolus-debug") + self.add_cmd_output("%s --notar -d %s" % (aeolus_debug, aeolus_debug_path)) diff --git a/sos/plugins/cluster.py b/sos/plugins/cluster.py index e8076cb0..07eeb458 100644 --- a/sos/plugins/cluster.py +++ b/sos/plugins/cluster.py @@ -16,16 +16,16 @@ from sos.plugins import Plugin, RedHatPlugin import os, re from glob import glob -class cluster(Plugin, RedHatPlugin): +class Cluster(Plugin, RedHatPlugin): """cluster suite and GFS related information """ - optionList = [("gfslockdump", + option_list = [("gfslockdump", 'gather output of gfs lockdumps', 'slow', False), ('lockdump', 'gather dlm lockdumps', 'slow', False)] - def checkenabled(self): - rhelver = self.policy().rhelVersion() + def check_enabled(self): + rhelver = self.policy().rhel_version() if rhelver == 4: self.packages = [ "ccs", "cman", "cman-kernel", "magma", "magma-plugins", "rgmanager", "fence", "dlm", @@ -42,109 +42,109 @@ class cluster(Plugin, RedHatPlugin): "cman", "clusterlib", "fence-agents" ] self.files = [ "/etc/cluster/cluster.conf" ] - return Plugin.checkenabled(self) + return Plugin.check_enabled(self) def setup(self): - rhelver = self.policy().rhelVersion() - - self.addCopySpec("/etc/cluster.conf") - self.addCopySpec("/etc/cluster.xml") - self.addCopySpec("/etc/cluster") - self.addCopySpec("/etc/sysconfig/cluster") - self.addCopySpec("/etc/sysconfig/cman") - self.addCopySpec("/etc/fence_virt.conf") - self.addCopySpec("/var/lib/ricci") - self.addCopySpec("/var/lib/luci") - self.addCopySpec("/var/log/cluster") - self.addCopySpec("/var/log/luci/luci.log") - self.addCopySpec("/etc/fence_virt.conf") - - if self.getOption('gfslockdump'): + rhelver = self.policy().rhel_version() + + self.add_copy_spec("/etc/cluster.conf") + self.add_copy_spec("/etc/cluster.xml") + self.add_copy_spec("/etc/cluster") + self.add_copy_spec("/etc/sysconfig/cluster") + self.add_copy_spec("/etc/sysconfig/cman") + self.add_copy_spec("/etc/fence_virt.conf") + self.add_copy_spec("/var/lib/ricci") + self.add_copy_spec("/var/lib/luci") + self.add_copy_spec("/var/log/cluster") + self.add_copy_spec("/var/log/luci/luci.log") + self.add_copy_spec("/etc/fence_virt.conf") + + if self.get_option('gfslockdump'): self.do_gfslockdump() - if self.getOption('lockdump'): + if self.get_option('lockdump'): self.do_lockdump() - self.addCmdOutput("/usr/sbin/rg_test test " + self.add_cmd_output("rg_test test " + "/etc/cluster/cluster.conf" ) - self.addCmdOutput("fence_tool ls -n") - self.addCmdOutput("gfs_control ls -n") - self.addCmdOutput("dlm_tool log_plock") - - self.addCmdOutput("/sbin/fdisk -l") - self.getCmdOutputNow("clustat") - self.getCmdOutputNow("group_tool dump") - self.addCmdOutput("cman_tool services") - self.addCmdOutput("cman_tool nodes") - self.addCmdOutput("cman_tool status") - self.addCmdOutput("ccs_tool lsnode") - self.addCmdOutput("/sbin/ipvsadm -L") + self.add_cmd_output("fence_tool ls -n") + self.add_cmd_output("gfs_control ls -n") + self.add_cmd_output("dlm_tool log_plock") + + self.add_cmd_output("fdisk -l") + self.get_cmd_output_now("clustat") + self.get_cmd_output_now("group_tool dump") + self.add_cmd_output("cman_tool services") + self.add_cmd_output("cman_tool nodes") + self.add_cmd_output("cman_tool status") + self.add_cmd_output("ccs_tool lsnode") + self.add_cmd_output("ipvsadm -L") if rhelver is 4: - self.addCopySpec("/proc/cluster/*") - self.addCmdOutput("cman_tool nodes") + self.add_copy_spec("/proc/cluster/*") + self.add_cmd_output("cman_tool nodes") if rhelver is not 4: # 5+ - self.addCmdOutput("cman_tool -a nodes") + self.add_cmd_output("cman_tool -a nodes") if rhelver is 5: - self.addCmdOutput("group_tool -v") - self.addCmdOutput("group_tool dump fence") - self.addCmdOutput("group_tool dump gfs") + self.add_cmd_output("group_tool -v") + self.add_cmd_output("group_tool dump fence") + self.add_cmd_output("group_tool dump gfs") if rhelver not in (4,5): # 6+ - self.addCmdOutput("corosync-quorumtool -l") - self.addCmdOutput("corosync-quorumtool -s") - self.addCmdOutput("corosync-cpgtool") - self.addCmdOutput("corosync-objctl") - self.addCmdOutput("group_tool ls -g1") - self.addCmdOutput("gfs_control ls -n") - self.addCmdOutput("gfs_control dump") - self.addCmdOutput("fence_tool dump") - self.addCmdOutput("dlm_tool dump") - self.addCmdOutput("dlm_tool ls -n") - self.addCmdOutput("mkqdisk -L") + self.add_cmd_output("corosync-quorumtool -l") + self.add_cmd_output("corosync-quorumtool -s") + self.add_cmd_output("corosync-cpgtool") + self.add_cmd_output("corosync-objctl") + self.add_cmd_output("group_tool ls -g1") + self.add_cmd_output("gfs_control ls -n") + self.add_cmd_output("gfs_control dump") + self.add_cmd_output("fence_tool dump") + self.add_cmd_output("dlm_tool dump") + self.add_cmd_output("dlm_tool ls -n") + self.add_cmd_output("mkqdisk -L") def do_lockdump(self): - rhelver = self.policy().rhelVersion() + rhelver = self.policy().rhel_version() if rhelver is 4: - status, output, time = self.callExtProg("cman_tool services") + status, output, time = self.call_ext_prog("cman_tool services") for lockspace in re.compile(r'^DLM Lock Space:\s*"([^"]*)".*$', re.MULTILINE).findall(output): - self.callExtProg("echo %s > /proc/cluster/dlm_locks" + self.call_ext_prog("echo %s > /proc/cluster/dlm_locks" % lockspace) - self.getCmdOutputNow("cat /proc/cluster/dlm_locks", + self.get_cmd_output_now("cat /proc/cluster/dlm_locks", suggest_filename = "dlm_locks_%s" % lockspace) if rhelver is 5: - status, output, time = self.callExtProg("group_tool") + status, output, time = self.call_ext_prog("group_tool") for lockspace in re.compile(r'^dlm\s+[^\s]+\s+([^\s]+)$', re.MULTILINE).findall(output): - self.addCmdOutput("dlm_tool lockdebug '%s'" % lockspace, + self.add_cmd_output("dlm_tool lockdebug '%s'" % lockspace, suggest_filename = "dlm_locks_%s" % lockspace) else: # RHEL6 or recent Fedora - status, output, time = self.callExtProg("dlm_tool ls") + status, output, time = self.call_ext_prog("dlm_tool ls") for lockspace in re.compile(r'^name\s+([^\s]+)$', re.MULTILINE).findall(output): - self.addCmdOutput("dlm_tool lockdebug -svw '%s'" + self.add_cmd_output("dlm_tool lockdebug -svw '%s'" % lockspace, suggest_filename = "dlm_locks_%s" % lockspace) def do_gfslockdump(self): - for mntpoint in self.doRegexFindAll(r'^\S+\s+([^\s]+)\s+gfs\s+.*$', + for mntpoint in self.do_regex_find_all(r'^\S+\s+([^\s]+)\s+gfs\s+.*$', "/proc/mounts"): - self.addCmdOutput("/sbin/gfs_tool lockdump %s" % mntpoint, + self.add_cmd_output("gfs_tool lockdump %s" % mntpoint, suggest_filename = "gfs_lockdump_" - + self.mangleCommand(mntpoint)) + + self.mangle_command(mntpoint)) def postproc(self): for cluster_conf in glob("/etc/cluster/cluster.conf*"): - self.doFileSub(cluster_conf, + self.do_file_sub(cluster_conf, r"(\s*\<fencedevice\s*.*\s*passwd\s*=\s*)\S+(\")", r"\1%s" %('"***"')) - self.doCmdOutputSub("corosync-objctl", + self.do_cmd_output_sub("corosync-objctl", r"(.*fence.*\.passwd=)(.*)", r"\1******") return diff --git a/sos/plugins/cobbler.py b/sos/plugins/cobbler.py index 5ad1d062..e3d289e2 100644 --- a/sos/plugins/cobbler.py +++ b/sos/plugins/cobbler.py @@ -14,28 +14,28 @@ from sos.plugins import Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin -class cobbler(Plugin): +class Cobbler(Plugin): plugin_name = "cobbler" -class RedHatCobbler(cobbler, RedHatPlugin): +class RedHatCobbler(Cobbler, RedHatPlugin): """cobbler related information """ packages = ('cobbler',) def setup(self): - self.addCopySpec("/etc/cobbler") - self.addCopySpec("/var/log/cobbler") - self.addCopySpec("/var/lib/rhn/kickstarts") - self.addCopySpec("/var/lib/cobbler") + self.add_copy_spec("/etc/cobbler") + self.add_copy_spec("/var/log/cobbler") + self.add_copy_spec("/var/lib/rhn/kickstarts") + self.add_copy_spec("/var/lib/cobbler") -class DebianCobbler(cobbler, DebianPlugin, UbuntuPlugin): +class DebianCobbler(Cobbler, DebianPlugin, UbuntuPlugin): """cobbler related information for Debian and Ubuntu """ packages = ('cobbler',) def setup(self): - self.addCopySpec("/etc/cobbler") - self.addCopySpec("/var/log/cobbler") - self.addCopySpec("/var/lib/cobbler") + self.add_copy_spec("/etc/cobbler") + self.add_copy_spec("/var/log/cobbler") + self.add_copy_spec("/var/lib/cobbler") diff --git a/sos/plugins/corosync.py b/sos/plugins/corosync.py index 6fb0ad0a..2c2bf35b 100644 --- a/sos/plugins/corosync.py +++ b/sos/plugins/corosync.py @@ -18,19 +18,19 @@ class corosync(Plugin, RedHatPlugin): """ corosync information """ - files = ('/usr/bin/corosync',) + files = ('corosync',) packages = ('corosync',) def setup(self): - self.addCopySpecs([ + self.add_copy_specs([ "/etc/corosync", "/var/lib/corosync/fdata", "/var/log/cluster/corosync.log"]) - self.addCmdOutput("corosync-quorumtool -l") - self.addCmdOutput("corosync-quorumtool -s") - self.addCmdOutput("corosync-cpgtool") - self.addCmdOutput("corosync-objctl -a") - self.addCmdOutput("corosync-fplay") - self.addCmdOutput("/usr/sbin/corosync-objctl -w runtime.blackbox.dump_state=$(date +\%s)") - self.addCmdOutput("/usr/sbin/corosync-objctl -w runtime.blackbox.dump_flight_data=$(date +\%s)") - self.callExtProg("killall -USR2 corosync") + self.add_cmd_output("corosync-quorumtool -l") + self.add_cmd_output("corosync-quorumtool -s") + self.add_cmd_output("corosync-cpgtool") + self.add_cmd_output("corosync-objctl -a") + self.add_cmd_output("corosync-fplay") + self.add_cmd_output("corosync-objctl -w runtime.blackbox.dump_state=$(date +\%s)") + self.add_cmd_output("corosync-objctl -w runtime.blackbox.dump_flight_data=$(date +\%s)") + self.call_ext_prog("killall -USR2 corosync") diff --git a/sos/plugins/crontab.py b/sos/plugins/crontab.py index 8125aafd..bcbb315d 100644 --- a/sos/plugins/crontab.py +++ b/sos/plugins/crontab.py @@ -21,8 +21,8 @@ class crontab(Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin): plugin_name = "crontab" def setup(self): - self.addCopySpec("/etc/cron*") - self.addCmdOutput("/usr/bin/crontab -l -u root", suggest_filename = "root_crontab") - self.addCmdOutput("""for i in `ls /home/`;\ - do echo "User :" $i;/usr/bin/crontab -l -u $i;\ + self.add_copy_spec("/etc/cron*") + self.add_cmd_output("crontab -l -u root", suggest_filename = "root_crontab") + self.add_cmd_output("""for i in `ls /home/`;\ + do echo "User :" $i;crontab -l -u $i;\ echo "---------------";done""", suggest_filename = "users_crontabs") diff --git a/sos/plugins/cs.py b/sos/plugins/cs.py index 1d518117..e594ac2d 100644 --- a/sos/plugins/cs.py +++ b/sos/plugins/cs.py @@ -25,19 +25,19 @@ class cs(Plugin, RedHatPlugin): """ def checkversion(self): - if self.isInstalled("redhat-cs") or exists("/opt/redhat-cs"): + if self.is_installed("redhat-cs") or exists("/opt/redhat-cs"): return 71 - elif self.isInstalled("rhpki-common") or len(glob("/var/lib/rhpki-*")): + elif self.is_installed("rhpki-common") or len(glob("/var/lib/rhpki-*")): return 73 # 8 should cover dogtag - elif self.isInstalled("pki-common") or exists("/usr/share/java/pki"): + elif self.is_installed("pki-common") or exists("/usr/share/java/pki"): return 8 return False - def checkenabled(self): - if self.isInstalled("redhat-cs") or \ - self.isInstalled("rhpki-common") or \ - self.isInstalled("pki-common") or \ + def check_enabled(self): + if self.is_installed("redhat-cs") or \ + self.is_installed("rhpki-common") or \ + self.is_installed("pki-common") or \ exists("/opt/redhat-cs") or \ exists("/usr/share/java/rhpki") or \ exists("/usr/share/java/pki"): @@ -47,10 +47,10 @@ class cs(Plugin, RedHatPlugin): def setup(self): csversion = self.checkversion() if not csversion: - self.addAlert("Red Hat Certificate System not found.") + self.add_alert("Red Hat Certificate System not found.") return if csversion == 71: - self.addCopySpecs([ + self.add_copy_specs([ "/opt/redhat-cs/slapd-*/logs/access", "/opt/redhat-cs/slapd-*/logs/errors", "/opt/redhat-cs/slapd-*/config/dse.ldif", @@ -63,7 +63,7 @@ class cs(Plugin, RedHatPlugin): "/opt/redhat-cs/cert-*/debug", "/opt/redhat-cs/cert-*/tps-debug.log"]) if csversion == 73: - self.addCopySpecs([ + self.add_copy_specs([ "/var/lib/rhpki-*/conf/*cfg*", "/var/lib/rhpki-*/conf/*.ldif", "/var/lib/rhpki-*/logs/debug", @@ -72,12 +72,12 @@ class cs(Plugin, RedHatPlugin): "/var/lib/rhpki-*/logs/transactions", "/var/lib/rhpki-*/logs/system"]) if csversion in (73, 8): - self.addCopySpecs([ + self.add_copy_specs([ "/etc/dirsrv/slapd-*/dse.ldif", "/var/log/dirsrv/slapd-*/access", "/var/log/dirsrv/slapd-*/errors"]) if csversion == 8: - self.addCopySpecs([ + self.add_copy_specs([ "/etc/pki-*/CS.cfg", "/var/lib/pki-*/conf/*cfg*", "/var/log/pki-*/debug", diff --git a/sos/plugins/devicemapper.py b/sos/plugins/devicemapper.py index 288472a8..1aded5b0 100644 --- a/sos/plugins/devicemapper.py +++ b/sos/plugins/devicemapper.py @@ -19,51 +19,51 @@ class devicemapper(Plugin, RedHatPlugin): """device-mapper related information (dm, lvm, multipath) """ - optionList = [("lvmdump", 'collect raw metadata from PVs', 'slow', False)] - optionList = [("lvmdump-a", 'use the -a option of lvmdump (requires the "lvmdump" option)', 'slow', False)] - dmraidOptions = ['V','b','r','s','tay','rD'] + option_list = [("lvmdump", 'collect raw metadata from PVs', 'slow', False)] + option_list = [("lvmdump-a", 'use the -a option of lvmdump (requires the "lvmdump" option)', 'slow', False)] + dmraid_options = ['V','b','r','s','tay','rD'] def do_lvmdump(self): """Collects raw metadata directly from the PVs using dd """ - cmd = "lvmdump -d '%s'" % os.path.join(self.cInfo['dstroot'],"lvmdump") - if self.getOption('lvmdump-a'): + cmd = "lvmdump -d '%s'" % os.path.join(self.commons['dstroot'],"lvmdump") + if self.get_option('lvmdump-a'): cmd += " -a" - self.addCmdOutput(cmd) + self.add_cmd_output(cmd) def setup(self): - self.addCmdOutput("/sbin/dmsetup info -c") - self.addCmdOutput("/sbin/dmsetup table") - self.addCmdOutput("/sbin/dmsetup status") - self.addCmdOutput("/sbin/dmsetup ls --tree") + self.add_cmd_output("dmsetup info -c") + self.add_cmd_output("dmsetup table") + self.add_cmd_output("dmsetup status") + self.add_cmd_output("dmsetup ls --tree") - self.addCmdOutput("/sbin/vgdisplay -vv", root_symlink = "vgdisplay") - self.addCmdOutput("/sbin/vgscan -vvv") - self.addCmdOutput("/sbin/pvscan -v") - self.addCmdOutput("/sbin/lvs -a -o +devices") - self.addCmdOutput("/sbin/pvs -a -v") - self.addCmdOutput("/sbin/vgs -v") - self.addCmdOutput("/sbin/mdadm -D /dev/md*") + self.add_cmd_output("vgdisplay -vv", root_symlink = "vgdisplay") + self.add_cmd_output("vgscan -vvv") + self.add_cmd_output("pvscan -v") + self.add_cmd_output("lvs -a -o +devices") + self.add_cmd_output("pvs -a -v") + self.add_cmd_output("vgs -v") + self.add_cmd_output("mdadm -D /dev/md*") - self.addCopySpecs([ + self.add_copy_specs([ "/etc/lvm", "/etc/multipath/", "/etc/multipath.conf", "/var/lib/multipath/bindings"]) - self.addCmdOutput("/sbin/multipath -v4 -ll") + self.add_cmd_output("multipath -v4 -ll") - self.addCmdOutput("/usr/bin/systool -v -c -b scsi") + self.add_cmd_output("systool -v -c -b scsi") - self.addCmdOutput("/bin/ls -lanR /dev") - self.addCmdOutput("/bin/ls -lanR /sys/block") + self.add_cmd_output("ls -lanR /dev") + self.add_cmd_output("ls -lanR /sys/block") - if self.getOption('lvmdump'): + if self.get_option('lvmdump'): self.do_lvmdump() if os.path.isdir("/sys/block"): for disk in os.listdir("/sys/block"): if disk in [ ".", ".." ] or disk.startswith("ram"): continue - self.addCmdOutput("/usr/bin/udevinfo -ap /sys/block/%s" % (disk)) - for opt in self.dmraidOptions: - self.addCmdOutput("/sbin/dmraid -%s" % (opt,)) + self.add_cmd_output("udevinfo -ap /sys/block/%s" % (disk)) + for opt in self.dmraid_options: + self.add_cmd_output("dmraid -%s" % (opt,)) diff --git a/sos/plugins/dhcp.py b/sos/plugins/dhcp.py index 772ea35b..ccddd75d 100644 --- a/sos/plugins/dhcp.py +++ b/sos/plugins/dhcp.py @@ -28,7 +28,7 @@ class RedHatDhcp(dhcp, RedHatPlugin): def setup(self): super(DhcpRedHat, self).setup() - self.addCopySpecs([ + self.add_copy_specs([ "/etc/dhcpd.conf", "/etc/dhcp"]) @@ -40,7 +40,7 @@ class UbuntuDhcp(dhcp, UbuntuPlugin): def setup(self): super(DhcpDebian, self).setup() - self.addCopySpecs([ + self.add_copy_specs([ "/etc/default/udhcpd", "/etc/udhcpd.conf" ]) diff --git a/sos/plugins/dovecot.py b/sos/plugins/dovecot.py index ae6addb3..b3c5f929 100644 --- a/sos/plugins/dovecot.py +++ b/sos/plugins/dovecot.py @@ -20,5 +20,5 @@ class dovecot(Plugin, RedHatPlugin): """ def setup(self): if os.path.exists("/etc/dovecot.conf"): - self.addCopySpec("/etc/dovecot*") - self.addCmdOutput("/usr/sbin/dovecot -n") + self.add_copy_spec("/etc/dovecot*") + self.add_cmd_output("dovecot -n") diff --git a/sos/plugins/dpkg.py b/sos/plugins/dpkg.py index 2610ce57..a3b55a60 100644 --- a/sos/plugins/dpkg.py +++ b/sos/plugins/dpkg.py @@ -19,5 +19,5 @@ class dpkg(Plugin, DebianPlugin, UbuntuPlugin): """dpkg information """ def setup(self): - self.addCopySpec("/var/log/dpkg.log") - self.addCmdOutput("/usr/bin/dpkg -l", root_symlink = "installed-debs") + self.add_copy_spec("/var/log/dpkg.log") + self.add_cmd_output("dpkg -l", root_symlink = "installed-debs") diff --git a/sos/plugins/ds.py b/sos/plugins/ds.py index df5df197..46a0730b 100644 --- a/sos/plugins/ds.py +++ b/sos/plugins/ds.py @@ -25,22 +25,22 @@ class ds(Plugin, RedHatPlugin): packages = ('redhat-ds-base', 'redhat-ds-7') def check_version(self): - if self.isInstalled("redhat-ds-base") or \ + if self.is_installed("redhat-ds-base") or \ os.path.exists("/etc/dirsrv"): return "ds8" - elif self.isInstalled("redhat-ds-7") or \ + elif self.is_installed("redhat-ds-7") or \ os.path.exists("/opt/redhat-ds"): return "ds7" return False def setup(self): if not self.check_version(): - self.addAlert("Directory Server not found.") + self.add_alert("Directory Server not found.") elif "ds8" in self.check_version(): - self.addCopySpecs([ + self.add_copy_specs([ "/etc/dirsrv/slapd*", "/var/log/dirsrv/*"]) elif "ds7" in self.check_version(): - self.addCopySpecs([ + self.add_copy_specs([ "/opt/redhat-ds/slapd-*/config", "/opt/redhat-ds/slapd-*/logs"]) diff --git a/sos/plugins/emc.py b/sos/plugins/emc.py index 7a625e66..88b3ba21 100644 --- a/sos/plugins/emc.py +++ b/sos/plugins/emc.py @@ -25,19 +25,19 @@ class emc(Plugin, RedHatPlugin): def about_emc(self): """ EMC Corporation specific information """ - self.addCustomText('<center><h1><font size="+4"color="blue">EMC²</font><font size="-2" color="blue">®</font>') - self.addCustomText('<br><font size="+1">where information lives</font><font size="-2">®</font></h1>') - self.addCustomText("EMC Corporation is the world's leading developer and provider of information ") - self.addCustomText("infrastructure technology and solutions that enable organizations of all sizes to transform ") - self.addCustomText("the way they compete and create value from their information. ") - self.addCustomText("Information about EMC's products and services can be found at ") - self.addCustomText('<a href="http://www.EMC.com/">www.EMC.com</a>.</center>') + self.add_custom_text('<center><h1><font size="+4"color="blue">EMC²</font><font size="-2" color="blue">®</font>') + self.add_custom_text('<br><font size="+1">where information lives</font><font size="-2">®</font></h1>') + self.add_custom_text("EMC Corporation is the world's leading developer and provider of information ") + self.add_custom_text("infrastructure technology and solutions that enable organizations of all sizes to transform ") + self.add_custom_text("the way they compete and create value from their information. ") + self.add_custom_text("Information about EMC's products and services can be found at ") + self.add_custom_text('<a href="http://www.EMC.com/">www.EMC.com</a>.</center>') def get_pp_files(self): """ EMC PowerPath specific information - files """ - self.addCmdOutput("/sbin/powermt version") - self.addCopySpecs([ + self.add_cmd_output("powermt version") + self.add_copy_specs([ "/etc/init.d/PowerPath", "/etc/powermt.custom", "/etc/emcp_registration", @@ -51,18 +51,18 @@ class emc(Plugin, RedHatPlugin): def get_pp_config(self): """ EMC PowerPath specific information - commands """ - self.addCmdOutput("/sbin/powermt display") - self.addCmdOutput("/sbin/powermt display dev=all") - self.addCmdOutput("/sbin/powermt check_registration") - self.addCmdOutput("/sbin/powermt display options") - self.addCmdOutput("/sbin/powermt display ports") - self.addCmdOutput("/sbin/powermt display paths") - self.addCmdOutput("/sbin/powermt dump") + self.add_cmd_output("powermt display") + self.add_cmd_output("powermt display dev=all") + self.add_cmd_output("powermt check_registration") + self.add_cmd_output("powermt display options") + self.add_cmd_output("powermt display ports") + self.add_cmd_output("powermt display paths") + self.add_cmd_output("powermt dump") def get_symcli_files(self): """ EMC Solutions Enabler SYMCLI specific information - files """ - self.addCopySpecs([ + self.add_copy_specs([ "/var/symapi/db/symapi_db.bin", "/var/symapi/config/[a-z]*", "/var/symapi/log/[a-z]*"]) @@ -70,56 +70,56 @@ class emc(Plugin, RedHatPlugin): def get_symcli_config(self): """ EMC Solutions Enabler SYMCLI specific information - Symmetrix/DMX - commands """ - self.addCmdOutput("/usr/symcli/bin/symcli -def") - self.addCmdOutput("/usr/symcli/bin/symdg list") - self.addCmdOutput("/usr/symcli/bin/symdg -v list") - self.addCmdOutput("/usr/symcli/bin/symcg list") - self.addCmdOutput("/usr/symcli/bin/symcg -v list") - self.addCmdOutput("/usr/symcli/bin/symcfg list") - self.addCmdOutput("/usr/symcli/bin/symcfg -v list") - self.addCmdOutput("/usr/symcli/bin/symcfg -db") - self.addCmdOutput("/usr/symcli/bin/symcfg -semaphores list") - self.addCmdOutput("/usr/symcli/bin/symcfg -dir all -v list") - self.addCmdOutput("/usr/symcli/bin/symcfg -connections list") - self.addCmdOutput("/usr/symcli/bin/symcfg -app -v list") - self.addCmdOutput("/usr/symcli/bin/symcfg -fa all -port list") - self.addCmdOutput("/usr/symcli/bin/symcfg -ra all -port list") - self.addCmdOutput("/usr/symcli/bin/symcfg -sa all -port list") - self.addCmdOutput("/usr/symcli/bin/symcfg list -lock") - self.addCmdOutput("/usr/symcli/bin/symcfg list -lockn all") - self.addCmdOutput("/usr/symcli/bin/syminq") - self.addCmdOutput("/usr/symcli/bin/syminq -v") - self.addCmdOutput("/usr/symcli/bin/syminq -symmids") - self.addCmdOutput("/usr/symcli/bin/syminq hba -fibre") - self.addCmdOutput("/usr/symcli/bin/syminq hba -scsi") - self.addCmdOutput("/usr/symcli/bin/symhost show -config") - self.addCmdOutput("/usr/symcli/bin/stordaemon list") - self.addCmdOutput("/usr/symcli/bin/stordaemon -v list") - self.addCmdOutput("/usr/symcli/bin/sympd list") - self.addCmdOutput("/usr/symcli/bin/sympd list -vcm") - self.addCmdOutput("/usr/symcli/bin/symdev list") - self.addCmdOutput("/usr/symcli/bin/symdev -v list") - self.addCmdOutput("/usr/symcli/bin/symdev -rdfa list") - self.addCmdOutput("/usr/symcli/bin/symdev -rdfa -v list") - self.addCmdOutput("/usr/symcli/bin/symbcv list") - self.addCmdOutput("/usr/symcli/bin/symbcv -v list") - self.addCmdOutput("/usr/symcli/bin/symrdf list") - self.addCmdOutput("/usr/symcli/bin/symrdf -v list") - self.addCmdOutput("/usr/symcli/bin/symrdf -rdfa list") - self.addCmdOutput("/usr/symcli/bin/symrdf -rdfa -v list") - self.addCmdOutput("/usr/symcli/bin/symsnap list") - self.addCmdOutput("/usr/symcli/bin/symsnap list -savedevs") - self.addCmdOutput("/usr/symcli/bin/symclone list") - self.addCmdOutput("/usr/symcli/bin/symevent list") - self.addCmdOutput("/usr/symcli/bin/symmask list hba") - self.addCmdOutput("/usr/symcli/bin/symmask list logins") - self.addCmdOutput("/usr/symcli/bin/symmaskdb list database") - self.addCmdOutput("/usr/symcli/bin/symmaskdb -v list database") + self.add_cmd_output("/usr/symclisymcli -def") + self.add_cmd_output("/usr/symclisymdg list") + self.add_cmd_output("/usr/symclisymdg -v list") + self.add_cmd_output("/usr/symclisymcg list") + self.add_cmd_output("/usr/symclisymcg -v list") + self.add_cmd_output("/usr/symclisymcfg list") + self.add_cmd_output("/usr/symclisymcfg -v list") + self.add_cmd_output("/usr/symclisymcfg -db") + self.add_cmd_output("/usr/symclisymcfg -semaphores list") + self.add_cmd_output("/usr/symclisymcfg -dir all -v list") + self.add_cmd_output("/usr/symclisymcfg -connections list") + self.add_cmd_output("/usr/symclisymcfg -app -v list") + self.add_cmd_output("/usr/symclisymcfg -fa all -port list") + self.add_cmd_output("/usr/symclisymcfg -ra all -port list") + self.add_cmd_output("/usr/symclisymcfg -sa all -port list") + self.add_cmd_output("/usr/symclisymcfg list -lock") + self.add_cmd_output("/usr/symclisymcfg list -lockn all") + self.add_cmd_output("/usr/symclisyminq") + self.add_cmd_output("/usr/symclisyminq -v") + self.add_cmd_output("/usr/symclisyminq -symmids") + self.add_cmd_output("/usr/symclisyminq hba -fibre") + self.add_cmd_output("/usr/symclisyminq hba -scsi") + self.add_cmd_output("/usr/symclisymhost show -config") + self.add_cmd_output("/usr/symclistordaemon list") + self.add_cmd_output("/usr/symclistordaemon -v list") + self.add_cmd_output("/usr/symclisympd list") + self.add_cmd_output("/usr/symclisympd list -vcm") + self.add_cmd_output("/usr/symclisymdev list") + self.add_cmd_output("/usr/symclisymdev -v list") + self.add_cmd_output("/usr/symclisymdev -rdfa list") + self.add_cmd_output("/usr/symclisymdev -rdfa -v list") + self.add_cmd_output("/usr/symclisymbcv list") + self.add_cmd_output("/usr/symclisymbcv -v list") + self.add_cmd_output("/usr/symclisymrdf list") + self.add_cmd_output("/usr/symclisymrdf -v list") + self.add_cmd_output("/usr/symclisymrdf -rdfa list") + self.add_cmd_output("/usr/symclisymrdf -rdfa -v list") + self.add_cmd_output("/usr/symclisymsnap list") + self.add_cmd_output("/usr/symclisymsnap list -savedevs") + self.add_cmd_output("/usr/symclisymclone list") + self.add_cmd_output("/usr/symclisymevent list") + self.add_cmd_output("/usr/symclisymmask list hba") + self.add_cmd_output("/usr/symclisymmask list logins") + self.add_cmd_output("/usr/symclisymmaskdb list database") + self.add_cmd_output("/usr/symclisymmaskdb -v list database") def get_navicli_config(self): """ EMC Navisphere Host Agent NAVICLI specific information - files """ - self.addCopySpecs([ + self.add_copy_specs([ "/etc/Navisphere/agent.config", "/etc/Navisphere/Navimon.cfg", "/etc/Navisphere/Quietmode.cfg", @@ -129,24 +129,24 @@ class emc(Plugin, RedHatPlugin): def get_navicli_SP_info(self,SP_address): """ EMC Navisphere Host Agent NAVICLI specific information - CLARiiON - commands """ - self.addCmdOutput("/opt/Navisphere/bin/navicli -h %s getall" % SP_address) - self.addCmdOutput("/opt/Navisphere/bin/navicli -h %s getsptime -spa" % SP_address) - self.addCmdOutput("/opt/Navisphere/bin/navicli -h %s getsptime -spb" % SP_address) - self.addCmdOutput("/opt/Navisphere/bin/navicli -h %s getlog" % SP_address) - self.addCmdOutput("/opt/Navisphere/bin/navicli -h %s getdisk" % SP_address) - self.addCmdOutput("/opt/Navisphere/bin/navicli -h %s getcache" % SP_address) - self.addCmdOutput("/opt/Navisphere/bin/navicli -h %s getlun" % SP_address) - self.addCmdOutput("/opt/Navisphere/bin/navicli -h %s getlun -rg -type -default -owner -crus -capacity" % SP_address) - self.addCmdOutput("/opt/Navisphere/bin/navicli -h %s lunmapinfo" % SP_address) - self.addCmdOutput("/opt/Navisphere/bin/navicli -h %s getcrus" % SP_address) - self.addCmdOutput("/opt/Navisphere/bin/navicli -h %s port -list -all" % SP_address) - self.addCmdOutput("/opt/Navisphere/bin/navicli -h %s storagegroup -list" % SP_address) - self.addCmdOutput("/opt/Navisphere/bin/navicli -h %s spportspeed -get" % SP_address) - - def checkenabled(self): + self.add_cmd_output("/opt/Navispherenavicli -h %s getall" % SP_address) + self.add_cmd_output("/opt/Navispherenavicli -h %s getsptime -spa" % SP_address) + self.add_cmd_output("/opt/Navispherenavicli -h %s getsptime -spb" % SP_address) + self.add_cmd_output("/opt/Navispherenavicli -h %s getlog" % SP_address) + self.add_cmd_output("/opt/Navispherenavicli -h %s getdisk" % SP_address) + self.add_cmd_output("/opt/Navispherenavicli -h %s getcache" % SP_address) + self.add_cmd_output("/opt/Navispherenavicli -h %s getlun" % SP_address) + self.add_cmd_output("/opt/Navispherenavicli -h %s getlun -rg -type -default -owner -crus -capacity" % SP_address) + self.add_cmd_output("/opt/Navispherenavicli -h %s lunmapinfo" % SP_address) + self.add_cmd_output("/opt/Navispherenavicli -h %s getcrus" % SP_address) + self.add_cmd_output("/opt/Navispherenavicli -h %s port -list -all" % SP_address) + self.add_cmd_output("/opt/Navispherenavicli -h %s storagegroup -list" % SP_address) + self.add_cmd_output("/opt/Navispherenavicli -h %s spportspeed -get" % SP_address) + + def check_enabled(self): self.packages = [ "EMCpower" ] self.files = [ "/opt/Navisphere/bin", "/proc/emcp" ] - return Plugin.checkenabled(self) + return Plugin.check_enabled(self) def setup(self): from subprocess import Popen, PIPE @@ -154,10 +154,10 @@ class emc(Plugin, RedHatPlugin): add_about_emc="no" ## If PowerPath is installed collect PowerPath specific information - if self.isInstalled("EMCpower"): + if self.is_installed("EMCpower"): print "EMC PowerPath is installed." print " Gathering EMC PowerPath information..." - self.addCustomText("EMC PowerPath is installed.<br>") + self.add_custom_text("EMC PowerPath is installed.<br>") self.get_pp_files() add_about_emc = "yes" @@ -168,10 +168,10 @@ class emc(Plugin, RedHatPlugin): self.get_pp_config() ## If Solutions Enabler is installed collect Symmetrix/DMX specific information - if len(self.policy().package_manager.allPkgsByNameRegex('[Ss][Yy][Mm][Cc][Ll][Ii]-[Ss][Yy][Mm][Cc][Ll][Ii]')) > 0: + if len(self.policy().package_manager.all_pkgs_by_name_regex('[Ss][Yy][Mm][Cc][Ll][Ii]-[Ss][Yy][Mm][Cc][Ll][Ii]')) > 0: print "EMC Solutions Enabler SYMCLI is installed." print " Gathering EMC Solutions Enabler SYMCLI information..." - self.addCustomText("EMC Solutions Enabler is installed.<br>") + self.add_custom_text("EMC Solutions Enabler is installed.<br>") self.get_symcli_files() self.get_symcli_config() add_about_emc = "yes" @@ -180,7 +180,7 @@ class emc(Plugin, RedHatPlugin): if os.path.isdir("/opt/Navisphere/bin"): print "" print "The EMC CLARiiON Navisphere Host Agent is installed." - self.addCustomText("EMC CLARiiON Navisphere Host Agent is installed.<br>") + self.add_custom_text("EMC CLARiiON Navisphere Host Agent is installed.<br>") self.get_navicli_config() print " Gathering Navisphere NAVICLI Host Agent information..." print " Please enter a CLARiiON SP IP address. In order to collect" @@ -194,7 +194,7 @@ class emc(Plugin, RedHatPlugin): while CLARiiON_IP_loop == "stay_in": ans = raw_input("CLARiiON SP IP Address or [Enter] to exit: ") ## Check to make sure the CLARiiON SP IP address provided is valid - p = Popen("/opt/Navisphere/bin/navicli -h %s getsptime" % (ans,), shell=True, stdout=PIPE, stderr=PIPE) + p = Popen("/opt/Navispherenavicli -h %s getsptime" % (ans,), shell=True, stdout=PIPE, stderr=PIPE) out, err = p.communicate() if p.returncode == 0: CLARiiON_IP_address_list.append(ans) diff --git a/sos/plugins/filesys.py b/sos/plugins/filesys.py index ee36bd1d..e5d63dfa 100644 --- a/sos/plugins/filesys.py +++ b/sos/plugins/filesys.py @@ -20,11 +20,11 @@ from itertools import * class filesys(Plugin, RedHatPlugin, UbuntuPlugin): """information on filesystems """ - optionList = [("lsof", 'gathers information on all open files', 'slow', False)] - optionList = [("dumpe2fs", 'dump filesystem information', 'slow', False)] + option_list = [("lsof", 'gathers information on all open files', 'slow', False)] + option_list = [("dumpe2fs", 'dump filesystem information', 'slow', False)] def setup(self): - self.addCopySpecs([ + self.add_copy_specs([ "/proc/filesystems", "/etc/fstab", "/proc/self/mounts", @@ -32,15 +32,15 @@ class filesys(Plugin, RedHatPlugin, UbuntuPlugin): "/proc/mdstat", "/etc/raidtab", "/etc/mdadm.conf"]) - mounts = self.getCmdOutputNow("/bin/mount -l", root_symlink = "mount") + mounts = self.get_cmd_output_now("mount -l", root_symlink = "mount") - self.addCmdOutput("/bin/findmnt") - self.addCmdOutput("/bin/df -al", root_symlink = "df") - self.addCmdOutput("/bin/df -ali") - if self.getOption('lsof'): - self.addCmdOutput("/usr/sbin/lsof -b +M -n -l -P", root_symlink = "lsof") - self.addCmdOutput("/sbin/blkid -c /dev/null") - self.addCmdOutput("/usr/bin/lsblk") + self.add_cmd_output("findmnt") + self.add_cmd_output("df -al", root_symlink = "df") + self.add_cmd_output("df -ali") + if self.get_option('lsof'): + self.add_cmd_output("lsof -b +M -n -l -P", root_symlink = "lsof") + self.add_cmd_output("blkid -c /dev/null") + self.add_cmd_output("lsblk") part_titlep = re.compile("^major") blankp = re.compile("^$") @@ -53,9 +53,9 @@ class filesys(Plugin, RedHatPlugin, UbuntuPlugin): partlist.append('/dev/' + line.split()[-1]) except IOError: exit(1) - if os.path.exists("/sbin/hdparm"): + if os.path.exists("hdparm"): for dev in partlist: - ret, hdparm, time = self.callExtProg('/sbin/hdparm -g %s' %(dev)) + ret, hdparm, time = self.call_ext_prog('hdparm -g %s' %(dev)) if(ret == 0): start_geo = hdparm.strip().split("\n")[-1].strip().split()[-1] if(start_geo == "0"): @@ -69,8 +69,8 @@ class filesys(Plugin, RedHatPlugin, UbuntuPlugin): devlist.append(dev) for i in devlist: - self.addCmdOutput("/sbin/parted -s %s print" % (i)) + self.add_cmd_output("parted -s %s print" % (i)) - if self.getOption('dumpe2fs'): - for extfs in izip(self.doRegexFindAll(r"^(/dev/.+) on .+ type ext.\s+", mounts)): - self.addCmdOutput("/sbin/dumpe2fs %s" % (extfs)) + if self.get_option('dumpe2fs'): + for extfs in izip(self.do_regex_find_all(r"^(/dev/.+) on .+ type ext.\s+", mounts)): + self.add_cmd_output("dumpe2fs %s" % (extfs)) diff --git a/sos/plugins/ftp.py b/sos/plugins/ftp.py index 61fbfb00..7dc4676d 100644 --- a/sos/plugins/ftp.py +++ b/sos/plugins/ftp.py @@ -23,5 +23,5 @@ class ftp(Plugin, RedHatPlugin): packages = ('vsftpd',) def setup(self): - self.addCopySpec("/etc/ftp*") - self.addCopySpec("/etc/vsftpd") + self.add_copy_spec("/etc/ftp*") + self.add_copy_spec("/etc/vsftpd") diff --git a/sos/plugins/gdm.py b/sos/plugins/gdm.py index a6b3bf2a..45c80f02 100644 --- a/sos/plugins/gdm.py +++ b/sos/plugins/gdm.py @@ -18,4 +18,4 @@ class gdm(Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin): """gdm related information """ def setup(self): - self.addCopySpec("/etc/gdm/*") + self.add_copy_spec("/etc/gdm/*") diff --git a/sos/plugins/general.py b/sos/plugins/general.py index 62c7e441..2bbf3203 100644 --- a/sos/plugins/general.py +++ b/sos/plugins/general.py @@ -15,16 +15,16 @@ import os from sos.plugins import Plugin, RedHatPlugin, UbuntuPlugin, DebianPlugin -class general(Plugin): +class General(Plugin): """basic system information""" plugin_name = "general" - optionList = [("syslogsize", "max size (MiB) to collect per syslog file", "", 15), + option_list = [("syslogsize", "max size (MiB) to collect per syslog file", "", 15), ("all_logs", "collect all log files defined in syslog.conf", "", False)] def setup(self): - self.addCopySpecs([ + self.add_copy_specs([ "/etc/init", # upstart "/etc/event.d", # " "/etc/inittab", @@ -41,72 +41,72 @@ class general(Plugin): "/etc/localtime", "/root/anaconda-ks.cfg"]) - limit = self.getOption("syslogsize") - self.addCmdOutput("/bin/dmesg", suggest_filename="dmesg_now") - self.addCopySpecLimit("/var/log/messages*", sizelimit = limit) - self.addCopySpecLimit("/var/log/secure*", sizelimit = limit) - self.addCmdOutput("/usr/bin/hostid") - self.addCmdOutput("/bin/hostname", root_symlink="hostname") - self.addCmdOutput("/bin/date", root_symlink="date") - self.addCmdOutput("/usr/bin/uptime", root_symlink="uptime") - self.addCmdOutput("/bin/dmesg") - self.addCmdOutput("/usr/sbin/alternatives --display java", + limit = self.get_option("syslogsize") + self.add_cmd_output("dmesg", suggest_filename="dmesg_now") + self.add_copy_spec_limit("/var/log/messages*", sizelimit = limit) + self.add_copy_spec_limit("/var/log/secure*", sizelimit = limit) + self.add_cmd_output("hostid") + self.add_cmd_output("hostname", root_symlink="hostname") + self.add_cmd_output("date", root_symlink="date") + self.add_cmd_output("uptime", root_symlink="uptime") + self.add_cmd_output("dmesg") + self.add_cmd_output("alternatives --display java", root_symlink="java") - self.addCmdOutput("/usr/bin/readlink -f /usr/bin/java") - self.addCmdOutput("/usr/bin/tree /var/lib") - self.addCmdOutput("/bin/ls -lR /var/lib") + self.add_cmd_output("readlink -f /usrjava") + self.add_cmd_output("tree /var/lib") + self.add_cmd_output("ls -lR /var/lib") -class RedHatGeneral(general, RedHatPlugin): +class RedHatGeneral(General, RedHatPlugin): """Basic system information for RedHat based distributions""" def setup(self): super(RedHatGeneral, self).setup() - self.addCopySpecs([ + self.add_copy_specs([ "/etc/redhat-release", "/etc/fedora-release", ]) - if self.getOption('all_logs'): + if self.get_option('all_logs'): print "doing all_logs..." - limit = self.isOptionEnabled("syslogsize") - logs = self.doRegexFindAll("^\S+\s+(-?\/.*$)\s+", + limit = self.option_enabled("syslogsize") + logs = self.do_regex_find_all("^\S+\s+(-?\/.*$)\s+", "/etc/syslog.conf") print logs - if self.policy().pkgByName("rsyslog") \ + if self.policy().pkg_by_name("rsyslog") \ or os.path.exists("/etc/rsyslog.conf"): - logs += self.doRegexFindAll("^\S+\s+(-?\/.*$)\s+", "/etc/rsyslog.conf") + logs += self.do_regex_find_all("^\S+\s+(-?\/.*$)\s+", "/etc/rsyslog.conf") print logs for i in logs: if i.startswith("-"): i = i[1:] if os.path.isfile(i): - self.addCopySpecLimit(i, sizelimit = limit) + self.add_copy_spec_limit(i, sizelimit = limit) def postproc(self): - self.doFileSub("/etc/sysconfig/rhn/up2date", + self.do_file_sub("/etc/sysconfig/rhn/up2date", r"(\s*proxyPassword\s*=\s*)\S+", r"\1***") -class DebianGeneral(general, DebianPlugin, UbuntuPlugin): +class DebianGeneral(General, DebianPlugin): """Basic system information for Debian based distributions""" def setup(self): - super(GeneralDebian, self).setup() - self.addCopySpecs([ + super(DebianGeneral, self).setup() + self.add_copy_specs([ "/etc/debian_version", "/etc/default", "/var/log/up2date", "/etc/lsb-release" ]) -class UbuntuGeneral(general, UbuntuPlugin): +class UbuntuGeneral(General, UbuntuPlugin): """Basic system information for Ubuntu based distributions""" def setup(self): - super(GeneralUbuntu, self).setup() - self.addCopySpecs([ + super(UbuntuGeneral, self).setup() + self.add_copy_specs([ "/etc/os-release", "/var/log/ufw.log", "/var/log/apport.log", @@ -122,4 +122,4 @@ class UbuntuGeneral(general, UbuntuPlugin): "/var/log/unattended-upgrades", "/var/log/upstart" ]) - self.addCmdOutput("/usr/sbin/ufw app list",root_symlink="ufw") + self.add_cmd_output("ufw app list",root_symlink="ufw") diff --git a/sos/plugins/gluster.py b/sos/plugins/gluster.py index 0ce1295e..b5670993 100644 --- a/sos/plugins/gluster.py +++ b/sos/plugins/gluster.py @@ -25,7 +25,7 @@ class gluster(Plugin, RedHatPlugin): packages = ["glusterfs", "glusterfs-core"] files = ["/etc/glusterd", "/var/lib/glusterd"] - def defaultenabled(self): + def default_enabled(self): return True def get_volume_names(self, volume_file): @@ -76,12 +76,12 @@ class gluster(Plugin, RedHatPlugin): pass def setup(self): - self.addCmdOutput("/usr/sbin/gluster peer status") + self.add_cmd_output("gluster peer status") # check package version handling rename of glusterfs-core -> glusterfs - pkg = self.policy().pkgByName("glusterfs-core"); + pkg = self.policy().pkg_by_name("glusterfs-core"); if not pkg: - pkg = self.policy().pkgByName("glusterfs"); + pkg = self.policy().pkg_by_name("glusterfs"); # need to handle "no package" case for users who enable with -e/-o if not pkg: return @@ -89,32 +89,32 @@ class gluster(Plugin, RedHatPlugin): gluster_major = int((pkg["version"])[:1]) gluster_minor = int((pkg["version"])[2:3]) if (gluster_major == 3) and (gluster_minor <= 2): - self.addCopySpec("/etc/glusterd/") - self.addForbiddenPath("/etc/glusterd/geo-replication/secret.pem") + self.add_copy_spec("/etc/glusterd/") + self.add_forbidden_path("/etc/glusterd/geo-replication/secret.pem") else: - self.addCopySpec("/var/lib/glusterd/") - self.addForbiddenPath("/var/lib/glusterd/geo-replication/secret.pem") + self.add_copy_spec("/var/lib/glusterd/") + self.add_forbidden_path("/var/lib/glusterd/geo-replication/secret.pem") # collect unified file and object storage configuration - self.addCopySpec("/etc/swift/") + self.add_copy_spec("/etc/swift/") # glusterfs-server rpm scripts stash this on migration to 3.3.x - self.addCopySpec("/etc/glusterd.rpmsave") + self.add_copy_spec("/etc/glusterd.rpmsave") # common to all versions - self.addCopySpec("/etc/glusterfs") + self.add_copy_spec("/etc/glusterfs") self.make_preparations(self.statedump_dir) - #self.addCmdOutput("killall -USR1 glusterfs glusterfsd") + #self.add_cmd_output("killall -USR1 glusterfs glusterfsd") os.system("killall -USR1 glusterfs glusterfsd"); # let all the processes catch the signal and create statedump file # entries. time.sleep(1) self.wait_for_statedump(self.statedump_dir) - self.addCopySpec('/tmp/glusterdump.options') - self.addCopySpec(self.statedump_dir) + self.add_copy_spec('/tmp/glusterdump.options') + self.add_copy_spec(self.statedump_dir) - self.addCmdOutput("gluster volume status") + self.add_cmd_output("gluster volume status") # collect this last as some of the other actions create log entries - self.addCopySpec("/var/log/glusterfs") + self.add_copy_spec("/var/log/glusterfs") diff --git a/sos/plugins/hardware.py b/sos/plugins/hardware.py index 0c420705..10601f67 100644 --- a/sos/plugins/hardware.py +++ b/sos/plugins/hardware.py @@ -23,7 +23,7 @@ class hardware(Plugin): plugin_name = "hardware" def setup(self): - self.addCopySpecs([ + self.add_copy_specs([ "/proc/partitions", "/proc/cpuinfo", "/proc/meminfo", @@ -45,31 +45,31 @@ class hardware(Plugin): "/sys/state", "/sys/firmware/acpi/tables", "/var/log/mcelog"]) - self.addCmdOutput("""/bin/echo -e "lspci:\n" ; /sbin/lspci ; /bin/echo -e "\nlspci -nvv:\n" ; /sbin/lspci -nvv ; /bin/echo -e "\nlspci -tv:\n" ; /sbin/lspci -tv""", suggest_filename = "lspci", root_symlink = "lspci") + self.add_cmd_output("""echo -e "lspci:\n" ; lspci ; echo -e "\nlspci -nvv:\n" ; /sbin/lspci -nvv ; echo -e "\nlspci -tv:\n" ; /sbin/lspci -tv""", suggest_filename = "lspci", root_symlink = "lspci") - self.addCmdOutput("/usr/sbin/dmidecode", root_symlink = "dmidecode") + self.add_cmd_output("dmidecode", root_symlink = "dmidecode") - if os.path.exists("/usr/bin/cpufreq-info"): - self.addCmdOutput("/usr/bin/cpufreq-info") - if os.path.exists("/usr/bin/cpupower"): - self.addCmdOutput("/usr/bin/cpupower info") - self.addCmdOutput("/usr/bin/cpupower frequency-info") + if os.path.exists("cpufreq-info"): + self.add_cmd_output("cpufreq-info") + if os.path.exists("cpupower"): + self.add_cmd_output("cpupower info") + self.add_cmd_output("cpupower frequency-info") - if self.policy().getArch().endswith("386"): - self.addCmdOutput("/usr/sbin/x86info -a") + if self.policy().get_arch().endswith("386"): + self.add_cmd_output("x86info -a") - if os.path.exists("/usr/bin/lsusb"): - lsusb_path = "/usr/bin/lsusb" + if os.path.exists("lsusb"): + lsusb_path = "lsusb" else: - lsusb_path = "/usr/bin/lsusb" + lsusb_path = "lsusb" - self.addCmdOutput("%s"% lsusb_path) - self.addCmdOutput("%s -v"% lsusb_path) - self.addCmdOutput("%s -t"% lsusb_path) + self.add_cmd_output("%s"% lsusb_path) + self.add_cmd_output("%s -v"% lsusb_path) + self.add_cmd_output("%s -t"% lsusb_path) - self.addCmdOutput("/usr/bin/lshal") - self.addCmdOutput("/usr/bin/systool -c fc_host -v") - self.addCmdOutput("/usr/bin/systool -c scsi_host -v") + self.add_cmd_output("lshal") + self.add_cmd_output("systool -c fc_host -v") + self.add_cmd_output("systool -c scsi_host -v") class RedHatHardware(hardware, RedHatPlugin): """hardware related information for Red Hat distribution @@ -80,7 +80,7 @@ class RedHatHardware(hardware, RedHatPlugin): hwpaths = glob("/usr/share/rhn/up2date*client/hardware.py") if (len(hwpaths) == 0): return - self.addCmdOutput(hwpaths[0]) + self.add_cmd_output(hwpaths[0]) class DebianHardware(hardware, DebianPlugin, UbuntuPlugin): diff --git a/sos/plugins/hts.py b/sos/plugins/hts.py index 7ab9cac7..689f7be2 100644 --- a/sos/plugins/hts.py +++ b/sos/plugins/hts.py @@ -18,5 +18,5 @@ class hts(Plugin, RedHatPlugin): """Red Hat Hardware Test Suite related information """ def setup(self): - self.addCopySpec("/etc/httpd/conf.d/hts.conf") - self.addCopySpec("/var/hts") + self.add_copy_spec("/etc/httpd/conf.d/hts.conf") + self.add_copy_spec("/var/hts") diff --git a/sos/plugins/i18n.py b/sos/plugins/i18n.py index 00c992c9..891e71bd 100644 --- a/sos/plugins/i18n.py +++ b/sos/plugins/i18n.py @@ -18,5 +18,5 @@ class i18n(Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin): """i18n related information """ def setup(self): - self.addCopySpecs(["/etc/X11/xinit/xinput.d/*", "/etc/locale.conf"]) - self.addCmdOutput("/usr/bin/locale") + self.add_copy_specs(["/etc/X11/xinit/xinput.d/*", "/etc/locale.conf"]) + self.add_cmd_output("locale") diff --git a/sos/plugins/infiniband.py b/sos/plugins/infiniband.py index 876ae5fb..dcb8e44f 100644 --- a/sos/plugins/infiniband.py +++ b/sos/plugins/infiniband.py @@ -20,20 +20,20 @@ class infiniband(Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin): """Infiniband related information """ - def checkenabled(self): - if self.cInfo["policy"].pkgByName("libibverbs-utils"): + def check_enabled(self): + if self.commons["policy"].pkg_by_name("libibverbs-utils"): return True return False def setup(self): - self.addCopySpecs([ + self.add_copy_specs([ "/etc/ofed/openib.conf", "/etc/ofed/opensm.conf"]) - self.addCmdOutput("/usr/bin/ibv_devices") - self.addCmdOutput("/usr/bin/ibv_devinfo") - self.addCmdOutput("/usr/sbin/ibstat") - self.addCmdOutput("/usr/sbin/ibstatus") - self.addCmdOutput("/usr/sbin/ibhosts") + self.add_cmd_output("ibv_devices") + self.add_cmd_output("ibv_devinfo") + self.add_cmd_output("ibstat") + self.add_cmd_output("ibstatus") + self.add_cmd_output("ibhosts") return diff --git a/sos/plugins/initrd.py b/sos/plugins/initrd.py index 324d642d..69cffb9b 100644 --- a/sos/plugins/initrd.py +++ b/sos/plugins/initrd.py @@ -20,8 +20,8 @@ class initrd(Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin): """ def setup(self): for initrd in glob('/boot/initrd-*.img'): - self.addCmdOutput("/bin/zcat "+initrd+" | /bin/cpio "+ + self.add_cmd_output("zcat "+initrd+" | cpio "+ "--extract --to-stdout init" ) - def defaultenabled(self): + def default_enabled(self): return False diff --git a/sos/plugins/ipa.py b/sos/plugins/ipa.py index 93f02f70..1adbe162 100644 --- a/sos/plugins/ipa.py +++ b/sos/plugins/ipa.py @@ -17,7 +17,7 @@ from sos.plugins import Plugin, RedHatPlugin from os.path import exists -class ipa(Plugin, RedHatPlugin): +class Ipa(Plugin, RedHatPlugin): """IPA diagnostic information """ @@ -27,19 +27,19 @@ class ipa(Plugin, RedHatPlugin): files = ('/etc/ipa',) packages = ('ipa-server', 'ipa-client') - def checkenabled(self): - self.ipa_server = self.isInstalled("ipa-server") - self.ipa_client = self.isInstalled("ipa-client") - return Plugin.checkenabled(self) + def check_enabled(self): + self.ipa_server = self.is_installed("ipa-server") + self.ipa_client = self.is_installed("ipa-client") + return Plugin.check_enabled(self) def setup(self): if self.ipa_server: - self.addCopySpec("/var/log/ipaserver-install.log") - self.addCopySpec("/var/log/ipareplica-install.log") + self.add_copy_spec("/var/log/ipaserver-install.log") + self.add_copy_spec("/var/log/ipareplica-install.log") if self.ipa_client: - self.addCopySpec("/var/log/ipaclient-install.log") + self.add_copy_spec("/var/log/ipaclient-install.log") - self.addCopySpecs(["/var/log/ipaupgrade.log", + self.add_copy_specs(["/var/log/ipaupgrade.log", "/var/log/krb5kdc.log", "/var/log/pki-ca/debug", "/var/log/pki-ca/catalina.out", @@ -52,32 +52,32 @@ class ipa(Plugin, RedHatPlugin): "/etc/hosts", "/etc/named.*"]) - self.addForbiddenPath("/etc/pki/nssdb/key*") - self.addForbiddenPath("/etc/pki-ca/flatfile.txt") - self.addForbiddenPath("/etc/pki-ca/password.conf") - self.addForbiddenPath("/var/lib/pki-ca/alias/key*") + self.add_forbidden_path("/etc/pki/nssdb/key*") + self.add_forbidden_path("/etc/pki-ca/flatfile.txt") + self.add_forbidden_path("/etc/pki-ca/password.conf") + self.add_forbidden_path("/var/lib/pki-ca/alias/key*") - self.addForbiddenPath("/etc/dirsrv/slapd-*/key*") - self.addForbiddenPath("/etc/dirsrv/slapd-*/pin.txt") - self.addForbiddenPath("/etc/dirsrv/slapd-*/pwdfile.txt") + self.add_forbidden_path("/etc/dirsrv/slapd-*/key*") + self.add_forbidden_path("/etc/dirsrv/slapd-*/pin.txt") + self.add_forbidden_path("/etc/dirsrv/slapd-*/pwdfile.txt") - self.addForbiddenPath("/etc/named.keytab") + self.add_forbidden_path("/etc/named.keytab") - self.addCmdOutput("ls -la /etc/dirsrv/slapd-*/schema/") + self.add_cmd_output("ls -la /etc/dirsrv/slapd-*/schema/") - self.addCmdOutput("ipa-getcert list") + self.add_cmd_output("ipa-getcert list") - self.addCmdOutput("certutil -L -d /etc/httpd/alias/") - self.addCmdOutput("certutil -L -d /etc/dirsrv/slapd-*/") + self.add_cmd_output("certutil -L -d /etc/httpd/alias/") + self.add_cmd_output("certutil -L -d /etc/dirsrv/slapd-*/") - self.addCmdOutput("klist -ket /etc/dirsrv/ds.keytab") - self.addCmdOutput("klist -ket /etc/httpd/conf/ipa.keytab") - self.addCmdOutput("klist -ket /etc/krb5.keytab") + self.add_cmd_output("klist -ket /etc/dirsrv/ds.keytab") + self.add_cmd_output("klist -ket /etc/httpd/conf/ipa.keytab") + self.add_cmd_output("klist -ket /etc/krb5.keytab") return def postproc(self): match = r"(\s*arg \"password )[^\"]*" subst = r"\1********" - self.doFileSub("/etc/named.conf", match, subst) + self.do_file_sub("/etc/named.conf", match, subst) diff --git a/sos/plugins/ipsec.py b/sos/plugins/ipsec.py index 67923801..4cfba6c0 100644 --- a/sos/plugins/ipsec.py +++ b/sos/plugins/ipsec.py @@ -30,7 +30,7 @@ class RedHatIpsec(ipsec, RedHatPlugin): files = ('/etc/racoon/racoon.conf',) def setup(self): - self.addCopySpec("/etc/racoon") + self.add_copy_spec("/etc/racoon") class DebianIpsec(ipsec, DebianPlugin, UbuntuPlugin): """ipsec related information for Debian distributions @@ -39,6 +39,6 @@ class DebianIpsec(ipsec, DebianPlugin, UbuntuPlugin): files = ('/etc/ipsec-tools.conf',) def setup(self): - self.addCopySpecs(["/etc/ipsec-tools.conf", + self.add_copy_specs(["/etc/ipsec-tools.conf", "/etc/ipsec-tools.d", "/etc/default/setkey"]) diff --git a/sos/plugins/iscsi.py b/sos/plugins/iscsi.py index 28f93dd5..22e37bd7 100644 --- a/sos/plugins/iscsi.py +++ b/sos/plugins/iscsi.py @@ -15,13 +15,13 @@ from sos.plugins import Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin -class iscsi(Plugin): +class Iscsi(Plugin): """iscsi-initiator related information """ plugin_name = "iscsi" -class RedHatIscsi(iscsi, RedHatPlugin): +class RedHatIscsi(Iscsi, RedHatPlugin): """iscsi-initiator related information Red Hat based distributions """ @@ -29,11 +29,11 @@ class RedHatIscsi(iscsi, RedHatPlugin): def setup(self): super(RedHatIscsi, self).setup() - self.addCopySpecs([ + self.add_copy_specs([ "/etc/iscsi/iscsid.conf", "/etc/iscsi/initiatorname.iscsi", "/var/lib/iscsi"]) - self.addCmdOutput("iscsiadm -m session -P 3") - self.addCmdOutput("iscsiadm -m node -P 3") - self.addCmdOutput("iscsiadm -m iface -P 1") - self.addCmdOutput("iscsiadm -m node --op=show") + self.add_cmd_output("iscsiadm -m session -P 3") + self.add_cmd_output("iscsiadm -m node -P 3") + self.add_cmd_output("iscsiadm -m iface -P 1") + self.add_cmd_output("iscsiadm -m node --op=show") diff --git a/sos/plugins/iscsitarget.py b/sos/plugins/iscsitarget.py index aa6fa37a..284fe36b 100644 --- a/sos/plugins/iscsitarget.py +++ b/sos/plugins/iscsitarget.py @@ -30,8 +30,8 @@ class RedHatIscsiTarget(Plugin, RedHatPlugin): packages = ('scsi-target-utils',) def setup(self): - self.addCopySpec("/etc/tgt/targets.conf") - self.addCmdOutput("tgtadm --lld iscsi --op show --mode target") + self.add_copy_spec("/etc/tgt/targets.conf") + self.add_cmd_output("tgtadm --lld iscsi --op show --mode target") class DebianIscsiTarget(iscsitarget, DebianPlugin, UbuntuPlugin): """iscsi-target related information for Debian based distributions @@ -41,7 +41,7 @@ class DebianIscsiTarget(iscsitarget, DebianPlugin, UbuntuPlugin): def setup(self): super(DebianIscsi, self).setup() - self.addCopySpecs([ + self.add_copy_specs([ "/etc/iet", "/etc/sysctl.d/30-iscsitarget.conf", "/etc/default/iscsitarget" diff --git a/sos/plugins/jboss.py b/sos/plugins/jboss.py index e5283a5c..f36ba1d0 100644 --- a/sos/plugins/jboss.py +++ b/sos/plugins/jboss.py @@ -14,7 +14,7 @@ class jboss(Plugin, RedHatPlugin): """JBoss related information """ - optionList = [("home", 'JBoss\'s installation dir (i.e. JBOSS_HOME)', '', False), + option_list = [("home", 'JBoss\'s installation dir (i.e. JBOSS_HOME)', '', False), ("javahome", 'Java\'s installation dir (i.e. JAVA_HOME)', '', False), ("profile", 'Quoted and space separated list of server profiles to limit collection. \ Default=\'all default minimal production standard web\'.', '', False), @@ -41,17 +41,17 @@ Default=\'all default minimal production standard web\'.', '', False), Returns: True JBOSS_HOME is set and the path exists. False otherwise. """ - if self.getOption("home"): + if self.get_option("home"): ## Prefer this value first over the ENV - self.__jbossHome=self.getOption("home") - self.addAlert("INFO: The JBoss installation directory supplied to SOS is " + + self.__jbossHome=self.get_option("home") + self.add_alert("INFO: The JBoss installation directory supplied to SOS is " + self.__jbossHome) elif os.environ.get("JBOSS_HOME"): self.__jbossHome=os.environ.get("JBOSS_HOME") - self.addAlert("INFO: The JBoss installation directory (i.e. JBOSS_HOME) from the environment is " + + self.add_alert("INFO: The JBoss installation directory (i.e. JBOSS_HOME) from the environment is " + self.__jbossHome) else: - self.addAlert("ERROR: The JBoss installation directory was not supplied.\ + self.add_alert("ERROR: The JBoss installation directory was not supplied.\ The JBoss SOS plug-in cannot continue.") return False @@ -62,13 +62,13 @@ Default=\'all default minimal production standard web\'.', '', False), if os.path.exists(tmp): jbossClasspath=tmp + os.sep + "*" + os.pathsep else: - self.addAlert("WARN: The JBoss lib directory does not exist. Dir(%s) " % tmp) + self.add_alert("WARN: The JBoss lib directory does not exist. Dir(%s) " % tmp) tmp=os.path.join(self.__jbossHome, "common" , "lib") if os.path.exists(tmp): jbossClasspath+=tmp + os.sep + "*" else: - self.addAlert("WARN: The JBoss lib directory does not exist. Dir(%s) " % tmp) + self.add_alert("WARN: The JBoss lib directory does not exist. Dir(%s) " % tmp) os.environ['JBOSS_CLASSPATH']=jbossClasspath @@ -76,7 +76,7 @@ Default=\'all default minimal production standard web\'.', '', False), else: msg = "ERROR: The path to the JBoss installation directory does not exist. Path is: " + self.__jbossHome print msg - self.addAlert(msg) + self.add_alert(msg) return False def __getJavaHome(self): @@ -89,23 +89,23 @@ Default=\'all default minimal production standard web\'.', '', False), javaHome=None java="bin/java" - if self.getOption("javahome"): + if self.get_option("javahome"): ## Prefer this value first over the ENV - javaHome=self.getOption("javahome") - self.addAlert("INFO: The Java installation directory supplied to SOS is " + + javaHome=self.get_option("javahome") + self.add_alert("INFO: The Java installation directory supplied to SOS is " + javaHome) elif os.environ.get("JAVA_HOME"): javaHome=os.environ.get("JAVA_HOME") - self.addAlert("INFO: The Java installation directory (i.e. JAVA_HOME) from the environment is " + + self.add_alert("INFO: The Java installation directory (i.e. JAVA_HOME) from the environment is " + javaHome) else: ## Test to see if Java is already in the PATH - (status, output, rtime) = self.callExtProg("java -version") + (status, output, rtime) = self.call_ext_prog("java -version") if (status == 0): - self.addAlert("INFO: The Java installation directory is in the system path.") + self.add_alert("INFO: The Java installation directory is in the system path.") return True else: - self.addAlert("ERROR: The Java installation directory was not supplied.\ + self.add_alert("ERROR: The Java installation directory was not supplied.\ The JBoss SOS plug-in will not collect twiddle data.") return False @@ -119,7 +119,7 @@ Default=\'all default minimal production standard web\'.', '', False), else: msg = "ERROR: The path to the Java installation directory does not exist. Path is: %s" % (javaHome) print msg - self.addAlert(msg) + self.add_alert(msg) return False @@ -133,10 +133,10 @@ Default=\'all default minimal production standard web\'.', '', False), credential = None ## Let's make a best effort not to pass expansions or escapes to the shell ## by strong quoting the user's input - if self.getOption("user"): - credential=" -u '" + self.getOption("user") + "' " - if self.getOption("pass"): - credential+=" -p '" + self.getOption("pass") + "' " + if self.get_option("user"): + credential=" -u '" + self.get_option("user") + "' " + if self.get_option("pass"): + credential+=" -p '" + self.get_option("pass") + "' " else: credential=None return credential @@ -151,9 +151,9 @@ Default=\'all default minimal production standard web\'.', '', False), Nothing. Will update __jbossServerConfigDirs if the user supplied a limited list. """ - if self.getOption("profile"): - profiles=self.getOption("profile") - ## I'd rather use comma as the delimiter but getOption doesn't seem to be passing it through. + if self.get_option("profile"): + profiles=self.get_option("profile") + ## I'd rather use comma as the delimiter but get_option doesn't seem to be passing it through. ## Since we are using spaces as the delimiter, we need to filter out empty list elements ## if the user did something like ' all default web '. profiles=profiles.split(' ') @@ -179,14 +179,14 @@ Default=\'all default minimal production standard web\'.', '', False), self.__twiddleCmd += credential else: ## Reset twiddlecmd to None - self.addAlert("ERROR: The twiddle program could not be found. Program=%s" % (self.__twiddleCmd)) + self.add_alert("ERROR: The twiddle program could not be found. Program=%s" % (self.__twiddleCmd)) self.__twiddleCmd = None return def __createHTMLBodyStart(self): """ - The free-form HTML that can be inserted into the SOS report with addCustomText is within + The free-form HTML that can be inserted into the SOS report with add_custom_text is within a <p> block. We need to add a few pieces of HTML so that all of our subsequent data will be rendered properly. """ @@ -253,7 +253,7 @@ Default=\'all default minimal production standard web\'.', '', False), except IOError, ioe: msg = "ERROR: Unable to open %s for reading. Error: " % (file,ioe) print msg - self.addAlert(msg) + self.add_alert(msg) md5 = hashlib.md5() data = fd.read(self.__MD5_CHUNK_SIZE) @@ -272,7 +272,7 @@ Default=\'all default minimal production standard web\'.', '', False), else: msg = "ERROR: Unable to compute md5sum of %s. Msg (%s)" % (file, result[1]) print msg - self.addAlert(msg) + self.add_alert(msg) return retVal @@ -290,12 +290,12 @@ Default=\'all default minimal production standard web\'.', '', False), except Exception, e: msg="ERROR: reading manifest from %s. Error: %s" % (jarFile, e) print msg - self.addAlert(msg) + self.add_alert(msg) zf.close() except Exception, e: msg="ERROR: reading contents of %s. Error: %s" % (jarFile, e) print msg - self.addAlert(msg) + self.add_alert(msg) return manifest def __getStdJarInfo(self): @@ -343,13 +343,13 @@ Default=\'all default minimal production standard web\'.', '', False), self.__getManifest(jarFile)) if not found: - self.addAlert("WARN: No jars found in JBoss system path (" + path + ").") + self.add_alert("WARN: No jars found in JBoss system path (" + path + ").") self.__jbossHTMLBody += """ </ul> </div> """ else: - self.addAlert("ERROR: JBoss system path (" + path + ") does not exist.") + self.add_alert("ERROR: JBoss system path (" + path + ") does not exist.") return def __getServerConfigJarInfo(self, configDirAry): @@ -398,14 +398,14 @@ Default=\'all default minimal production standard web\'.', '', False), self.__getManifest(jarFile)) if not found: - self.addAlert("WARN: No jars found in the JBoss server configuration (%s)." % (path)) + self.add_alert("WARN: No jars found in the JBoss server configuration (%s)." % (path)) self.__jbossHTMLBody += """ </ul> </div> """ else: - self.addAlert("ERROR: JBoss server configuration path (" + path + ") does not exist.") + self.add_alert("ERROR: JBoss server configuration path (" + path + ") does not exist.") return @@ -607,29 +607,29 @@ Default=\'all default minimal production standard web\'.', '', False), for dir in configDirAry: path=os.path.join(self.__jbossHome, "server", dir) ## First add forbidden files - self.addForbiddenPath(os.path.join(path, "tmp")) - self.addForbiddenPath(os.path.join(path, "work")) - self.addForbiddenPath(os.path.join(path, "data")) + self.add_forbidden_path(os.path.join(path, "tmp")) + self.add_forbidden_path(os.path.join(path, "work")) + self.add_forbidden_path(os.path.join(path, "data")) if os.path.exists(path): ## First get everything in the conf dir confDir=os.path.join(path, "conf") - self.doCopyFileOrDir(confDir) + self.do_copy_file_or_dir(confDir) ## Log dir next logDir=os.path.join(path, "log") for logFile in find("*", logDir): - self.addCopySpecLimit(logFile, self.getOption("logsize")) + self.add_copy_spec_limit(logFile, self.get_option("logsize")) ## Deploy dir deployDir=os.path.join(path, "deploy") for deployFile in find("*", deployDir, max_depth=1): - self.addCopySpec(deployFile) + self.add_copy_spec(deployFile) ## Get application deployment descriptors if designated. - if self.isOptionEnabled("appxml"): - appxml=self.getOption("appxml") - ## I'd rather use comma as the delimiter but getOption doesn't seem to be passing it through. + if self.option_enabled("appxml"): + appxml=self.get_option("appxml") + ## I'd rather use comma as the delimiter but get_option doesn't seem to be passing it through. ## Since we are using spaces as the delimiter, we need to filter out empty list elements ## if the user did something like ' all default web '. appxml=appxml.split(' ') @@ -638,10 +638,10 @@ Default=\'all default minimal production standard web\'.', '', False), for app in appxml: pat = os.path.join("*%s*" % (app,), "WEB-INF") for file in find("*.xml", deployDir, path_pattern=pat): - self.addCopySpec(file) + self.add_copy_spec(file) return - def checkenabled(self): + def check_enabled(self): if not self.__getJbossHome(): return False return True @@ -661,17 +661,17 @@ Default=\'all default minimal production standard web\'.', '', False), self.__createHTMLBodyStart() ## Generate hashes of the stock Jar files for the report. - if self.getOption("stdjar"): + if self.get_option("stdjar"): self.__getStdJarInfo() ## Generate hashes for the Jars in the various profiles - if self.getOption("servjar"): + if self.get_option("servjar"): self.__getServerConfigJarInfo(self.__jbossServerConfigDirs) ## Generate a Tree for JBOSS_HOME self.__getJBossHomeTree() - if self.getOption("twiddle"): + if self.get_option("twiddle"): ## We need to know where Java is installed or at least ensure that it ## is available to the plug-in so that we can run twiddle. self.__haveJava = self.__getJavaHome() @@ -679,7 +679,7 @@ Default=\'all default minimal production standard web\'.', '', False), self.__getTwiddleData() - self.addCustomText(self.__jbossHTMLBody) + self.add_custom_text(self.__jbossHTMLBody) self.__getFiles(self.__jbossServerConfigDirs) @@ -694,20 +694,20 @@ Default=\'all default minimal production standard web\'.', '', False), path=os.path.join(self.__jbossHome, "server", dir) ## Really annoying that there appears to be no vehicle to ## say I want ignore case...argh! - self.doFileSub(os.path.join(path,"conf","login-config.xml"), + self.do_file_sub(os.path.join(path,"conf","login-config.xml"), r"\"[Pp][Aa][Ss][Ss][Ww][Oo][Rr][Dd]\".*>.*</[Mm][Oo][Dd][Uu][Ll][Ee]-[Oo][Pp][Tt][Ii][Oo][Nn].*>", r'"password">********</module-option>') tmp = os.path.join(path,"conf", "props") for propFile in find("*-users.properties", tmp): - self.doFileSub(propFile, + self.do_file_sub(propFile, r"=(.*)", r'=********') ## Remove PW from -ds.xml files tmp=os.path.join(path, "deploy") for dsFile in find("*-ds.xml", tmp): - self.doFileSub(dsFile, + self.do_file_sub(dsFile, r"<[Pp][Aa][Ss][Ss][Ww][Oo][Rr][Dd].*>.*</[Pp][Aa][Ss][Ss][Ww][Oo][Rr][Dd].*>", r"<password>********</password>") return diff --git a/sos/plugins/juju.py b/sos/plugins/juju.py index 931eb436..df79185e 100644 --- a/sos/plugins/juju.py +++ b/sos/plugins/juju.py @@ -20,5 +20,5 @@ class juju(Plugin, UbuntuPlugin): """ Juju Plugin """ def setup(self): - self.addCopySpecs(["/var/log/juju*", + self.add_copy_specs(["/var/log/juju", "/var/lib/juju"]) diff --git a/sos/plugins/kdump.py b/sos/plugins/kdump.py index 51948c8c..6cd7e89d 100644 --- a/sos/plugins/kdump.py +++ b/sos/plugins/kdump.py @@ -22,7 +22,7 @@ class kdump(Plugin): plugin_name = "kdump" def setup(self): - self.addCopySpecs([ + self.add_copy_specs([ "/proc/cmdline" ]) @@ -34,7 +34,7 @@ class RedHatKdump(kdump, RedHatPlugin): packages = ('kexec-tools',) def setup(self): - self.addCopySpecs([ + self.add_copy_specs([ "/etc/kdump.conf", "/etc/udev/rules.d/*kexec.rules"]) @@ -46,6 +46,6 @@ class DebianKdump(kdump, DebianPlugin, UbuntuPlugin): packages = ('kdump-tools',) def setup(self): - self.addCopySpecs([ + self.add_copy_specs([ "/etc/default/kdump-tools" ]) diff --git a/sos/plugins/kernel.py b/sos/plugins/kernel.py index 08ebb693..eeaf7514 100644 --- a/sos/plugins/kernel.py +++ b/sos/plugins/kernel.py @@ -18,26 +18,26 @@ import os, re class kernel(Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin): """kernel related information """ - optionList = [("modinfo", 'gathers information on all kernel modules', 'fast', True)] - moduleFile = "" + option_list = [("modinfo", 'gathers information on all kernel modules', 'fast', True)] + module_file = "" def setup(self): - self.addCmdOutput("/bin/uname -a", root_symlink = "uname") - self.moduleFile = self.getCmdOutputNow("/sbin/lsmod", root_symlink = "lsmod") + self.add_cmd_output("uname -a", root_symlink = "uname") + self.module_file = self.get_cmd_output_now("lsmod", root_symlink = "lsmod") - if self.getOption('modinfo'): + if self.get_option('modinfo'): runcmd = "" - ret, mods, rtime = self.callExtProg('/sbin/lsmod | /bin/cut -f1 -d" " 2>/dev/null | /bin/grep -v Module 2>/dev/null') + ret, mods, rtime = self.call_ext_prog('lsmod | cut -f1 -d" " 2>/dev/null | grep -v Module 2>/dev/null') for kmod in mods.split('\n'): if '' != kmod.strip(): runcmd = runcmd + " " + kmod if len(runcmd): - self.addCmdOutput("/sbin/modinfo " + runcmd) + self.add_cmd_output("modinfo " + runcmd) - self.addCmdOutput("/sbin/sysctl -a") - if os.path.isfile("/sbin/ksyms"): - self.addCmdOutput("/sbin/ksyms") - self.addCopySpecs([ + self.add_cmd_output("sysctl -a") + if os.path.isfile("ksyms"): + self.add_cmd_output("ksyms") + self.add_copy_specs([ "/proc/sys/kernel/random/boot_id", "/sys/module/*/parameters", "/sys/module/*/initstate", @@ -46,7 +46,7 @@ class kernel(Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin): "/proc/filesystems", "/proc/ksyms", "/proc/slabinfo", - "/lib/modules/%s/modules.dep" % self.policy().kernelVersion(), + "/lib/modules/%s/modules.dep" % self.policy().kernel_version(), "/etc/conf.modules", "/etc/modules.conf", "/etc/modprobe.conf", @@ -63,4 +63,4 @@ class kernel(Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin): "/proc/timer*", "/proc/lock*"]) - self.addCmdOutput("/usr/sbin/dkms status") + self.add_cmd_output("dkms status") diff --git a/sos/plugins/kernelrt.py b/sos/plugins/kernelrt.py index a0e1e6d7..7d7daa16 100644 --- a/sos/plugins/kernelrt.py +++ b/sos/plugins/kernelrt.py @@ -25,11 +25,11 @@ class kernel_rt(Plugin, RedHatPlugin): files = ('/sys/kernel/realtime',) def setup(self): - self.addCopySpec('/etc/rtgroups') - self.addCopySpec('/proc/sys/kernel/sched_rt_period_us') - self.addCopySpec('/proc/sys/kernel/sched_rt_runtime_us') - self.addCopySpec('/sys/kernel/realtime') - self.addCopySpec('/sys/devices/system/clocksource/clocksource0/available_clocksource') - self.addCopySpec('/sys/devices/system/clocksource/clocksource0/current_clocksource') - if self.isInstalled('tuna'): - self.addCmdOutput('/usr/bin/tuna -CP | /ust/bin/head -20') + self.add_copy_spec('/etc/rtgroups') + self.add_copy_spec('/proc/sys/kernel/sched_rt_period_us') + self.add_copy_spec('/proc/sys/kernel/sched_rt_runtime_us') + self.add_copy_spec('/sys/kernel/realtime') + self.add_copy_spec('/sys/devices/system/clocksource/clocksource0/available_clocksource') + self.add_copy_spec('/sys/devices/system/clocksource/clocksource0/current_clocksource') + if self.is_installed('tuna'): + self.add_cmd_output('tuna -CP | /usthead -20') diff --git a/sos/plugins/kvm.py b/sos/plugins/kvm.py index d7ad26f8..e94ac0a1 100644 --- a/sos/plugins/kvm.py +++ b/sos/plugins/kvm.py @@ -22,9 +22,9 @@ class kvm(Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin): """KVM related information """ - optionList = [("topOutput", '5x iterations of top data', 'slow', False)] + option_list = [("topOutput", '5x iterations of top data', 'slow', False)] - def checkenabled(self): + def check_enabled(self): return os.access("/sys/module/kvm", os.R_OK) def setup(self): @@ -33,13 +33,13 @@ class kvm(Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin): os.popen("mount -t debugfs debugfs /sys/kernel/debug") else: self._debugfs_cleanup = False - self.addCopySpec("/sys/module/kvm/srcversion") - self.addCopySpec("/sys/module/kvm_intel/srcversion") - self.addCopySpec("/sys/module/kvm_amd/srcversion") - self.addCopySpec("/sys/module/ksm/srcversion") - if self.getOption('topOutput'): - self.addCmdOutput("/usr/bin/top -b -d 1 -n 5") - self.addCmdOutput("/usr/bin/kvm_stat --once") + self.add_copy_spec("/sys/module/kvm/srcversion") + self.add_copy_spec("/sys/module/kvm_intel/srcversion") + self.add_copy_spec("/sys/module/kvm_amd/srcversion") + self.add_copy_spec("/sys/module/ksm/srcversion") + if self.get_option('topOutput'): + self.add_cmd_output("top -b -d 1 -n 5") + self.add_cmd_output("kvm_stat --once") def postproc(self): if self._debugfs_cleanup and os.path.ismount("/sys/kernel/debug"): diff --git a/sos/plugins/landscape.py b/sos/plugins/landscape.py new file mode 100644 index 00000000..f544ebb7 --- /dev/null +++ b/sos/plugins/landscape.py @@ -0,0 +1,72 @@ +### This program is free software; you can redistribute it and/or modify +## it under the terms of the GNU General Public License as published by +## the Free Software Foundation; either version 2 of the License, or +## (at your option) any later version. + +## This program is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. + +## You should have received a copy of the GNU General Public License +## along with this program; if not, write to the Free Software +## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +from sos.plugins import Plugin, UbuntuPlugin +import os + +class Landscape(Plugin, UbuntuPlugin): + """ + landscape client related information + """ + + files = ('/etc/landscape/client.conf', + 'broker.log', + 'broker.log.gz', + 'broker.log.1', + 'broker.log.1.gz', + 'broker.log.2', + 'broker.log.2.gz', + 'manager.log', + 'manager.log.gz', + 'manager.log.1', + 'manager.log.1.gz', + 'manager.log.2', + 'manager.log.2.gz', + 'monitor.log', + 'monitor.log.gz', + 'monitor.log.1', + 'monitor.log.1.gz', + 'monitor.log.2', + 'monitor.log.2.gz', + 'package-reporter.log', + 'package-reporter.log.gz', + 'package-reporter.log.1', + 'package-reporter.log.1.gz', + 'package-reporter.log.2', + 'package-reporter.log.2.gz', + 'sysinfo.log', + 'sysinfo.log.gz', + 'sysinfo.log.1', + 'sysinfo.log.1.gz', + 'sysinfo.log.2', + 'sysinfo.log.2.gz', + 'watchdog.log', + 'watchdog.log.gz', + 'watchdog.log.1', + 'watchdog.log.1.gz', + 'watchdog.log.2', + 'watchdog.log.2.gz' + ,) + packages = ('landscape-client',) + + def setup(self): + self.addCopySpec("/etc/landscape/client.conf") + + def postproc(self): + self.doFileSub("/etc/landscape/client.conf", + r"registration_password(.*)", + r"registration_password[***]" + ) + +
\ No newline at end of file diff --git a/sos/plugins/ldap.py b/sos/plugins/ldap.py index 8daaf18d..dff5d625 100644 --- a/sos/plugins/ldap.py +++ b/sos/plugins/ldap.py @@ -29,14 +29,14 @@ class ldap(Plugin, RedHatPlugin): results={} tmplist=[] for i in ldapopts: - t=self.doRegexFindAll(r"^(%s)\s+(.*)" % i,"/etc/openldap/ldap.conf") + t=self.do_regex_find_all(r"^(%s)\s+(.*)" % i,"/etc/openldap/ldap.conf") for x in t: results[x[0]]=x[1].rstrip("\n") return results def setup(self): - self.addCopySpecs(["/etc/ldap.conf", "/etc/openldap", "/etc/nslcd.conf"]) + self.add_copy_specs(["/etc/ldap.conf", "/etc/openldap", "/etc/nslcd.conf"]) def postproc(self): - self.doFileSub("/etc/ldap.conf", r"(\s*bindpw\s*)\S+", r"\1***") - self.doFileSub("/etc/nslcd.conf", r"(\s*bindpw\s*)\S+", r"\1***") + self.do_file_sub("/etc/ldap.conf", r"(\s*bindpw\s*)\S+", r"\1***") + self.do_file_sub("/etc/nslcd.conf", r"(\s*bindpw\s*)\S+", r"\1***") diff --git a/sos/plugins/libraries.py b/sos/plugins/libraries.py index 7b41f624..222df5a4 100644 --- a/sos/plugins/libraries.py +++ b/sos/plugins/libraries.py @@ -18,11 +18,11 @@ class libraries(Plugin, RedHatPlugin, UbuntuPlugin): """information on shared libraries """ - optionList = [('ldconfigv', 'the name of each directory as it is scanned, and any links that are created.', + option_list = [('ldconfigv', 'the name of each directory as it is scanned, and any links that are created.', "slow", False)] def setup(self): - self.addCopySpecs(["/etc/ld.so.conf", "/etc/ld.so.conf.d"]) - if self.getOption("ldconfigv"): - self.addCmdOutput("/sbin/ldconfig -v -N -X") - self.addCmdOutput("/sbin/ldconfig -p -N -X") + self.add_copy_specs(["/etc/ld.so.conf", "/etc/ld.so.conf.d"]) + if self.get_option("ldconfigv"): + self.add_cmd_output("ldconfig -v -N -X") + self.add_cmd_output("ldconfig -p -N -X") diff --git a/sos/plugins/libvirt.py b/sos/plugins/libvirt.py index fa439d50..6e2930a0 100644 --- a/sos/plugins/libvirt.py +++ b/sos/plugins/libvirt.py @@ -19,10 +19,10 @@ class libvirt(Plugin, RedHatPlugin, UbuntuPlugin, DebianPlugin): """libvirt-related information """ def setup(self): - self.addCopySpecs(["/etc/libvirt/", "/var/log/libvirt*"]) + self.add_copy_specs(["/etc/libvirt/", "/var/log/libvirt*"]) def postproc(self): for xmlfile in glob.glob("/etc/libvirt/qemu/*.xml"): - self.doFileSub(xmlfile, + self.do_file_sub(xmlfile, r"(\s*passwd=\s*')([^']*)('.*$)", r"\1******\3") diff --git a/sos/plugins/logrotate.py b/sos/plugins/logrotate.py index 3766b7ef..3a56a549 100644 --- a/sos/plugins/logrotate.py +++ b/sos/plugins/logrotate.py @@ -19,8 +19,8 @@ class logrotate(Plugin, RedHatPlugin): """ def setup(self): - self.addCmdOutput("/usr/sbin/logrotate --debug /etc/logrotate.conf", + self.add_cmd_output("logrotate --debug /etc/logrotate.conf", suggest_filename = "logrotate_debug") - self.addCopySpecs([ + self.add_copy_specs([ "/etc/logrotate*", "/var/lib/logrotate.status"]) diff --git a/sos/plugins/lsbrelease.py b/sos/plugins/lsbrelease.py index d9c9a4b7..eee68e16 100644 --- a/sos/plugins/lsbrelease.py +++ b/sos/plugins/lsbrelease.py @@ -21,6 +21,6 @@ class lsbrelease(Plugin, RedHatPlugin): """ def setup(self): - self.addCmdOutput("/usr/bin/lsb_release -a") - self.addCmdOutput("/usr/bin/lsb_release -d", suggest_filename = "lsb_release", root_symlink = "lsb-release") - self.addCopySpec("/etc/lsb-release*") + self.add_cmd_output("lsb_release -a") + self.add_cmd_output("lsb_release -d", suggest_filename = "lsb_release", root_symlink = "lsb-release") + self.add_copy_spec("/etc/lsb-release*") diff --git a/sos/plugins/maas.py b/sos/plugins/maas.py index b9478d05..0ef61384 100644 --- a/sos/plugins/maas.py +++ b/sos/plugins/maas.py @@ -20,10 +20,10 @@ class maas(Plugin, UbuntuPlugin): """ MAAS Plugin """ def setup(self): - self.addCopySpecs(["/etc/squid-deb-proxy", + self.add_copy_specs(["/etc/squid-deb-proxy", "/etc/maas", "/var/lib/maas", "/var/log/maas*"]) - self.addCmdOutput("maas dumpdata") - self.addCmdOutput("/usr/bin/pg_dumpall") + self.add_cmd_output("maas dumpdata") + self.add_cmd_output("pg_dumpall") diff --git a/sos/plugins/memory.py b/sos/plugins/memory.py index ab786a2c..1124b575 100644 --- a/sos/plugins/memory.py +++ b/sos/plugins/memory.py @@ -18,13 +18,13 @@ class memory(Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin): """memory usage information """ def setup(self): - self.addCopySpecs([ + self.add_copy_specs([ "/proc/pci", "/proc/meminfo", "/proc/vmstat", "/proc/slabinfo", "/proc/pagetypeinfo"]) - self.addCmdOutput("/bin/dmesg | grep -e 'e820.' -e 'aperature.'") - self.addCmdOutput("/usr/bin/free", root_symlink = "free") - self.addCmdOutput("/usr/bin/free -m") + self.add_cmd_output("dmesg | grep -e 'e820.' -e 'aperature.'") + self.add_cmd_output("free", root_symlink = "free") + self.add_cmd_output("free -m") diff --git a/sos/plugins/mrggrid.py b/sos/plugins/mrggrid.py index b47fd635..2044985b 100644 --- a/sos/plugins/mrggrid.py +++ b/sos/plugins/mrggrid.py @@ -18,5 +18,5 @@ class mrggrid(Plugin, RedHatPlugin): """MRG GRID related information """ def setup(self): - self.addCopySpec("/etc/condor/condor_config") - self.addCopySpec("/usr/bin/condor_status") + self.add_copy_spec("/etc/condor/condor_config") + self.add_copy_spec("condor_status") diff --git a/sos/plugins/mrgmessg.py b/sos/plugins/mrgmessg.py index 7668b6b9..0cdcb83c 100644 --- a/sos/plugins/mrgmessg.py +++ b/sos/plugins/mrgmessg.py @@ -18,7 +18,7 @@ class mrgmessg(Plugin, RedHatPlugin): """MRG Messaging related information """ def setup(self): - self.addCopySpecs([ + self.add_copy_specs([ "/etc/qpidd.conf", "/etc/sasl2/qpidd.conf", "/var/rhm"]) diff --git a/sos/plugins/mysql.py b/sos/plugins/mysql.py index a2086347..1437c162 100644 --- a/sos/plugins/mysql.py +++ b/sos/plugins/mysql.py @@ -23,7 +23,7 @@ class mysql(Plugin, RedHatPlugin): packages = ('mysql-server', 'mysql') def setup(self): - self.addCopySpecs([ + self.add_copy_specs([ "/etc/my.cnf", "/etc/sysconfig/network", "/etc/ld.so.conf.d/mysql*", diff --git a/sos/plugins/named.py b/sos/plugins/named.py index 5740f298..812e20da 100644 --- a/sos/plugins/named.py +++ b/sos/plugins/named.py @@ -23,29 +23,29 @@ class named(Plugin, RedHatPlugin): files = ('/etc/named.conf', '/etc/sysconfig/named') packages = ('bind',) - def getDnsDir(self, configFile): + def get_dns_dir(self, config_file): """ grab directory path from named{conf,boot} """ - directoryList = self.doRegexFindAll("directory\s+\"(.*)\"", configFile) - return normpath(directoryList[0]) + directory_list = self.do_regex_find_all("directory\s+\"(.*)\"", config_file) + return normpath(directory_list[0]) def setup(self): - cfgFiles = ("/etc/named.conf", + config_files = ("/etc/named.conf", "/etc/named.boot") - for cfg in cfgFiles: + for cfg in config_files: if exists(cfg): - self.addCopySpec(cfg) - self.addCopySpec(self.getDnsDir(cfg)) - self.addForbiddenPath(join(self.getDnsDir(cfg),"chroot/dev")) - self.addForbiddenPath(join(self.getDnsDir(cfg),"chroot/proc")) - - self.addCopySpec("/etc/named/") - self.addCopySpec("/etc/sysconfig/named") - self.addCmdOutput("klist -ket /etc/named.keytab") - self.addForbiddenPath("/etc/named.keytab") + self.add_copy_spec(cfg) + self.add_copy_spec(self.get_dns_dir(cfg)) + self.add_forbidden_path(join(self.get_dns_dir(cfg),"chroot/dev")) + self.add_forbidden_path(join(self.get_dns_dir(cfg),"chroot/proc")) + + self.add_copy_spec("/etc/named/") + self.add_copy_spec("/etc/sysconfig/named") + self.add_cmd_output("klist -ket /etc/named.keytab") + self.add_forbidden_path("/etc/named.keytab") return def postproc(self): match = r"(\s*arg \"password )[^\"]*" subst = r"\1******" - self.doFileSub("/etc/named.conf", match, subst) + self.do_file_sub("/etc/named.conf", match, subst) diff --git a/sos/plugins/netdump.py b/sos/plugins/netdump.py index 914e0b5f..235dd5f7 100644 --- a/sos/plugins/netdump.py +++ b/sos/plugins/netdump.py @@ -23,4 +23,4 @@ class netdump(Plugin, RedHatPlugin): packages = ('netdump',) def setup(self): - self.addCopySpec("/etc/sysconfig/netdump") + self.add_copy_spec("/etc/sysconfig/netdump") diff --git a/sos/plugins/networking.py b/sos/plugins/networking.py index 92055007..3ff8fe7a 100644 --- a/sos/plugins/networking.py +++ b/sos/plugins/networking.py @@ -19,35 +19,35 @@ import re class networking(Plugin, RedHatPlugin): """network related information """ - optionList = [("traceroute", "collects a traceroute to rhn.redhat.com", "slow", False)] + option_list = [("traceroute", "collects a traceroute to rhn.redhat.com", "slow", False)] - def get_bridge_name(self,brctlOut): + def get_bridge_name(self,brctl_out): """Return a list for which items are bridge name according to the - output of brctl show stored in brctlFile. + output of brctl show stored in brctl_file. """ out=[] - for line in brctlOut[1].splitlines(): + for line in brctl_out[1].splitlines(): if line.startswith("bridge name") \ or line.isspace() \ or line[:1].isspace(): continue - brName, brRest = line.split(None, 1) - out.append(brName) + br_name, br_rest = line.split(None, 1) + out.append(br_name) return out - def get_interface_name(self,ipaddrOut): + def get_interface_name(self,ip_addr_out): """Return a dictionary for which key are interface name according to the - output of ifconifg-a stored in ifconfigFile. + output of ifconifg-a stored in ifconfig_file. """ out={} - for line in ipaddrOut[1].splitlines(): + for line in ip_addr_out[1].splitlines(): match=re.match('.*link/ether', line) if match: int=match.string.split(':')[1].lstrip() out[int]=True return out - def collectIPTable(self,tablename): + def collect_iptable(self,tablename): """ When running the iptables command, it unfortunately auto-loads the modules before trying to get output. Some people explicitly don't want this, so check if the modules are loaded before running @@ -55,13 +55,13 @@ class networking(Plugin, RedHatPlugin): relevant rules in that table """ - (status, output, time) = self.callExtProg("/sbin/lsmod | grep -q "+tablename) + (status, output, time) = self.call_ext_prog("lsmod | grep -q "+tablename) if status == 0: - cmd = "/sbin/iptables -t "+tablename+" -nvL" - self.addCmdOutput(cmd) + cmd = "iptables -t "+tablename+" -nvL" + self.add_cmd_output(cmd) def setup(self): - self.addCopySpecs([ + self.add_copy_specs([ "/proc/net/", "/etc/nsswitch.conf", "/etc/yp.conf", @@ -70,40 +70,40 @@ class networking(Plugin, RedHatPlugin): "/etc/xinetd.d", "/etc/host*", "/etc/resolv.conf"]) - ipaddrFile=self.getCmdOutputNow("/sbin/ip -o addr", root_symlink = "ip_addr") - ipaddrOut=self.callExtProg("/sbin/ip -o addr") - self.addCmdOutput("/sbin/route -n", root_symlink = "route") - self.collectIPTable("filter") - self.collectIPTable("nat") - self.collectIPTable("mangle") - self.addCmdOutput("/bin/netstat -s") - self.addCmdOutput("/bin/netstat -agn") - self.addCmdOutput("/bin/netstat -neopa", root_symlink = "netstat") - self.addCmdOutput("/sbin/ip route show table all") - self.addCmdOutput("/sbin/ip -6 route show table all") - self.addCmdOutput("/sbin/ip link") - self.addCmdOutput("/sbin/ip address") - self.addCmdOutput("/sbin/ifenslave -a") - self.addCmdOutput("/sbin/ip mroute show") - self.addCmdOutput("/sbin/ip maddr show") - self.addCmdOutput("/sbin/ip neigh show") - if ipaddrOut: - for eth in self.get_interface_name(ipaddrOut): - self.addCmdOutput("/sbin/ethtool "+eth) - self.addCmdOutput("/sbin/ethtool -i "+eth) - self.addCmdOutput("/sbin/ethtool -k "+eth) - self.addCmdOutput("/sbin/ethtool -S "+eth) - self.addCmdOutput("/sbin/ethtool -a "+eth) - self.addCmdOutput("/sbin/ethtool -c "+eth) - self.addCmdOutput("/sbin/ethtool -g "+eth) - if self.getOption("traceroute"): - self.addCmdOutput("/bin/traceroute -n rhn.redhat.com") + ip_addr_file=self.get_cmd_output_now("ip -o addr", root_symlink = "ip_addr") + ip_addr_out=self.call_ext_prog("ip -o addr") + self.add_cmd_output("route -n", root_symlink = "route") + self.collect_iptable("filter") + self.collect_iptable("nat") + self.collect_iptable("mangle") + self.add_cmd_output("netstat -s") + self.add_cmd_output("netstat -agn") + self.add_cmd_output("netstat -neopa", root_symlink = "netstat") + self.add_cmd_output("ip route show table all") + self.add_cmd_output("ip -6 route show table all") + self.add_cmd_output("ip link") + self.add_cmd_output("ip address") + self.add_cmd_output("ifenslave -a") + self.add_cmd_output("ip mroute show") + self.add_cmd_output("ip maddr show") + self.add_cmd_output("ip neigh show") + if ip_addr_out: + for eth in self.get_interface_name(ip_addr_out): + self.add_cmd_output("ethtool "+eth) + self.add_cmd_output("ethtool -i "+eth) + self.add_cmd_output("ethtool -k "+eth) + self.add_cmd_output("ethtool -S "+eth) + self.add_cmd_output("ethtool -a "+eth) + self.add_cmd_output("ethtool -c "+eth) + self.add_cmd_output("ethtool -g "+eth) + if self.get_option("traceroute"): + self.add_cmd_output("traceroute -n rhn.redhat.com") - if os.path.exists("/usr/sbin/brctl"): - brctlFile=self.addCmdOutput("/usr/sbin/brctl show") - brctlOut=self.callExtProg("/usr/sbin/brctl show") - if brctlOut: - for brName in self.get_bridge_name(brctlOut): - self.addCmdOutput("/usr/sbin/brctl showstp "+brName) + if os.path.exists("brctl"): + brctl_file=self.add_cmd_output("brctl show") + brctl_out=self.call_ext_prog("brctl show") + if brctl_out: + for br_name in self.get_bridge_name(brctl_out): + self.add_cmd_output("brctl showstp "+br_name) return diff --git a/sos/plugins/nfsserver.py b/sos/plugins/nfsserver.py index b1acbcf7..abe70e1d 100644 --- a/sos/plugins/nfsserver.py +++ b/sos/plugins/nfsserver.py @@ -21,8 +21,8 @@ from stat import ST_SIZE class nfsserver(Plugin, RedHatPlugin): """NFS server-related information """ - def checkenabled(self): - if self.policy().runlevelDefault() in self.policy().runlevelByService("nfs"): + def check_enabled(self): + if self.policy().default_runlevel() in self.policy().runlevel_by_service("nfs"): return True try: @@ -34,10 +34,10 @@ class nfsserver(Plugin, RedHatPlugin): return False def setup(self): - self.addCopySpecs([ + self.add_copy_specs([ "/etc/exports", "/var/lib/nfs/etab", "/var/lib/nfs/xtab", "/var/lib/nfs/rmtab"]) - self.addCmdOutput("/usr/sbin/rpcinfo -p localhost") - self.addCmdOutput("/usr/sbin/nfsstat -a") + self.add_cmd_output("rpcinfo -p localhost") + self.add_cmd_output("nfsstat -a") diff --git a/sos/plugins/nis.py b/sos/plugins/nis.py index 905fd239..4f4d6258 100644 --- a/sos/plugins/nis.py +++ b/sos/plugins/nis.py @@ -25,5 +25,5 @@ class nis(Plugin, RedHatPlugin): files = ('/var/yp',) def setup(self): - self.addCopySpec("/etc/yp*.conf") - self.addCopySpec("/var/yp/*") + self.add_copy_spec("/etc/yp*.conf") + self.add_copy_spec("/var/yp/*") diff --git a/sos/plugins/nscd.py b/sos/plugins/nscd.py index 5c98e864..8139fac9 100644 --- a/sos/plugins/nscd.py +++ b/sos/plugins/nscd.py @@ -20,18 +20,18 @@ class nscd(Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin): """NSCD related information """ - optionList = [("nscdlogsize", "max size (MiB) to collect per nscd log file", + option_list = [("nscdlogsize", "max size (MiB) to collect per nscd log file", "", 50)] files = ('/etc/nscd.conf',) packages = ('nscd',) def setup(self): - self.addCopySpec("/etc/nscd.conf") + self.add_copy_spec("/etc/nscd.conf") - opt = self.fileGrep(r"^\s*logfile", "/etc/nscd.conf") + opt = self.file_grep(r"^\s*logfile", "/etc/nscd.conf") if (len(opt) > 0): for o in opt: f = o.split() - self.addCopySpecLimit(f[1], - sizelimit = self.isOptionEnabled("nscdlogsize")) + self.add_copy_spec_limit(f[1], + sizelimit = self.option_enabled("nscdlogsize")) diff --git a/sos/plugins/ntp.py b/sos/plugins/ntp.py index b47ff4a8..45f428d9 100644 --- a/sos/plugins/ntp.py +++ b/sos/plugins/ntp.py @@ -21,5 +21,5 @@ class ntp(Plugin, RedHatPlugin): packages = ('ntp',) def setup(self): - self.addCmdOutput("/usr/bin/ntpstat") - self.addCmdOutput("/usr/sbin/ntptime") + self.add_cmd_output("ntpstat") + self.add_cmd_output("ntptime") diff --git a/sos/plugins/oddjob.py b/sos/plugins/oddjob.py index e64d6816..6d38e74a 100644 --- a/sos/plugins/oddjob.py +++ b/sos/plugins/oddjob.py @@ -24,6 +24,6 @@ class oddjob(Plugin, RedHatPlugin): packages = ('oddjob',) def setup(self): - self.addCopySpec("/etc/oddjobd.conf") - self.addCopySpec("/etc/oddjobd.conf.d") - self.addCopySpec("/etc/dbus-1/system.d/oddjob.conf") + self.add_copy_spec("/etc/oddjobd.conf") + self.add_copy_spec("/etc/oddjobd.conf.d") + self.add_copy_spec("/etc/dbus-1/system.d/oddjob.conf") diff --git a/sos/plugins/openssl.py b/sos/plugins/openssl.py index 9bf3e574..81815adc 100644 --- a/sos/plugins/openssl.py +++ b/sos/plugins/openssl.py @@ -31,7 +31,7 @@ class RedHatOpenssl(openssl, RedHatPlugin): def setup(self): super(RedHatOpenssl, self).setup() - self.addCopySpec("/etc/pki/tls/openssl.cnf") + self.add_copy_spec("/etc/pki/tls/openssl.cnf") class DebianOpenssl(openssl, DebianPlugin, UbuntuPlugin): """openssl related information for Debian distributions @@ -41,4 +41,4 @@ class DebianOpenssl(openssl, DebianPlugin, UbuntuPlugin): def setup(self): super(DebianOpenssl, self).setup() - self.addCopySpec("/etc/ssl/openssl.cnf") + self.add_copy_spec("/etc/ssl/openssl.cnf") diff --git a/sos/plugins/openstack.py b/sos/plugins/openstack.py index 84089504..48355792 100644 --- a/sos/plugins/openstack.py +++ b/sos/plugins/openstack.py @@ -25,7 +25,7 @@ class openstack(Plugin): """ plugin_name = "openstack" - optionList = [("log", "gathers all openstack logs", "slow", False)] + option_list = [("log", "gathers all openstack logs", "slow", False)] class DebianOpenStack(openstack, DebianPlugin, UbuntuPlugin): @@ -95,32 +95,32 @@ class DebianOpenStack(openstack, DebianPlugin, UbuntuPlugin): def setup(self): # Nova - if os.path.exists("/usr/bin/nova-manage"): - self.addCmdOutput( - "/usr/bin/nova-manage config list 2>/dev/null | sort", + if os.path.exists("nova-manage"): + self.add_cmd_output( + "nova-manage config list 2>/dev/null | sort", suggest_filename="nova_config_list") - self.addCmdOutput( - "/usr/bin/nova-manage service list 2>/dev/null", + self.add_cmd_output( + "nova-manage service list 2>/dev/null", suggest_filename="nova_service_list") - self.addCmdOutput( - "/usr/bin/nova-manage db version 2>/dev/null", + self.add_cmd_output( + "nova-manage db version 2>/dev/null", suggest_filename="nova_db_version") - self.addCmdOutput( - "/usr/bin/nova-manage fixed list 2>/dev/null", + self.add_cmd_output( + "nova-manage fixed list 2>/dev/null", suggest_filename="nova_fixed_ip_list") - self.addCmdOutput( - "/usr/bin/nova-manage floating list 2>/dev/null", + self.add_cmd_output( + "nova-manage floating list 2>/dev/null", suggest_filename="nova_floating_ip_list") - self.addCmdOutput( - "/usr/bin/nova-manage flavor list 2>/dev/null", + self.add_cmd_output( + "nova-manage flavor list 2>/dev/null", suggest_filename="nova_flavor_list") - self.addCmdOutput( - "/usr/bin/nova-manage network list 2>/dev/null", + self.add_cmd_output( + "nova-manage network list 2>/dev/null", suggest_filename="nova_network_list") - self.addCmdOutput( - "/usr/bin/nova-manage vm list 2>/dev/null", + self.add_cmd_output( + "nova-manage vm list 2>/dev/null", suggest_filename="nova_vm_list") - self.addCopySpecs(["/etc/nova/", + self.add_copy_specs(["/etc/nova/", "/var/log/nova/", "/etc/default/nova-volume", "/etc/sudoers.d/nova_sudoers", @@ -134,21 +134,21 @@ class DebianOpenStack(openstack, DebianPlugin, UbuntuPlugin): "/var/log/cinder/", "/etc/logrotate.d/cinder-*"]) # Glance - if os.path.exists("/usr/bin/glance-manage"): - self.addCmdOutput( - "/usr/bin/glance-manage db_version", + if os.path.exists("glance-manage"): + self.add_cmd_output( + "glance-manage db_version", suggest_filename="glance_db_version") - self.addCopySpecs(["/etc/glance/", + self.add_copy_specs(["/etc/glance/", "/var/log/glance/", "/etc/logrotate.d/glance-*"]) # Keystone - self.addCopySpecs(["/etc/keystone/", + self.add_copy_specs(["/etc/keystone/", "/var/log/keystone/", "/etc/logrotate.d/keystone"]) # Swift - self.addCopySpecs(["/etc/swift/"]) + self.add_copy_specs(["/etc/swift/"]) # Quantum - self.addCopySpecs(["/etc/quantum/", + self.add_copy_specs(["/etc/quantum/", "/var/log/quantum/"]) @@ -178,10 +178,10 @@ class RedHatOpenStack(openstack, RedHatPlugin): # If RHEL or Fedora then invoke script for openstack-status if (os.path.isfile('/etc/redhat-release') or os.path.isfile('/etc/fedora-release')): - self.addCmdOutput("/usr/bin/openstack-status") + self.add_cmd_output("openstack-status") # Nova - self.addCopySpecs(["/etc/nova/", + self.add_copy_specs(["/etc/nova/", "/var/log/nova/", "/var/lib/nova/", "/etc/polkit-1/localauthority/50-local.d/50-nova.pkla", @@ -189,19 +189,19 @@ class RedHatOpenStack(openstack, RedHatPlugin): "/etc/logrotate.d/openstack-nova"]) # Glance - self.addCopySpecs(["/etc/glance/", + self.add_copy_specs(["/etc/glance/", "/var/log/glance/", "/etc/logrotate.d/openstack-glance"]) # Keystone - self.addCopySpecs(["/etc/keystone/", + self.add_copy_specs(["/etc/keystone/", "/var/log/keystone/"]) # Quantum - self.addCopySpecs(["/etc/quantum/", + self.add_copy_specs(["/etc/quantum/", "/var/log/quantum/"]) def postproc(self): - self.doFileSub('/etc/keystone/keystone.conf', + self.do_file_sub('/etc/keystone/keystone.conf', r"(admin_password\s*=\s*)(.*)", r"\1******") diff --git a/sos/plugins/openswan.py b/sos/plugins/openswan.py index fa1a99d2..d57a8db6 100644 --- a/sos/plugins/openswan.py +++ b/sos/plugins/openswan.py @@ -25,8 +25,8 @@ class openswan(Plugin, RedHatPlugin): packages = ('openswan',) def setup(self): - self.addCopySpecs([ + self.add_copy_specs([ "/etc/ipsec.conf", "/etc/ipsec.d"]) - self.addCmdOutput("/usr/sbin/ipsec verify") - self.addCmdOutput("/usr/sbin/ipsec barf") + self.add_cmd_output("ipsec verify") + self.add_cmd_output("ipsec barf") diff --git a/sos/plugins/pam.py b/sos/plugins/pam.py index e040f382..701f0c8b 100644 --- a/sos/plugins/pam.py +++ b/sos/plugins/pam.py @@ -18,6 +18,6 @@ class pam(Plugin, RedHatPlugin): """PAM related information """ def setup(self): - self.addCopySpec("/etc/pam.d") - self.addCopySpec("/etc/security") - self.addCmdOutput("/bin/ls -lanF /lib*/security") + self.add_copy_spec("/etc/pam.d") + self.add_copy_spec("/etc/security") + self.add_cmd_output("ls -lanF /lib*/security") diff --git a/sos/plugins/postfix.py b/sos/plugins/postfix.py index b7748589..d2c3c8fc 100644 --- a/sos/plugins/postfix.py +++ b/sos/plugins/postfix.py @@ -23,8 +23,8 @@ class postfix(Plugin, RedHatPlugin): packages = ('postfix',) def setup(self): - self.addCopySpecs([ + self.add_copy_specs([ "/etc/mail", "/etc/postfix/main.cf", "/etc/postfix/master.cf"]) - self.addCmdOutput("/usr/sbin/postconf") + self.add_cmd_output("postconf") diff --git a/sos/plugins/postgresql.py b/sos/plugins/postgresql.py index 6a999f45..1ae269fb 100644 --- a/sos/plugins/postgresql.py +++ b/sos/plugins/postgresql.py @@ -14,7 +14,7 @@ class postgresql(Plugin, RedHatPlugin): tmp_dir = None - optionList = [ + option_list = [ ("pghome", 'PostgreSQL server home directory.', '', '/var/lib/pgsql'), ("username", 'username for pg_dump', '', 'postgres'), ("password", 'password for pg_dump', '', ''), @@ -24,35 +24,35 @@ class postgresql(Plugin, RedHatPlugin): def pg_dump(self): dest_file = os.path.join(self.tmp_dir, "sos_pgdump.tar") old_env_pgpassword = os.environ.get("PGPASSWORD") - os.environ["PGPASSWORD"] = self.getOption("password") - (status, output, rtime) = self.callExtProg("pg_dump %s -U %s -w -f %s -F t" % - (self.getOption("dbname"), - self.getOption("username"), + os.environ["PGPASSWORD"] = self.get_option("password") + (status, output, rtime) = self.call_ext_prog("pg_dump %s -U %s -w -f %s -F t" % + (self.get_option("dbname"), + self.get_option("username"), dest_file)) if old_env_pgpassword is not None: os.environ["PGPASSWORD"] = old_env_pgpassword if (status == 0): - self.addCopySpec(dest_file) + self.add_copy_spec(dest_file) else: - self.addAlert("ERROR: Unable to execute pg_dump. Error(%s)" % (output)) + self.add_alert("ERROR: Unable to execute pg_dump. Error(%s)" % (output)) def setup(self): - if self.getOption("dbname"): - if self.getOption("password"): + if self.get_option("dbname"): + if self.get_option("password"): self.tmp_dir = tempfile.mkdtemp() self.pg_dump() else: - self.addAlert("WARN: password must be supplied to dump a database.") + self.add_alert("WARN: password must be supplied to dump a database.") # Copy PostgreSQL log files. - for file in find("*.log", self.getOption("pghome")): - self.addCopySpec(file) + for file in find("*.log", self.get_option("pghome")): + self.add_copy_spec(file) # Copy PostgreSQL config files. - for file in find("*.conf", self.getOption("pghome")): - self.addCopySpec(file) + for file in find("*.conf", self.get_option("pghome")): + self.add_copy_spec(file) - self.addCopySpec(os.path.join(self.getOption("pghome"), "data" , "PG_VERSION")) - self.addCopySpec(os.path.join(self.getOption("pghome"), "data" , "postmaster.opts")) + self.add_copy_spec(os.path.join(self.get_option("pghome"), "data" , "PG_VERSION")) + self.add_copy_spec(os.path.join(self.get_option("pghome"), "data" , "postmaster.opts")) def postproc(self): diff --git a/sos/plugins/ppp.py b/sos/plugins/ppp.py index 8c09b8c7..207071c5 100644 --- a/sos/plugins/ppp.py +++ b/sos/plugins/ppp.py @@ -25,8 +25,8 @@ class ppp(Plugin, RedHatPlugin): packages = ('ppp',) def setup(self): - self.addCopySpecs([ + self.add_copy_specs([ "/etc/wvdial.conf", "/etc/ppp", "/var/log/ppp"]) - self.addCmdOutput("/usr/sbin/adsl-status") + self.add_cmd_output("adsl-status") diff --git a/sos/plugins/printing.py b/sos/plugins/printing.py index 668139f0..45bea20a 100644 --- a/sos/plugins/printing.py +++ b/sos/plugins/printing.py @@ -17,15 +17,15 @@ from sos.plugins import Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin class printing(Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin): """printing related information (cups) """ - optionList = [("cups", "max size (MiB) to collect per cups log file", + option_list = [("cups", "max size (MiB) to collect per cups log file", "", 50)] def setup(self): - self.addCopySpecs([ + self.add_copy_specs([ "/etc/cups/*.conf", "/etc/cups/lpoptions", "/etc/cups/ppd/*.ppd"]) - self.addCopySpecLimit("/var/log/cups", sizelimit=self.isOptionEnabled("cupslogsize")) - self.addCmdOutput("/usr/bin/lpstat -t") - self.addCmdOutput("/usr/bin/lpstat -s") - self.addCmdOutput("/usr/bin/lpstat -d") + self.add_copy_spec_limit("/var/log/cups", sizelimit=self.option_enabled("cupslogsize")) + self.add_cmd_output("lpstat -t") + self.add_cmd_output("lpstat -s") + self.add_cmd_output("lpstat -d") diff --git a/sos/plugins/process.py b/sos/plugins/process.py index 42ae5bf3..83e8f588 100644 --- a/sos/plugins/process.py +++ b/sos/plugins/process.py @@ -20,11 +20,11 @@ class process(Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin): """process information """ def setup(self): - self.addCmdOutput("/bin/ps auxwww", root_symlink = "ps") - self.addCmdOutput("/bin/ps auxwwwm") - self.addCmdOutput("/bin/ps alxwww") - self.addCmdOutput("/usr/bin/pstree", root_symlink = "pstree") - self.addCmdOutput("/usr/sbin/lsof -b +M -n -l", root_symlink = "lsof") + self.add_cmd_output("ps auxwww", root_symlink = "ps") + self.add_cmd_output("ps auxwwwm") + self.add_cmd_output("ps alxwww") + self.add_cmd_output("pstree", root_symlink = "pstree") + self.add_cmd_output("lsof -b +M -n -l", root_symlink = "lsof") def find_mountpoint(s): if (os.path.ismount(s) or len(s)==0): return s diff --git a/sos/plugins/psacct.py b/sos/plugins/psacct.py index 8a640fb0..528f141c 100644 --- a/sos/plugins/psacct.py +++ b/sos/plugins/psacct.py @@ -18,12 +18,12 @@ class psacct(Plugin, RedHatPlugin): """Process accounting related information """ - optionList = [("all", "collect all process accounting files", + option_list = [("all", "collect all process accounting files", "slow", False)] packages = [ "psacct" ] def setup(self): - self.addCopySpec("/var/account/pacct") - if self.getOption("all"): - self.addCopySpec("/var/account/pacct*.gz") + self.add_copy_spec("/var/account/pacct") + if self.get_option("all"): + self.add_copy_spec("/var/account/pacct*.gz") diff --git a/sos/plugins/pxe.py b/sos/plugins/pxe.py index e0307351..082db155 100644 --- a/sos/plugins/pxe.py +++ b/sos/plugins/pxe.py @@ -19,12 +19,12 @@ class pxe(Plugin, RedHatPlugin): """PXE related information """ - optionList = [("tftpboot", 'gathers content in /tftpboot', 'slow', False)] - files = ('/usr/sbin/pxeos',) + option_list = [("tftpboot", 'gathers content in /tftpboot', 'slow', False)] + files = ('pxeos',) packages = ('system-config-netboot-cmd',) def setup(self): - self.addCmdOutput("/usr/sbin/pxeos -l") - self.addCopySpec("/etc/dhcpd.conf") - if self.getOption("tftpboot"): - self.addCopySpec("/tftpboot") + self.add_cmd_output("pxeos -l") + self.add_copy_spec("/etc/dhcpd.conf") + if self.get_option("tftpboot"): + self.add_copy_spec("/tftpboot") diff --git a/sos/plugins/qpidd.py b/sos/plugins/qpidd.py index 922cad80..8c3820d4 100644 --- a/sos/plugins/qpidd.py +++ b/sos/plugins/qpidd.py @@ -22,17 +22,17 @@ class qpidd(Plugin, RedHatPlugin): def setup(self): """ performs data collection for mrg """ - self.addCmdOutput("/usr/bin/qpid-stat -e") - self.addCmdOutput("/usr/bin/qpid-stat -b") - self.addCmdOutput("/usr/bin/qpid-config") - self.addCmdOutput("/usr/bin/qpid-config -b exchanges") - self.addCmdOutput("/usr/bin/qpid-config -b queues") - self.addCmdOutput("/usr/bin/qpid-stat -c") - self.addCmdOutput("/usr/bin/qpid-route link list") - self.addCmdOutput("/usr/bin/qpid-route route list") - self.addCmdOutput("/bin/ls -lanR /var/lib/qpidd") + self.add_cmd_output("qpid-stat -e") + self.add_cmd_output("qpid-stat -b") + self.add_cmd_output("qpid-config") + self.add_cmd_output("qpid-config -b exchanges") + self.add_cmd_output("qpid-config -b queues") + self.add_cmd_output("qpid-stat -c") + self.add_cmd_output("qpid-route link list") + self.add_cmd_output("qpid-route route list") + self.add_cmd_output("ls -lanR /var/lib/qpidd") - self.addCopySpecs([ + self.add_copy_specs([ "/etc/qpidd.conf", "/var/lib/qpid/syslog", "/etc/ais/openais.conf", diff --git a/sos/plugins/quagga.py b/sos/plugins/quagga.py index d9fb6394..28ba983f 100644 --- a/sos/plugins/quagga.py +++ b/sos/plugins/quagga.py @@ -25,4 +25,4 @@ class quagga(Plugin, RedHatPlugin): packages = ('quagga',) def setup(self): - self.addCopySpec("/etc/quagga/") + self.add_copy_spec("/etc/quagga/") diff --git a/sos/plugins/radius.py b/sos/plugins/radius.py index 472c06b0..972b179c 100644 --- a/sos/plugins/radius.py +++ b/sos/plugins/radius.py @@ -32,10 +32,10 @@ class RedHatRadius(radius, RedHatPlugin): def setup(self): super(RedHatRadius, self).setup() - self.addCopySpecs(["/etc/raddb", "/etc/pam.d/radiusd", "/var/log/radius"]) + self.add_copy_specs(["/etc/raddb", "/etc/pam.d/radiusd", "/var/log/radius"]) def postproc(self): - self.doFileSub("/etc/raddb/sql.conf", r"(\s*password\s*=\s*)\S+", r"\1***") + self.do_file_sub("/etc/raddb/sql.conf", r"(\s*password\s*=\s*)\S+", r"\1***") class DebianRadius(radius, DebianPlugin, UbuntuPlugin): """radius related information on Debian distributions @@ -45,7 +45,7 @@ class DebianRadius(radius, DebianPlugin, UbuntuPlugin): def setup(self): super(DebianRadius, self).setup() - self.addCopySpecs(["/etc/freeradius", + self.add_copy_specs(["/etc/freeradius", "/etc/pam.d/radiusd", "/etc/default/freeradius", "/var/log/freeradius"]) diff --git a/sos/plugins/rhevm.py b/sos/plugins/rhevm.py index e1575465..a9cd5f2d 100644 --- a/sos/plugins/rhevm.py +++ b/sos/plugins/rhevm.py @@ -4,20 +4,20 @@ from sos.plugins import Plugin, RedHatPlugin class rhevm(Plugin, RedHatPlugin): """Nogah related information""" - optionList = [("vdsmlogs", 'Directory containing all of the SOS logs from the RHEV hypervisor(s)', '', False)] + option_list = [("vdsmlogs", 'Directory containing all of the SOS logs from the RHEV hypervisor(s)', '', False)] def setup(self): # Copy rhevm config files. - self.addCopySpec("/etc/rhevm") - self.addCopySpec("/var/log/rhevm") - if self.getOption("vdsmlogs"): - self.addCopySpec(self.getOption("vdsmlogs")) + self.add_copy_spec("/etc/rhevm") + self.add_copy_spec("/var/log/rhevm") + if self.get_option("vdsmlogs"): + self.add_copy_spec(self.get_option("vdsmlogs")) def postproc(self): """ Obfuscate passwords. """ - self.doFileSub("/etc/rhevm/rhevm-config/rhevm-config.properties", + self.do_file_sub("/etc/rhevm/rhevm-config/rhevm-config.properties", r"Password.type=(.*)", r'Password.type=********') diff --git a/sos/plugins/rhn.py b/sos/plugins/rhn.py index 72228bec..73e6c0e7 100644 --- a/sos/plugins/rhn.py +++ b/sos/plugins/rhn.py @@ -21,42 +21,42 @@ class rhn(Plugin, RedHatPlugin): satellite = False proxy = False - optionList = [("log", 'gathers all apache logs', 'slow', False)] + option_list = [("log", 'gathers all apache logs', 'slow', False)] - def defaultenabled(self): + def default_enabled(self): return False def rhn_package_check(self): - self.satellite = self.isInstalled("rhns-satellite-tools") \ - or self.isInstalled("spacewalk-java") \ - or self.isInstalled("rhn-base") - self.proxy = self.isInstalled("rhns-proxy-tools") \ - or self.isInstalled("spacewalk-proxy-management") \ - or self.isInstalled("rhn-proxy-management") + self.satellite = self.is_installed("rhns-satellite-tools") \ + or self.is_installed("spacewalk-java") \ + or self.is_installed("rhn-base") + self.proxy = self.is_installed("rhns-proxy-tools") \ + or self.is_installed("spacewalk-proxy-management") \ + or self.is_installed("rhn-proxy-management") return self.satellite or self.proxy - def checkenabled(self): + def check_enabled(self): # enable if any related package is installed return self.rhn_package_check() def setup(self): self.rhn_package_check() - self.addCopySpecs([ + self.add_copy_specs([ "/etc/httpd/conf*", "/etc/rhn", "/var/log/rhn*"]) - if self.getOption("log"): - self.addCopySpec("/var/log/httpd") + if self.get_option("log"): + self.add_copy_spec("/var/log/httpd") # all these used to go in $DIR/mon-logs/ - self.addCopySpecs([ + self.add_copy_specs([ "/opt/notification/var/*.log*", "/var/tmp/ack_handler.log*", "/var/tmp/enqueue.log*"]) # monitoring scout logs - self.addCopySpecs([ + self.add_copy_specs([ "/home/nocpulse/var/*.log*", "/home/nocpulse/var/commands/*.log*", "/var/tmp/ack_handler.log*", @@ -65,19 +65,19 @@ class rhn(Plugin, RedHatPlugin): "/var/log/notification/*.log*", "/var/log/nocpulse/TSDBLocalQueue/TSDBLocalQueue.log"]) - self.addCopySpec("/root/ssl-build") - self.addCmdOutput("/usr/bin/rhn-schema-version", + self.add_copy_spec("/root/ssl-build") + self.add_cmd_output("rhn-schema-version", root_symlink = "database-schema-version") - self.addCmdOutput("/usr/bin/rhn-charsets", + self.add_cmd_output("rhn-charsets", root_symlink = "database-character-sets") if self.satellite: - self.addCopySpecs(["/etc/tnsnames.ora", "/etc/jabberd", + self.add_copy_specs(["/etc/tnsnames.ora", "/etc/jabberd", "/etc/tomcat6/", "/var/log/tomcat6/"]) - if os.path.exists("/usr/bin/spacewalk-debug"): - self.addCmdOutput("/usr/bin/spacewalk-debug --dir %s" - % os.path.join(self.cInfo['dstroot'], + if os.path.exists("spacewalk-debug"): + self.add_cmd_output("spacewalk-debug --dir %s" + % os.path.join(self.commons['dstroot'], "sos_commands/rhn")) if self.proxy: - self.addCopySpecs(["/etc/squid", "/var/log/squid"]) + self.add_copy_specs(["/etc/squid", "/var/log/squid"]) diff --git a/sos/plugins/rhui.py b/sos/plugins/rhui.py index 39ef0416..78874098 100644 --- a/sos/plugins/rhui.py +++ b/sos/plugins/rhui.py @@ -25,19 +25,19 @@ class rhui(Plugin, RedHatPlugin): files = [ rhui_debug_path ] def setup(self): - if self.isInstalled("pulp-cds"): + if self.is_installed("pulp-cds"): cds = "--cds" else: cds = "" - rhui_debug_dst_path = os.path.join(self.cInfo['dstroot'], - self.cInfo['cmddir'], self.name()) + rhui_debug_dst_path = os.path.join(self.commons['dstroot'], + self.commons['cmddir'], self.name()) try: os.mkdir(rhui_debug_dst_path) except: return - self.addCmdOutput("python %s %s --dir %s" + self.add_cmd_output("python %s %s --dir %s" % (self.rhui_debug_path, cds, rhui_debug_dst_path), suggest_filename="rhui-debug") return diff --git a/sos/plugins/rpm.py b/sos/plugins/rpm.py index 669231ff..02a0de69 100644 --- a/sos/plugins/rpm.py +++ b/sos/plugins/rpm.py @@ -17,19 +17,19 @@ from sos.plugins import Plugin, RedHatPlugin class rpm(Plugin, RedHatPlugin): """RPM information """ - optionList = [("rpmq", "queries for package information via rpm -q", "fast", True), + option_list = [("rpmq", "queries for package information via rpm -q", "fast", True), ("rpmva", "runs a verify on all packages", "slow", False)] def setup(self): - self.addCopySpec("/var/log/rpmpkgs") + self.add_copy_spec("/var/log/rpmpkgs") - if self.getOption("rpmq"): - self.addCmdOutput("/bin/rpm -qa --qf=" + if self.get_option("rpmq"): + self.add_cmd_output("rpm -qa --qf=" "\"%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}~~" "%{INSTALLTIME:date}\t%{INSTALLTIME}\t%{VENDOR}\n\"" - " --nosignature --nodigest | /bin/awk -F '~~' " + " --nosignature --nodigest | awk -F '~~' " "'{printf \"%-59s %s\\n\",$1,$2}'|sort", root_symlink = "installed-rpms") - if self.getOption("rpmva"): - self.addCmdOutput("/bin/rpm -Va", root_symlink = "rpm-Va", timeout = 3600) + if self.get_option("rpmva"): + self.add_cmd_output("rpm -Va", root_symlink = "rpm-Va", timeout = 3600) diff --git a/sos/plugins/s390.py b/sos/plugins/s390.py index 21fbd54e..26698ebc 100644 --- a/sos/plugins/s390.py +++ b/sos/plugins/s390.py @@ -23,13 +23,13 @@ class s390(Plugin, RedHatPlugin): ### Check for s390 arch goes here - def checkenabled(self): - return (self.policy().getArch() == "s390") + def check_enabled(self): + return (self.policy().get_arch() == "s390") ### Gather s390 specific information def setup(self): - self.addCopySpecs([ + self.add_copy_specs([ "/proc/cio_ignore" "/proc/crypto", "/proc/dasd/devices", @@ -51,20 +51,20 @@ class s390(Plugin, RedHatPlugin): "/etc/src_vipa.conf", "/etc/ccwgroup.conf", "/etc/chandev.conf"]) - self.addCmdOutput("/sbin/lscss") - self.addCmdOutput("/sbin/lsdasd") - self.addCmdOutput("/sbin/lstape") - self.addCmdOutput("find /sys -type f") - self.addCmdOutput("find /proc/s390dbf -type f") - self.addCmdOutput("/sbin/qethconf list_all") - ret, dasdDev, rtime = self.callExtProg("/bin/ls /dev/dasd?") - for x in dasdDev.split('\n'): - self.addCmdOutput("/sbin/dasdview -x -i -j -l -f %s" % (x,)) - self.addCmdOutput("/sbin/fdasd -p %s" % (x,)) + self.add_cmd_output("lscss") + self.add_cmd_output("lsdasd") + self.add_cmd_output("lstape") + self.add_cmd_output("find /sys -type f") + self.add_cmd_output("find /proc/s390dbf -type f") + self.add_cmd_output("qethconf list_all") + ret, dasd_dev, rtime = self.call_ext_prog("ls /dev/dasd?") + for x in dasd_dev.split('\n'): + self.add_cmd_output("dasdview -x -i -j -l -f %s" % (x,)) + self.add_cmd_output("fdasd -p %s" % (x,)) try: - rhelver = self.policy().rhelVersion() + rhelver = self.policy().rhel_version() if rhelver == 5: - self.addCmdOutput("/sbin/lsqeth") - self.addCmdOutput("/sbin/lszfcp") + self.add_cmd_output("lsqeth") + self.add_cmd_output("lszfcp") except: rhelver = None diff --git a/sos/plugins/samba.py b/sos/plugins/samba.py index e998bdae..23f3d7b4 100644 --- a/sos/plugins/samba.py +++ b/sos/plugins/samba.py @@ -18,11 +18,11 @@ class samba(Plugin, RedHatPlugin): """Samba related information """ def setup(self): - self.addCopySpecs([ + self.add_copy_specs([ "/etc/samba", "/var/log/samba/*", "/etc/krb5.conf", "/etc/krb5.keytab"]) - self.addCmdOutput("/usr/bin/wbinfo -g") - self.addCmdOutput("/usr/bin/wbinfo -u") - self.addCmdOutput("/usr/bin/testparm -s -v") + self.add_cmd_output("wbinfo -g") + self.add_cmd_output("wbinfo -u") + self.add_cmd_output("testparm -s -v") diff --git a/sos/plugins/sanlock.py b/sos/plugins/sanlock.py index 298ca9ff..5c5d48fa 100644 --- a/sos/plugins/sanlock.py +++ b/sos/plugins/sanlock.py @@ -21,10 +21,10 @@ class sanlock(Plugin): packages = [ "sanlock" ] def setup(self): - self.addCopySpec("/var/log/sanlock.log*") - self.addCmdOutput("sanlock client status -D") - self.addCmdOutput("sanlock client host_status -D") - self.addCmdOutput("sanlock client log_dump") + self.add_copy_spec("/var/log/sanlock.log*") + self.add_cmd_output("sanlock client status -D") + self.add_cmd_output("sanlock client host_status -D") + self.add_cmd_output("sanlock client log_dump") return class RedHatSanlock(sanlock, RedHatPlugin): @@ -33,4 +33,4 @@ class RedHatSanlock(sanlock, RedHatPlugin): def setup(self): super(RedHatSanlock, self).setup() - self.addCopySpec("/etc/sysconfig/sanlock") + self.add_copy_spec("/etc/sysconfig/sanlock") diff --git a/sos/plugins/sar.py b/sos/plugins/sar.py index d3085ba6..8bb9c37f 100644 --- a/sos/plugins/sar.py +++ b/sos/plugins/sar.py @@ -20,7 +20,7 @@ class sar(Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin): """ sapath='/var/log/sa' - sarcmd='/usr/bin/sar' + sarcmd='sar' files = (sapath, sarcmd) def setup(self): @@ -40,18 +40,18 @@ class sar(Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin): # catch exceptions here to avoid races try: - dirList=os.listdir(self.sapath) + dir_list=os.listdir(self.sapath) except Exception, e: self.soslog.error("sar path %s cannot be read: %s" % (self.sapath, e)) return # find all the sa file that don't have an existing sar file - for fname in dirList: + for fname in dir_list: if fname[0:2] == 'sa' and fname[2] != 'r': sar_filename = 'sar' + fname[2:4] - if sar_filename not in dirList: - sar_command = "/bin/sh -c \"LANG=C /usr/bin/sar " \ + if sar_filename not in dir_list: + sar_command = "sh -c \"LANG=C sar " \ + "-A -f /var/log/sa/" + fname + "\"" - self.addCmdOutput(sar_command, sar_filename) - self.addCopySpec("/var/log/sa/sar*") + self.add_cmd_output(sar_command, sar_filename) + self.add_copy_spec("/var/log/sa/sar*") diff --git a/sos/plugins/selinux.py b/sos/plugins/selinux.py index ca7d4c9c..bbcf7b71 100644 --- a/sos/plugins/selinux.py +++ b/sos/plugins/selinux.py @@ -17,30 +17,29 @@ from sos.plugins import Plugin, RedHatPlugin class selinux(Plugin, RedHatPlugin): """selinux related information """ - optionList = [("fixfiles", 'Print incorrect file context labels', 'slow', False)] + option_list = [("fixfiles", 'Print incorrect file context labels', 'slow', False)] def setup(self): - # sestatus is always collected in checkenabled() - self.addCopySpec("/etc/selinux") - self.addCmdOutput("/usr/bin/selinuxconfig") - if self.getOption('fixfiles'): - self.addCmdOutput("/sbin/fixfiles check") - self.addForbiddenPath("/etc/selinux/targeted") + # sestatus is always collected in check_enabled() + self.add_copy_spec("/etc/selinux") + if self.get_option('fixfiles'): + self.add_cmd_output("fixfiles check") + self.add_forbidden_path("/etc/selinux/targeted") - if not self.policy().pkgByName('setroubleshoot'): + if not self.policy().pkg_by_name('setroubleshoot'): return # Check for SELinux denials and capture raw output from sealert - if self.policy().runlevelDefault() in self.policy().runlevelByService("setroubleshoot"): + if self.policy().default_runlevel() in self.policy().runlevel_by_service("setroubleshoot"): # TODO: fixup regex for more precise matching - sealert=doRegexFindAll(r"^.*setroubleshoot:.*(sealert\s-l\s.*)","/var/log/messages") + sealert=do_regex_find_all(r"^.*setroubleshoot:.*(sealert\s-l\s.*)","/var/log/messages") if sealert: for i in sealert: - self.addCmdOutput("%s" % i) - self.addAlert("There are numerous selinux errors present and "+ + self.add_cmd_output("%s" % i) + self.add_alert("There are numerous selinux errors present and "+ "possible fixes stated in the sealert output.") - def checkenabled(self): + def check_enabled(self): try: - if self.getCmdOutputNow("/usr/sbin/sestatus", root_symlink = "sestatus").split(":")[1].strip() == "disabled": + if self.get_cmd_output_now("sestatus", root_symlink = "sestatus").split(":")[1].strip() == "disabled": return False except: pass diff --git a/sos/plugins/sendmail.py b/sos/plugins/sendmail.py index c94d97ab..1b52a6af 100644 --- a/sos/plugins/sendmail.py +++ b/sos/plugins/sendmail.py @@ -25,4 +25,4 @@ class sendmail(Plugin, RedHatPlugin): packages = ('sendmail',) def setup(self): - self.addCopySpecs(["/etc/mail/*", "/var/log/maillog"]) + self.add_copy_specs(["/etc/mail/*", "/var/log/maillog"]) diff --git a/sos/plugins/smartcard.py b/sos/plugins/smartcard.py index b675f3f5..6975b0aa 100644 --- a/sos/plugins/smartcard.py +++ b/sos/plugins/smartcard.py @@ -26,10 +26,10 @@ class smartcard(Plugin, RedHatPlugin): packages = ('pam_pkcs11',) def setup(self): - self.addCopySpecs([ + self.add_copy_specs([ "/etc/reader.conf", "/etc/reader.conf.d/", "/etc/pam_pkcs11/"]) - self.addCmdOutput("/usr/bin/pkcs11_inspect debug") - self.addCmdOutput("/usr/bin/pklogin_finder debug") - self.addCmdOutput("/bin/ls -nl /usr/lib*/pam_pkcs11/") + self.add_cmd_output("pkcs11_inspect debug") + self.add_cmd_output("pklogin_finder debug") + self.add_cmd_output("ls -nl /usr/lib*/pam_pkcs11/") diff --git a/sos/plugins/snmp.py b/sos/plugins/snmp.py index 4e01add8..63aac8e6 100644 --- a/sos/plugins/snmp.py +++ b/sos/plugins/snmp.py @@ -25,4 +25,4 @@ class snmp(Plugin, RedHatPlugin): packages = ('net-snmp',) def setup(self): - self.addCopySpec("/etc/snmp") + self.add_copy_spec("/etc/snmp") diff --git a/sos/plugins/soundcard.py b/sos/plugins/soundcard.py index 2abd6886..0a01499c 100644 --- a/sos/plugins/soundcard.py +++ b/sos/plugins/soundcard.py @@ -19,16 +19,16 @@ class soundcard(Plugin, RedHatPlugin): """ Sound card information """ - def defaultenabled(self): + def default_enabled(self): return False def setup(self): - self.addCopySpecs([ + self.add_copy_specs([ "/proc/asound/*", "/etc/alsa/*", "/etc/asound.*"]) - self.addCmdOutput("/sbin/lspci | grep -i audio") - self.addCmdOutput("/usr/bin/aplay -l") - self.addCmdOutput("/usr/bin/aplay -L") - self.addCmdOutput("/usr/bin/amixer") - self.addCmdOutput("/sbin/lsmod | /bin/grep snd | /bin/awk '{print $1}'", suggest_filename = "sndmodules_loaded") + self.add_cmd_output("lspci | grep -i audio") + self.add_cmd_output("aplay -l") + self.add_cmd_output("aplay -L") + self.add_cmd_output("amixer") + self.add_cmd_output("lsmod | grep snd | awk '{print $1}'", suggest_filename = "sndmodules_loaded") diff --git a/sos/plugins/squid.py b/sos/plugins/squid.py index df18661b..a83c45a1 100644 --- a/sos/plugins/squid.py +++ b/sos/plugins/squid.py @@ -23,4 +23,4 @@ class squid(Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin): packages = ('squid',) def setup(self): - self.addCopySpec("/etc/squid/squid.conf") + self.add_copy_spec("/etc/squid/squid.conf") diff --git a/sos/plugins/ssh.py b/sos/plugins/ssh.py index c925c567..35ce3598 100644 --- a/sos/plugins/ssh.py +++ b/sos/plugins/ssh.py @@ -20,4 +20,4 @@ class ssh(Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin): """ssh-related information """ def setup(self): - self.addCopySpecs(["/etc/ssh/ssh_config", "/etc/ssh/sshd_config"]) + self.add_copy_specs(["/etc/ssh/ssh_config", "/etc/ssh/sshd_config"]) diff --git a/sos/plugins/sssd.py b/sos/plugins/sssd.py index fae9b8b7..a5c3af72 100644 --- a/sos/plugins/sssd.py +++ b/sos/plugins/sssd.py @@ -24,7 +24,7 @@ class sssd(Plugin): packages = ('sssd',) def setup(self): - self.addCopySpecs(["/etc/sssd", "/var/log/sssd/*"]) + self.add_copy_specs(["/etc/sssd", "/var/log/sssd/*"]) class RedHatSssd(sssd, RedHatPlugin): """sssd-related Diagnostic Information on Red Hat based distributions @@ -39,4 +39,4 @@ class DebianSssd(sssd, DebianPlugin, UbuntuPlugin): def setup(self): super(DebianSssd, self).setup() - self.addCopySpecs(["/etc/default/sssd"]) + self.add_copy_specs(["/etc/default/sssd"]) diff --git a/sos/plugins/startup.py b/sos/plugins/startup.py index dcd7ac83..18326f35 100644 --- a/sos/plugins/startup.py +++ b/sos/plugins/startup.py @@ -18,11 +18,11 @@ class startup(Plugin, RedHatPlugin): """startup information """ - optionList = [("servicestatus", "get a status of all running services", "slow", False)] + option_list = [("servicestatus", "get a status of all running services", "slow", False)] def setup(self): - self.addCopySpec("/etc/rc.d") + self.add_copy_spec("/etc/rc.d") - self.addCmdOutput("/sbin/chkconfig --list", root_symlink = "chkconfig") - if self.getOption('servicestatus'): - self.addCmdOutput("/sbin/service --status-all") - self.addCmdOutput("/sbin/runlevel") + self.add_cmd_output("chkconfig --list", root_symlink = "chkconfig") + if self.get_option('servicestatus'): + self.add_cmd_output("service --status-all") + self.add_cmd_output("runlevel") diff --git a/sos/plugins/sunrpc.py b/sos/plugins/sunrpc.py index 3d45ac50..12277513 100644 --- a/sos/plugins/sunrpc.py +++ b/sos/plugins/sunrpc.py @@ -23,14 +23,14 @@ class sunrpc(Plugin): plugin_name = "sunrpc" service = None - def checkenabled(self): - if self.policy().runlevelDefault() in \ - self.policy().runlevelByService(self.service): + def check_enabled(self): + if self.policy().default_runlevel() in \ + self.policy().runlevel_by_service(self.service): return True return False def setup(self): - self.addCmdOutput("/usr/sbin/rpcinfo -p localhost") + self.add_cmd_output("rpcinfo -p localhost") return class RedHatSunrpc(sunrpc, RedHatPlugin): @@ -39,7 +39,7 @@ class RedHatSunrpc(sunrpc, RedHatPlugin): service = 'rpcbind' -# FIXME: depends on addition of runlevelByService (or similar) +# FIXME: depends on addition of runlevel_by_service (or similar) # in Debian/Ubuntu policy classes #class DebianSunrpc(sunrpc, DebianPlugin, UbuntuPlugin): # """Sun RPC related information for Red Hat systems @@ -48,7 +48,7 @@ class RedHatSunrpc(sunrpc, RedHatPlugin): # service = 'rpcbind-boot' # # def setup(self): -# self.addCmdOutput("/usr/sbin/rpcinfo -p localhost") +# self.add_cmd_output("rpcinfo -p localhost") # return diff --git a/sos/plugins/system.py b/sos/plugins/system.py index 3033bd22..a3a76767 100644 --- a/sos/plugins/system.py +++ b/sos/plugins/system.py @@ -21,7 +21,7 @@ class RedHatSystem(system, RedHatPlugin): """core system related information """ def setup(self): - self.addCopySpecs([ + self.add_copy_specs([ "/proc/sys", "/etc/cron*", "/etc/anacrontab", @@ -32,28 +32,28 @@ class RedHatSystem(system, RedHatPlugin): "/etc/ntp.conf", "/etc/ntp/step-tickers", "/etc/ntp/ntpservers"]) - self.addForbiddenPath( + self.add_forbidden_path( "/proc/sys/net/ipv8/neigh/*/retrans_time") - self.addForbiddenPath( + self.add_forbidden_path( "/proc/sys/net/ipv6/neigh/*/base_reachable_time") - self.addCmdOutput("/usr/bin/crontab -l") + self.add_cmd_output("crontab -l") class DebianSystem(system, DebianPlugin, UbuntuPlugin): """core system related information for Debian and Ubuntu """ def setup(self): - self.addCopySpecs([ + self.add_copy_specs([ "/proc/sys", "/etc/cron*", "/var/spool/cron*", "/etc/syslog.conf", "/etc/rsyslog.conf", "/etc/ntp.conf" ]) - self.addForbiddenPath( + self.add_forbidden_path( "/proc/sys/net/ipv8/neigh/*/retrans_time") - self.addForbiddenPath( + self.add_forbidden_path( "/proc/sys/net/ipv6/neigh/*/base_reachable_time") - self.addCmdOutput("/usr/bin/crontab -l") + self.add_cmd_output("crontab -l") diff --git a/sos/plugins/systemd.py b/sos/plugins/systemd.py index b9c2434b..84a3e759 100644 --- a/sos/plugins/systemd.py +++ b/sos/plugins/systemd.py @@ -27,21 +27,21 @@ class systemd(Plugin, RedHatPlugin): files = ('/usr/lib/systemd/systemd',) def setup(self): - self.addCmdOutput("systemctl show --all") - self.addCmdOutput("systemctl list-units --failed") - self.addCmdOutput("systemctl list-unit-files") - self.addCmdOutput("systemctl list-units --all") - self.addCmdOutput("systemctl dump") - self.addCmdOutput("systemd-delta") - self.addCmdOutput("journalctl --verify") - self.addCmdOutput("journalctl --all --this-boot --no-pager") - self.addCmdOutput("journalctl --all --this-boot --no-pager -o verbose") - self.addCmdOutput("ls -l /lib/systemd") - self.addCmdOutput("ls -l /lib/systemd/system-shutdown") - self.addCmdOutput("ls -l /lib/systemd/system-generators") - self.addCmdOutput("ls -l /lib/systemd/user-generators") - - self.addCopySpecs(["/etc/systemd", + self.add_cmd_output("systemctl show --all") + self.add_cmd_output("systemctl list-units --failed") + self.add_cmd_output("systemctl list-unit-files") + self.add_cmd_output("systemctl list-units --all") + self.add_cmd_output("systemctl dump") + self.add_cmd_output("systemd-delta") + self.add_cmd_output("journalctl --verify") + self.add_cmd_output("journalctl --all --this-boot --no-pager") + self.add_cmd_output("journalctl --all --this-boot --no-pager -o verbose") + self.add_cmd_output("ls -l /lib/systemd") + self.add_cmd_output("ls -l /lib/systemd/system-shutdown") + self.add_cmd_output("ls -l /lib/systemd/system-generators") + self.add_cmd_output("ls -l /lib/systemd/user-generators") + + self.add_copy_specs(["/etc/systemd", "/lib/systemd/system", "/lib/systemd/user", "/etc/vconsole.conf", diff --git a/sos/plugins/systemtap.py b/sos/plugins/systemtap.py index cd3634ec..039a9b91 100644 --- a/sos/plugins/systemtap.py +++ b/sos/plugins/systemtap.py @@ -20,9 +20,9 @@ class systemtap(Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin): """SystemTap information """ - files = ('/usr/bin/stap',) + files = ('stap',) packages = ('systemtap', 'systemtap-runtime') def setup(self): - self.addCmdOutput("/usr/bin/stap -V 2") - self.addCmdOutput("/bin/uname -r") + self.add_cmd_output("stap -V 2") + self.add_cmd_output("uname -r") diff --git a/sos/plugins/sysvipc.py b/sos/plugins/sysvipc.py index 4294978c..f1089495 100644 --- a/sos/plugins/sysvipc.py +++ b/sos/plugins/sysvipc.py @@ -22,8 +22,8 @@ class sysvipc(Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin): plugin_name = "sysvipc" def setup(self): - self.addCopySpecs([ + self.add_copy_specs([ "/proc/sysvipc/msg", "/proc/sysvipc/sem", "/proc/sysvipc/shm"]) - self.addCmdOutput("/usr/bin/ipcs") + self.add_cmd_output("ipcs") diff --git a/sos/plugins/tftpserver.py b/sos/plugins/tftpserver.py index e39bf0fe..29324e42 100644 --- a/sos/plugins/tftpserver.py +++ b/sos/plugins/tftpserver.py @@ -25,4 +25,4 @@ class tftpserver(Plugin, RedHatPlugin): packages = ('tftp-server',) def setup(self): - self.addCmdOutput("/bin/ls -lanR /tftpboot") + self.add_cmd_output("ls -lanR /tftpboot") diff --git a/sos/plugins/tomcat.py b/sos/plugins/tomcat.py index f447f543..c188f848 100644 --- a/sos/plugins/tomcat.py +++ b/sos/plugins/tomcat.py @@ -21,4 +21,4 @@ class tomcat(Plugin, RedHatPlugin): packages = ('tomcat5',) def setup(self): - self.addCopySpecs(["/etc/tomcat5", "/var/log/tomcat5"]) + self.add_copy_specs(["/etc/tomcat5", "/var/log/tomcat5"]) diff --git a/sos/plugins/udev.py b/sos/plugins/udev.py index cb3aa97d..c5981fc3 100644 --- a/sos/plugins/udev.py +++ b/sos/plugins/udev.py @@ -18,4 +18,4 @@ class udev(Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin): """udev related information """ def setup(self): - self.addCopySpecs(["/etc/udev/udev.conf", "/etc/udev/rules.d/*"]) + self.add_copy_specs(["/etc/udev/udev.conf", "/etc/udev/rules.d/*"]) diff --git a/sos/plugins/veritas.py b/sos/plugins/veritas.py index 95564579..03eda211 100644 --- a/sos/plugins/veritas.py +++ b/sos/plugins/veritas.py @@ -20,19 +20,19 @@ class veritas(Plugin, RedHatPlugin): """ # Information about VRTSexplorer obtained from # http://seer.entsupport.symantec.com/docs/243150.htm - optionList = [("script", "Define VRTSexplorer script path", "", "/opt/VRTSspt/VRTSexplorer")] + option_list = [("script", "Define VRTSexplorer script path", "", "/opt/VRTSspt/VRTSexplorer")] - def checkenabled(self): - return os.path.isfile(self.getOption("script")) + def check_enabled(self): + return os.path.isfile(self.get_option("script")) def setup(self): """ interface with vrtsexplorer to capture veritas related data """ - stat, out, runtime = self.callExtProg(self.getOption("script")) + stat, out, runtime = self.call_ext_prog(self.get_option("script")) try: for line in out.readlines(): line = line.strip() - tarfile = self.doRegexFindAll(r"ftp (.*tar.gz)", line) + tarfile = self.do_regex_find_all(r"ftp (.*tar.gz)", line) if len(tarfile) == 1: - self.addCopySpec(tarfile[0]) + self.add_copy_spec(tarfile[0]) except AttributeError, e: - self.addAlert(e) + self.add_alert(e) diff --git a/sos/plugins/vmware.py b/sos/plugins/vmware.py index e75b5a91..7e102c73 100644 --- a/sos/plugins/vmware.py +++ b/sos/plugins/vmware.py @@ -19,10 +19,10 @@ class vmware(Plugin, RedHatPlugin): """VMWare related information """ - files = ('/usr/bin/vmware','/usr/init.d/vmware-tools') + files = ('vmware','/usr/init.d/vmware-tools') def setup(self): - self.addCmdOutput("/usr/bin/vmware -v") - self.addCopySpecs(["/etc/vmware/locations", + self.add_cmd_output("vmware -v") + self.add_copy_specs(["/etc/vmware/locations", "/etc/vmware/config", "/proc/vmmemctl"]) diff --git a/sos/plugins/x11.py b/sos/plugins/x11.py index a760e6bc..2f25cb29 100644 --- a/sos/plugins/x11.py +++ b/sos/plugins/x11.py @@ -21,10 +21,10 @@ class x11(Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin): files = ('/etc/X11',) def setup(self): - self.addCopySpecs([ + self.add_copy_specs([ "/etc/X11", "/var/log/Xorg.*.log", "/var/log/XFree86.*.log", ]) - self.addForbiddenPath("/etc/X11/X") - self.addForbiddenPath("/etc/X11/fontpath.d") + self.add_forbidden_path("/etc/X11/X") + self.add_forbidden_path("/etc/X11/fontpath.d") diff --git a/sos/plugins/xen.py b/sos/plugins/xen.py index 7a168709..0a5684fa 100644 --- a/sos/plugins/xen.py +++ b/sos/plugins/xen.py @@ -17,74 +17,74 @@ import os import re from stat import * -class xen(Plugin, RedHatPlugin): +class Xen(Plugin, RedHatPlugin): """Xen related information """ - def determineXenHost(self): + def determine_xen_host(self): if os.access("/proc/acpi/dsdt", os.R_OK): - (status, output, rtime) = self.callExtProg("grep -qi xen /proc/acpi/dsdt") + (status, output, rtime) = self.call_ext_prog("grep -qi xen /proc/acpi/dsdt") if status == 0: return "hvm" if os.access("/proc/xen/capabilities", os.R_OK): - (status, output, rtime) = self.callExtProg("grep -q control_d /proc/xen/capabilities") + (status, output, rtime) = self.call_ext_prog("grep -q control_d /proc/xen/capabilities") if status == 0: return "dom0" else: return "domU" return "baremetal" - def checkenabled(self): - return (self.determineXenHost() == "baremetal") + def check_enabled(self): + return (self.determine_xen_host() == "baremetal") def is_running_xenstored(self): xs_pid = os.popen("pidof xenstored").read() xs_pidnum = re.split('\n$',xs_pid)[0] return xs_pidnum.isdigit() - def domCollectProc(self): - self.addCopySpecs([ + def dom_collect_proc(self): + self.add_copy_specs([ "/proc/xen/balloon", "/proc/xen/capabilities", "/proc/xen/xsd_kva", "/proc/xen/xsd_port"]) # determine if CPU has PAE support - self.addCmdOutput("/bin/grep pae /proc/cpuinfo") + self.add_cmd_output("grep pae /proc/cpuinfo") # determine if CPU has Intel-VT or AMD-V support - self.addCmdOutput("/bin/egrep -e 'vmx|svm' /proc/cpuinfo") + self.add_cmd_output("egrep -e 'vmx|svm' /proc/cpuinfo") def setup(self): - host_type = self.determineXenHost() + host_type = self.determine_xen_host() if host_type == "domU": # we should collect /proc/xen and /sys/hypervisor - self.domCollectProc() + self.dom_collect_proc() # determine if hardware virtualization support is enabled # in BIOS: /sys/hypervisor/properties/capabilities - self.addCopySpec("/sys/hypervisor") + self.add_copy_spec("/sys/hypervisor") elif host_type == "hvm": # what do we collect here??? pass elif host_type == "dom0": # default of dom0, collect lots of system information - self.addCopySpecs([ + self.add_copy_specs([ "/var/log/xen", "/etc/xen", "/sys/hypervisor/version", "/sys/hypervisor/compilation", "/sys/hypervisor/properties", "/sys/hypervisor/type"]) - self.addCmdOutput("/usr/sbin/xm dmesg") - self.addCmdOutput("/usr/sbin/xm info") - self.addCmdOutput("/usr/sbin/xm list") - self.addCmdOutput("/usr/sbin/xm list --long") - self.addCmdOutput("/usr/sbin/brctl show") - self.domCollectProc() + self.add_cmd_output("xm dmesg") + self.add_cmd_output("xm info") + self.add_cmd_output("xm list") + self.add_cmd_output("xm list --long") + self.add_cmd_output("brctl show") + self.dom_collect_proc() if self.is_running_xenstored(): - self.addCopySpec("/sys/hypervisor/uuid") - self.addCmdOutput("/usr/bin/xenstore-ls") + self.add_copy_spec("/sys/hypervisor/uuid") + self.add_cmd_output("xenstore-ls") else: # we need tdb instead of xenstore-ls if cannot get it. - self.addCopySpec("/var/lib/xenstored/tdb") + self.add_copy_spec("/var/lib/xenstored/tdb") # FIXME: we *might* want to collect things in /sys/bus/xen*, # /sys/class/xen*, /sys/devices/xen*, /sys/modules/blk*, @@ -94,4 +94,4 @@ class xen(Plugin, RedHatPlugin): # for bare-metal, we don't have to do anything special return #USEFUL - self.addCustomText("Xen hostType: "+host_type) + self.add_custom_text("Xen hostType: "+host_type) diff --git a/sos/plugins/xinetd.py b/sos/plugins/xinetd.py index ba9e1c8d..0a8833e8 100644 --- a/sos/plugins/xinetd.py +++ b/sos/plugins/xinetd.py @@ -17,7 +17,7 @@ from sos.plugins import Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin import os -class xinetd(Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin): +class Xinetd(Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin): """xinetd information """ @@ -25,5 +25,5 @@ class xinetd(Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin): packages = ('xinetd',) def setup(self): - self.addCopySpec("/etc/xinetd.conf") - self.addCopySpec("/etc/xinetd.d") + self.add_copy_spec("/etc/xinetd.conf") + self.add_copy_spec("/etc/xinetd.d") diff --git a/sos/plugins/yum.py b/sos/plugins/yum.py index 4120d50b..d691c43c 100644 --- a/sos/plugins/yum.py +++ b/sos/plugins/yum.py @@ -15,50 +15,50 @@ from sos.plugins import Plugin, RedHatPlugin import os -class yum(Plugin, RedHatPlugin): +class Yum(Plugin, RedHatPlugin): """yum information """ files = ('/etc/yum.conf',) packages = ('yum',) - optionList = [("yumlist", "list repositories and packages", "slow", False), + option_list = [("yumlist", "list repositories and packages", "slow", False), ("yumdebug", "gather yum debugging data", "slow", False)] def setup(self): - rhelver = self.policy().rhelVersion() + rhelver = self.policy().rhel_version() # Pull all yum related information - self.addCopySpecs([ + self.add_copy_specs([ "/etc/yum", "/etc/yum.repos.d", "/etc/yum.conf", "/var/log/yum.log"]) # Get a list of channels the machine is subscribed to. - self.addCmdOutput("/usr/bin/yum -C repolist") + self.add_cmd_output("yum -C repolist") # candlepin info - self.addForbiddenPath("/etc/pki/entitlements/key.pem") - self.addForbiddenPath("/etc/pki/entitlements/*-key.pem") - self.addCopySpecs([ + self.add_forbidden_path("/etc/pki/entitlements/key.pem") + self.add_forbidden_path("/etc/pki/entitlements/*-key.pem") + self.add_copy_specs([ "/etc/pki/product/*.pem", "/etc/pki/consumer/cert.pem", "/etc/pki/entitlement/*.pem", "/etc/rhsm/", "/var/log/rhsm/rhsm.log", "/var/log/rhsm/rhsmcertd.log"]) - self.addCmdOutput("subscription-manager list --installed") - self.addCmdOutput("subscription-manager list --consumed") + self.add_cmd_output("subscription-manager list --installed") + self.add_cmd_output("subscription-manager list --consumed") - if self.getOption("yumlist"): + if self.get_option("yumlist"): # List various information about available packages - self.addCmdOutput("/usr/bin/yum list") + self.add_cmd_output("yum list") - if self.getOption("yumdebug") and self.isInstalled('yum-utils'): + if self.get_option("yumdebug") and self.is_installed('yum-utils'): # RHEL6+ alternative for this whole function: - # self.addCmdOutput("/usr/bin/yum-debug-dump '%s'" % os.path.join(self.cInfo['dstroot'],"yum-debug-dump")) - ret, output, rtime = self.callExtProg("/usr/bin/yum-debug-dump") + # self.add_cmd_output("yum-debug-dump '%s'" % os.path.join(self.commons['dstroot'],"yum-debug-dump")) + ret, output, rtime = self.call_ext_prog("yum-debug-dump") try: - self.addCmdOutput("/bin/zcat %s" % (output.split()[-1],)) + self.add_cmd_output("zcat %s" % (output.split()[-1],)) except IndexError: pass diff --git a/sos/policies/__init__.py b/sos/policies/__init__.py index 224abdd8..8148c894 100644 --- a/sos/policies/__init__.py +++ b/sos/policies/__init__.py @@ -5,6 +5,7 @@ import re import platform import time import fnmatch +from os import environ from sos.utilities import ImporterHelper, \ import_module, \ @@ -45,7 +46,7 @@ class PackageManager(object): format: package name|package.version\n - You may also subclass this class and provide a getPackageList method to + You may also subclass this class and provide a get_pkg_list method to build the list of packages and versions. """ @@ -56,30 +57,30 @@ class PackageManager(object): if query_command: self.query_command = query_command - def allPkgsByName(self, name): + def all_pkgs_by_name(self, name): """ Return a list of packages that match name. """ - return fnmatch.filter(self.allPkgs().keys(), name) + return fnmatch.filter(self.all_pkgs().keys(), name) - def allPkgsByNameRegex(self, regex_name, flags=0): + def all_pkgs_by_name_regex(self, regex_name, flags=0): """ Return a list of packages that match regex_name. """ reg = re.compile(regex_name, flags) - return [pkg for pkg in self.allPkgs().keys() if reg.match(pkg)] + return [pkg for pkg in self.all_pkgs().keys() if reg.match(pkg)] - def pkgByName(self, name): + def pkg_by_name(self, name): """ Return a single package that matches name. """ - pkgmatches = self.allPkgsByName(name) + pkgmatches = self.all_pkgs_by_name(name) if (len(pkgmatches) != 0): - return self.allPkgsByName(name)[-1] + return self.all_pkgs_by_name(name)[-1] else: return None - def getPackageList(self): + def get_pkg_list(self): """ returns a dictionary of packages in the following format: {'package_name': {'name': 'package_name', 'version': 'major.minor.version'}} @@ -95,15 +96,15 @@ class PackageManager(object): return self.packages - def allPkgs(self): + def all_pkgs(self): """ Return a list of all packages. """ if not self.packages: - self.packages = self.getPackageList() + self.packages = self.get_pkg_list() return self.packages - def pkgNVRA(self, pkg): + def pkg_nvra(self, pkg): fields = pkg.split("-") version, release, arch = fields[-3:] name = "-".join(fields[:-3]) @@ -133,16 +134,20 @@ No changes will be made to system configuration. vendor = "Unknown" vendor_url = "http://www.example.com/" vendor_text = "" + PATH = "" def __init__(self): """Subclasses that choose to override this initializer should call super() to ensure that they get the required platform bits attached. - super(SubClass, self).__init__()""" + super(SubClass, self).__init__(). Policies that require runtime + tests to construct PATH must call self.set_exec_path() after + modifying PATH in their own initializer.""" self._parse_uname() - self.reportName = self.hostname - self.ticketNumber = None + self.report_name = self.hostname + self.ticket_number = None self.package_manager = PackageManager() self._valid_subclasses = [] + self.set_exec_path() def get_valid_subclasses(self): return [IndependentPlugin] + self._valid_subclasses @@ -165,21 +170,21 @@ No changes will be made to system configuration. """ return False - def preferedArchive(self): + def preferred_archive_name(self): """ Return the class object of the prefered archive format for this platform """ from sos.archive import TarFileArchive return TarFileArchive - def getArchiveName(self): + def get_archive_name(self): """ This function should return the filename of the archive without the extension. """ - if self.ticketNumber: - self.reportName += "." + self.ticketNumber - return "sosreport-%s-%s" % (self.reportName, time.strftime("%Y%m%d%H%M%S")) + if self.ticket_number: + self.report_name += "." + self.ticket_number + return "sosreport-%s-%s" % (self.report_name, time.strftime("%Y%m%d%H%M%S")) def validatePlugin(self, plugin_class): """ @@ -188,26 +193,26 @@ No changes will be made to system configuration. valid_subclasses = [IndependentPlugin] + self.valid_subclasses return any(issubclass(plugin_class, class_) for class_ in valid_subclasses) - def preWork(self): + def pre_work(self): """ This function is called prior to collection. """ pass - def packageResults(self, package_name): + def package_results(self, package_name): """ This function is called prior to packaging. """ pass - def postWork(self): + def post_work(self): """ This function is called after the sosreport has been generated. """ pass - def pkgByName(self, pkg): - return self.package_manager.pkgByName(pkg) + def pkg_by_name(self, pkg): + return self.package_manager.pkg_by_name(pkg) def _parse_uname(self): (system, node, release, @@ -218,9 +223,15 @@ No changes will be made to system configuration. self.smp = version.split()[1] == "SMP" self.machine = machine - def setCommons(self, commons): + def set_commons(self, commons): self.commons = commons + def _set_PATH(self, path): + environ['PATH'] = path + + def set_exec_path(self): + self._set_PATH(self.PATH) + def is_root(self): """This method should return true if the user calling the script is considered to be a superuser""" @@ -236,12 +247,12 @@ No changes will be made to system configuration. archive_fp.close() return digest.hexdigest() - def getPreferredHashAlgorithm(self): + def get_preferred_hash_algorithm(self): """Returns the string name of the hashlib-supported checksum algorithm to use""" return "md5" - def displayResults(self, final_filename=None): + def display_results(self, final_filename=None): # make sure a report exists if not final_filename: @@ -263,7 +274,7 @@ No changes will be made to system configuration. self._print(_("Please send this file to your support representative.")) self._print() - def uploadResults(self, final_filename): + def upload_results(self, final_filename): # make sure a report exists if not final_filename: @@ -377,11 +388,12 @@ class LinuxPolicy(Policy): distro = "Linux" vendor = "None" + PATH = "/bin:/sbin:/usr/bin:/usr/sbin" def __init__(self): super(LinuxPolicy, self).__init__() - def getPreferredHashAlgorithm(self): + def get_preferred_hash_algorithm(self): checksum = "md5" try: fp = open("/proc/sys/crypto/fips_enabled", "r") @@ -394,7 +406,7 @@ class LinuxPolicy(Policy): fp.close() return checksum - def runlevelDefault(self): + def default_runlevel(self): try: with open("/etc/inittab") as fp: pattern = r"id:(\d{1}):initdefault:" @@ -403,60 +415,60 @@ class LinuxPolicy(Policy): except: return 3 - def kernelVersion(self): + def kernel_version(self): return self.release - def hostName(self): + def host_name(self): return self.hostname - def isKernelSMP(self): + def is_kernel_smp(self): return self.smp - def getArch(self): + def get_arch(self): return self.machine - def getLocalName(self): - """Returns the name usd in the preWork step""" - return self.hostName() + def get_local_name(self): + """Returns the name usd in the pre_work step""" + return self.host_name() - def sanitizeReportName(self, report_name): + def sanitize_report_name(self, report_name): return re.sub(r"[^-a-zA-Z.0-9]", "", report_name) - def sanitizeTicketNumber(self, ticket_number): + def sanitize_ticket_number(self, ticket_number): return re.sub(r"[^0-9]", "", ticket_number) - def preWork(self): + def pre_work(self): # this method will be called before the gathering begins - localname = self.getLocalName() + localname = self.get_local_name() if not self.commons['cmdlineopts'].batch and not self.commons['cmdlineopts'].quiet: try: - self.reportName = raw_input(_("Please enter your first initial and last name [%s]: ") % localname) + self.report_name = raw_input(_("Please enter your first initial and last name [%s]: ") % localname) - self.ticketNumber = raw_input(_("Please enter the case number that you are generating this report for: ")) + self.ticket_number = raw_input(_("Please enter the case number that you are generating this report for: ")) self._print() except: self._print() sys.exit(0) - if len(self.reportName) == 0: - self.reportName = localname + if len(self.report_name) == 0: + self.report_name = localname - if self.commons['cmdlineopts'].customerName: - self.reportName = self.commons['cmdlineopts'].customerName + if self.commons['cmdlineopts'].customer_name: + self.report_name = self.commons['cmdlineopts'].customer_name - if self.commons['cmdlineopts'].ticketNumber: - self.ticketNumber = self.commons['cmdlineopts'].ticketNumber + if self.commons['cmdlineopts'].ticket_number: + self.ticket_number = self.commons['cmdlineopts'].ticket_number - self.reportName = self.sanitizeReportName(self.reportName) - if self.ticketNumber: - self.ticketNumber = self.sanitizeTicketNumber(self.ticketNumber) + self.report_name = self.sanitize_report_name(self.report_name) + if self.ticket_number: + self.ticket_number = self.sanitize_ticket_number(self.ticket_number) - if (self.reportName == ""): - self.reportName = "default" + if (self.report_name == ""): + self.report_name = "default" return - def packageResults(self, archive_filename): + def package_results(self, archive_filename): self._print(_("Creating compressed archive...")) diff --git a/sos/policies/debian.py b/sos/policies/debian.py index 98526e3a..409ba85a 100644 --- a/sos/policies/debian.py +++ b/sos/policies/debian.py @@ -7,10 +7,12 @@ class DebianPolicy(LinuxPolicy): distro = "Debian" vendor = "the Debian project" vendor_url = "http://www.debian.org/" - reportName = "" - ticketNumber = "" + report_name = "" + ticket_number = "" package_manager = PackageManager("dpkg-query -W -f='${Package}|${Version}\\n' \*") valid_subclasses = [DebianPlugin] + PATH = "/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games" \ + + ":/usr/loca/sbin:/usr/local/bin" def __init__(self): super(DebianPolicy, self).__init__() diff --git a/sos/policies/redhat.py b/sos/policies/redhat.py index 399db6f7..7a26d811 100644 --- a/sos/policies/redhat.py +++ b/sos/policies/redhat.py @@ -38,19 +38,29 @@ class RedHatPolicy(LinuxPolicy): def __init__(self): super(RedHatPolicy, self).__init__() - self.reportName = "" - self.ticketNumber = "" - self.package_manager = PackageManager('rpm -qa --queryformat "%{NAME}|%{VERSION}\\n"') + self.report_name = "" + self.ticket_number = "" + self.package_manager = PackageManager( + 'rpm -qa --queryformat "%{NAME}|%{VERSION}\\n"') self.valid_subclasses = [RedHatPlugin] + # handle PATH for UsrMove + if self.package_manager.all_pkgs()['filesystem']['version'][0] == '3': + self.PATH = "/usr/sbin:/usr/bin:/root/bin" + else: + self.PATH = "/sbin:/bin:/usr/sbin:/usr/bin:/root/bin" + self.PATH += os.pathsep + "/usr/local/bin" + self.PATH += os.pathsep + "/usr/local/sbin" + self.set_exec_path() + @classmethod def check(self): - """This method checks to see if we are running on Red Hat. It must be overriden - by concrete subclasses to return True when running on a Fedora, RHEL or other - Red Hat distribution or False otherwise.""" + """This method checks to see if we are running on Red Hat. It must be + overriden by concrete subclasses to return True when running on a + Fedora, RHEL or other Red Hat distribution or False otherwise.""" return False - def runlevelByService(self, name): + def runlevel_by_service(self, name): from subprocess import Popen, PIPE ret = [] p = Popen("LC_ALL=C /sbin/chkconfig --list %s" % name, @@ -71,8 +81,8 @@ class RedHatPolicy(LinuxPolicy): ret.append(int(runlevel)) return ret - def getLocalName(self): - return self.hostName() + def get_local_name(self): + return self.host_name() class RHELPolicy(RedHatPolicy): @@ -109,10 +119,10 @@ No changes will be made to system configuration. return (os.path.isfile('/etc/redhat-release') and not os.path.isfile('/etc/fedora-release')) - def rhelVersion(self): + def rhel_version(self): try: - pkg = self.pkgByName("redhat-release") or \ - self.allPkgsByNameRegex("redhat-release-.*")[-1] + pkg = self.pkg_by_name("redhat-release") or \ + self.all_pkgs_by_name_regex("redhat-release-.*")[-1] pkgname = pkg["version"] if pkgname[0] == "4": return 4 @@ -124,7 +134,7 @@ No changes will be made to system configuration. pass return False - def rhnUsername(self): + def rhn_username(self): try: cfg = config.initUp2dateConfig() @@ -133,8 +143,8 @@ No changes will be made to system configuration. # ignore any exception and return an empty username return "" - def getLocalName(self): - return self.rhnUsername() or self.hostName() + def get_local_name(self): + return self.rhn_username() or self.host_name() class FedoraPolicy(RedHatPolicy): @@ -151,9 +161,9 @@ class FedoraPolicy(RedHatPolicy): or False.""" return os.path.isfile('/etc/fedora-release') - def fedoraVersion(self): - pkg = self.pkgByName("fedora-release") or \ - self.allPkgsByNameRegex("fedora-release-.*")[-1] + def fedora_version(self): + pkg = self.pkg_by_name("fedora-release") or \ + self.all_pkgs_by_name_regex("fedora-release-.*")[-1] return int(pkg["version"]) # vim: ts=4 sw=4 et diff --git a/sos/policies/windows.py b/sos/policies/windows.py index 6b7b0e00..0424a3f0 100644 --- a/sos/policies/windows.py +++ b/sos/policies/windows.py @@ -40,6 +40,6 @@ class WindowsPolicy(Policy): username = shell_out("echo %USERNAME%") return username.strip() in admins - def preferedArchive(self): + def preferred_archive_name(self): from sos.archive import ZipFileArchive return ZipFileArchive diff --git a/sos/sosreport.py b/sos/sosreport.py index b5691c05..37b7f67f 100644 --- a/sos/sosreport.py +++ b/sos/sosreport.py @@ -245,9 +245,9 @@ class SoSReport(object): def _set_archive(self): if self.opts.compression_type not in ('auto', 'zip', 'bzip2', 'gzip', 'xz'): raise Exception("Invalid compression type specified. Options are: auto, zip, bzip2, gzip and xz") - archive_name = os.path.join(self.opts.tmp_dir,self.policy.getArchiveName()) + archive_name = os.path.join(self.opts.tmp_dir,self.policy.get_archive_name()) if self.opts.compression_type == 'auto': - auto_archive = self.policy.preferedArchive() + auto_archive = self.policy.preferred_archive_name() self.archive = auto_archive(archive_name) elif self.opts.compression_type == 'zip': self.archive = ZipFileArchive(archive_name) @@ -391,12 +391,12 @@ class SoSReport(object): plugin_name in self._get_disabled_plugins()) def _is_inactive(self, plugin_name, pluginClass): - return (not pluginClass(self.get_commons()).checkenabled() and + return (not pluginClass(self.get_commons()).check_enabled() and not plugin_name in self.opts.enableplugins and not plugin_name in self.opts.onlyplugins) def _is_not_default(self, plugin_name, pluginClass): - return (not pluginClass(self.get_commons()).defaultenabled() and + return (not pluginClass(self.get_commons()).default_enabled() and not plugin_name in self.opts.enableplugins and not plugin_name in self.opts.onlyplugins) @@ -472,7 +472,7 @@ class SoSReport(object): def _set_all_options(self): if self.opts.usealloptions: for plugname, plug in self.loaded_plugins: - for name, parms in zip(plug.optNames, plug.optParms): + for name, parms in zip(plug.opt_names, plug.opt_parms): if type(parms["enabled"])==bool: parms["enabled"] = True @@ -518,7 +518,7 @@ class SoSReport(object): for plugname, plug in self.loaded_plugins: if plugname in opts: for opt, val in opts[plugname]: - if not plug.setOption(opt, val): + if not plug.set_option(opt, val): self.soslog.error('no such option "%s" for plugin ' '(%s)' % (opt,plugname)) self._exit(1) @@ -540,7 +540,7 @@ class SoSReport(object): def _set_plugin_options(self): for plugin_name, plugin in self.loaded_plugins: - names, parms = plugin.getAllOptions() + names, parms = plugin.get_all_options() for optname, optparm in zip(names, parms): self.all_options.append((plugin, plugin_name, optname, optparm)) @@ -604,7 +604,7 @@ class SoSReport(object): def prework(self): try: - self.policy.preWork() + self.policy.pre_work() self._set_archive() except Exception, e: import traceback @@ -636,7 +636,7 @@ class SoSReport(object): self.archive.add_string(content="\n".join(versions), dest='version.txt') - def copy_stuff(self): + def collect(self): plugruncount = 0 for i in izip(self.loaded_plugins): plugruncount += 1 @@ -645,7 +645,7 @@ class SoSReport(object): sys.stdout.write("\r Running %d/%d: %s... " % (plugruncount, len(self.loaded_plugins), plugname)) sys.stdout.flush() try: - plug.copyStuff() + plug.collect() except KeyboardInterrupt: raise except: @@ -656,7 +656,7 @@ class SoSReport(object): def report(self): for plugname, plug in self.loaded_plugins: - for oneFile in plug.copiedFiles: + for oneFile in plug.copied_files: try: self.xml_report.add_file(oneFile["srcpath"], os.stat(oneFile["srcpath"])) except: @@ -675,18 +675,18 @@ class SoSReport(object): for alert in plug.alerts: section.add(Alert(alert)) - if plug.customText: - section.add(Note(plug.customText)) + if plug.custom_text: + section.add(Note(plug.custom_text)) - for f in plug.copiedFiles: + for f in plug.copied_files: section.add(CopiedFile(name=f['srcpath'], href= ".." + f['dstpath'])) - for cmd in plug.executedCommands: + for cmd in plug.executed_commands: section.add(Command(name=cmd['exe'], return_code=0, href="../" + cmd['file'])) - for content, f in plug.copyStrings: + for content, f in plug.copy_strings: section.add(CreatedFile(name=f)) report.add(section) @@ -770,7 +770,7 @@ class SoSReport(object): def final_work(self): # package up the results for the support organization - self.policy.packageResults(self.archive.name()) + self.policy.package_results(self.archive.name()) self._finish_logging() @@ -778,9 +778,9 @@ class SoSReport(object): # automated submission will go here if not self.opts.upload: - self.policy.displayResults(final_filename) + self.policy.display_results(final_filename) else: - self.policy.uploadResults(final_filename) + self.policy.upload_results(final_filename) self.tempfile_util.clean() @@ -829,10 +829,10 @@ class SoSReport(object): dest="debug", help="enable interactive debugging using the python debugger") parser.add_option("--ticket-number", action="store", - dest="ticketNumber", + dest="ticket_number", help="specify ticket number") parser.add_option("--name", action="store", - dest="customerName", + dest="customer_name", help="specify report name") parser.add_option("--config-file", action="store", dest="config_file", @@ -866,7 +866,7 @@ class SoSReport(object): def execute(self): try: self._setup_logging() - self.policy.setCommons(self.get_commons()) + self.policy.set_commons(self.get_commons()) self.print_header() self.load_plugins() self._set_tunables() @@ -885,7 +885,7 @@ class SoSReport(object): self.ui_log.info(_(" Running plugins. Please wait ...")) self.ui_log.info("") - self.copy_stuff() + self.collect() self.ui_log.info("") diff --git a/sos/utilities.py b/sos/utilities.py index 7995ef0f..64d0ce62 100644 --- a/sos/utilities.py +++ b/sos/utilities.py @@ -35,7 +35,10 @@ import tarfile import hashlib import logging import fnmatch -import selinux +try: + import selinux +except ImportError: + pass from contextlib import closing try: @@ -82,7 +85,7 @@ def get_hash_name(): import sos.policies policy = sos.policies.load() try: - name = policy.getPreferredHashAlgorithm() + name = policy.get_preferred_hash_algorithm() hashlib.new(name) return name except: @@ -143,7 +146,7 @@ def is_executable(command): candidates = [command] + [os.path.join(p, command) for p in paths] return any(os.access(path, os.X_OK) for path in candidates) -def sosGetCommandOutput(command, timeout=300): +def sos_get_command_output(command, timeout=300): """Execute a command through the system shell. First checks to see if the requested command is executable. Returns (returncode, stdout, 0)""" # XXX: what is this doing this for? @@ -184,7 +187,7 @@ def import_module(module_fqname, superclasses=None): def shell_out(cmd): """Uses subprocess.Popen to make a system call and returns stdout. Does not handle exceptions.""" - return sosGetCommandOutput(cmd)[1] + return sos_get_command_output(cmd)[1] class DirTree(object): """Builds an ascii representation of a directory structure""" diff --git a/tests/option_tests.py b/tests/option_tests.py index 03804dec..d221b965 100644 --- a/tests/option_tests.py +++ b/tests/option_tests.py @@ -15,20 +15,20 @@ class GlobalOptionTest(unittest.TestCase): }, } self.plugin = Plugin(self.commons) - self.plugin.optNames = ['baz', 'empty'] - self.plugin.optParms = [{'enabled': False}, {'enabled': None}] + self.plugin.opt_names = ['baz', 'empty'] + self.plugin.opt_parms = [{'enabled': False}, {'enabled': None}] def test_simple_lookup(self): - self.assertEquals(self.plugin.getOption('test_option'), 'foobar') + self.assertEquals(self.plugin.get_option('test_option'), 'foobar') def test_multi_lookup(self): - self.assertEquals(self.plugin.getOption(('not_there', 'test_option')), 'foobar') + self.assertEquals(self.plugin.get_option(('not_there', 'test_option')), 'foobar') def test_cascade(self): - self.assertEquals(self.plugin.getOption(('baz')), False) + self.assertEquals(self.plugin.get_option(('baz')), False) def test_none_should_cascade(self): - self.assertEquals(self.plugin.getOption(('empty', 'empty_global')), True) + self.assertEquals(self.plugin.get_option(('empty', 'empty_global')), True) if __name__ == "__main__": unittest.main() diff --git a/tests/plugin_tests.py b/tests/plugin_tests.py index f01a7a9c..9f8817d2 100644 --- a/tests/plugin_tests.py +++ b/tests/plugin_tests.py @@ -3,8 +3,9 @@ import os import tempfile from StringIO import StringIO -from sos.plugins import Plugin, regex_findall, sosRelPath, mangle_command -from sos.utilities import Archive +from sos.plugins import Plugin, regex_findall, sos_relative_path, mangle_command +from sos.archive import TarFileArchive, ZipFileArchive +import sos.policies PATH = os.path.dirname(__file__) @@ -18,7 +19,7 @@ def create_file(size): f.close() return f.name -class MockArchive(Archive): +class MockArchive(TarFileArchive): def __init__(self): self.m = {} @@ -50,7 +51,7 @@ class MockArchive(Archive): class MockPlugin(Plugin): - optionList = [("opt", 'an option', 'fast', None), + option_list = [("opt", 'an option', 'fast', None), ("opt2", 'another option', 'fast', False)] def setup(self): @@ -72,14 +73,12 @@ class ForbiddenMockPlugin(Plugin): plugin_name = "forbidden" def setup(self): - self.addForbiddenPath("tests") + self.add_forbidden_path("tests") class EnablerPlugin(Plugin): - is_installed = False - - def isInstalled(self, pkg): + def is_installed(self, pkg): return self.is_installed @@ -114,17 +113,17 @@ class PluginToolTests(unittest.TestCase): def test_rel_path(self): path1 = "/usr/lib/foo" path2 = "/usr/lib/boo" - self.assertEquals(sosRelPath(path1, path2), "../boo") + self.assertEquals(sos_relative_path(path1, path2), "../boo") def test_abs_path(self): path1 = "usr/lib/foo" path2 = "foo/lib/boo" - self.assertEquals(sosRelPath(path1, path2), "foo/lib/boo") + self.assertEquals(sos_relative_path(path1, path2), "foo/lib/boo") def test_bad_path(self): path1 = None path2 = "foo/lib/boo" - self.assertEquals(sosRelPath(path1, path2), "foo/lib/boo") + self.assertEquals(sos_relative_path(path1, path2), "foo/lib/boo") def test_mangle_command(self): self.assertEquals("foo", mangle_command("/usr/bin/foo")) @@ -161,27 +160,27 @@ class PluginTests(unittest.TestCase): def test_set_plugin_option(self): p = MockPlugin({}) - p.setOption("opt", "testing") - self.assertEquals(p.getOption("opt"), "testing") + p.set_option("opt", "testing") + self.assertEquals(p.get_option("opt"), "testing") def test_set_nonexistant_plugin_option(self): p = MockPlugin({}) - self.assertFalse(p.setOption("badopt", "testing")) + self.assertFalse(p.set_option("badopt", "testing")) def test_get_nonexistant_plugin_option(self): p = MockPlugin({}) - self.assertEquals(p.getOption("badopt"), 0) + self.assertEquals(p.get_option("badopt"), 0) def test_get_unset_plugin_option(self): p = MockPlugin({}) - self.assertEquals(p.getOption("opt"), 0) + self.assertEquals(p.get_option("opt"), 0) def test_get_unset_plugin_option_with_default(self): # this shows that even when we pass in a default to get, # we'll get the option's default as set in the plugin # this might not be what we really want p = MockPlugin({}) - self.assertEquals(p.getOption("opt", True), True) + self.assertEquals(p.get_option("opt", True), True) def test_get_unset_plugin_option_with_default_not_none(self): # this shows that even when we pass in a default to get, @@ -189,32 +188,32 @@ class PluginTests(unittest.TestCase): # we'll get the option's default as set in the plugin # this might not be what we really want p = MockPlugin({}) - self.assertEquals(p.getOption("opt2", True), False) + self.assertEquals(p.get_option("opt2", True), False) def test_get_option_as_list_plugin_option(self): p = MockPlugin({}) - p.setOption("opt", "one,two,three") - self.assertEquals(p.getOptionAsList("opt"), ['one', 'two', 'three']) + p.set_option("opt", "one,two,three") + self.assertEquals(p.get_option_as_list("opt"), ['one', 'two', 'three']) def test_get_option_as_list_plugin_option_default(self): p = MockPlugin({}) - self.assertEquals(p.getOptionAsList("opt", default=[]), []) + self.assertEquals(p.get_option_as_list("opt", default=[]), []) def test_get_option_as_list_plugin_option_not_list(self): p = MockPlugin({}) - p.setOption("opt", "testing") - self.assertEquals(p.getOptionAsList("opt"), ['testing']) + p.set_option("opt", "testing") + self.assertEquals(p.get_option_as_list("opt"), ['testing']) def test_copy_dir(self): - self.mp.doCopyFileOrDir("tests") + self.mp.do_copy_file_or_dir("tests") self.assertEquals(self.mp.archive.m["tests/plugin_tests.py"], 'tests/plugin_tests.py') def test_copy_dir_sub(self): - self.mp.doCopyFileOrDir("tests", sub=("tests/", "foobar/")) + self.mp.do_copy_file_or_dir("tests", sub=("tests/", "foobar/")) self.assertEquals(self.mp.archive.m["tests/plugin_tests.py"], 'foobar/plugin_tests.py') def test_copy_dir_bad_path(self): - self.mp.doCopyFileOrDir("not_here_tests") + self.mp.do_copy_file_or_dir("not_here_tests") self.assertEquals(self.mp.archive.m, {}) def test_copy_dir_forbidden_path(self): @@ -223,7 +222,7 @@ class PluginTests(unittest.TestCase): }) p.archive = MockArchive() p.setup() - p.doCopyFileOrDir("tests") + p.do_copy_file_or_dir("tests") self.assertEquals(p.archive.m, {}) @@ -236,13 +235,13 @@ class AddCopySpecLimitTests(unittest.TestCase): self.mp.archive = MockArchive() def test_single_file_under_limit(self): - self.mp.addCopySpecLimit("tests/tail_test.txt", 1) - self.assertEquals(self.mp.copyPaths, [('tests/tail_test.txt', None)]) + self.mp.add_copy_spec_limit("tests/tail_test.txt", 1) + self.assertEquals(self.mp.copy_paths, [('tests/tail_test.txt', None)]) def test_single_file_over_limit(self): fn = create_file(2) # create 2MB file, consider a context manager - self.mp.addCopySpecLimit(fn, 1, sub=('tmp', 'awesome')) - content, fname = self.mp.copyStrings[0] + self.mp.add_copy_spec_limit(fn, 1, sub=('tmp', 'awesome')) + content, fname = self.mp.copy_strings[0] self.assertTrue("tailed" in fname) self.assertTrue("awesome" in fname) self.assertTrue("/" not in fname) @@ -250,16 +249,16 @@ class AddCopySpecLimitTests(unittest.TestCase): os.unlink(fn) def test_bad_filename(self): - self.assertFalse(self.mp.addCopySpecLimit('', 1)) - self.assertFalse(self.mp.addCopySpecLimit(None, 1)) + self.assertFalse(self.mp.add_copy_spec_limit('', 1)) + self.assertFalse(self.mp.add_copy_spec_limit(None, 1)) def test_glob_file_over_limit(self): # assume these are in /tmp fn = create_file(2) fn2 = create_file(2) - self.mp.addCopySpecLimit("/tmp/tmp*", 1) - self.assertEquals(len(self.mp.copyStrings), 1) - content, fname = self.mp.copyStrings[0] + self.mp.add_copy_spec_limit("/tmp/tmp*", 1) + self.assertEquals(len(self.mp.copy_strings), 1) + content, fname = self.mp.copy_strings[0] self.assertTrue("tailed" in fname) self.assertEquals(1024 * 1024, len(content)) os.unlink(fn) @@ -269,26 +268,25 @@ class AddCopySpecLimitTests(unittest.TestCase): class CheckEnabledTests(unittest.TestCase): def setUp(self): - self.mp = EnablerPlugin({}) + self.mp = EnablerPlugin({'policy': sos.policies.load()}) def test_checks_for_file(self): f = j("tail_test.txt") self.mp.files = (f,) - self.assertTrue(self.mp.checkenabled()) + self.assertTrue(self.mp.check_enabled()) def test_checks_for_package(self): self.mp.packages = ('foo',) - self.mp.is_installed = True - self.assertTrue(self.mp.checkenabled()) + self.assertTrue(self.mp.check_enabled()) def test_allows_bad_tuple(self): f = j("tail_test.txt") self.mp.files = (f) self.mp.packages = ('foo') - self.assertTrue(self.mp.checkenabled()) + self.assertTrue(self.mp.check_enabled()) def test_enabled_by_default(self): - self.assertTrue(self.mp.checkenabled()) + self.assertTrue(self.mp.check_enabled()) class RegexSubTests(unittest.TestCase): @@ -300,18 +298,18 @@ class RegexSubTests(unittest.TestCase): self.mp.archive = MockArchive() def test_file_never_copied(self): - self.assertEquals(0, self.mp.doFileSub("never_copied", r"^(.*)$", "foobar")) + self.assertEquals(0, self.mp.do_file_sub("never_copied", r"^(.*)$", "foobar")) def test_no_replacements(self): - self.mp.addCopySpec(j("tail_test.txt")) - self.mp.copyStuff() - replacements = self.mp.doFileSub(j("tail_test.txt"), r"wont_match", "foobar") + self.mp.add_copy_spec(j("tail_test.txt")) + self.mp.collect() + replacements = self.mp.do_file_sub(j("tail_test.txt"), r"wont_match", "foobar") self.assertEquals(0, replacements) def test_replacements(self): - self.mp.addCopySpec(j("tail_test.txt")) - self.mp.copyStuff() - replacements = self.mp.doFileSub(j("tail_test.txt"), r"(tail)", "foobar") + self.mp.add_copy_spec(j("tail_test.txt")) + self.mp.collect() + replacements = self.mp.do_file_sub(j("tail_test.txt"), r"(tail)", "foobar") self.assertEquals(1, replacements) self.assertTrue("foobar" in self.mp.archive.m.get(j('tail_test.txt'))) diff --git a/tests/policy_tests.py b/tests/policy_tests.py index 25795a1c..aa74da7d 100644 --- a/tests/policy_tests.py +++ b/tests/policy_tests.py @@ -54,16 +54,16 @@ class PackageManagerTests(unittest.TestCase): self.pm = PackageManager() def test_default_all_pkgs(self): - self.assertEquals(self.pm.allPkgs(), {}) + self.assertEquals(self.pm.all_pkgs(), {}) def test_default_all_pkgs_by_name(self): - self.assertEquals(self.pm.allPkgsByName('doesntmatter'), []) + self.assertEquals(self.pm.all_pkgs_by_name('doesntmatter'), []) def test_default_all_pkgs_by_name_regex(self): - self.assertEquals(self.pm.allPkgsByNameRegex('.*doesntmatter$'), []) + self.assertEquals(self.pm.all_pkgs_by_name_regex('.*doesntmatter$'), []) def test_default_pkg_by_name(self): - self.assertEquals(self.pm.pkgByName('foo'), None) + self.assertEquals(self.pm.pkg_by_name('foo'), None) if __name__ == "__main__": unittest.main() diff --git a/tests/utilities_tests.py b/tests/utilities_tests.py index 7b5a6a3b..5520bb16 100644 --- a/tests/utilities_tests.py +++ b/tests/utilities_tests.py @@ -2,7 +2,7 @@ import os.path import unittest from StringIO import StringIO -from sos.utilities import grep, DirTree, checksum, get_hash_name, is_executable, sosGetCommandOutput, find, tail, shell_out +from sos.utilities import grep, DirTree, checksum, get_hash_name, is_executable, sos_get_command_output, find, tail, shell_out import sos TEST_DIR = os.path.dirname(__file__) @@ -76,13 +76,13 @@ class ExecutableTest(unittest.TestCase): def test_output(self): path = os.path.join(TEST_DIR, 'test_exe.py') - ret, out, junk = sosGetCommandOutput(path) + ret, out, junk = sos_get_command_output(path) self.assertEquals(ret, 0) self.assertEquals(out, "executed\n") def test_output_non_exe(self): path = os.path.join(TEST_DIR, 'utility_tests.py') - ret, out, junk = sosGetCommandOutput(path) + ret, out, junk = sos_get_command_output(path) self.assertEquals(ret, 127) self.assertEquals(out, "") |