#!/bin/bash
set -e

# Place the lab files
sudo mkdir -p ~ec2-user/stage/
sudo chown -R ec2-user:ec2-user ~/stage/
cd ~ec2-user/stage/
rm -rf tidb-course-labs/
rm -f /home/ec2-user/nohup*
git clone https://github.com/pingcap-inc/tidb-course-labs.git
alias cp='cp'
cp -R tidb-course-labs/labs/demo_009/* ~ec2-user/
cp -R tidb-course-labs/labs/demo_009a/* ~ec2-user/
cd ~
chown -R ec2-user:ec2-user ~ec2-user/*
chmod +x ~ec2-user/*.sh
echo "if [ -f /home/ec2-user/hosts-env.sh ]; then" >> ~ec2-user/.bashrc
echo "    source /home/ec2-user/hosts-env.sh" >> ~ec2-user/.bashrc
echo "fi;" >> ~ec2-user/.bashrc
chown ec2-user:ec2-user ~ec2-user/.bashrc
echo "export PATH=\$PATH:/usr/local/sysbench-1.0.17" >> /home/ec2-user/.bash_profile
chown ec2-user:ec2-user /home/ec2-user/.bash_profile
chown -R ec2-user:ec2-user /home/ec2-user/stage/


# Setup ENV

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

echo export REGION_NAME=${REGION_NAME} > ~/hosts-env.sh
echo export REGION_CODE=${REGION_CODE} >> ~/hosts-env.sh
echo export TIDB_VERSION=${TIDB_VERSION} >> ~/hosts-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_DB2_PRIVATE_IP=${HOST_DB2_PRIVATE_IP} >> ./hosts-env.sh
echo export HOST_DB2_PUBLIC_IP=${HOST_DB2_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
echo export HOST_KV4_PRIVATE_IP=${HOST_KV4_PRIVATE_IP} >> ./hosts-env.sh
echo export HOST_KV4_PUBLIC_IP=${HOST_KV4_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_DB2_PRIVATE_IP} > ./ssh-to-db2.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
echo ssh -i ~/.ssh/pe-class-key-${REGION_NAME}.pem ${HOST_KV4_PRIVATE_IP} > ./ssh-to-kv4.sh
chmod +x ./*.sh

# Setup Nine Nodes TiDB Cluster Topology
cp ./template-topology.yaml ./topology.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" \
  ./topology.yaml 2>/dev/null

# Setup the sysbench_config
cp ./template-sysbench_config ./sysbench_config
sed -i'' \
  -e "s/<HOST_MONITOR1_PRIVATE_IP>/${HOST_MONITOR1_PRIVATE_IP}/g" \
  ./sysbench_config 2>/dev/null

# Setup TiDB Scale-out-1
cp ./template-scale-out-tidb-1.yaml ./scale-out-tidb-1.yaml
sed -i'' \
  -e "s/<HOST_DB1_PRIVATE_IP>/${HOST_DB1_PRIVATE_IP}/g" \
  ./scale-out-tidb-1.yaml 2>/dev/null

# Setup TiDB Scale-out-2
cp ./template-scale-out-tidb-2.yaml ./scale-out-tidb-2.yaml
sed -i'' \
  -e "s/<HOST_DB2_PRIVATE_IP>/${HOST_DB2_PRIVATE_IP}/g" \
  ./scale-out-tidb-2.yaml 2>/dev/null

# Setup TiKV Scale-out
cp ./template-scale-out-tikv.yaml ./scale-out-tikv.yaml
sed -i'' \
  -e "s/<HOST_KV4_PRIVATE_IP>/${HOST_KV4_PRIVATE_IP}/g" \
  ./scale-out-tikv.yaml 2>/dev/null

# Setup Python script template-demo_tiproxy_no_retry.py
cp ./template-demo_tiproxy_no_retry.py ./demo_tiproxy_no_retry.py
sed -i'' \
  -e "s/<HOST_MONITOR1_PRIVATE_IP>/${HOST_MONITOR1_PRIVATE_IP}/g" \
  ./demo_tiproxy_no_retry.py 2>/dev/null

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