# Template example on how you can create you own customize YAML to drive the
# log collection for your system
# Except for COMMAND, FILES and PROTOCOL, rest depends on how you want to
# name the block, sub block, commands construct and file name.

MY_BLOCK:
    MY_LOGS:
        COMMANDS:
            - 'dmesg >/tmp/dmesg.txt'
        FILES:
            - '/tmp/dmesg.txt'
        PROTOCOL:
            - 'SSH'

    REDFISH_LOGS:
        COMMANDS:
            - redfishtool -u ${username} -p ${password} -r ${hostname} -S Always raw GET /redfish/v1/AccountService/Accounts
        FILES:
            - 'REDFISH_bmc_user_accounts.json'
        PROTOCOL:
            - 'REDFISH'

    IPMI_LOGS:
        COMMANDS:
            - ipmitool -I lanplus -C 17 -U ${username} -P ${password} -H ${hostname} lan print
        FILES:
            - 'IPMI_LAN_print.txt'
        PROTOCOL:
            - 'IPMI'

    SHELL_LOGS:
        COMMANDS:
            - plugin:
              - plugin_name: plugin.ssh_execution.ssh_execute_cmd
              - plugin_args:
                - ${hostname}
                - ${username}
                - ${password}
                - cat /etc/os-release
                - 3
              - plugin_error: exit_on_error
        FILES:
            - plugin_release.txt
        PROTOCOL:
            - 'SHELL'

    DUMP_LOGS:
        COMMANDS:
            - 'ls -AX /var/lib/systemd/coredump/core.*'
        PROTOCOL:
            - 'SCP'
