#!/bin/bash
# Usage of this utility
function usage() {
	echo "usage: power-util mb [on|off|status|cycle|reset]";
	echo "       power-util sled-cycle"
}

power_off() {
	echo "Shutting down Server $2"
	busctl set-property xyz.openbmc_project.State.Chassis /xyz/openbmc_project/state/chassis0 xyz.openbmc_project.State.Chassis RequestedPowerTransition s xyz.openbmc_project.State.Chassis.Transition.Off
}

power_on() {
	echo "Powering on Server $2"
	busctl set-property xyz.openbmc_project.State.Chassis /xyz/openbmc_project/state/chassis0 xyz.openbmc_project.State.Chassis RequestedPowerTransition s xyz.openbmc_project.State.Chassis.Transition.On
}

power_status() {
	st=$(busctl get-property xyz.openbmc_project.State.Chassis /xyz/openbmc_project/state/chassis0 xyz.openbmc_project.State.Chassis CurrentPowerState | cut -d"." -f6)
	if [ "$st" == "On\"" ]; then
		echo "on"
	else
		echo "off"
	fi
}

power_reset() {
	echo "Reset on server $2"
	busctl set-property xyz.openbmc_project.State.Chassis /xyz/openbmc_project/state/chassis0 xyz.openbmc_project.State.Chassis RequestedPowerTransition s xyz.openbmc_project.State.Chassis.Transition.Reset
}

sled_cycle() {
	i2cset -y 7 0x45 0xd9 c
}

if [ $1 == "sled-cycle" ]; then
	echo "SLED_CYCLE starting at $(date)"
	sled_cycle
	exit 0;
fi

if [ $# -lt 2 ]; then
	echo "Total number of parameter=$#"
	echo "Insufficient parameter"
	usage;
	exit 0;
fi

if [ $1 != "mb" ]; then
	echo "Invalid parameter1=$1"
	usage;
	exit 0;
fi

if [ $2 = "on" ]; then
  if [ $(power_status) == "off" ]; then
	  power_on
  fi
elif [ $2 = "off" ]; then
  if [ $(power_status) == "on" ]; then
	  power_off
  fi
elif [ $2 == "cycle" ]; then
  if [ $(power_status) == "on" ]; then
	  power_off
  else
    echo "WARNING: Powering on server"
  fi
	power_on
elif [ $2 == "reset" ]; then
  if [ $(power_status) == "on" ]; then
	  power_reset
  else
    echo "ERROR: Server not powered on"
  fi
elif [ $2 == "status" ]; then
	power_status
else
	echo "Invalid parameter2=$2"
	usage;
fi

exit 0;
