| #!/usr/bin/env bash |
| # |
| # 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. |
| # |
| |
| # Apply env variables to config file and start the regular command |
| |
| CONF_FILE=$1 |
| |
| if [ $? != 0 ]; then |
| echo "Error: Failed to apply changes to config file" |
| exit 1 |
| fi |
| |
| DOMAIN=`hostname -d` |
| |
| # Generate list of servers and detect the current server ID, |
| # based on the hostname |
| IDX=1 |
| for SERVER in $(echo $ZOOKEEPER_SERVERS | tr "," "\n") |
| do |
| echo "server.$IDX=$SERVER.$DOMAIN:2888:3888" >> $CONF_FILE |
| |
| if [ "$HOSTNAME" == "$SERVER" ]; then |
| MY_ID=$IDX |
| echo "Current server id $MY_ID" |
| fi |
| |
| ((IDX++)) |
| done |
| |
| # For ZooKeeper container we need to initialize the ZK id |
| if [ ! -z "$MY_ID" ]; then |
| # Get ZK data dir |
| DATA_DIR=`grep '^dataDir=' $CONF_FILE | awk -F= '{print $2}'` |
| if [ ! -e $DATA_DIR/myid ]; then |
| echo "Creating $DATA_DIR/myid with id = $MY_ID" |
| mkdir -p $DATA_DIR |
| echo $MY_ID > $DATA_DIR/myid |
| fi |
| fi |