diff options
-rw-r--r-- | sos/report/plugins/hpssm.py | 55 |
1 files changed, 45 insertions, 10 deletions
diff --git a/sos/report/plugins/hpssm.py b/sos/report/plugins/hpssm.py index 8402e080..a94e6574 100644 --- a/sos/report/plugins/hpssm.py +++ b/sos/report/plugins/hpssm.py @@ -7,10 +7,17 @@ # See the LICENSE file in the source distribution for further information. from sos.report.plugins import Plugin, IndependentPlugin, PluginOpt +import re class Hpssm(Plugin, IndependentPlugin): - + """ + This plugin will capture details for each controller from Smart Storage + Array Administrator, an Array diagnostic report from Smart Storage + Administrator Diagnostics Utility and, when the plugins debug option is + enabled will gather the Active Health System log via the RESTful Interface + Tool (iLOREST). + """ short_desc = 'HP Smart Storage Management' plugin_name = 'hpssm' @@ -22,25 +29,53 @@ class Hpssm(Plugin, IndependentPlugin): ] def setup(self): - self.add_cmd_output([ - 'ssacli ctrl slot=0 array all show detail', - 'ssacli ctrl slot=0 ld all show detail', - 'ssacli ctrl slot=0 pd all show detail', - 'ssacli ctrl slot=0 show detail', - ]) + cmd = 'ssacli' + subcmds = [ + 'ctrl all show status' + ] + slot_subcmds = [ + 'ld all show', + 'ld all show detail', + 'pd all show', + 'pd all show detail' + ] + self.add_cmd_output( + ["%s %s" % (cmd, subcmd) for subcmd in subcmds] + ) + + pattern = re.compile("^HP.*Smart Array (.*) in Slot ([0123456789])") + config_detail_cmd = cmd + ' ctrl all show config detail' + config_detail = self.collect_cmd_output(config_detail_cmd) + ctrl_slots = [] + if config_detail['status'] == 0: + ctrl_slots = [m.group(2) + for line in config_detail['output'].splitlines() + for m in [pattern.search(line)] if m] + ssacli_ctrl_slot_cmd = cmd + ' ctrl slot=' + self.add_cmd_output( + ["%s%s %s" % ( + ssacli_ctrl_slot_cmd, + slot, + slot_subcmd + ) + for slot in ctrl_slots + for slot_subcmd in slot_subcmds] + ) logpath = self.get_cmd_output_path() self.add_cmd_output( 'ssaducli -v -adu -f %s/adu-log.zip' % logpath, - suggest_filename='ssaducli_-v_-adu.log') + suggest_filename='ssaducli_-v_-adu.log' + ) if self.get_option("debug"): self.do_debug(logpath) def do_debug(self, logpath): self.add_cmd_output( - 'ilorest serverlogs --selectlog=AHS', - runat=logpath, suggest_filename='ilorest.log') + 'ilorest serverlogs --selectlog=AHS --directorypath=%s' % logpath, + runat=logpath, suggest_filename='ilorest.log' + ) # vim: set et ts=4 sw=4 : |