#!/bin/bash
echo ""
echo "-----------------------------------------------------------------"
echo "Welcome to cc-docker automatic deployment script."
echo "Make sure you have sudo rights to run docker services"
echo "This script assumes that docker command is added to sudo group"
echo "This means that docker commands do not explicitly require"
echo "'sudo' keyword to run. You can use this following command:"
echo ""
echo "sudo groupadd docker"
echo "sudo usermod -aG docker $USER"
echo ""
echo "This will add docker to the sudo usergroup and all the docker"
echo "command will run as sudo by default without requiring"
echo "'sudo' keyword."  
echo "-----------------------------------------------------------------"
echo ""

# Check cc-backend, touch job.db if exists
if [ ! -d cc-backend ]; then
    echo "'cc-backend' not yet prepared! Please clone cc-backend repository before starting this script."
    echo -n "Stopped."
    exit
else
    cd cc-backend
    if [ ! -d var ]; then
        wget https://hpc-mover.rrze.uni-erlangen.de/HPC-Data/0x7b58aefb/eig7ahyo6fo2bais0ephuf2aitohv1ai/job-archive-demo.tar
        tar xf job-archive-demo.tar
        rm ./job-archive-demo.tar

        cp ./configs/env-template.txt .env
        cp ./configs/config-demo.json config.json

        make

        ./cc-backend -migrate-db
        ./cc-backend --init-db --add-user demo:admin:AdminDev
        cd ..
    else
        cd ..
    #     echo "'cc-backend/var' exists. Cautiously exiting."
    #     echo -n "Stopped."
    #     exit
    fi
fi

mkdir -m777 data

# Download unedited checkpoint files to ./data/cc-metric-store-source/checkpoints
if [ ! -d data/cc-metric-store-source ]; then
    mkdir -p data/cc-metric-store-source/checkpoints
    cd data/cc-metric-store-source/checkpoints
    wget https://hpc-mover.rrze.uni-erlangen.de/HPC-Data/0x7b58aefb/eig7ahyo6fo2bais0ephuf2aitohv1ai/cc-metric-store-checkpoints.tar.xz
    tar xf cc-metric-store-checkpoints.tar.xz
    rm cc-metric-store-checkpoints.tar.xz
    cd ../../../
else
    echo "'data/cc-metric-store-source' already exists!"
fi

# Update timestamps
perl ./migrateTimestamps.pl

# Create archive folder for rewritten ccms checkpoints
if [ ! -d data/cc-metric-store/archive ]; then
    mkdir -p data/cc-metric-store/archive
fi

# cleanup sources
# rm -r ./data/job-archive-source
# rm -r ./data/cc-metric-store-source

# prepare folders for influxdb2
if [ ! -d data/influxdb ]; then
    mkdir -p data/influxdb/data
    mkdir -p data/influxdb/config
else
    echo "'data/influxdb' already exists!"
fi

# Check dotenv-file and docker-compose-yml, copy accordingly if not present and build docker services
if [ ! -d .env ]; then
    cp templates/env.default ./.env
fi

if [ ! -f docker-compose.yml ]; then
    cp templates/docker-compose.yml.default ./docker-compose.yml
fi

docker-compose down
docker-compose down --remove-orphans

cd slurm/base/
make
cd ../..

docker-compose build
docker-compose up -d

echo ""
echo "Setup complete, containers are up by default: Shut down with 'docker-compose down'."
echo "Use './cc-backend/cc-backend -server' to start cc-backend."
echo "Use scripts in /scripts to load data into influx or mariadb."