blob: 9f404dc3d1ed8b9d3212d23a39c39938ecc29bce [file] [log] [blame]
#!/bin/bash
# This shell script sets all the group D-Bus objects
# in /xyz/openbmc_project/led/groups/ to true or false.
# If the group is in excluded list, then, they are not
# altered
function usage()
{
echo "led-set-all-groups-asserted.sh [true/false] [optional groups to be excluded]"
echo "Example: led-set-all-groups-asserted.sh true"
echo "Example: led-set-all-groups-asserted.sh false bmc_booted power_on"
return 0;
}
# We need at least 1 argument
if [ $# -lt 1 ]; then
echo "At least ONE argument needed";
usage;
exit 1;
fi
# User passed in argument [true/false]
action=$1
# If it is not "true" or "false", exit
if [ "$action" != "true" ] && [ "$action" != "false" ]; then
echo "Bad argument $action passed";
usage;
exit 1;
fi
# Get the excluded groups, where $@ is all the arguments passed
index=2;
excluded_groups=""
for arg in "$@"
do
if [ "$arg" == "$action" ]
then
# Must be true/false
continue
elif [ $index -eq $# ]
then
excluded_groups="${excluded_groups}$arg"
else
excluded_groups="${excluded_groups}$arg|"
fi
((index+=1))
done
# Now, set the LED group to what has been requested
if [ ${#excluded_groups} -eq 0 ]
then
for line in $(busctl tree xyz.openbmc_project.LED.GroupManager | grep -e groups/ | awk -F 'xyz' '{print "/xyz" $2}');
do
busctl set-property xyz.openbmc_project.LED.GroupManager "$line" xyz.openbmc_project.Led.Group Asserted b "$action";
done
else
for line in $(busctl tree xyz.openbmc_project.LED.GroupManager | grep -e groups/ | grep -Ev "$excluded_groups" | awk -F 'xyz' '{print "/xyz" $2}');
do
busctl set-property xyz.openbmc_project.LED.GroupManager "$line" xyz.openbmc_project.Led.Group Asserted b "$action";
done
fi
# Return Success
exit 0