aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sos/report/plugins/hpssm.py55
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 :