Restructure FFDC YAML and logic to walk them through

Changes:
     - YAML generalize grouping.
     - Logic to walk through YAML.
     - added extra parameter for the protocols.

Change-Id: Iec5b6084fd991d34034fbd779831092d22d7fe79
Signed-off-by: George Keishing <gkeishin@in.ibm.com>
diff --git a/ffdc/ffdc_collector.py b/ffdc/ffdc_collector.py
index ff3e825..8b242ab 100644
--- a/ffdc/ffdc_collector.py
+++ b/ffdc/ffdc_collector.py
@@ -242,63 +242,63 @@
         self.set_ffdc_defaults()
 
         for machine_type in ffdc_actions.keys():
+            if self.target_type != machine_type:
+                continue
 
-            if machine_type == self.target_type:
-                if self.remote_protocol == 'SSH' or self.remote_protocol == 'ALL':
-                    self.protocol_ssh(ffdc_actions, machine_type)
+            print("\tSystem Type: %s" % machine_type)
+            for k, v in ffdc_actions[machine_type].items():
 
-                if self.target_type == 'OPENBMC':
-                    if self.remote_protocol == 'REDFISH' or self.remote_protocol == 'ALL':
-                        self.protocol_redfish(ffdc_actions, 'OPENBMC_REDFISH')
+                if self.remote_protocol != ffdc_actions[machine_type][k]['PROTOCOL'][0] \
+                        and self.remote_protocol != 'ALL':
+                    continue
 
-                    if self.remote_protocol == 'IPMI' or self.remote_protocol == 'ALL':
-                        self.protocol_ipmi(ffdc_actions, 'OPENBMC_IPMI')
+                if ffdc_actions[machine_type][k]['PROTOCOL'][0] == 'SSH':
+                    self.protocol_ssh(ffdc_actions, machine_type, k)
+
+                if ffdc_actions[machine_type][k]['PROTOCOL'][0] == 'REDFISH':
+                    self.protocol_redfish(ffdc_actions, machine_type, k)
+
+                if ffdc_actions[machine_type][k]['PROTOCOL'][0] == 'IPMI':
+                    self.protocol_ipmi(ffdc_actions, machine_type, k)
 
         # Close network connection after collecting all files
         self.remoteclient.ssh_remoteclient_disconnect()
 
     def protocol_ssh(self,
                      ffdc_actions,
-                     machine_type):
+                     machine_type,
+                     sub_type):
         r"""
         Perform actions using SSH and SCP protocols.
 
         Description of argument(s):
         ffdc_actions        List of actions from ffdc_config.yaml.
         machine_type        OS Type of remote host.
+        sub_type            Group type of commands.
         """
 
-        # For OPENBMC collect general system info.
-        if self.target_type == 'OPENBMC':
-
-            self.collect_and_copy_ffdc(ffdc_actions['GENERAL'],
-                                       form_filename=True)
-            self.group_copy(ffdc_actions['OPENBMC_DUMPS'])
-
-        # For RHEL and UBUNTU, collect common Linux OS FFDC.
-        if self.target_type == 'RHEL' \
-           or self.target_type == 'UBUNTU':
-
-            self.collect_and_copy_ffdc(ffdc_actions['LINUX'])
-
-        # Collect remote host specific FFDC.
-        self.collect_and_copy_ffdc(ffdc_actions[machine_type])
+        if sub_type == 'DUMP_LOGS':
+            self.group_copy(ffdc_actions[machine_type][sub_type])
+        else:
+            self.collect_and_copy_ffdc(ffdc_actions[machine_type][sub_type])
 
     def protocol_redfish(self,
                          ffdc_actions,
-                         machine_type):
+                         machine_type,
+                         sub_type):
         r"""
         Perform actions using Redfish protocol.
 
         Description of argument(s):
         ffdc_actions        List of actions from ffdc_config.yaml.
         machine_type        OS Type of remote host.
+        sub_type            Group type of commands.
         """
 
         print("\n\t[Run] Executing commands to %s using %s" % (self.hostname, 'REDFISH'))
         redfish_files_saved = []
         progress_counter = 0
-        list_of_URL = ffdc_actions[machine_type]['URL']
+        list_of_URL = ffdc_actions[machine_type][sub_type]['URL']
         for index, each_url in enumerate(list_of_URL, start=0):
             redfish_parm = '-u ' + self.username + ' -p ' + self.password + ' -r ' \
                            + self.hostname + ' -S Always raw GET ' + each_url
