#!/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.
# */

# env var used often
PORT0=${PORT0:-${BOOKIE_PORT}}
PORT0=${PORT0:-3181}
BK_DATA_DIR=${BK_DATA_DIR:-"/data/bookkeeper"}
BK_CLUSTER_ROOT_PATH=${BK_CLUSTER_ROOT_PATH:-""}

# bk env vars to replace values in config files
export BK_HOME=/opt/bookkeeper
# metadata service
export BK_zkServers=${BK_zkServers}
export BK_zkLedgersRootPath=${BK_zkLedgersRootPath:-"${BK_CLUSTER_ROOT_PATH}/ledgers"}
export BK_metadataServiceUri=${BK_metadataServiceUri:-"zk://${BK_zkServers}${BK_zkLedgersRootPath}"}
# bookie
export BK_bookiePort=${BK_bookiePort:-${PORT0}}
export BK_httpServerEnabled=${BK_httpServerEnabled:-"true"}
export BK_httpServerPort=${BK_httpServerPort:-${BOOKIE_HTTP_PORT}}
export BK_journalDirectory=${BK_journalDirectory:-${BK_DATA_DIR}/journal}
export BK_ledgerDirectories=${BK_ledgerDirectories:-${BK_DATA_DIR}/ledgers}
export BK_indexDirectories=${BK_indexDirectories:-${BK_ledgerDirectories}}
# dlog
export BK_dlogRootPath=${BK_dlogRootPath:-"${BK_CLUSTER_ROOT_PATH}/distributedlog"}
# stream storage
export BK_NUM_STORAGE_CONTAINERS=${BK_NUM_STORAGE_CONTAINERS:-"32"}
export BK_STREAM_STORAGE_ROOT_PATH=${BK_STREAM_STORAGE_ROOT_PATH:-"/stream"}
# zk-shell
export ZK_SHELL_HOME=${ZK_SHELL_HOME:-"${HOME}"}

echo "Environment Vars for bookie:"
echo ""
echo "  [metadata service]"
echo "  BK_zkServers is $BK_zkServers"
echo "  BK_CLUSTER_ROOT_PATH is $BK_CLUSTER_ROOT_PATH"
echo "  BK_metadataServiceUri is $BK_metadataServiceUri"
echo ""
echo "  [bookie]"
echo "  BK_bookiePort bookie service port is $BK_bookiePort"
echo "  BK_DATA_DIR is $BK_DATA_DIR"
echo "  BK_journalDirectory is ${BK_journalDirectory}"
echo "  BK_ledgerDirectories are ${BK_ledgerDirectories}"
echo "  BK_indexDirectories are ${BK_indexDirectories}"
echo ""
echo "  [bookie http]"
echo "  BK_httpServerEnabled is ${BK_httpServerEnabled}"
echo "  BK_httpServerPort is ${BK_httpServerPort}"
echo ""
echo "  [dlog]"
echo "  BK_dlogRootPath is $BK_dlogRootPath"
echo ""
echo "  [stream storage]"
echo "  BK_STREAM_STORAGE_ROOT_PATH is ${BK_STREAM_STORAGE_ROOT_PATH}"
echo "  BK_NUM_STORAGE_CONTAINERS is ${BK_NUM_STORAGE_CONTAINERS}"
echo "  BOOKIE_GRPC_PORT is ${BOOKIE_GRPC_PORT}"

python scripts/apply-config-from-env.py ${BK_HOME}/conf/*.conf

export BOOKIE_CONF=${BK_HOME}/conf/bk_server.conf
export SERVICE_PORT=${PORT0}

function create_bookie_dirs() {
    mkdir -p "${BK_journalDirectory}" "${BK_ledgerDirectories}" "${BK_indexDirectories}"
    echo "Created bookie dirs : "
    echo "  journal = ${BK_journalDirectory}"
    echo "  ledger = ${BK_ledgerDirectories}"
    echo "  index = ${BK_indexDirectories}"
    # -------------- #
    # Allow the container to be started with `--user`
    if [ "$(id -u)" = '0' ]; then
        chown -R "${BK_USER}:${BK_USER}" "${BK_journalDirectory}" "${BK_ledgerDirectories}" "${BK_indexDirectories}"
    fi
    # -------------- #
}
