#!/bin/bash
set -o errexit
set -o nounset
set -o pipefail

cd $WORKSPACE

# install dependencies
sudo add-apt-repository "deb http://archive.ubuntu.com/ubuntu $(lsb_release -sc) main universe restricted multiverse" > /dev/null
sudo apt install -y virtualenv jq > /dev/null
/bin/rm -rf /opt/engine $NOLABS_VENV
mkdir -p $NOLABS_VENV
virtualenv -p python3 $NOLABS_VENV > /dev/null
set +u
source $NOLABS_VENV/bin/activate > /dev/null
set -u
pip install httpie > /dev/null

# check if the booking is cancelled or not
echo "API Request: http --ignore-stdin GET $NOLABS_API_BOOKINGS_ENDPOINT/$BOOKING_ID | jq -r '.status_text'"
BOOKING_STATUS=$(http --ignore-stdin GET $NOLABS_API_BOOKINGS_ENDPOINT/$BOOKING_ID | jq -r '.status_text')
if [[ $BOOKING_STATUS != 'new' ]]; then
  echo "Info: Booking is either cancelled or not valid! Exiting!"
  exit 0;
fi

# get authentication token
echo "API Request: http --ignore-stdin POST $NOLABS_API_TOKENS_ENDPOINT --auth dummy@dummy.com:dummy | jq -r '.token'"
NOLABS_TOKEN=$(http --ignore-stdin POST $NOLABS_API_TOKENS_ENDPOINT --auth $NOLABS_API_USERNAME:$NOLABS_API_PASSWORD | jq -r '.token')
echo "API Request: http --ignore-stdin PUT $NOLABS_API_BOOKINGS_ENDPOINT/$BOOKING_ID \"status_text=deploying\" \"Authorization:Bearer DUMMY_TOKEN\""
http --ignore-stdin PUT $NOLABS_API_BOOKINGS_ENDPOINT/$BOOKING_ID "status_text=deploying" \
    "Authorization:Bearer $NOLABS_TOKEN"

# get ssh public key of the user
echo "API Request: http GET $NOLABS_API_BOOKINGS_ENDPOINT/$BOOKING_ID | jq -r '.user_id'"
NOLABS_USER_ID=$(http GET $NOLABS_API_BOOKINGS_ENDPOINT/$BOOKING_ID | jq -r '.user_id')
echo "API Request: http --ignore-stdin GET $NOLABS_API_USERS_ENDPOINT/$NOLABS_USER_ID \"Authorization:Bearer DUMMY_TOKEN\" | jq -r '.ssh_public_key'"
http --ignore-stdin GET $NOLABS_API_USERS_ENDPOINT/$NOLABS_USER_ID "Authorization:Bearer $NOLABS_TOKEN" | jq -r '.ssh_public_key' > $NOLABS_USER_SSHPUBKEY

set +u
deactivate
set -u
# get the specific patch
cd $WORKSPACE
git fetch "https://gerrit.nordix.org/infra/engine" $GERRIT_REFSPEC && git checkout FETCH_HEAD

export STACK_NAME="nordix-nolabs-booking${BOOKING_ID}-${DEPLOY_SCENARIO}"
echo "Info: STACK_NAME is set to $STACK_NAME"
cd engine
./deploy.sh -c -r heat -u /tmp/openrc -s $DEPLOY_SCENARIO -e "$HEAT_ENVIRONMENT_FILE"

cd $WORKSPACE

set +u
source $NOLABS_VENV/bin/activate > /dev/null
set -u
ENGINE_VERSION=$(git rev-parse HEAD)
cd /opt/engine/.cache/repos/swconfig
SCENARIO_VERSION=$(git rev-parse HEAD)
cd $WORKSPACE
FLOATING_IP=$(cat /opt/engine/.cache/config/inventory.ini | grep 'jumphost ansible_host' | awk '{print $2}' | cut -d'=' -f2)

# get authentication token
echo "API Request: http --ignore-stdin POST $NOLABS_API_TOKENS_ENDPOINT --auth dummy@dummy.com:dummy | jq -r '.token'"
NOLABS_TOKEN=$(http --ignore-stdin POST $NOLABS_API_TOKENS_ENDPOINT --auth $NOLABS_API_USERNAME:$NOLABS_API_PASSWORD | jq -r '.token')

# update booking
echo "API Request: http --ignore-stdin PUT $NOLABS_API_BOOKINGS_ENDPOINT/$BOOKING_ID \
    \"Authorization:Bearer DUMMY_TOKEN\" \
    status_text=active \
    floating_ip=$FLOATING_IP \
    heat_stack_name=$STACK_NAME \
    scenario_deploy_log_url=${BUILD_URL}consoleFull \
    engine_version=$ENGINE_VERSION \
    scenario_version=$SCENARIO_VERSION"
http --ignore-stdin PUT $NOLABS_API_BOOKINGS_ENDPOINT/$BOOKING_ID \
    "Authorization:Bearer $NOLABS_TOKEN" \
    status_text=active \
    floating_ip=$FLOATING_IP \
    heat_stack_name=$STACK_NAME \
    scenario_deploy_log_url=${BUILD_URL}consoleFull \
    engine_version=$ENGINE_VERSION \
    scenario_version=$SCENARIO_VERSION