@@ -306,7 +306,7 @@
             result = self.run_redfishtool(redfish_parm)
             if result:
                 try:
-                    targ_file = ffdc_actions[machine_type]['FILES'][index]
+                    targ_file = ffdc_actions[machine_type][sub_type]['FILES'][index]
                 except IndexError:
                     targ_file = each_url.split('/')[-1]
                     print("\n\t[WARN] Missing filename to store data from redfish URL %s." % each_url)
@@ -332,19 +332,21 @@
 
     def protocol_ipmi(self,
                       ffdc_actions,
-                      machine_type):
+                      machine_type,
+                      sub_type):
         r"""
         Perform actions using ipmitool over LAN protocol.
 
         Description of argument(s):
         ffdc_actions        List of actions from ffdc_config.yaml.
         machine_type        OS Type of remote host.
+        sub_type            Group type of commands.
         """
 
         print("\n\t[Run] Executing commands to %s using %s" % (self.hostname, 'IPMI'))
         ipmi_files_saved = []
         progress_counter = 0
-        list_of_cmd = ffdc_actions[machine_type]['COMMANDS']
+        list_of_cmd = ffdc_actions[machine_type][sub_type]['COMMANDS']
         for index, each_cmd in enumerate(list_of_cmd, start=0):
             ipmi_parm = '-U ' + self.username + ' -P ' + self.password + ' -H ' \
                 + self.hostname + ' ' + each_cmd
@@ -352,9 +354,9 @@
             result = self.run_ipmitool(ipmi_parm)
             if result:
                 try:
-                    targ_file = ffdc_actions[machine_type]['FILES'][index]
+                    targ_file = ffdc_actions[machine_type][sub_type]['FILES'][index]
                 except IndexError:
-                    targ_file = each_url.split('/')[-1]
+                    targ_file = each_cmd.split('/')[-1]
                     print("\n\t[WARN] Missing filename to store data from IPMI %s." % each_cmd)
                     print("\t[WARN] Data will be stored in %s." % targ_file)
 
diff --git a/ffdc/ffdc_config.yaml b/ffdc/ffdc_config.yaml
index ee4ae43..cf895b7 100644
--- a/ffdc/ffdc_config.yaml
+++ b/ffdc/ffdc_config.yaml
@@ -13,199 +13,204 @@
 # Note: When a new remote type is added to this configuration file,
 #       it is also need to be added the list of supported OSes in ffdc_collector.py
 
-# Commands and File to take snapshot of linux based system.
-# Filename is <OS>_general.txt, where <OS> is in [OPENBMC, RHEL, UBUNTU]
-GENERAL:
-    COMMANDS:
-        - 'rm -rf /tmp/%s_general.txt'
-        - 'echo "++++++++++ cat /etc/os-release ++++++++++" >> /tmp/%s_general.txt 2>&1'
-        - 'cat /etc/os-release >> /tmp/%s_general.txt 2>&1'
-        - 'echo -e "\n++++++++++ cat /etc/timestamp ++++++++++" >> /tmp/%s_general.txt 2>&1'
-        - 'cat /etc/timestamp >> /tmp/%s_general.txt 2>&1'
-        - 'echo -e "\n++++++++++ uname -a ++++++++++" >> /tmp/%s_general.txt 2>&1'
-        - 'uname -a >> /tmp/%s_general.txt'
-        - 'echo -e "\n++++++++++ cat /etc/timestamp ++++++++++" >> /tmp/%s_general.txt 2>&1'
-        - 'cat /etc/timestamp >> /tmp/%s_general.txt 2>&1'
-        - 'echo -e "\n++++++++++ uptime;cat /proc/uptime ++++++++++" >> /tmp/%s_general.txt 2>&1'
-        - 'uptime >> /tmp/%s_general.txt 2>&1'
-        - 'cat /proc/uptime >> /tmp/%s_general.txt 2>&1'
-        - 'echo -e "\n++++++++++ df -hT ++++++++++" >> /tmp/%s_general.txt 2>&1'
-        - 'df -hT >> /tmp/%s_general.txt 2>&1'
-        - 'echo -e "\n++++++++++ date;/sbin/hwclock --show ++++++++++" >> /tmp/%s_general.txt 2>&1'
-        - 'date >> /tmp/%s_general.txt 2>&1'
-        - '/sbin/hwclock --show >> /tmp/%s_general.txt 2>&1'
-        - '/usr/bin/timedatectl >> /tmp/%s_general.txt 2>&1'
-        - 'echo -e "\n++++++++++ /usr/bin/obmcutil state ++++++++++" >> /tmp/%s_general.txt 2>&1'
-        - '/usr/bin/obmcutil state >> /tmp/%s_general.txt 2>&1'
-    FILES:
-        - '/tmp/%s_general.txt'
-    PROTOCOL:
-        - 'SSH'
-
 # Commands and Files to collect for a given OpenBMC system.
 OPENBMC:
