aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/hydra/misc27
-rwxr-xr-xshare/hydra/nodes21
-rwxr-xr-xshare/hydra/register12
3 files changed, 50 insertions, 10 deletions
diff --git a/lib/hydra/misc b/lib/hydra/misc
index 4695d5f..d83afbb 100644
--- a/lib/hydra/misc
+++ b/lib/hydra/misc
@@ -2,11 +2,13 @@
# 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
@@ -23,10 +25,20 @@ function hydra_config_load {
# 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
@@ -70,7 +82,12 @@ function hydra_exec {
# 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
diff --git a/share/hydra/nodes b/share/hydra/nodes
index 93593e1..c7e4c4c 100755
--- a/share/hydra/nodes
+++ b/share/hydra/nodes
@@ -2,3 +2,24 @@
#
# 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/*
diff --git a/share/hydra/register b/share/hydra/register
index 5ef0a9d..e3d3ed6 100755
--- a/share/hydra/register
+++ b/share/hydra/register
@@ -3,10 +3,13 @@
# 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
@@ -15,15 +18,14 @@ elif grep -q -e "^$HYDRA=" $CONFIG &> /dev/null; then
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