#!/bin/bash
# Copyright 2021 Google LLC
# Copyright 2021 Quanta Computer Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

main() {
  local pgd_val
  pgd_val="$(busctl get-property -j xyz.openbmc_project.State.Chassis0 \
           /xyz/openbmc_project/state/chassis0 xyz.openbmc_project.State.Chassis \
           CurrentPowerState | jq -r '.["data"]')"

  if [[ $pgd_val != 'xyz.openbmc_project.State.Chassis.PowerState.On' ]]; then
    echo "Setting failsafe assuming host is off" >&2
    systemctl start --no-block gbs-host-s5-set-failsafe
  else
    echo "Setting failsafe assuming host is running" >&2
    systemctl start --no-block gbs-host-s0-set-failsafe
  fi
}

# Exit without running main() if sourced
return 0 2>/dev/null

main "$@"
