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