---
# This yaml formatted file contains defaults items to collect FFDC for the targeted system
# COMMANDS - List of commands to be run on the corresponding targeted system (inband)
#            to generate and/or collect data
# FILES    - List of files; with complete path; on the corresponding targeted system
#            to be copied to external destination
# PROTOCOL - Protocol used to communicate with targeted system; ssh, Rest, redfish, etc
#
# Note: Items in COMMANDS and FILES are not necessarily one-to-one correspondence.
#       For example, a file could have been created by an internal process,
#       and is listed in FILES to be collected.
#

# Commands and Files to collect for a given OpenBMC system.
OPENBMC:
    # 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/*BMC_* /tmp/PEL_* /tmp/pldm* /tmp/PLDM* /tmp/GUARD*
              /tmp/fan_* /tmp/DEVTREE /tmp/bmcweb_*"
            - 'echo "++++++++++ cat /etc/os-release ++++++++++" >>
              /tmp/OPENBMC_general.txt'
            - "cat /etc/os-release >> /tmp/OPENBMC_general.txt"
            - 'echo -e "\n++++++++++ cat /etc/timestamp ++++++++++" >>
              /tmp/OPENBMC_general.txt'
            - "cat /etc/timestamp >> /tmp/OPENBMC_general.txt"
            - 'echo -e "\n++++++++++ uname -a ++++++++++" >>
              /tmp/OPENBMC_general.txt'
            - "uname -a >> /tmp/OPENBMC_general.txt"
            - 'echo -e "\n++++++++++ cat /etc/timestamp ++++++++++" >>
              /tmp/OPENBMC_general.txt'
            - "cat /etc/timestamp >> /tmp/OPENBMC_general.txt"
            - 'echo -e "\n++++++++++ uptime;cat /proc/uptime ++++++++++" >>
              /tmp/OPENBMC_general.txt'
            - "uptime >> /tmp/OPENBMC_general.txt"
            - "cat /proc/uptime >> /tmp/OPENBMC_general.txt"
            - 'echo -e "\n++++++++++ df -hT ++++++++++" >>
              /tmp/OPENBMC_general.txt'
            - "df -hT >> /tmp/OPENBMC_general.txt"
            - 'echo -e "\n++++++++++ date;/sbin/hwclock --show ++++++++++" >>
              /tmp/OPENBMC_general.txt'
            - "date >> /tmp/OPENBMC_general.txt"
            - "/sbin/hwclock --show >> /tmp/OPENBMC_general.txt"
            - "/usr/bin/timedatectl >> /tmp/OPENBMC_general.txt"
            - 'echo -e "\n++++++++++ /usr/bin/obmcutil state ++++++++++" >>
              /tmp/OPENBMC_general.txt'
            - "/usr/bin/obmcutil state >> /tmp/OPENBMC_general.txt"
        FILES:
            - "/tmp/OPENBMC_general.txt"
        PROTOCOL:
            - "SSH"

    OPENBMC_LOGS:
        COMMANDS:
            - "cat /sys/class/watchdog/watchdog1/bootstatus
              >/tmp/BMC_flash_side.txt"
            - "grep -r . /sys/class/hwmon/* >/tmp/BMC_hwmon.txt"
            - "top -n 1 -b >/tmp/BMC_proc_list.txt"
            - "ls -Al /proc/*/fd/ >/tmp/BMC_proc_fd_active_list.txt"
            - "journalctl --no-pager >/tmp/BMC_journalctl_nopager.txt"
            - "journalctl -o json-pretty >/tmp/BMC_journalctl_pretty.json"
            - "dmesg >/tmp/BMC_dmesg.txt"
            - "cat /proc/cpuinfo >/tmp/BMC_procinfo.txt"
            - "cat /proc/meminfo >/tmp/BMC_meminfo.txt"
            - "systemctl status --all >/tmp/BMC_systemd.txt"
            - "systemctl list-units --failed >/tmp/BMC_failed_service.txt"
            - "systemctl list-jobs >/tmp/BMC_list_service.txt"
            - "cat /var/log/obmc-console.log >/tmp/BMC_obmc_console.txt"
            - "cat /var/log/obmc-console1.log >/tmp/BMC_obmc_console1.txt"
            - "peltool -l >/tmp/PEL_logs_list.json"
            - { "peltool -a >/tmp/PEL_logs_display.json": 600 }
            - {
                  "peltool  -l -a -f >/tmp/PEL_logs_complete_list.json 2>&1": 1200,
              }
            - {
                  "peltool -a -f -h>/tmp/PEL_logs_complete_display.json 2>&1": 1200,
              }
            - {
                  ? "strace -p $(pidof pldmd) -o /tmp/pldmd_strace.txt & sleep
                    60 ; kill $!"
                  : 70,
              }
            - "hexdump -C /var/lib/phosphor-logging/extensions/pels/badPEL
              >/tmp/PEL_logs_badPEL.txt"
            - "guard -l >/tmp/GUARD_list.txt"
            - "pldmtool fru getfrurecordtable>/tmp/PLDM_fru_record.txt"
            - "killall -s SIGUSR1 pldmd; sleep 5"
            - "fanctl dump"
            - "killall -s SIGUSR1 phosphor-fan-monitor; sleep 5"
            - "cat /var/lib/phosphor-software-manager/pnor/rw/DEVTREE >
              /tmp/DEVTREE"
            - "cat /home/root/bmcweb_persistent_data.json >
              /tmp/bmcweb_persistent_data.json"
            - "/usr/bin/vpd-tool -i > /tmp/vpd-inventory.txt"
        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_complete_list.json"
            - "/tmp/PEL_logs_complete_display.json"
            - "/tmp/PEL_logs_display.json"
            - "/tmp/pldmd_strace.txt"
            - "/tmp/PEL_logs_badPEL.txt"
            - "/tmp/GUARD_list.txt"
            - "/tmp/PLDM_fru_record.txt"
            - "/tmp/pldm_flight_recorder"
            - "/tmp/fan_control_dump.json"
            - "/tmp/fan_monitor_dump.json"
            - "/tmp/DEVTREE"
            - "/tmp/bmcweb_persistent_data.json"
            - "/tmp/vpd-inventory.txt"
        PROTOCOL:
            - "SSH"

    # DUMP_LOGS: This section provides option to 'SCP if file exist'.
    #     COMMANDS: filename is preceded by ls -AX '.
    #     FILES: is not needed and is ignored if exists.
    DUMP_LOGS:
        COMMANDS:
            - "ls -AX /var/lib/systemd/coredump/core.*"
            - "ls -AX /var/lib/phosphor-debug-collector/dumps/*/*"
            - "ls -AX /var/lib/phosphor-debug-collector/hostbootdump/*/*"
        PROTOCOL:
            - "SCP"

    # 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:
        COMMANDS:
            - redfishtool -u ${username} -p ${password} -r
              ${hostname}:${port_https} -S Always raw GET
              /redfish/v1/AccountService/Accounts
            - redfishtool -u ${username} -p ${password} -r
              ${hostname}:${port_https} -S Always raw GET
              /redfish/v1/Managers/${manager_id}/LogServices/Dump/Entries
            - redfishtool -u ${username} -p ${password} -r
              ${hostname}:${port_https} -S Always raw GET
              /redfish/v1/Systems/system/LogServices/Dump/Entries
            - redfishtool -u ${username} -p ${password} -r
              ${hostname}:${port_https} -S Always raw GET
              /redfish/v1/Systems/system/LogServices/EventLog/Entries
            - plugin:
                  - plugin_name: plugin.redfish.enumerate_request
                  - plugin_args:
                        - ${hostname}:${port_https}
                        - ${username}
                        - ${password}
                        - /redfish/v1/
                        - json
        FILES:
            - "REDFISH_bmc_user_accounts.json"
            - "REDFISH_bmc_dump_entries.json"
            - "REDFISH_system_dumps_entries.json"
            - "REDFISH_event_log_entries.json"
            - "REDFISH_enumerate_v1.json"
        PROTOCOL:
            - "REDFISH"

    # Commands and Files to collect for via out of band IPMI.
    IPMI_LOGS:
        COMMANDS:
            - ipmitool -I lanplus -C 17 -U ${username} -P ${password} -H
              ${hostname} -p ${port_ipmi} lan print
            - ipmitool -I lanplus -C 17 -U ${username} -P ${password} -H
              ${hostname} -p ${port_ipmi} fru list
            - ipmitool -I lanplus -C 17 -U ${username} -P ${password} -H
              ${hostname} -p ${port_ipmi} 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:
    LINUX_LOGS:
        COMMANDS:
            - "cat /sys/firmware/opal/msglog >/tmp/OS_msglog.txt"
            - "ppc64_cpu --frequency >/tmp/OS_cpufrequency.txt"
            - "dmesg >/tmp/OS_dmesg.txt"
            - "cat /var/log/opal-prd* >/tmp/OS_opal_prd.txt"
            - "cat /var/log/boot.log >/tmp/OS_boot.txt"
            - "cat /proc/cpuinfo >/tmp/OS_procinfo.txt"
            - "cat /proc/meminfo >/tmp/OS_meminfo.txt"
            - "netstat -a >/tmp/OS_netstat.txt"
            - "lspci >/tmp/OS_lspci.txt"
            - "lscpu >/tmp/OS_lscpu.txt"
            - "lscfg >/tmp/OS_lscfg.txt"
            - "journalctl --no-pager -b > /tmp/OS_journalctl_nopager.txt "
        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:
    GENERAL:
        COMMANDS:
            - "rm -rf /tmp/UBUNTU_general.txt"
            - 'echo "++++++++++ UBUNTU Rleasae ++++++++++" >
              /tmp/UBUNTU_general.txt'
            - "cat /etc/os-release >> /tmp/UBUNTU_general.txt"
            - 'echo "\n++++++++++ Time stamp ++++++++++" >>
              /tmp/UBUNTU_general.txt'
            - "date >> /tmp/UBUNTU_general.txt"
            - 'echo  "\n++++++++++ uname -a ++++++++++" >>
              /tmp/UBUNTU_general.txt'
            - "uname -a >> /tmp/UBUNTU_general.txt"
            - 'echo "\n++++++++++ uptime ++++++++++" >> /tmp/UBUNTU_general.txt'
            - "uptime >> /tmp/UBUNTU_general.txt"
        FILES:
            - "/tmp/UBUNTU_general.txt"
        PROTOCOL:
            - "SSH"
    UBUNTU_LOGS:
        COMMANDS:
            - "{ cat /etc/os-release; uname -a; rpm -qa ; } >/tmp/OS_info.txt"
            - "tail -n 200000 /var/log/messages >/tmp/OS_syslog.txt"
            - "rm -rf /tmp/sosreport*FFDC*"
            - {
                  ? "sosreport --batch --tmp-dir /tmp --label FFDC
                    >/tmp/OS_sosreport.txt"
                  : 1200,
              }
            - "tar -zcvf /tmp/crash.tar.gz /var/crash"
        FILES:
            - "/tmp/OS_info.txt"
            - "/tmp/OS_syslog.txt"
            - "/tmp/OS_sosreport.txt"
            - "/tmp/sosreport*.tar.xz"
            - "/tmp/crash.tar.gz"
        PROTOCOL:
            - "SSH"
    DUMP_LOGS:
        COMMANDS:
            - "ls -AX /tmp/htx/htxerr"
            - "ls -AX /tmp/htx/htxmsg"
        PROTOCOL:
            - "SCP"

