#!/bin/sh

set -e
set -x

if [ -z "${1}" ] ; then
	echo "usage: $0 <first-node-hostname>"
	exit 1
fi


MY_HOSTNAME=$(hostname -s)
CLUSTER_NAME=$(echo ${1} | cut -d. -f1)


if [ "${MY_HOSTNAME}" = "${CLUSTER_NAME}" ] ; then
	echo "Running: rabbitmqctl set_policy HA"
	# As per recommendation at https://wiki.openstack.org/wiki/Large_Scale_Configuration_Rabbit
	# do not set HA queues for the ones with _fanout_ and reply_
	rabbitmqctl set_policy HA '^(?!(amq\.)|(.*_fanout_)|(reply_)).*' '{"ha-mode": "all"}'
	rabbitmqctl set_policy TTL ".*" '{"message-ttl":600000}' --apply-to queues

	echo "I'm first master, let's do nothing..."
	exit 0
fi

if ! rabbitmqctl cluster_status | grep -q ${CLUSTER_NAME} ; then
	echo "Not in cluster: joining cluster ${CLUSTER_NAME}"
	rabbitmqctl stop_app
	rabbitmqctl join_cluster rabbit@${CLUSTER_NAME}
	sleep 5
	rabbitmqctl start_app
else
	echo "In cluster already"
fi

echo "Running: rabbitmqctl set_policy HA"
rabbitmqctl set_policy HA '^(?!(amq\.)|(.*_fanout_)|(reply_)).*' '{"ha-mode": "all"}'
rabbitmqctl set_policy TTL ".*" '{"message-ttl":600000}' --apply-to queues
