#!/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

if [ "${QLOUD_LOGGER_STDOUT}" = "true" ]; then
    exec > >(logger -p user.info -t 'disk-init')
    exec 2> >(logger  -p user.error -t 'disk-init')
fi

# for .bash_aliases
export HOME=/root

function lineinfile {
    if grep -q "$1" "$2"; then
        echo "line already exists in $2"
    else
        echo "$1" >> "$2"
    fi
}

# for monrun
lineinfile "monitor ALL=(ALL) NOPASSWD:ALL" /etc/sudoers

if [ -n "$QLOUD_HOSTNAME" ]; then
    # create dumb hostname
    lineinfile "::1 ${QLOUD_HOSTNAME}" /etc/hosts
fi

rm -f /maintenance.lock /etc/yandex/abyssync.disabled
ln -sf /etc/nginx/include/keepalive-enabled.conf /etc/nginx/conf.d/00_keepalive.conf

# there should be connected application sandbox resource
if [ -f /application.tar.gz ]; then
    cd / && tar -zxf /application.tar.gz \
                --exclude='etc/monrun/*' \
                --exclude='etc/logrotate.d/*' \
                --exclude='etc/nginx/*'
    echo "Unpack application. Exit code $?"
elif [ -d /application/ ]; then
    cd / && tar -zxf /application/*.tar.gz \
                --exclude='etc/monrun/*' \
                --exclude='etc/logrotate.d/*' \
                --exclude='etc/nginx/*'
    echo "Unpack application. Exit code $?"
else
    echo "No /application.tar.gz found"
fi

# there should be connected settings sandbox resource
if [ -f /settings.tar.gz ]; then
    cd / && tar -zxf /settings.tar.gz
    echo "Unpack settings. Exit code $?"
elif [ -d /settings/ ]; then
    cd / && tar -zxf /settings/*.tar.gz
    echo "Unpack settings. Exit code $?"
else
    echo "No /settings.tar.gz found"
fi

# generate basic mtab
cat /proc/mounts > /etc/mtab

# this should close traffic from qloud-router
monrun -r service-locker

# set environment
if [ -n "$YANDEX_ENVIRONMENT" ]; then
    ENVIRONMENT="$YANDEX_ENVIRONMENT"
elif [ -r /etc/yandex/environment.type ]; then
    ENVIRONMENT=$(cat /etc/yandex/environment.type)
elif [ -n "$QLOUD_ENVIRONMENT" ]; then
    ENVIRONMENT="$QLOUD_ENVIRONMENT"
else
    echo "Could not detect ENVIRONMENT. Setting variable to default" >&2
    ENVIRONMENT='default'
fi
### environment dognail
if [ "${ENVIRONMENT}" = "production" ]; then
    ENVIRONMENT='stable'
fi
###
echo "Detected environment => ${ENVIRONMENT}"
export ENVIRONMENT

### create Qloud-style environment variables in Deploy for fast migrtaion from Qloud
if [[ ! -z "$DEPLOY_UNIT_ID" ]]; then
    QLOUD_CPU_LIMIT=$(($(printf '%.0f' "$(curl -s localhost:1/pod_attributes | jq '.resource_requirements.cpu.cpu_limit_millicores')") / 1000))
    [[ $QLOUD_CPU_LIMIT -gt 0 ]] || QLOUD_CPU_LIMIT=1
    export QLOUD_CPU_LIMIT
fi
if [[ ! -z "$DEPLOY_NODE_DC" ]]; then
    QLOUD_DATACENTER=$DEPLOY_NODE_DC
    export QLOUD_DATACENTER
fi

# exec prestart hooks
run-parts /usr/sbin/disk-init-hooks.d

# exec old prestart hook
if [ -x /usr/sbin/disk-init-hook ];then
    /usr/sbin/disk-init-hook
fi

# wait until fs deployed // possible race
sleep 15

# start our apps via supervisor
supervisord

# shutdown
echo "Bye bye, my darling!"
