Skip to content

Commit

Permalink
[arcconf] add getconfig and GETLOGS commands for all available contro…
Browse files Browse the repository at this point in the history
…llers

Currently, the arcconf getconfig and GETLOGS commands are added with the
assumption that the system has only one controller with ID 1. It is
possible that a system can have multiple controllers, so commands need
to be added to extract information for all available controllers.

The arcconf utility does not have a dedicated command to get the list of
controllers available in the system. Therefore, parse the 'arcconf list'
output to obtain the controller ID for all controllers in the system,
and add getconfig and GETLOGS commands for each available controllers.

Signed-off-by: Sourabh Jain <sourabhjain@linux.ibm.com>
Suggested-by: Borislav Stoymirski <borislav.stoymirski@bg.ibm.com>
  • Loading branch information
sourabhjains authored and TurboTurtle committed Dec 18, 2023
1 parent af139c4 commit 2cd3a16
Showing 1 changed file with 32 additions and 7 deletions.
39 changes: 32 additions & 7 deletions sos/report/plugins/arcconf.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@
# This sosreport plugin is meant for sas adapters.
# This plugin logs inforamtion on each adapter it finds.

import re

from sos.report.plugins import Plugin, IndependentPlugin


Expand All @@ -21,11 +23,34 @@ class arcconf(Plugin, IndependentPlugin):
commands = ("arcconf",)

def setup(self):

# get list of adapters
self.add_cmd_output([
"arcconf getconfig 1",
"arcconf list",
"arcconf GETLOGS 1 UART"
])
# Get the list of available adapters
listarcconf = self.collect_cmd_output("arcconf list")

# Parse the 'arcconf list' output and extract controller IDs.
# For each Controller ID found in 'arcconf list', add commands
# for getconfig and GETLOGS
#
# Sample 'arcconf list' output:
#
# Controller information
# -------------------------------------------------------------
# Controller ID : Status, Slot, Mode, Name, SerialNumber, WWN
# -------------------------------------------------------------
# Controller 1: : Optimal, Slot XXXX, XXXX, XXXX, XXXX, XXXX
# -------------------------------------------------------------
# Controller 2: : Optimal, Slot XXXX, XXXX, XXXX, XXXX, XXXX

if listarcconf['status'] == 0:
for line in listarcconf['output'].splitlines():
try:
match = re.match(r"^[\s]*Controller (\d)+", line).group(0)
controller_id = match.split()[1]
if controller_id:
# Add new commands with Controller ID
self.add_cmd_output([
f"arcconf getconfig {controller_id}",
f"arcconf GETLOGS {controller_id} UART",
])
except AttributeError:
continue
# vim: et ts=4 sw=4

0 comments on commit 2cd3a16

Please sign in to comment.