# Setup main configuration and load preferences
function hydra_config_load {
- if [ -f "$HOME/.$NAME" ]; then
+ local folder="`dirname $CONFIG`"
+
+ if [ -f "$folder" ]; then
echo "Converting legacy configuration scheme..."
- mv $HOME/.$NAME $HOME/.$NAME.tmp
- mkdir $HOME/.$NAME
- mv $HOME/.$NAME.tmp $CONFIG
+ mv $folder $folder.tmp
+ mkdir -p $folder
+ mv $folder.tmp $CONFIG
fi
if [ ! -e "$CONFIG" ]; then
# Load config preferences
function hydra_config_load_preferences {
- # Load custom keyring preferences
+ # Load custom preferences
if [ ! -z "$PREFERENCES" ] && [ -f "$PREFERENCES" ]; then
source $PREFERENCES
fi
+
+ hydra_check_preferences
+}
+
+# Check preferences
+function hydra_check_preferences {
+ if [ ! -z "$PUPPET" ] && [ ! -d "$PUPPET" ]; then
+ echo "Puppet folder not found: $PUPPET."
+ exit 1
+ fi
}
# Load a parameter from config
# Set needed environment variables and do basic checks.
function hydra_set_env {
+ export CONFIG="$HOME/.hydra/config"
export ACTION="$1"
+
+ if [ ! -z "$HYDRA" ]; then
+ export PREFERENCES="$HOME/.hydra/$HYDRA"
+ fi
}
# Get a command argument
#
# Node tool.
#
+
+# Default node retrieval method
+function hydra_get_nodes {
+ # See http://www.mail-archive.com/puppet-users@googlegroups.com/msg01615.html
+ grep ^node $* | sed -e 's/^node //' | awk -F, '{for(i=1;i<=NF;i++) {print $i}}' | cut -d "'" -f2
+}
+
+# Load functions
+source $APP_BASE/lib/hydra/functions || exit 1
+
+# Load config
+hydra_config_load
+
+# Validation
+if [ -z "$PUPPET" ]; then
+ echo "No PUPPET parameter defined at $HYDRA preferences."
+ exit 1
+fi
+
+# Get nodes
+hydra_get_nodes $PUPPET/manifests/nodes/*
# Register an existing hydra
#
-CONFIG="$HOME/.hydra/config"
-PREFERENCES="$HOME/.hydra/$HYDRA"
+# Load functions
+source $APP_BASE/lib/hydra/functions || exit 1
+
+# Command line arguments
BASEDIR="$1"
+# Validation
if [ -z "$BASEDIR" ]; then
echo "Usage: hydra [hydra] register <path>"
exit 1
exit 1
fi
-# Folder setup
-mkdir -p `dirname $CONFIG`
-
# Reparse basedir to force absolute folder
BASEDIR="`cd $BASEDIR && pwd`"
# Add entry
echo "Registering hydra $HYDRA..."
+mkdir -p $BASEDIR
chmod 700 $BASEDIR
+hydra_config_load
echo "$HYDRA=\"$BASEDIR\"" >> $CONFIG
# Puppet configuration