#!/bin/bash
set -e

# Setup ENV
source ~/cloud-env.sh

echo export REGION_NAME=${REGION_NAME} >> ~/cloud-env.sh

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
echo export HOST_CM_PRIVATE_IP=${HOST_MONITOR1_PRIVATE_IP} >> ./hosts-env.sh
echo export HOST_CM_PUBLIC_IP=${HOST_MONITOR1_PUBLIC_IP} >> ./hosts-env.sh
echo export HOST_PD1_PRIVATE_IP=${HOST_PD1_PRIVATE_IP} >> ./hosts-env.sh
echo export HOST_PD1_PUBLIC_IP=${HOST_PD1_PUBLIC_IP} >> ./hosts-env.sh
echo export HOST_DB1_PRIVATE_IP=${HOST_DB1_PRIVATE_IP} >> ./hosts-env.sh
echo export HOST_DB1_PUBLIC_IP=${HOST_DB1_PUBLIC_IP} >> ./hosts-env.sh
echo export HOST_KV1_PRIVATE_IP=${HOST_KV1_PRIVATE_IP} >> ./hosts-env.sh
echo export HOST_KV1_PUBLIC_IP=${HOST_KV1_PUBLIC_IP} >> ./hosts-env.sh
echo export HOST_KV2_PRIVATE_IP=${HOST_KV2_PRIVATE_IP} >> ./hosts-env.sh
echo export HOST_KV2_PUBLIC_IP=${HOST_KV2_PUBLIC_IP} >> ./hosts-env.sh
echo export HOST_KV3_PRIVATE_IP=${HOST_KV3_PRIVATE_IP} >> ./hosts-env.sh
echo export HOST_KV3_PUBLIC_IP=${HOST_KV3_PUBLIC_IP} >> ./hosts-env.sh

source ./hosts-env.sh

echo ssh -i ~/.ssh/pe-class-key-${REGION_NAME}.pem ${HOST_CM_PRIVATE_IP} > ./ssh-to-cm.sh
echo ssh -i ~/.ssh/pe-class-key-${REGION_NAME}.pem ${HOST_PD1_PRIVATE_IP} > ./ssh-to-pd1.sh
echo ssh -i ~/.ssh/pe-class-key-${REGION_NAME}.pem ${HOST_DB1_PRIVATE_IP} > ./ssh-to-db1.sh
echo ssh -i ~/.ssh/pe-class-key-${REGION_NAME}.pem ${HOST_MONITOR1_PRIVATE_IP} > ./ssh-to-monitor1.sh
echo ssh -i ~/.ssh/pe-class-key-${REGION_NAME}.pem ${HOST_KV1_PRIVATE_IP} > ./ssh-to-kv1.sh
echo ssh -i ~/.ssh/pe-class-key-${REGION_NAME}.pem ${HOST_KV2_PRIVATE_IP} > ./ssh-to-kv2.sh
echo ssh -i ~/.ssh/pe-class-key-${REGION_NAME}.pem ${HOST_KV3_PRIVATE_IP} > ./ssh-to-kv3.sh
chmod +x ./*.sh

# Setup Nine Nodes TiDB Cluster Topology
cp ./template-five-nodes.yaml ./five-nodes.yaml
sed -i'' \
  -e "s/<HOST_PD1_PUBLIC_IP>/${HOST_PD1_PUBLIC_IP}/g" \
  -e "s/<HOST_PD1_PRIVATE_IP>/${HOST_PD1_PRIVATE_IP}/g" \
  -e "s/<HOST_KV1_PRIVATE_IP>/${HOST_KV1_PRIVATE_IP}/g" \
  -e "s/<HOST_KV2_PRIVATE_IP>/${HOST_KV2_PRIVATE_IP}/g" \
  -e "s/<HOST_KV3_PRIVATE_IP>/${HOST_KV3_PRIVATE_IP}/g" \
  -e "s/<HOST_DB1_PRIVATE_IP>/${HOST_DB1_PRIVATE_IP}/g" \
  -e "s/<HOST_MONITOR1_PRIVATE_IP>/${HOST_MONITOR1_PRIVATE_IP}/g" \
  -e "s/<HOST_MONITOR1_PUBLIC_IP>/${HOST_MONITOR1_PUBLIC_IP}/g" \
  ./five-nodes.yaml 2>/dev/null

# Setup lightning-csv.toml
cp ./template-lightning-csv.toml ./solution-lightning-csv.toml
sed -i'' \
  -e "s/<HOST_PD1_PRIVATE_IP>/${HOST_PD1_PRIVATE_IP}/g" \
  -e "s/<HOST_DB1_PRIVATE_IP>/${HOST_DB1_PRIVATE_IP}/g" \
  ./solution-lightning-csv.toml 2>/dev/null

# Setup sysbench Workloads for userA
cp ./template-userA.py ./userA.py
sed -i'' \
  -e "s/<HOST_DB1_PRIVATE_IP>/${HOST_DB1_PRIVATE_IP}/g" \
  -e "s/<HOST_DB2_PRIVATE_IP>/${HOST_DB2_PRIVATE_IP}/g" \
  ./userA.py 2>/dev/null

# Setup sysbench Workloads for userB
cp ./template-userB.py ./userB.py
sed -i'' \
  -e "s/<HOST_DB1_PRIVATE_IP>/${HOST_DB1_PRIVATE_IP}/g" \
  ./userB.py 2>/dev/null

# Setup sysbench Workloads for userB_2
cp ./template-userB_2.py ./userB_2.py
sed -i'' \
  -e "s/<HOST_DB1_PRIVATE_IP>/${HOST_DB1_PRIVATE_IP}/g" \
  ./userB_2.py 2>/dev/null

rm -rf /home/ec2-user/template-*

/home/ec2-user/create-cluster-vinput.sh ${TIDB_VERSION} ${REGION_NAME} >> /home/ec2-user/create-cluster-vinput.log 2>&1

echo "5 nodes are prepared for user ${USER_UNIQUE_TAG}." > MONITOR_PREPARE_DONE