#! /usr/bin/env bash

# This script rejoins an existing screen, or re-creates a
# screen session from a previous run of stack.sh.

TOP_DIR=`dirname $0`

DEST=${DEST:-/opt/stack}
NOVA_DIR=$DEST/nova
DATA_DIR=${DATA_DIR:-${DEST}/data}
VOLUME_BACKING_FILE_SIZE=${VOLUME_BACKING_FILE_SIZE:-5130M}
SWIFT_DATA_DIR=${SWIFT_DATA_DIR:-${DEST}/data/swift}
VOLUME_GROUP=${VOLUME_GROUP:-stack-volumes}
VOLUME_NAME_PREFIX=${VOLUME_NAME_PREFIX:-volume-}

sudo service apache2 start


# setup stack-volume

if ! sudo vgs $VOLUME_GROUP; then
    VOLUME_BACKING_FILE=${VOLUME_BACKING_FILE:-$DATA_DIR/${VOLUME_GROUP}-backing-file}
    # Only create if the file doesn't already exists
    [[ -f $VOLUME_BACKING_FILE ]] || truncate -s $VOLUME_BACKING_FILE_SIZE $VOLUME_BACKING_FILE
    DEV=`sudo losetup -f --show $VOLUME_BACKING_FILE`
    # Only create if the loopback device doesn't contain $VOLUME_GROUP
    if ! sudo vgs $VOLUME_GROUP; then sudo vgcreate $VOLUME_GROUP $DEV; fi
fi

# make sure that we have swift loopback drive mounted.
if [[ -f ${SWIFT_DATA_DIR}/drives/images/swift.img ]]; then
    if ! egrep -q ${SWIFT_DATA_DIR}/drives/sdb1 /proc/mounts; then
        sudo mount -t xfs -o loop,noatime,nodiratime,nobarrier,logbufs=8  \
            ${SWIFT_DATA_DIR}/drives/images/swift.img ${SWIFT_DATA_DIR}/drives/sdb1
    else
        echo the swift volume is already mounted
    fi
fi


# if screenrc exists, run screen
if [[ -e $TOP_DIR/stack-screenrc ]]; then
    if screen -ls | egrep -q "[0-9].stack"; then
        echo "Attaching to already started screen session.."
        exec screen -r stack
    fi
    exec screen -c $TOP_DIR/stack-screenrc
fi

echo "Couldn't find $TOP_DIR/stack-screenrc file; have you run stack.sh yet?"
exit 1
