#!/bin/bash
set -e

# =============================================================================
# Phase 1: Bootstrap environment (moved from CloudFormation User Data)
# =============================================================================
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
LAB_ROOT="$(dirname "$SCRIPT_DIR")"
cd ~

# Install system packages (kubectl, helm, aws cli, mysql-client)
export DEBIAN_FRONTEND=noninteractive
sudo apt-get update -qq
sudo apt-get install -y unzip python3-pip mysql-client git

# Create cloud-env.sh with region
REGION_CODE=$(TOKEN=$(curl -X PUT -H "X-aws-ec2-metadata-token-ttl-seconds: 21600" -s "http://169.254.169.254/latest/api/token") && \
curl -H "X-aws-ec2-metadata-token: $TOKEN" -s http://169.254.169.254/latest/meta-data/placement/region)
echo "export REGION_CODE=${REGION_CODE}" > ~/cloud-env.sh

# Copy setup files from lab's setup folder (or clone tidb-course-labs as fallback)
if [ -f "${SCRIPT_DIR}/solution-tidb-cluster.yaml" ]; then
  echo "solution-tidb-cluster.yaml found in ${SCRIPT_DIR}"
else
  echo "Cloning tidb-course-labs for setup files..."
  git clone -q https://github.com/pingcap-inc/tidb-course-labs.git /tmp/tidb-course-labs
  cp -R /tmp/tidb-course-labs/labs/demo_010o/* ~/
  # cp /tmp/tidb-course-labs/setup/tidb-lab-mysql-init-amz2/show-mysql-password.sh ~/ 2>/dev/null || true
  rm -rf /tmp/tidb-course-labs
fi

# Add hosts-env.sh to bashrc
grep -q 'hosts-env.sh' ~/.bashrc 2>/dev/null || echo 'if [ -f ~/hosts-env.sh ]; then source ~/hosts-env.sh; fi' >> ~/.bashrc

# REGION_NAME may come from platform; fallback to REGION_CODE or instance metadata
echo export REGION_NAME=${REGION_NAME} >> ~/cloud-env.sh

# EKS lab: monitor-only topology - bastion connects to EKS
echo export HOST_MONITOR1_PRIVATE_IP=${HOST_MONITOR1_PRIVATE_IP} > ./hosts-env.sh
echo export HOST_MONITOR1_PUBLIC_IP=${HOST_MONITOR1_PUBLIC_IP} >> ./hosts-env.sh
EKS_CLUSTER_NAME=${USER_UNIQUE_TAG}-eks
echo export EKS_CLUSTER_NAME=${EKS_CLUSTER_NAME} >> ./hosts-env.sh
echo export NLB_NAME=${USER_UNIQUE_TAG} >> ./hosts-env.sh
NLB_ARN=`aws elbv2 describe-load-balancers --names ${USER_UNIQUE_TAG} --query "LoadBalancers[0].LoadBalancerArn" --output text --region ${REGION_CODE}`
LB_DNS=`aws elbv2 describe-load-balancers --names ${USER_UNIQUE_TAG} --query 'LoadBalancers[0].DNSName' --output text --region ${REGION_CODE}`
TG_ARN=`aws elbv2 describe-target-groups --load-balancer-arn ${NLB_ARN} --query "TargetGroups[0].TargetGroupArn" --output text --region ${REGION_CODE}`
echo export TG_ARN=${TG_ARN} >> ./hosts-env.sh
echo export LB_DNS=${LB_DNS} >> ./hosts-env.sh
echo export TIDB_PORT=4000 >> ./hosts-env.sh
echo export TIDB_VERSION=${TIDB_VERSION} >> ./hosts-env.sh
LBC_ROLE_ARN=$(aws cloudformation describe-stacks \
    --stack-name ${USER_UNIQUE_TAG} \
    --query "Stacks[0].Outputs[?OutputKey=='LoadBalancerControllerRoleArn'].OutputValue" \
    --output text --region ${REGION_CODE})
echo export LBC_ROLE_ARN=${LBC_ROLE_ARN} >> ./hosts-env.sh
chmod +x ~/*.sh 2>/dev/null || true