-    COMMANDS:
-        - 'cat /sys/class/watchdog/watchdog1/bootstatus >/tmp/BMC_flash_side.txt 2>&1'
-        - 'grep -r . /sys/class/hwmon/* >/tmp/BMC_hwmon.txt 2>&1'
-        - 'top -n 1 -b >/tmp/BMC_proc_list.txt 2>&1'
-        - 'ls -Al /proc/*/fd/ >/tmp/BMC_proc_fd_active_list.txt 2>&1'
-        - 'journalctl --no-pager >/tmp/BMC_journalctl_nopager.txt 2>&1'
-        - 'journalctl -o json-pretty >/tmp/BMC_journalctl_pretty.json 2>&1'
-        - 'dmesg >/tmp/BMC_dmesg.txt 2>&1'
-        - 'cat /proc/cpuinfo >/tmp/BMC_procinfo.txt 2>&1'
-        - 'cat /proc/meminfo >/tmp/BMC_meminfo.txt 2>&1'
-        - 'systemctl status --all >/tmp/BMC_systemd.txt 2>&1'
-        - 'systemctl list-units --failed >/tmp/BMC_failed_service.txt 2>&1'
-        - 'systemctl list-jobs >/tmp/BMC_list_service.txt 2>&1'
-        - 'cat /var/log/obmc-console.log >/tmp/BMC_obmc_console.txt 2>&1'
-        - 'cat /var/log/obmc-console1.log >/tmp/BMC_obmc_console1.txt 2>&1'
-        - 'peltool -l >/tmp/PEL_logs_list.json 2>&1'
-        - 'peltool -a >/tmp/PEL_logs_display.json 2>&1'
-    FILES:
-        - '/tmp/BMC_flash_side.txt'
-        - '/tmp/BMC_hwmon.txt'
-        - '/tmp/BMC_proc_list.txt'
-        - '/tmp/BMC_proc_fd_active_list.txt'
-        - '/tmp/BMC_journalctl_nopager.txt'
-        - '/tmp/BMC_journalctl_pretty.json'
-        - '/tmp/BMC_dmesg.txt'
-        - '/tmp/BMC_procinfo.txt'
-        - '/tmp/BMC_meminfo.txt'
-        - '/tmp/BMC_systemd.txt'
-        - '/tmp/BMC_failed_service.txt'
-        - '/tmp/BMC_list_service.txt'
-        - '/tmp/BMC_obmc_console.txt'
-        - '/tmp/BMC_obmc_console1.txt'
-        - '/tmp/PEL_logs_list.json'
-        - '/tmp/PEL_logs_display.json'
-    PROTOCOL:
-        - 'SSH'
+    # Commands and File to take snapshot of linux based system.
+    # Filename is <OS>_general.txt, where <OS> is in [OPENBMC, RHEL, UBUNTU]
+    GENERAL:
+        COMMANDS:
+            - 'rm -rf /tmp/%s_general.txt'
+            - 'echo "++++++++++ cat /etc/os-release ++++++++++" >> /tmp/%s_general.txt 2>&1'
+            - 'cat /etc/os-release >> /tmp/%s_general.txt 2>&1'
+            - 'echo -e "\n++++++++++ cat /etc/timestamp ++++++++++" >> /tmp/%s_general.txt 2>&1'
+            - 'cat /etc/timestamp >> /tmp/%s_general.txt 2>&1'
+            - 'echo -e "\n++++++++++ uname -a ++++++++++" >> /tmp/%s_general.txt 2>&1'
+            - 'uname -a >> /tmp/%s_general.txt'
+            - 'echo -e "\n++++++++++ cat /etc/timestamp ++++++++++" >> /tmp/%s_general.txt 2>&1'
+            - 'cat /etc/timestamp >> /tmp/%s_general.txt 2>&1'
+            - 'echo -e "\n++++++++++ uptime;cat /proc/uptime ++++++++++" >> /tmp/%s_general.txt 2>&1'
+            - 'uptime >> /tmp/%s_general.txt 2>&1'
+            - 'cat /proc/uptime >> /tmp/%s_general.txt 2>&1'
+            - 'echo -e "\n++++++++++ df -hT ++++++++++" >> /tmp/%s_general.txt 2>&1'
+            - 'df -hT >> /tmp/%s_general.txt 2>&1'
+            - 'echo -e "\n++++++++++ date;/sbin/hwclock --show ++++++++++" >> /tmp/%s_general.txt 2>&1'
+            - 'date >> /tmp/%s_general.txt 2>&1'
+            - '/sbin/hwclock --show >> /tmp/%s_general.txt 2>&1'
+            - '/usr/bin/timedatectl >> /tmp/%s_general.txt 2>&1'
+            - 'echo -e "\n++++++++++ /usr/bin/obmcutil state ++++++++++" >> /tmp/%s_general.txt 2>&1'
+            - '/usr/bin/obmcutil state >> /tmp/%s_general.txt 2>&1'
+        FILES:
+            - '/tmp/%s_general.txt'
+        PROTOCOL:
+            - 'SSH'
 
