#!/bin/bash -e

# Copyright 2015 CoreOS, Inc.
#
# Licensed 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.

if [ $# -lt 3 ];then
    echo "USAGE: $0  <master_advertise_peer_urls> <target_name> <target_peer_url>"
    exit 1
fi

function convertDropin {
    sed -e 's/^Added.*$/[Service]/g' -e 's/="/=/g' -e 's/^ETCD_/Environment="ETCD_/g'
}
masterAdvUrl=$1
targetName=$2
targetUrl=$3

cmd="etcdctl --peers ${masterAdvUrl} member add ${targetName} ${targetUrl}"

ENV_VARS=`$cmd`
echo "${ENV_VARS}" | convertDropin  > 40-boostrap-cluster.conf

sudo mv 40-boostrap-cluster.conf /var/run/systemd/system/etcd2.service.d/
sudo systemctl daemon-reload
sudo systemctl cat etcd2.service
echo "You can now start etcd2"


