#!/bin/sh

if [ "$1" = '--help' ] ; then
  echo "Usage: $0 <remote command>"
  exit
fi

if [ "$1" = '--version' ] ; then
  4s-backend --version | sed 's/4s-backend/'"$(basename "$0")"'/'
  exit
fi

if [ $# -eq 0 ] ; then
  echo "Usage: 4s-ssh-all-parallel <remote command>"
  echo "remember to quote shell metacharacters"
  exit;
fi;

atexit() {
  for pid in $sshpid; do
    kill "$pid" > /dev/null 2>&1
  done
}

trap atexit EXIT

hosts=$(cat /etc/4s-cluster)
id=0
nodes=0
for node in $hosts; do
 nodes=$((nodes+1))
done

for node in $hosts; do
 ssh "$node" "export id=\"$id\"; export nodes=\"$nodes\"; $*" > "/tmp/4s-parallel-$$-$id.out" 2>&1 &
 sshpid="$sshpid $!"
 id=$((id+1))
done
wait

id=0
for node in $hosts; do
 echo "$id: $node:"
 cat "/tmp/4s-parallel-$$-$id.out"
 rm "/tmp/4s-parallel-$$-$id.out"
 id=$((id+1))
done

sshpid=""
