#!/bin/bash
set -e

# ============================================
# One-time GKE cluster setup for maya-global-backend
# Region: asia-southeast1 (Singapore)
# ============================================

REGION="asia-southeast1"
PROJECT_ID="mayaresearchgcp"
CLUSTER_NAME="maya-global-backend"

echo "============================================"
echo "Setting up GKE cluster: ${CLUSTER_NAME}"
echo "Region: ${REGION}"
echo "Project: ${PROJECT_ID}"
echo "============================================"

# Set project
gcloud config set project ${PROJECT_ID}

# Enable required APIs
echo ""
echo "Enabling required APIs..."
gcloud services enable container.googleapis.com --project ${PROJECT_ID}
gcloud services enable artifactregistry.googleapis.com --project ${PROJECT_ID}

# Create Artifact Registry repository
echo ""
echo "Creating Artifact Registry repository..."
gcloud artifacts repositories create ${CLUSTER_NAME} \
  --repository-format=docker \
  --location=${REGION} \
  --description="Maya Global Backend Docker images" \
  2>/dev/null || echo "Repository already exists"

# Create GKE Standard cluster with 1x n2-standard-16 (16 vCPU, 64GB RAM)
# Fits 5-7 pods with pipecat-like limits (2 CPU request, 6Gi mem request per pod)
echo ""
echo "Creating GKE Standard cluster (1x n2-standard-16)..."
gcloud container clusters create ${CLUSTER_NAME} \
  --zone=${REGION}-a \
  --project=${PROJECT_ID} \
  --machine-type=n2-standard-16 \
  --num-nodes=1 \
  --enable-autoscaling --min-nodes=1 --max-nodes=3 \
  --release-channel=regular \
  --enable-ip-alias

# Get credentials
echo ""
echo "Getting cluster credentials..."
gcloud container clusters get-credentials ${CLUSTER_NAME} \
  --zone=${REGION}-a \
  --project=${PROJECT_ID}

# Reserve a static IP for the ingress
echo ""
echo "Reserving static IP..."
gcloud compute addresses create maya-global-backend-ip \
  --global \
  --project=${PROJECT_ID} \
  2>/dev/null || echo "IP already reserved"

STATIC_IP=$(gcloud compute addresses describe maya-global-backend-ip --global --format='value(address)')
echo "Static IP: ${STATIC_IP}"

# Create Artifact Registry pull secret
echo ""
echo "Creating Artifact Registry pull secret..."
kubectl create secret docker-registry ar-pull-secret \
  --docker-server=${REGION}-docker.pkg.dev \
  --docker-username=_json_key \
  --docker-password="$(cat /home/ubuntu/global_backend/gcp-service-account.json)" \
  --docker-email=charan@mayaresearch.ai \
  --dry-run=client -o yaml | kubectl apply -f -

echo ""
echo "============================================"
echo "Cluster setup complete!"
echo "============================================"
echo ""
echo "Static IP: ${STATIC_IP}"
echo "Point DNS: global.mayaresearch.ai -> ${STATIC_IP}"
echo ""
echo "Next steps:"
echo "  1. cd deployments/k8s/gke"
echo "  2. ./create-secrets.sh    (create env + GCP credential secrets)"
echo "  3. ./deploy.sh            (build, push, deploy)"
echo "============================================"
