#!/bin/sh -e

SOLOMON_ROOT="/Berkanavt/solomon"
SECRETS_ROOT="${SOLOMON_ROOT}/secrets"

APP="fetcher"
APP_ROOT="${SOLOMON_ROOT}/${APP}"
APP_CONFDIR="${SOLOMON_ROOT}/configs"

USER="user_${APP}"
GROUP="group_solomon"
LOGS_DIR="/logs"
COREDUMPS_DIR="/coredumps/${APP}"
CONFDB_DIR="${SOLOMON_ROOT}/config_db"

case "$1" in
    configure)
        if [ ! -e ${LOGS_DIR} ]; then
            /usr/bin/install -g ${GROUP} -m 775 -d ${LOGS_DIR}
        fi
        if [ ! -e ${SECRETS_ROOT} ]; then
            /usr/bin/install -d ${SECRETS_ROOT}
        fi
        if [ ! -e ${COREDUMPS_DIR} ]; then
            /usr/bin/install -g ${GROUP} -o ${USER} -m 755 -d ${COREDUMPS_DIR}
        fi
        if [ ! -e ${CONFDB_DIR} ]; then
            /usr/bin/install -g ${GROUP} -o ${USER} -m 755 -d ${CONFDB_DIR}
        fi

        /bin/chown ${USER}:${GROUP} ${APP_ROOT}

        ENV="$(cat /etc/solomon/env)"
        DC="$(cat /etc/solomon/dc)"
        CLUSTER="$(cat /etc/solomon/cluster 2>/dev/null || true)"
        CONF=${APP_CONFDIR}/${APP}.conf

        ## XXX
        if [ $(hostname -f | grep test-sts) ] ; then
            ln -sf ${APP_CONFDIR}/${APP}.monitoring.prestable.conf $CONF

            /usr/local/bin/secrets decrypt \
                --in ${APP_CONFDIR}/${APP}.sts.secrets \
                --out ${SECRETS_ROOT}/${APP}.secrets \
                --user ${USER}
        elif [ $(hostname -f | grep fetcher-sts) ]; then
            sed "s/{{CLUSTER}}/${CLUSTER}/g; s/{{DC}}/${DC}/g; s/{{ENV}}/${ENV}/g;" \
                ${APP_CONFDIR}/${APP}.${ENV}.conf > ${CONF}.tmp
            mv -vf ${CONF}.tmp ${CONF}

            /usr/local/bin/secrets decrypt \
                --in ${APP_CONFDIR}/${APP}.${ENV}.sts.secrets \
                --out ${SECRETS_ROOT}/${APP}.secrets \
                --user ${USER}
        else
            case $ENV in
                testing|prestable|cloud-preprod)
                    ln -sf ${APP_CONFDIR}/${APP}.${ENV}.conf $CONF
                    ;;
                production|cloud-prod)
                    ln -sf ${APP_CONFDIR}/${APP}.${ENV}.${DC}.conf $CONF
                    ;;
                *)
                    echo "Cannot determine environment: $ENV"
                    exit 1
                    ;;
            esac

            /usr/local/bin/secrets decrypt \
                --in ${APP_CONFDIR}/${APP}.${ENV}.secrets \
                --out ${SECRETS_ROOT}/${APP}.secrets \
                --user ${USER}
        fi

        if [ -f "${APP_ROOT}/systemd.limits.${ENV}" ] ; then
            cp -vf ${APP_ROOT}/systemd.limits.${ENV} /etc/systemd/system/yandex-solomon-${APP}.service.d/limits.conf
        fi

        /bin/systemctl stop yandex-solomon-${APP} || true
        /bin/systemctl daemon-reload

        if ! /bin/systemctl enable yandex-solomon-${APP} ; then
            echo "Cannot enable ${APP} service!"
        fi
        if ! /bin/systemctl restart yandex-solomon-${APP} ; then
            echo "Cannot restart ${APP} service!"
        fi
        ;;
    *)
        ;;
esac