# Commands and Files to collect for RHE Linux only
RHEL:
    GENERAL:
        COMMANDS:
            - "rm -rf /tmp/RHEL_general.txt"
            - 'echo "++++++++++ RHEL Rleasae ++++++++++" > /tmp/RHEL_general.txt'
            - "cat /etc/os-release >> /tmp/RHEL_general.txt"
            - 'echo -e "\n++++++++++ Time stamp ++++++++++" >>
              /tmp/RHEL_general.txt'
            - "date >> /tmp/RHEL_general.txt"
            - 'echo -e "\n++++++++++ uname -a ++++++++++" >>
              /tmp/RHEL_general.txt'
            - "uname -a >> /tmp/RHEL_general.txt"
            - 'echo -e "\n++++++++++ uptime ++++++++++" >> /tmp/RHEL_general.txt'
            - "uptime >> /tmp/RHEL_general.txt"
        FILES:
            - "/tmp/RHEL_general.txt"
        PROTOCOL:
            - "SSH"
    RHEL_LOGS:
        COMMANDS:
            - "{ cat /etc/os-release; uname -a; rpm -qa ; } >/tmp/OS_info.txt"
            - "tail -n 200000 /var/log/messages >/tmp/OS_syslog.txt"
            - "rm -rf /tmp/sosreport*FFDC*"
            - {
                  ? "sosreport --batch --tmp-dir /tmp --label FFDC
                    >/tmp/OS_sosreport.txt"
                  : 1200,
              }
            - "tar -zcvf /tmp/crash.tar.gz /var/crash"
        FILES:
            - "/tmp/OS_info.txt"
            - "/tmp/OS_syslog.txt"
            - "/tmp/OS_sosreport.txt"
            - "/tmp/sosreport*.tar.xz"
            - "/tmp/crash.tar.gz"
        PROTOCOL:
            - "SSH"
    DUMP_LOGS:
        COMMANDS:
            - "ls -AX /tmp/htx/htxerr"
            - "ls -AX /tmp/htx/htxmsg"
        PROTOCOL:
            - "SCP"

