#!/bin/sh -e

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

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

USER="user_${APP}"
GROUP="group_solomon"
LOGS_DIR="/logs"

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

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

        ENV=$(cat /etc/solomon/env)
        case ${ENV} in
            testing|prestable|production|cloud-*)
                ln -sf ${APP_CONFDIR}/${APP}.${ENV}.conf ${APP_CONFDIR}/${APP}.conf
                ;;
            *)
                echo "Cannot determine environment: $ENV"
                exit 1
                ;;
        esac

        UA_CONF=${APP_CONFDIR}/gateway_ua.${ENV}.yml
        if [ -e "${UA_CONF}" ]; then
            UA_CONF_LINK=/etc/yandex/unified_agent/conf.d/010-gateway-ua.yml
            ln -sf "${UA_CONF}" "${UA_CONF_LINK}"
            chown unified_agent "${UA_CONF_LINK}"
            chmod 644 "${UA_CONF_LINK}"

            /usr/local/bin/secrets decrypt \
                --in ${APP_CONFDIR}/gateway_lb_producer_key.${ENV}.secret \
                --out ${SECRETS_ROOT}/gateway_lb_producer_key.secret \
                --user unified_agent

            if [ -e "${APP_CONFDIR}/unified_agent_tvm.${ENV}.secret" ]; then
                /usr/local/bin/secrets decrypt \
                    --in ${APP_CONFDIR}/unified_agent_tvm.${ENV}.secret \
                    --out ${SECRETS_ROOT}/unified_agent_tvm.secret \
                    --user unified_agent
            fi

            systemctl reload-or-restart unified-agent 2>&1 || true
        fi

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

        if [ -x /bin/systemctl -a -f /etc/systemd/system/yandex-solomon-${APP}.service ] ; then
            /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
        elif [ -x /usr/bin/service -a -f /etc/init/yandex-solomon-${APP}.conf ] ; then
            if ! /usr/bin/service yandex-solomon-${APP} restart ; then
                echo "Cannot restart ${APP} service!"
            fi
        fi
        ;;
    *)
        ;;
esac
