#!/bin/bash
set -e
echo ">>>> K8S Node config Start <<<<"

: "${STACK_NAME:?STACK_NAME env var must be set by UserData}"

echo "[TASK 1] Wait for master API server (192.168.10.10:6443) to be reachable"
for i in $(seq 1 60); do
  if nc -z -w 2 192.168.10.10 6443 2>/dev/null; then
    echo "API server reachable"
    break
  fi
  echo "Waiting for master API server... ($i/60)"
  sleep 5
done

echo "[TASK 2] K8S Controlplane Join - API Server 192.168.10.10"
kubeadm join \
  --token 123456.1234567890123456 \
  --discovery-token-unsafe-skip-ca-verification \
  192.168.10.10:6443

echo "[TASK 3] Wait for admin.conf in S3 (uploaded by master)"
S3_ADMIN="s3://my-k8s-scripts/runtime/${STACK_NAME}/admin.conf"
for i in $(seq 1 60); do
  if aws s3 ls "$S3_ADMIN" >/dev/null 2>&1; then
    echo "admin.conf available in S3"
    break
  fi
  echo "Waiting for $S3_ADMIN ... ($i/60)"
  sleep 5
done

echo "[TASK 4] Download admin.conf from S3 (replaces sshpass scp)"
mkdir -p /root/.kube
aws s3 cp "$S3_ADMIN" /root/.kube/config
chmod 600 /root/.kube/config

echo "[TASK 5] Source the completion + kubectl alias"
echo 'source <(kubectl completion bash)' >> /etc/profile
echo 'alias k=kubectl' >> /etc/profile
echo 'complete -F __start_kubectl k' >> /etc/profile

echo ">>>> K8S Node config End <<<<"