-# Commands and Files to collect OPENBMC dumps
-OPENBMC_DUMPS:
-    COMMANDS:
-        - 'ls -AX /var/lib/systemd/coredump/core.*'
-        - 'ls -AX /var/lib/phosphor-debug-collector/dumps/*/*.tar.xz'
-        - 'ls -AX /var/lib/phosphor-debug-collector/hostbootdump/*/*.tar.gz'
-    FILES:
-        - '/var/lib/systemd/coredump/core.*'
-        - '/var/lib/phosphor-debug-collector/dumps/*/*.tar.xz'
-        - '/var/lib/phosphor-debug-collector/hostbootdump/*/*.tar.gz'
-    PROTOCOL:
-        - 'SSH'
+    OPENBMC_LOGS:
+        COMMANDS:
+            - 'cat /sys/class/watchdog/watchdog1/bootstatus >/tmp/BMC_flash_side.txt 2>&1'
+            - 'grep -r . /sys/class/hwmon/* >/tmp/BMC_hwmon.txt 2>&1'
+            - 'top -n 1 -b >/tmp/BMC_proc_list.txt 2>&1'
+            - 'ls -Al /proc/*/fd/ >/tmp/BMC_proc_fd_active_list.txt 2>&1'
+            - 'journalctl --no-pager >/tmp/BMC_journalctl_nopager.txt 2>&1'
+            - 'journalctl -o json-pretty >/tmp/BMC_journalctl_pretty.json 2>&1'
+            - 'dmesg >/tmp/BMC_dmesg.txt 2>&1'
+            - 'cat /proc/cpuinfo >/tmp/BMC_procinfo.txt 2>&1'
+            - 'cat /proc/meminfo >/tmp/BMC_meminfo.txt 2>&1'
+            - 'systemctl status --all >/tmp/BMC_systemd.txt 2>&1'
+            - 'systemctl list-units --failed >/tmp/BMC_failed_service.txt 2>&1'
+            - 'systemctl list-jobs >/tmp/BMC_list_service.txt 2>&1'
+            - 'cat /var/log/obmc-console.log >/tmp/BMC_obmc_console.txt 2>&1'
+            - 'cat /var/log/obmc-console1.log >/tmp/BMC_obmc_console1.txt 2>&1'
+            - 'peltool -l >/tmp/PEL_logs_list.json 2>&1'
+            - 'peltool -a >/tmp/PEL_logs_display.json 2>&1'
+        FILES:
+            - '/tmp/BMC_flash_side.txt'
+            - '/tmp/BMC_hwmon.txt'
+            - '/tmp/BMC_proc_list.txt'
+            - '/tmp/BMC_proc_fd_active_list.txt'
+            - '/tmp/BMC_journalctl_nopager.txt'
+            - '/tmp/BMC_journalctl_pretty.json'
+            - '/tmp/BMC_dmesg.txt'
+            - '/tmp/BMC_procinfo.txt'
+            - '/tmp/BMC_meminfo.txt'
+            - '/tmp/BMC_systemd.txt'
+            - '/tmp/BMC_failed_service.txt'
+            - '/tmp/BMC_list_service.txt'
+            - '/tmp/BMC_obmc_console.txt'
+            - '/tmp/BMC_obmc_console1.txt'
+            - '/tmp/PEL_logs_list.json'
+            - '/tmp/PEL_logs_display.json'
+        PROTOCOL:
+            - 'SSH'
 
