# Copyright 2021 The ChromiumOS Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

description     "Job to start nebraska.py"
author          "chromeos-core-services@google.com"

start on starting update-engine
stop on stopping update-engine

# We only run this on test images, but its a good idea to set this so we can
# change the default.
oom score -100

env LD_LIBRARY_PATH="/usr/local/@LIBDIR@"
env NEBRASKA_CONFIG_FILE=/usr/local/nebraska/config.json
env NEBRASKA_CONFIG_POSTED=false
env OMAHA_FIELD="CHROMEOS_AUSERVER="
env STATEFUL_LSB_RELEASE_FILE=/mnt/stateful_partition/etc/lsb-release

pre-start script
  # If no JSON file for updating nebraska's config was provided, don't run
  # nebraska. We only want to run nebraska when we intend to do so.
  if [ ! -f "${NEBRASKA_CONFIG_FILE}" ]; then
    logger -t "${UPSTART_JOB}" "Can't run nebraska.py without its config file."
    stop
    exit 0
  fi

  logger -t "${UPSTART_JOB}" "Running nebraska.py."
end script

exec nebraska.py

post-start script
  # Wait for the port file to appear for no more than 3 seconds.
  nebraska.py --poll
  if [ "$?" -ne 0 ]; then
    logger -t "${UPSTART_JOB}" "Failed to find pid/port files of nebraska.py."
    stop
    exit 0
  fi

  NEBRASKA_URL="http://localhost:$(cat /run/nebraska/port)"
  curl -X POST -d @"${NEBRASKA_CONFIG_FILE}" \
      "${NEBRASKA_URL}/update_config"
  NEBRASKA_CONFIG_POSTED=true

  # Redirect the requests of update_engine to nebraska.
  mkdir -p "$(dirname "${STATEFUL_LSB_RELEASE_FILE}")" && \
    touch "${STATEFUL_LSB_RELEASE_FILE}"
  sed -i "/${OMAHA_FIELD}/d" "${STATEFUL_LSB_RELEASE_FILE}"
  echo "${OMAHA_FIELD}${NEBRASKA_URL}/update" >> "${STATEFUL_LSB_RELEASE_FILE}"
end script

post-stop script
  # Only clean if nebraska config is provided.
  if [ "${NEBRASKA_CONFIG_POSTED}" = true ]; then
    sed -i "/${OMAHA_FIELD}/d" "${STATEFUL_LSB_RELEASE_FILE}"
  fi
end script
