From 715819bc57dc7b8a04501f9f300786c8811b0b0e Mon Sep 17 00:00:00 2001 From: Sourabh Jain Date: Fri, 24 Nov 2023 15:00:56 +0530 Subject: [PATCH] [arcconf] add getconfig and GETLOGS commands for all available controllers 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 Suggested-by: Borislav Stoymirski --- sos/report/plugins/arcconf.py | 33 ++++++++++++++++++++++++++------- 1 file changed, 26 insertions(+), 7 deletions(-) diff --git a/sos/report/plugins/arcconf.py b/sos/report/plugins/arcconf.py index 7f0f020865..fafd264f71 100644 --- a/sos/report/plugins/arcconf.py +++ b/sos/report/plugins/arcconf.py @@ -21,11 +21,30 @@ 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 + if listarcconf['status'] == 0: + for line in listarcconf['output'].splitlines(): + words = line.split() + + # Skip line has less than two words + if len(words) < 2: + continue + + # Line with "Controller XX: *" has Controller ID + if words[0] != "Controller" or not words[1].endswith(":"): + continue + + # Controller ID ends with :, so remove it + controller_id = words[1][:-1] + + # Add new command with Controller ID + self.add_cmd_output([ + "arcconf getconfig %s" % controller_id, + "arcconf GETLOGS %s UART" % controller_id + ]) # vim: et ts=4 sw=4