# Commands and Files to collect for SLES Linux only
SLES:
    GENERAL:
        COMMANDS:
            - "rm -rf /tmp/SLES_general.txt"
            - 'echo "++++++++++ SLES Rleasae ++++++++++" > /tmp/SLES_general.txt'
            - "cat /etc/os-release >> /tmp/SLES_general.txt"
            - 'echo "\n++++++++++ Time stamp ++++++++++" >>
              /tmp/SLES_general.txt'
            - "date >> /tmp/SLES_general.txt"
            - 'echo "\n++++++++++ uname -a ++++++++++" >> /tmp/SLES_general.txt'
            - "uname -a >> /tmp/SLES_general.txt"
            - 'echo "\n++++++++++ uptime ++++++++++" >> /tmp/SLES_general.txt'
            - "uptime >> /tmp/SLES_general.txt"
        FILES:
            - "/tmp/SLES_general.txt"
        PROTOCOL:
            - "SSH"
    SLES_LOGS:
        COMMANDS:
            - "{ cat /etc/os-release; uname -a; rpm -qa ; } >/tmp/OS_info.txt"
            - "tail -n 200000 /var/log/messages >/tmp/OS_syslog.txt"
            - "rm -rf /tmp/scc*.txz.md5"
            - { "supportconfig >/tmp/OS_supportconfig.txt": 1200 }
            - "cp /var/log/scc*.txz.md5 /tmp/"
            - "tar -zcvf /tmp/crash.tar.gz /var/crash"
        FILES:
            - "/tmp/OS_info.txt"
            - "/tmp/OS_syslog.txt"
            - "/tmp/OS_supportconfig.txt"
            - "/tmp/scc*.txz.md5"
            - "/tmp/crash.tar.gz"
        PROTOCOL:
            - "SSH"
    DUMP_LOGS:
        COMMANDS:
            - "ls -AX /tmp/htx/htxerr"
            - "ls -AX /tmp/htx/htxmsg"
        PROTOCOL:
            - "SCP"

