Charm: ~marcoceppi:precise/gluster   Revision: 3   Hook: slave-relation-joined
#!/bin/bash

. "/usr/share/charm-helper/sh/peer.sh"

if `ch_peer_i_am_leader`; then
	juju-log "I AM THE LEADER!"
	for REMOTE in `relation-list`; do
		if [ ! -f "bricks/${REMOTE/\//-}" ]; then
			REMOTE_ADDRESS=`relation-get private-address $REMOTE`
			
			juju-log "Adding $REMOTE ($REMOTE_ADDRESS) as a trusted server pool"
			gluster peer probe $REMOTE_ADDRESS
			
			if [ $? -eq 0 ]; then
				juju-log "Success!"
				# This really isn't needed, but if I'm going to make a file
				# I might as well put something in it.
				echo "$JUJU_RELATION_ID" > bricks/${REMOTE/\//-}
				
				# REBALANCE AND ADD THE BRICK TO ALL STORAGE
				juju-log "Checking if we need to update any volumes with new bricks"
				for volume_service in $(ls volumes); do
					VOLUME=`cat volumes/$volume_service`
					
					juju-log "FOUND $volume_service ($VOLUME) - ADDING BRICK: $REMOTE ($REMOTE_ADDRESS)"
					gluster volume add-brick $VOLUME $REMOTE_ADDRESS:/mnt/$VOLUME
					
					juju-log "BRICK ADDED, REBALANCE ALL OF THE THINGS"
					gluster volume rebalance $VOLUME start
				done
			else
				juju-log "Couldn't probe that brick."
			fi
		fi
	done
fi