From 88fb3d2d1bcfdc2cf59ca908b80bc40292aa8ed0 Mon Sep 17 00:00:00 2001 From: Silvio Rhatto Date: Sat, 13 Nov 2010 12:32:55 -0200 Subject: Initial working version for a node tool and misc changes --- lib/hydra/misc | 27 ++++++++++++++++++++++----- share/hydra/nodes | 21 +++++++++++++++++++++ share/hydra/register | 12 +++++++----- 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 " 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 -- cgit v1.2.3