#!/usr/bin/env bash
#
#/**
# * Copyright 2007 The Apache Software Foundation
# *
# * Licensed to the Apache Software Foundation (ASF) under one
# * or more contributor license agreements.  See the NOTICE file
# * distributed with this work for additional information
# * regarding copyright ownership.  The ASF licenses this file
# * to you under the Apache License, Version 2.0 (the
# * "License"); you may not use this file except in compliance
# * with the License.  You may obtain a copy of the License at
# *
# *     http://www.apache.org/licenses/LICENSE-2.0
# *
# * Unless required by applicable law or agreed to in writing, software
# * distributed under the License is distributed on an "AS IS" BASIS,
# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# * See the License for the specific language governing permissions and
# * limitations under the License.
# */

# zk env vars to replace values in config files
export ZK_dataDir=${ZK_dataDir:-"data/zookeeper/data"}
export ZK_dataLogDir=${ZK_dataLogDir:-"data/zookeeper/txlog"}
export ZK_standaloneEnabled=${ZK_standaloneEnabled:-"false"}
export ZK_dynamicConfigFile=${ZK_dynamicConfigFile:-"${BK_HOME}/conf/zookeeper.conf.dynamic"}
export ZK_SERVERS=${ZK_SERVERS:-"server.1=127.0.0.1:2888:3888:participant;0.0.0.0:2181"}
export ZK_ID=${ZK_ID:-"1"}

echo "Environment Vars for zookeeper:"
echo "  ZK_dataDir = ${ZK_dataDir}"
echo "  ZK_dataLogDir = ${ZK_dataLogDir}"
echo "  ZK_ID = ${ZK_ID}"
echo "  ZK_SERVERS = ${ZK_SERVERS}"
echo "  ZK_standaloneEnabled = ${ZK_standaloneEnabled}"
echo "  ZK_dynamicConfigFile = ${ZK_dynamicConfigFile}"

function create_zk_dirs() {
    mkdir -p "${ZK_dataDir}" "${ZK_dataLogDir}"
    echo "Created zookeeper dirs : "
    echo "  data = ${ZK_dataDir}"
    echo "  txnlog = ${ZK_dataLogDir}"

    if [[ ! -f "${ZK_dataDir}/myid" ]]; then
        echo "${ZK_ID}" > "${ZK_dataDir}/myid"
    fi

    # -------------- #
    # Allow the container to be started with `--user`
    if [ "$(id -u)" = '0' ]; then
        chown -R "${BK_USER}:${BK_USER}" "${ZK_dataDir}" "${ZK_dataLogDir}"
    fi
    # -------------- #
}

function create_zk_dynamic_conf() {
    for server in ${ZK_SERVERS}; do
        echo "$server" >> "${ZK_dynamicConfigFile}"
    done
}

function init_zookeeper() {

    # apply zookeeper envs
    python scripts/apply-config-from-env.py ${BK_HOME}/conf/zookeeper.conf

    # create dirs if they don't exist
    create_zk_dirs

    # create dynamic config
    create_zk_dynamic_conf

}