#!/bin/bash

set -ev

ICE_SIM=`aws s3 ls s3://ice-sim/ | sort | tail -n 1 | awk '{print $4}'`
ICE_INSTALL=ice-install-v1.0.6.tar.gz
ICE_REACTOR_S3_BUCKET=s3://reactor-builds/
LOCAL_SRC_DIR=deploy

# get IP address of AWS EC2 instance
EC2_ID=`cat EC2_ID`
EC2_IP=`aws ec2 describe-instances --instance-ids ${EC2_ID} --output text --query 'Reservations[*].Instances[*].PublicIpAddress'`
EC2_INTERNAL_IP=`aws ec2 describe-instances --instance-ids ${EC2_ID} --output text --query 'Reservations[*].Instances[*].PrivateIpAddress'`

echo "Transferring jars"
aws s3 cp ${DEPLOY_TAR_WITH_TAG} ${FE_BUCKET}/${DEPLOY_TAR_WITH_TAG}

# Get ice-install
aws s3 cp s3://ice-install/${ICE_INSTALL} .
tar -zxf ${ICE_INSTALL}
cd ice-install

# Get ice-sim
aws s3 cp s3://ice-sim/${ICE_SIM} .

# Create ice package with latest
./create-ice-package.sh \
    --fe `aws s3 ls s3://ice-console/ice-console2/ | sort | tail -n 1 | awk '{print $4}' | sed 's/ice_console_v//g; s/.tgz//g'` \
    --be `aws s3 ls s3://reactor-builds/ | sort | tail -n 1 | awk '{print $4}' | sed -e 's/core-assembly-//g; s/.jar//g'` \
    --ml `aws s3 ls s3://ice-ml/ | sort | tail -n 1 | awk '{print $4}' | sed -e 's/ice-ml-v//g; s/.tar.gz//g'` \
    --custom

echo """
    mkdir -p -m 775 /opt/ice-sim/
    cd /opt/ice-sim/
    mv /home/centos/${ICE_SIM} .
    export TOPOLOGY_FILE=4-racks-v4-sim.conf
    nohup java -jar ${ICE_SIM} > nohup.out 2> nohup.out < nohup.out &

    cd /home/centos
    tar -zxf ice-server-*

    cd ice-installer/bin/
    sudo ./install-ice.sh --apiServer $EC2_IP --localIp $EC2_INTERNAL_IP --singleNode

    while [ \"\`curl -s ${EC2_IP}:9200/_cat/health?h=status\`\" != \"green\" ]; do
        sleep 5
        echo "Elasticsearch not up... waiting"
        echo "status: "
        echo \`curl ${EC2_IP}:9200/_cat/health?h=status\`
    done
    ./bootstrap-icereactor.sh --auto --config extraConfigs/4-racks.conf
    sudo service ice-reactor start
    while [ \"\`curl -o /dev/null -s -w \"%{http_code}\" -d \"test\" -X POST ${EC2_IP}:9001/v4/echo\`\" != \"200\" ] ; do
        sleep 5
        echo "Ice Reactor not up... waiting"
    done
""" > install-script.sh

# Wait for the instance until the 2/2 checks are passed
status=0
while [ $status -lt 2 ]
do
    status=`aws ec2 describe-instance-status --instance-ids ${EC2_ID} --filters Name="instance-status.reachability,Values=passed" | grep  '"Status": "passed"' | wc -l`
    sleep 5
done
echo "Deploying to $EC2_IP"

scp -o StrictHostKeyChecking=no -i ${VPS_PEM} ice-server-* install-script.sh ${ICE_SIM} centos@${EC2_IP}:~/
ssh -o StrictHostKeyChecking=no -i ${VPS_PEM} centos@${EC2_IP} 'sudo chmod +x install-script.sh && sudo ./install-script.sh'

cd ${WORKSPACE}
echo ${EC2_IP} > EC2_IP

echo "Created single node instance on AWS with latest FE"
echo "Deployed at $EC2_IP"
