#!/bin/bash

listcontains() {
  for word in $1; do
    [[ $word = $2 ]] && return 0
  done
  return 1
}

declare -A STORM_GROUPS_MAP NIMBUS_GROUPS_MAP ZOOGROUPS_MAP DC_LETTER_MAP MANP_GROUPS_MAP

STORM_GROUPS_MAP=(\
['production:sas']='yabs_rtcrypta_storm_i' \
['production:iva']='yabs_rtcrypta_storm_e' \
['testing:sas']='yabs_rtcrypta_storm_testing' \
['unstable:sas']='yabs_rtcrypta_storm_dev' \
['unstable:fol']='dummy')

NIMBUS_GROUPS_MAP=(\
["production:sas"]="yabs_rtcrypta_nimbus_i" \
["production:iva"]="yabs_rtcrypta_nimbus_e" \
["unstable:sas"]="yabs_rtcrypta_nimbus_dev" \
["testing:sas"]="yabs_rtcrypta_nimbus_testing" \
['unstable:fol']='dummy')

ZOOGROUPS_MAP=(\
['production:sas']='yabs_rtcrypta_accum_i' \
['production:iva']='yabs_rtcrypta_accum_e' \
['testing:sas']='yabs_rtcrypta_accum_testing' \
['unstable:sas']='yabs_rtcrypta_accum_dev' \
['unstable:fol']='dummy')

MANP_GROUPS_MAP=(\
['production:sas']='yabs_rtcrypta_manp_i' \
['production:iva']='yabs_rtcrypta_manp_e' \
['testing:sas']='yabs_rtcrypta_manp_testing' \
['unstable:sas']='yabs_rtcrypta_manp_dev' \
['unstable:fol']='dummy')

DC_LETTER_MAP=(\
['ugr']='d' \
['iva']='e' \
['sas']='i' \
['fol']='g')

CONFIG_TEMPLATE="/etc/yandex/rtcrypta-config/set_crypta_env.sh.template"
CONFIG="/etc/yandex/rtcrypta-config/set_crypta_env.sh"

cp ${CONFIG_TEMPLATE} ${CONFIG} || true

ENV=`cat /etc/yandex/environment.type` || true
HOST=`hostname --fqdn` || true
DC=`curl -s "http://ro.admin.yandex-team.ru/api/host_query.sbml?hostname=$HOST&columns=short_dc"` || true
[[ "$DC" == *"error"* ]] && DC="sas"

MR_SERVER="hahn.yt.yandex.net"
AUDIENCE_MR_SERVER="hahn.yt.yandex.net"
RTCRYPTA_YT_STABLE_YANDEXUIDS_DIRECTORY='//home/crypta/testing/sandbox/profiles/internal-export/realtime'
IDSERVICE="http://idserv-test.rtcrypta.yandex.net:8080"
GRAPH_STORE_DAYS="5"
SECDIST_USER="noexistent-user"
BB_KAFKA_HOSTS="bskafka01i.bstest.yandex.net:9092,bskafka02i.bstest.yandex.net:9092,bskafka03i.bstest.yandex.net:9092"
AUDIENCE_YT_FOLDER="state\/audience-testing\/"
CRYPTA_GRAPH_CRYPTA_HOME="\/\/crypta\/production"
CRYPTA_NOVOSIB_HOME="\/\/crypta\/production"
CRYPTA_YT_HOME="\/\/crypta\/production"
CRYPTA_UPLOAD_ENABLED="no"
CRYPTA_AUDIENCE_ENABLED="no"
CRYPTA_STATFACE_ENABLED="no"
HAS_BSYETI_TABLES="no"

case "$ENV" in
"testing")
    MR_SERVER="hahn.yt.yandex.net"
    AUDIENCE_MR_SERVER="hahn.yt.yandex.net"
    SECDIST_USER="robot-crypta"
    CRYPTA_GRAPH_CRYPTA_HOME="\/\/home\/crypta\/testing"
    CRYPTA_NOVOSIB_HOME="\/\/home\/crypta\/testing\/sandbox"
    CRYPTA_YT_HOME="\/\/home\/crypta\/production"
    # MR_SERVER="plato.yt.yandex.net"
    # AUDIENCE_MR_SERVER="plato.yt.yandex.net"
    # YT_TOKEN=d7e21fbb0633dd9f25fe067c26ce6fd8
    # AUDIENCE_YT_TOKEN=d7e21fbb0633dd9f25fe067c26ce6fd8
    # CRYPTA_GRAPH_CRYPTA_HOME="\/\/crypta\/production"
    RTCRYPTA_YT_STABLE_YANDEXUIDS_DIRECTORY='//home/crypta/testing/sandbox/profiles/internal-export/realtime'
    IDSERVICE="http://idserv-test.rtcrypta.yandex.net:8080"
    GRAPH_STORE_DAYS="3"
    BB_KAFKA_HOSTS="bskafka01i.bstest.yandex.net:9092,bskafka02i.bstest.yandex.net:9092,bskafka03i.bstest.yandex.net:9092"
    AUDIENCE_YT_FOLDER="state\/audience-testing\/"
    CRYPTA_UPLOAD_ENABLED="yes"
    CRYPTA_AUDIENCE_ENABLED="yes"
    CRYPTA_STATFACE_ENABLED="yes"
    HAS_BSYETI_TABLES="yes"
    ;;