-# URLs and Files for OPENBMC redfish
-# URLs and Files are one-to-one corresponding.
-# File contains the data returned from 'redfishtool GET URL'
-OPENBMC_REDFISH:
-    URL:
-        - '/xyz/openbmc_project/software/enumerate'
-        - '/xyz/openbmc_project/state/enumerate'
-        - '/org/open_power/enumerate'
-        - '/redfish/v1/AccountService/Accounts'
-        - '/redfish/v1/Managers/bmc/LogServices/Dump/Entries'
-        - '/redfish/v1/Systems/system/LogServices/Dump/Entries'
-        - '/redfish/v1/Systems/system/LogServices/EventLog/Entries'
-    FILES:
-        - 'software.json'
-        - 'bmc_state.json'
-        - 'openpower_control_occ_state.json'
-        - 'bmc_user_accounts.json'
-        - 'bmc_dump_entries.json'
-        - 'system_dumps_entries.json'
-        - 'event_log_entries.json'
-    PROTOCOL:
-        - 'REDFISH'
+    # Commands and Files to collect OPENBMC dumps
+    DUMP_LOGS:
+        COMMANDS:
+            - 'ls -AX /var/lib/systemd/coredump/core.*'
+            - 'ls -AX /var/lib/phosphor-debug-collector/dumps/*/*.tar.xz'
+            - 'ls -AX /var/lib/phosphor-debug-collector/hostbootdump/*/*.tar.gz'
+        FILES:
+            - '/var/lib/systemd/coredump/core.*'
+            - '/var/lib/phosphor-debug-collector/dumps/*/*.tar.xz'
+            - '/var/lib/phosphor-debug-collector/hostbootdump/*/*.tar.gz'
+        PROTOCOL:
+            - 'SSH'
 
-# Commands and Files to collect for via out of band IPMI.
-OPENBMC_IPMI:
-    COMMANDS:
-        - 'lan print'
-        - 'fru list'
-        - 'user list'
-    FILES:
-        - 'IPMI_LAN_print.txt'
-        - 'IPMI_FRU_list.txt'
-        - 'IPMI_USER_list.txt'
-    PROTOCOL:
-        - 'IPMI'
+    # URLs and Files for OPENBMC redfish
+    # URLs and Files are one-to-one corresponding.
+    # File contains the data returned from 'redfishtool GET URL'
+    REDFISH_LOGS:
+        URL:
+            - '/xyz/openbmc_project/software/enumerate'
+            - '/xyz/openbmc_project/state/enumerate'
+            - '/org/open_power/enumerate'
+            - '/redfish/v1/AccountService/Accounts'
+            - '/redfish/v1/Managers/bmc/LogServices/Dump/Entries'
+            - '/redfish/v1/Systems/system/LogServices/Dump/Entries'
+            - '/redfish/v1/Systems/system/LogServices/EventLog/Entries'
+        FILES:
+            - 'software.json'
+            - 'bmc_state.json'
+            - 'openpower_control_occ_state.json'
+            - 'bmc_user_accounts.json'
+            - 'bmc_dump_entries.json'
+            - 'system_dumps_entries.json'
+            - 'event_log_entries.json'
+        PROTOCOL:
+            - 'REDFISH'
+
+    # Commands and Files to collect for via out of band IPMI.
+    IPMI_LOGS:
+        COMMANDS:
+            - 'lan print'
+            - 'fru list'
+            - 'user list'
+        FILES:
+            - 'IPMI_LAN_print.txt'
+            - 'IPMI_FRU_list.txt'
+            - 'IPMI_USER_list.txt'
+        PROTOCOL:
+            - 'IPMI'
 
 # Commands and Files to collect for all Linux distributions
 LINUX:
-    COMMANDS:
-        - 'cat /sys/firmware/opal/msglog >/tmp/OS_msglog.txt 2>&1'
-        - 'ppc64_cpu --frequency >/tmp/OS_cpufrequency.txt 2>&1'
-        - 'dmesg >/tmp/OS_dmesg.txt 2>&1'
-        - 'cat /var/log/opal-prd* >/tmp/OS_opal_prd.txt 2>&1'
-        - 'cat /var/log/boot.log >/tmp/OS_boot.txt 2>&1'
-        - 'cat /proc/cpuinfo >/tmp/OS_procinfo.txt 2>&1'
-        - 'cat /proc/meminfo >/tmp/OS_meminfo.txt 2>&1'
-        - 'netstat -a >/tmp/OS_netstat.txt 2>&1'
-        - 'lspci >/tmp/OS_lspci.txt 2>&1'
-        - 'lscpu >/tmp/OS_lscpu.txt 2>&1'
-        - 'lscfg >/tmp/OS_lscfg.txt 2>&1'
-        - 'journalctl --no-pager -b > /tmp/OS_journalctl_nopager.txt  2>&1'
-    FILES:
-        - '/tmp/OS_msglog.txt'
-        - '/tmp/OS_cpufrequency.txt'
-        - '/tmp/OS_dmesg.txt'
-        - '/tmp/OS_opal_prd.txt'
-        - '/tmp/OS_boot.txt'
-        - '/tmp/OS_procinfo.txt'
-        - '/tmp/OS_meminfo.txt'
-        - '/tmp/OS_netstat.txt'
-        - '/tmp/OS_lspci.txt'
-        - '/tmp/OS_lscpu.txt'
-        - '/tmp/OS_lscfg.txt'
-        - '/tmp/OS_journalctl_nopager.txt'
-    PROTOCOL:
-        - 'SSH'
+    LINUX_LOGS:
+        COMMANDS:
+            - 'cat /sys/firmware/opal/msglog >/tmp/OS_msglog.txt 2>&1'
+            - 'ppc64_cpu --frequency >/tmp/OS_cpufrequency.txt 2>&1'
+            - 'dmesg >/tmp/OS_dmesg.txt 2>&1'
+            - 'cat /var/log/opal-prd* >/tmp/OS_opal_prd.txt 2>&1'
+            - 'cat /var/log/boot.log >/tmp/OS_boot.txt 2>&1'
+            - 'cat /proc/cpuinfo >/tmp/OS_procinfo.txt 2>&1'
+            - 'cat /proc/meminfo >/tmp/OS_meminfo.txt 2>&1'
+            - 'netstat -a >/tmp/OS_netstat.txt 2>&1'
+            - 'lspci >/tmp/OS_lspci.txt 2>&1'
+            - 'lscpu >/tmp/OS_lscpu.txt 2>&1'
+            - 'lscfg >/tmp/OS_lscfg.txt 2>&1'
+            - 'journalctl --no-pager -b > /tmp/OS_journalctl_nopager.txt  2>&1'
+        FILES:
+            - '/tmp/OS_msglog.txt'
+            - '/tmp/OS_cpufrequency.txt'
+            - '/tmp/OS_dmesg.txt'
+            - '/tmp/OS_opal_prd.txt'
+            - '/tmp/OS_boot.txt'
+            - '/tmp/OS_procinfo.txt'
+            - '/tmp/OS_meminfo.txt'
+            - '/tmp/OS_netstat.txt'
+            - '/tmp/OS_lspci.txt'
+            - '/tmp/OS_lscpu.txt'
+            - '/tmp/OS_lscfg.txt'
+            - '/tmp/OS_journalctl_nopager.txt'
+        PROTOCOL:
+            - 'SSH'
 
 # Commands and Files to collect for Ubuntu Linux only
 UBUNTU:
-    COMMANDS:
-        - '{ lsusb -t ; lsusb -v ; } >/tmp/OS_isub.txt 2>&1'
-        - 'tail -n 50000 /var/log/kern.log >/tmp/OS_kern.txt 2>&1'
-        - '{ cat /var/log/auth.log; cat /var/log/auth.log.1 ; } >/tmp/OS_authlog.txt 2>&1'
-        - 'tail -n 200000 /var/log/syslog >/tmp/OS_syslog.txt 2>&1'
-        - '{ uname -a; dpkg -s opal-prd; dpkg -s ipmitool ; } >/tmp/OS_info.txt 2>&1'
-        - 'rm -rf /tmp/sosreport*FFDC*'
-        - 'sosreport --batch --tmp-dir /tmp --ticket-number FFDC >/tmp/OS_sosreport.txt 2>&1'
-    FILES:
-        - '/tmp/OS_isub.txt'
-        - '/tmp/OS_kern.txt'
-        - '/tmp/OS_authlog.txt'
-        - '/tmp/OS_syslog.txt'
-        - '/tmp/OS_info.txt'
-        - '/tmp/OS_sosreport.txt'
-    PROTOCOL:
-        - 'SSH'
+    UBUNTU_LOGS:
+        COMMANDS:
+            - '{ lsusb -t ; lsusb -v ; } >/tmp/OS_isub.txt 2>&1'
+            - 'tail -n 50000 /var/log/kern.log >/tmp/OS_kern.txt 2>&1'
+            - '{ cat /var/log/auth.log; cat /var/log/auth.log.1 ; } >/tmp/OS_authlog.txt 2>&1'
+            - 'tail -n 200000 /var/log/syslog >/tmp/OS_syslog.txt 2>&1'
+            - '{ uname -a; dpkg -s opal-prd; dpkg -s ipmitool ; } >/tmp/OS_info.txt 2>&1'
+            - 'rm -rf /tmp/sosreport*FFDC*'
+            - 'sosreport --batch --tmp-dir /tmp --ticket-number FFDC >/tmp/OS_sosreport.txt 2>&1'
+        FILES:
+            - '/tmp/OS_isub.txt'
+            - '/tmp/OS_kern.txt'
+            - '/tmp/OS_authlog.txt'
+            - '/tmp/OS_syslog.txt'
+            - '/tmp/OS_info.txt'
+            - '/tmp/OS_sosreport.txt'
+        PROTOCOL:
+            - 'SSH'
 
 # Commands and Files to collect for RHE Linux only
 RHEL:
-    COMMANDS:
-        - '/usr/bin/ctversion -bv >/tmp/OS_rsct.txt 2>&1'
-        - 'cat /var/log/secure >/tmp/OS_secure.txt 2>&1'
-        - 'tail -n 200000 /var/log/messages >/tmp/OS_syslog.txt 2>&1'
-        - '{ lsb_release -a; cat /etc/redhat-release; uname -a; rpm -qa ; } >/tmp/OS_info.txt 2>&1'
-        - 'rm -rf /tmp/sosreport*FFDC*'
-        - 'sosreport --batch --tmp-dir /tmp --label FFDC >/tmp/OS_sosreport.txt 2>&1'
-    FILES:
-        - '/tmp/OS_rsct.txt'
-        - '/tmp/OS_secure.txt'
-        - '/tmp/OS_syslog.txt'
-        - '/tmp/OS_info.txt'
-        - '/tmp/OS_sosreport.txt'
-    PROTOCOL:
-        - 'SSH'
+    RHEL_LOGS:
+        COMMANDS:
+            - '/usr/bin/ctversion -bv >/tmp/OS_rsct.txt 2>&1'
+            - 'cat /var/log/secure >/tmp/OS_secure.txt 2>&1'
+            - 'tail -n 200000 /var/log/messages >/tmp/OS_syslog.txt 2>&1'
+            - '{ lsb_release -a; cat /etc/redhat-release; uname -a; rpm -qa ; } >/tmp/OS_info.txt 2>&1'
+            - 'rm -rf /tmp/sosreport*FFDC*'
+            - 'sosreport --batch --tmp-dir /tmp --label FFDC >/tmp/OS_sosreport.txt 2>&1'
+        FILES:
+            - '/tmp/OS_rsct.txt'
+            - '/tmp/OS_secure.txt'
+            - '/tmp/OS_syslog.txt'
+            - '/tmp/OS_info.txt'
+            - '/tmp/OS_sosreport.txt'
+        PROTOCOL:
+            - 'SSH'
 
 # Commands and Files to collect for AIX only
 AIX:
-    COMMANDS:
-        - 'errpt >/tmp/OS_errpt.txt 2>&1 ; errclear 0;'
-        - 'bindprocessor -q >/tmp/OS_processors.txt 2>&1'
-    FILES:
-        - '/tmp/OS_errpt.txt'
-        - '/tmp/OS_processors.txt'
-    PROTOCOL:
-        - 'SSH'
+    AIX_LOGS:
+        COMMANDS:
+            - 'errpt >/tmp/OS_errpt.txt 2>&1 ; errclear 0;'
+            - 'bindprocessor -q >/tmp/OS_processors.txt 2>&1'
+        FILES:
+            - '/tmp/OS_errpt.txt'
+            - '/tmp/OS_processors.txt'
+        PROTOCOL:
+            - 'SSH'