blob: b3dc0f459cfc384f4767778286b4bffcf833b3b9 [file]
#!/bin/bash
HELP_MSG="
Usage: power-rail-event-logger <event> <gpio_name>
<event> is the power rail event to log,
e.g. assert / deassert.
<board>_<gpio_name> is defined in json file,
e.g. mtia-blade-1_pwrgd
"
if [ "$#" -ne 2 ]; then
echo "$HELP_MSG"
exit 1
fi
message="$2"
ASSERT_MSG_ID="xyz.openbmc_project.State.Power.PowerRailFault"
DEASSERT_MSG_ID="xyz.openbmc_project.State.Power.PowerRailFaultRecovered"
# Extract board name and gpio name from the message
# message format:
# <board_name>-<board_number>_<gpio_name>
if [[ $message == fcb* ]]; then
board_name_with_num=${message}
# FCB only has one power rail gpio for AC signal
gpio_name="pwrgd"
elif [[ $message == mtia-blade* || $message == network-blade* ]]; then
board_name_with_num="${message%%_*}"
gpio_name="${message#*_}"
else
echo "Unknown message format: $message"
exit 1
fi
board_name="${board_name_with_num%%-*}"
board_number="${board_name_with_num##*-}"
if [[ $board_name == "mtia" ]]; then
device_path="/xyz/openbmc_project/inventory/system/board/Minerva_MTIA_Blade_${board_number}/${gpio_name}"
elif [[ $board_name == "network" ]]; then
device_path="/xyz/openbmc_project/inventory/system/board/Minerva_Network_Blade_${board_number}/${gpio_name}"
elif [[ $board_name == "fcb" ]]; then
device_path="/xyz/openbmc_project/inventory/system/board/Minerva_Fan_Board_${board_number}/${gpio_name}"
else
echo "Unknown board name: $board_name"
exit 1
fi
stash_file="/run/${message}.log_entry"
case "$1" in
"assert")
if [ ! -s "$stash_file" ]; then
/usr/bin/log-create "$ASSERT_MSG_ID" --json \
"{ \"POWER_RAIL\": \"${device_path}\", \"FAILURE_DATA\": \"${gpio_name}\"}" \
> "${stash_file}"
fi
;;
"deassert")
# If the stash file exists, resolve the log entry and remove the stash file
if [ -s "${stash_file}" ]; then
log-resolve -p "$(< "${stash_file}")" && rm "${stash_file}"
fi
# Always create a deassert log entry
/usr/bin/log-create "$DEASSERT_MSG_ID" --json \
"{ \"POWER_RAIL\": \"${device_path}\"}"
;;
*)
echo "Not supported event: $1"
echo "$HELP_MSG"
exit 1
;;
esac
exit 0