#!/usr/bin/env bash
set -euo pipefail

WORKSPACE=$(unset CDPATH && cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
source "$WORKSPACE/../lib/lib.sh"

VENDOR=${1:-"aws"}
ENV=${2:-"dev"}
REGION=${3:-""}
LOGICAL_REGION=${4:-"$REGION"}
VALUES_FILE=${5:-"$WORKSPACE/regional-server/envs/${ENV}-${VENDOR}-${LOGICAL_REGION}/values.yaml"}

: "${AUTH0_CLIENT_ID:?AUTH0_CLIENT_ID is required for managed ops deploys}"
: "${AUTH0_CLIENT_SECRET:?AUTH0_CLIENT_SECRET is required for managed ops deploys}"

CHARTS="$WORKSPACE/../charts"
OPS_API_BASE_URL="${O11Y_OPS_API_BASE_URL:-$(resolve_managed_ops_api_base_url "$ENV")}"
prepare_bootstrap_ops_api
OPS_API_BASE_URL="$(resolve_effective_ops_api_base_url "$OPS_API_BASE_URL")"
REGION_ID="${VENDOR}-${REGION}"
REGIONAL_SERVER_VERSION="$(read_chart_version "$CHARTS/regional-server")"
if [[ ! -f "$VALUES_FILE" ]]; then
  echo "Failed to deploy regional-server: values file not found: $VALUES_FILE"
  exit 1
fi

if [[ "${BOOTSTRAP:-false}" == "true" ]]; then
  echo "using bootstrap local ops API base URL: $OPS_API_BASE_URL"
else
  echo "using globalserver ops API base URL: $OPS_API_BASE_URL"
fi
echo "start deploying regional-server via ops API"
if ! create_or_update_helmrelease "$OPS_API_BASE_URL" "regional-server" "observability" "regional-server" "$VALUES_FILE" "$REGIONAL_SERVER_VERSION" "$REGION_ID" "$LOGICAL_REGION"; then
  echo "Failed to deploy regional-server"
  exit 1
fi
if ! wait_for_helmrelease_ready "$OPS_API_BASE_URL" "regional-server" "$REGION_ID" "$LOGICAL_REGION"; then
  echo "Failed waiting for regional-server to become Ready"
  exit 1
fi
echo "end deploying regional-server via ops API"
