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

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

MODE="${1:-regional}"
ENV="${2:-dev}"
CLUSTER="${3:?cluster is required}"
REGION="${4:-}"
LOGICAL_REGION="${5:-}"
VENDOR="${6:-aws}"

if [[ "$MODE" != "regional" ]]; then
  echo "Skipping ops-server bootstrap for mode $MODE"
  exit 0
fi

VALUES_FILE="$WORKSPACE/ops-server/envs/${ENV}/regional-${VENDOR}-${LOGICAL_REGION}.yaml"
if [[ ! -f "$VALUES_FILE" ]]; then
  echo "Error: ops-server values file not found: $VALUES_FILE" >&2
  exit 1
fi

CHARTS="$ROOT/deployments/charts"
OPS_SERVER_VERSION="$(read_chart_version "$CHARTS/ops-server")"

echo "Installing ops-server (version $OPS_SERVER_VERSION)"
helm_adopt_apply ops-server ops-system "$CHARTS/ops-server" --wait -f "$VALUES_FILE"

echo "Waiting for ops-server rollout"
kubectl -n ops-system rollout status deployment/ops-server --timeout=5m

bootstrap_api_url="$(resolve_managed_ops_api_base_url "$ENV")"
bootstrap_api_url="${O11Y_OPS_API_BASE_URL:-$bootstrap_api_url}"
prepare_bootstrap_ops_api
bootstrap_api_url="$(resolve_effective_ops_api_base_url "$bootstrap_api_url")"
region_id="${VENDOR}-${REGION}"

if [[ "${BOOTSTRAP:-false}" == "true" ]]; then
  echo "Using bootstrap local ops API base URL: $bootstrap_api_url"
else
  echo "Bootstrap ops-server URL: $bootstrap_api_url"
fi

echo "Self-adopting ops-server HelmRelease"
create_or_update_helmrelease \
  "$bootstrap_api_url" "ops-server" "ops-system" "ops-server" \
  "$VALUES_FILE" "$OPS_SERVER_VERSION" "$region_id" "$LOGICAL_REGION"

echo "Bootstrap complete for cluster $CLUSTER"
