#!/bin/bash

host=$1
pool_vm=$2
delay=$3
message="
Did you free VM ${pool_vm} on mkch${host}.cloud.suse.de ?

to free the pool again call:

$(dirname $0)/mkcloud_free_pool ${host} ${pool_vm}"

if ! [[ $(which xmessage) ]]; then
    echo "please install xmessage"
    exit 1
fi

if [[ ! $host || ! $pool_vm ]]
then
    echo "usage ./mkcloud_reserve_pool mkcloudhost pool_vm reminderdelay"
    echo "  example: ./mkcloud_reserve_pool e 1 90m"
    exit 1
fi

blocking_user=$(ssh root@mkch${host}.cloud.suse.de "ls /root/pool" | grep -E "[0-9]\.[a-z].*")

if [ -z $blocking_user ]; then
    echo "reserving VM ${pool_vm} on mkch${host}.cloud.suse.de"
    ssh root@mkch${host}.cloud.suse.de "mv /root/pool/${pool_vm} /root/pool/${pool_vm}.${USER}"
else
    echo "Too many clouds reserved for ${host}. Please contact $blocking_user to free the space."
    exit 1
fi

if [[ ! $delay ]]
then echo "Enter reminder delay (empty input or timeout after 10 seconds set delay to 60m): "
    read -t 10 delay
    : ${delay:=60m}
fi

case "$delay" in
    *[0-9m] ) delayseconds=60 ;;
    *s ) delayseconds=1 ;;
    *h ) delayseconds=$((60*60)) ;;
    *d ) delayseconds=$((24*60*60)) ;;
    * ) echo "'$delay' : does not have a valid time suffix ([dhms])" 1>&2
        exit 1 ;;
esac
delaysecs=$(($delayseconds * ${delay%%[dmhs]}))

alarm_time=$(($(date +%s) + $delaysecs))

echo "After ${delay} = ${delaysecs}s at $(date --date=@$alarm_time '+%F %T') you get the xmessage $message"

set_alarm()
{ sleep $delaysecs
    xmessage -nearmouse -timeout 18000 "$message"
    exit 0
}

# this makes sure to keep it running even if the terminal is closed
# will attach to init process
set_alarm &