"production")
    RTCRYPTA_YT_STABLE_YANDEXUIDS_DIRECTORY='//home/crypta/production/profiles/internal-export/realtime'
    if [ ${DC} == "sas" ]; then
        MR_SERVER="hahn.yt.yandex.net"
        AUDIENCE_MR_SERVER="hahn.yt.yandex.net"
        SECDIST_USER="robot-crypta"
        BB_KAFKA_HOSTS="bskafka01i.yandex.ru:9092,bskafka02i.yandex.ru:9092,bskafka03i.yandex.ru:9092,bskafka04i.yandex.ru:9092,bskafka05i.yandex.ru:9092,bskafka06i.yandex.ru:9092,bskafka07i.yandex.ru:9092,bskafka08i.yandex.ru:9092,bskafka09i.yandex.ru:9092,bskafka10i.yandex.ru:9092,bskafka11i.yandex.ru:9092,bskafka12i.yandex.ru:9092,bskafka13i.yandex.ru:9092,bskafka14i.yandex.ru:9092,bskafka15i.yandex.ru:9092"
        CRYPTA_UPLOAD_ENABLED="yes"
        CRYPTA_AUDIENCE_ENABLED="yes"
        CRYPTA_STATFACE_ENABLED="yes"
        HAS_BSYETI_TABLES="yes"
    fi
    if [ ${DC} == "iva" ]; then
        MR_SERVER="smith.yt.yandex.net"
        AUDIENCE_MR_SERVER="banach.yt.yandex.net"
        SECDIST_USER="robot-crypta"
        BB_KAFKA_HOSTS="bskafka01e.yandex.ru:9092,bskafka02e.yandex.ru:9092,bskafka03e.yandex.ru:9092"
        CRYPTA_UPLOAD_ENABLED="no"
        CRYPTA_AUDIENCE_ENABLED="no"
        CRYPTA_STATFACE_ENABLED="no"
        HAS_BSYETI_TABLES="no"
    fi
    IDSERVICE="http://idserv.rtcrypta.yandex.net:8080"
    GRAPH_STORE_DAYS="30"
    CRYPTA_GRAPH_CRYPTA_HOME="\/\/home\/crypta\/production"
    CRYPTA_NOVOSIB_HOME="\/\/home\/crypta\/production"
    CRYPTA_YT_HOME="\/\/home\/crypta\/production"
    AUDIENCE_YT_FOLDER="state\/audience\/"
    ;;
esac

STORM_CONDUCTOR_GROUP="${STORM_GROUPS_MAP[${ENV}:${DC}]}"

ZOOGROUP="${ZOOGROUPS_MAP[${ENV}:${DC}]}"
CURLRESULT=`curl -s http://c.yandex-team.ru/api/groups2hosts/"$ZOOGROUP"` || true
ZOOHOSTS=`echo "$CURLRESULT" | sed ':a;N;$!ba;s/\n/,/g'` || true

sed -i "s/%%MR_SERVER%%/${MR_SERVER}/" "$CONFIG" || true
sed -i "s/%%AUDIENCE_MR_SERVER%%/${AUDIENCE_MR_SERVER}/" "$CONFIG" || true
sed -i "s/%%STORM_CONDUCTOR_GROUP%%/${STORM_CONDUCTOR_GROUP}/" "$CONFIG" || true
sed -i "s*%%IDSERVICE%%*${IDSERVICE}*" "$CONFIG" || true
sed -i "s/%%SECDIST_USER%%/${SECDIST_USER}/" "$CONFIG" || true
sed -i "s/%%GRAPH_STORE_DAYS%%/${GRAPH_STORE_DAYS}/" "$CONFIG" || true
sed -i "s/%%CRYPTA_DC%%/${DC}/" "$CONFIG" || true
sed -i "s/%%ZOOHOSTS%%/${ZOOHOSTS}/" "$CONFIG" || true
sed -i "s/%%BB_KAFKA_HOSTS%%/${BB_KAFKA_HOSTS}/" "$CONFIG" || true
sed -i "s/%%CRYPTA_GRAPH_CRYPTA_HOME%%/${CRYPTA_GRAPH_CRYPTA_HOME}/" "$CONFIG" || true
sed -i "s/%%CRYPTA_NOVOSIB_HOME%%/${CRYPTA_NOVOSIB_HOME}/" "$CONFIG" || true
sed -i "s/%%CRYPTA_YT_HOME%%/${CRYPTA_YT_HOME}/" "$CONFIG" || true
sed -i "s/%%AUDIENCE_YT_FOLDER%%/${AUDIENCE_YT_FOLDER}/" "$CONFIG" || true
sed -i "s/%%CRYPTA_UPLOAD_ENABLED%%/${CRYPTA_UPLOAD_ENABLED}/" "$CONFIG" || true
sed -i "s/%%CRYPTA_AUDIENCE_ENABLED%%/${CRYPTA_AUDIENCE_ENABLED}/" "$CONFIG" || true
sed -i "s/%%CRYPTA_STATFACE_ENABLED%%/${CRYPTA_STATFACE_ENABLED}/" "$CONFIG" || true
sed -i "s/%%HAS_BSYETI_TABLES%%/${HAS_BSYETI_TABLES}/" "$CONFIG" || true

#creating user crypta
id -u crypta || useradd -c 'Crypta User' -m -s /bin/bash crypta || true