# Commands and Files to collect for AIX only
AIX:
    GENERAL:
        COMMANDS:
            - "rm -rf /tmp/AIX_general.txt"
            - 'echo "++++++++++ AIX Release ++++++++++" > /tmp/AIX_general.txt'
            - "cat /proc/version | tail -1 >> /tmp/AIX_general.txt"
            - 'echo "\n++++++++++ Time stamp ++++++++++" >> /tmp/AIX_general.txt'
            - "date >> /tmp/AIX_general.txt"
            - 'echo  "\n++++++++++ uname -a ++++++++++" >> /tmp/AIX_general.txt'
            - "uname -a >> /tmp/AIX_general.txt"
            - 'echo "\n++++++++++ uptime ++++++++++" >> /tmp/AIX_general.txt'
            - "uptime >> /tmp/AIX_general.txt"
            - 'echo "\n++++++++++ System Info ++++++++++" >>
              /tmp/AIX_general.txt'
            - "prtconf | head -15 >> /tmp/AIX_general.txt"
        FILES:
            - "/tmp/AIX_general.txt"
        PROTOCOL:
            - "SSH"
    AIX_LOGS:
        COMMANDS:
            - "errpt -a >/tmp/OS_errpt.txt ; errclear 0;"
            - "bindprocessor -q >/tmp/OS_processors.txt"
        FILES:
            - "/tmp/OS_errpt.txt"
            - "/tmp/OS_processors.txt"
        PROTOCOL:
            - "SSH"
    DUMP_LOGS:
        COMMANDS:
            - "ls -AX /tmp/htx/htxerr"
            - "ls -AX /tmp/htx/htxmsg"
        PROTOCOL:
            - "SCP"