#
# Execute commands on multiple nodes.
#
+
+# Issue commands with pssh
+function mass_pssh {
+ hydra_set_tmpfile nodes
+ hydra $HYDRA nodes > $TMPWORK
+ parallel-ssh -h $TMPWORK -p 4 $COMMAND
+ hydra_unset_tmpfile $TMPWORK
+}
+
+# Issue commands with a for loop
+function mass_loop {
+ for node in $NODES; do
+ echo "Connecting to $node..."
+ ssh -o ConnectTimeout=15 $node $COMMAND
+ done
+}
+
+# Load functions
+source $APP_BASE/lib/hydra/functions || exit 1
+
+# Load config
+hydra_config_load
+
+# Command line arguments
+BASENAME="`basename $0`"
+COMMAND="$*"
+
+# Validation
+if [ "$BASENAME" == "mass-update" ]; then
+ COMMAND="sudo aptitude update"
+elif [ "$BASENAME" == "mass-update" ]; then
+ COMMAND="sudo aptitude safe-upgrade"
+fi
+
+# Build node list
+NODES="`hydra $HYDRA nodes`"
+
+# Execute commands in hosts
+mass_loop $COMMAND