#!/bin/sh
PGBASE="/usr/local/pgsql"
PGDATA1="${PGBASE}/data1"
PGDATA2="${PGBASE}/data2"
PGDATA3="${PGBASE}/data3"
PGRP="${PGBASE}/pgrp"
PGLB="${PGBASE}/pglb"
LOCALHOST=`hostname`
IPADDR=`awk /${LOCALHOST}/'{print $1}' /etc/hosts`
/bin/rm -r ${PGDATA1} ${PGDATA2} ${PGDATA3} ${PGRP} ${PGLB}

# create first DB cluster
initdb -D ${PGDATA1}
# setup configuration files in $PGDATA1
cd ${PGDATA1}
sed -e "s/replicate1.pgcluster.org/${LOCALHOST}/" -e "s/cluster1.pgcluster.org/${LOCALHOST}/" cluster.conf > c1
mv c1 cluster.conf
sed -e "s/#tcpip_socket = false/tcpip_socket = true/" -e "s/#port = 5432/port = 5001/" postgresql.conf > p1
mv p1 postgresql.conf
echo "#PGCluster connection" >> pg_hba.conf
echo "host	all	all	${IPADDR} 255.255.255.255	trust" >> pg_hba.conf

# copy first DB cluster to second DB cluster
cp -p -r ${PGDATA1} ${PGDATA2}
cd ${PGDATA2}
sed -e "s/7001/7002/" cluster.conf > c2
mv c2 cluster.conf
sed -e "s/5001/5002/" postgresql.conf > p2
mv p2 postgresql.conf

# copy first DB cluster to third DB cluster
cp -p -r ${PGDATA1} ${PGDATA3}
cd ${PGDATA3}
sed -e "s/7001/7003/" cluster.conf > c2
mv c2 cluster.conf
sed -e "s/5001/5003/" postgresql.conf > p2
mv p2 postgresql.conf

# setup configuration file of replication server
mkdir ${PGRP}
cd ${PGRP}
cp ${PGBASE}/share/pgreplicate.conf.sample ${PGRP}/pgreplicate.conf
sed -e 's/#<C/<C/' -e 's/#<\/C/<\/C/' \
-e "s/#[ 	]*<Host_Name>[ 	]*master.pgcluster.org[ 	]*<\/Host_Name>/    <Host_Name> ${LOCALHOST} <\/Host_Name> \n    <Port> 5001 <\/Port>\n    <Recovery_Port> 7001 <\/Recovery_Port>/" \
-e "s/#[ 	]*<Host_Name>[ 	]*clusterdb2.pgcluster.org[ 	]*<\/Host_Name>/    <Host_Name> ${LOCALHOST} <\/Host_Name> \n    <Port> 5002 <\/Port>\n    <Recovery_Port> 7002 <\/Recovery_Port>/" \
-e "s/#[ 	]*<Host_Name>[ 	]*cluster3.pgcluster.org[ 	]*<\/Host_Name>/    <Host_Name> ${LOCALHOST} <\/Host_Name> \n    <Port> 5003 <\/Port>\n    <Recovery_Port> 7003 <\/Recovery_Port>/" \
-e "s/#[ 	]*<Port>[ 	]*5432.*//" \
-e "s/#[ 	]*<Recovery_Port>[ 	]*7001.*//" \
-e 's/#<L/<L/' -e 's/#<\/L/<\/L/' \
-e "s/#[ 	]*<Host_Name>[ 	]*loadbalancer.pgcluster.org/	<Host_Name>		${LOCALHOST}/" \
-e 's/#[ 	]*<Recovery_Port>[ 	]*6001/	<Recovery_Port>		6001/' \
-e "s/^<Host_Name>[ 	]*replicate.pgcluster.org/<Host_Name>			${LOCALHOST}/" \
${PGRP}/pgreplicate.conf | grep . > p1
mv p1 ${PGRP}/pgreplicate.conf

# setup configuration file of load balancer
mkdir ${PGLB}
cd ${PGLB}
cp ${PGBASE}/share/pglb.conf.sample ${PGLB}/pglb.conf
sed -e 's/#<C/<C/' -e 's/#<\/C/<\/C/' \
-e "s/#[ 	]*<Host_Name>[ 	]*master.pgcluster.org[ 	]*<\/Host_Name>/    <Host_Name> ${LOCALHOST} <\/Host_Name> \n    <Port> 5001 <\/Port>\n    <Max_Connect> 32 <\/Max_Connect>/" \
-e "s/#[ 	]*<Host_Name>[ 	]*post2.pgcluster.org[ 	]*<\/Host_Name>/    <Host_Name> ${LOCALHOST} <\/Host_Name> \n    <Port> 5002 <\/Port>\n    <Max_Connect> 32 <\/Max_Connect>/" \
-e "s/#[ 	]*<Host_Name>[ 	]*post3.pgcluster.org[ 	]*<\/Host_Name>/    <Host_Name> ${LOCALHOST} <\/Host_Name> \n    <Port> 5003 <\/Port>\n    <Max_Connect> 32 <\/Max_Connect>/" \
-e "s/#[ 	]*<Port>[ 	]*5432.*//" \
-e "s/#[ 	]*<Max_Connect>[ 	]*32.*//" \
-e "s/^<Host_Name>[ 	]*loadbalancer.pgcluster.org/<Host_Name>			${LOCALHOST}/" \
${PGLB}/pglb.conf | grep . > lb1
mv lb1 ${PGLB}/pglb.conf
