dev/provisioning/modules/puppi/files/scripts/functions
changeset 28 b0b56e0f8c7f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dev/provisioning/modules/puppi/files/scripts/functions	Fri Jan 15 15:35:00 2016 +0100
@@ -0,0 +1,229 @@
+#!/bin/bash
+# General Puppi functions
+
+BOOTUP=color
+RES_COL=75
+MOVE_TO_COL="echo -en \\033[${RES_COL}G"
+SETCOLOR_SUCCESS="echo -en \\033[0;32m"
+SETCOLOR_FAILURE="echo -en \\033[0;31m"
+SETCOLOR_WARNING="echo -en \\033[0;33m"
+SETCOLOR_NORMAL="echo -en \\033[0;39m"
+SETCOLOR_TITLE="echo -en \\033[0;35m"
+SETCOLOR_BOLD="echo -en \\033[0;1m"
+
+echo_success() {
+  [ "$BOOTUP" = "color" ] && $MOVE_TO_COL
+  echo -n "["
+  [ "$BOOTUP" = "color" ] && $SETCOLOR_SUCCESS
+  echo -n $"  OK  "
+  [ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL
+  echo -n "]"
+  echo -ne "\r"
+  return 0
+}
+
+echo_dontdeploy() {
+  [ "$BOOTUP" = "color" ] && $MOVE_TO_COL
+  echo -n "["
+  [ "$BOOTUP" = "color" ] && $SETCOLOR_SUCCESS
+  echo -n $" NO NEED TO DEPLOY "
+  [ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL
+  echo -n "]"
+  echo -ne "\r"
+  return 0
+}
+
+echo_failure() {
+  [ "$BOOTUP" = "color" ] && $MOVE_TO_COL
+  echo -n "["
+  [ "$BOOTUP" = "color" ] && $SETCOLOR_FAILURE
+  echo -n $"FAILED"
+  [ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL
+  echo -n "]"
+  echo -ne "\r"
+  return 1
+}
+
+echo_passed() {
+  [ "$BOOTUP" = "color" ] && $MOVE_TO_COL
+  echo -n "["
+  [ "$BOOTUP" = "color" ] && $SETCOLOR_WARNING
+  echo -n $"PASSED"
+  [ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL
+  echo -n "]"
+  echo -ne "\r"
+  return 1
+}
+
+echo_warning() {
+  [ "$BOOTUP" = "color" ] && $MOVE_TO_COL
+  echo -n "["
+  [ "$BOOTUP" = "color" ] && $SETCOLOR_WARNING
+  echo -n $"WARNING"
+  [ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL
+  echo -n "]"
+  echo -ne "\r"
+  return 1
+}
+
+echo_title () {
+  echo
+  echo
+  [ "$BOOTUP" = "color" ] && $SETCOLOR_TITLE
+  echo "$1"
+  [ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL
+}
+
+check_retcode () {
+    if [ $? = "0" ] ; then
+        true
+    else
+        exit 2
+    fi
+}
+
+handle_result () {
+        RETVAL=$?
+        if [ "$RETVAL" = "0" ] ; then
+            showresult="echo_success"
+            result="OK"
+        fi
+        if [ "$RETVAL" = "1" ] ; then
+            showresult="echo_warning"
+            EXITWARN="1"
+            result="WARNING"
+        fi
+        if [ "$RETVAL" = "2" ] ; then
+            showresult="echo_failure"
+            EXITCRIT="1"
+            result="CRITICAL"
+        fi
+        if [ "$RETVAL" = "99" ] ; then
+            showresult="echo_dontdeploy"
+            DONTDEPLOY="1"
+            result="OK"
+        fi
+        if [ x$show == "xyes" ] ; then
+            $showresult
+            echo
+            echo -e "$output"
+            echo
+        elif [ x$show == "xfail" ] && [ x$RETVAL != "x0" ] ; then
+            $showresult
+            echo
+            echo -e "$output"
+            echo
+        fi
+
+        # Output to file
+        if [ ! -d $logdir/$project/$tag ] ; then
+            mkdir -p $logdir/$project/$tag
+        fi
+        let counter=counter+1
+        echo $title > $logdir/$project/$tag/$counter-$command
+        echo $code >> $logdir/$project/$tag/$counter-$command
+        echo $result >> $logdir/$project/$tag/$counter-$command
+        echo $output >> $logdir/$project/$tag/$counter-$command
+
+}
+
+
+# Function taken from http://www.threadstates.com/articles/parsing_xml_in_bash.html
+xml_parse () {
+    local tag=$1
+    local xml=$2
+
+    # Find tag in the xml, convert tabs to spaces, remove leading spaces, remove the tag.
+    grep $tag $xml | \
+        tr '\011' '\040' | \
+        sed -e 's/^[ ]*//' \
+            -e 's/^<.*>\([^<].*\)<.*>$/\1/'
+}
+
+# Stores the passed arguments in Project runtime config file
+# Only if the parameter is not already defined
+# Usage:
+# save_runtime_config parameter=value # Sets or overrides parameter
+# save_runtime_config parameter=value notforce # Sets parameters only if is not already set
+save_runtime_config () {
+    parameter=$(echo $1 | cut -d '=' -f1)
+    value=$(echo $1 | cut -d '=' -f2-)
+    force=$2
+
+    if [[ ! $(grep $parameter $workdir/$project/config) ]] ; then
+        echo  >> $workdir/$project/config
+        echo "# Added by $0" >> $workdir/$project/config
+        echo "$parameter=\"$value\"" >> $workdir/$project/config
+    else
+#        sed -i "/^$parameter=/d" $workdir/$project/config # No real need to remove lines with old configs
+        if [[ x$force == xnotforce ]] ; then
+            echo  >> $workdir/$project/config
+            echo "# CHANGE NOT FORCED by $0" >> $workdir/$project/config
+            echo "# $parameter=\"$value\"" >> $workdir/$project/config
+        else
+            echo  >> $workdir/$project/config
+            echo "# CHANGED by $0" >> $workdir/$project/config
+            echo "$parameter=\"$value\"" >> $workdir/$project/config
+       fi
+    fi
+    
+}
+
+# Adds a runtime comment to Project runtime config file
+save_runtime_comment () {
+    echo  >> $workdir/$project/config
+    echo "# Added by $0" >> $workdir/$project/config
+    echo "  ## $1" >> $workdir/$project/config
+}
+
+
+# Stores the passed arguments in Project runtime config file
+# Forces parameter overwrite if already defined
+overwrite_runtime_config () {
+    echo "$1" >> $workdir/$project/config
+}
+
+ask_interactive () {
+    if [ x$show == "xyes" ] ; then
+        echo -n $title
+    fi
+
+    if [ "$interactive" = "yes" ] ; then
+        echo 
+        echo "INTERACTIVE MODE: Press 'x' to exit or just return to go on" 
+        read press
+        case $press in 
+            x) exit 2 ;;
+            *) return
+        esac
+    fi
+}
+
+# Shows or executes a command
+show_command () {
+   echo
+   $SETCOLOR_BOLD ; echo "$HOSTNAME: $*" ; $SETCOLOR_NORMAL
+
+   bash -c "$*"
+
+# Grep filter at show_command level
+#   if [ ! -z "$greppattern" ] ; then
+#       bash -c "$*" | grep $greppattern
+#   else
+#       bash -c "$*"
+#   fi
+}
+
+# Filtering out only:  $ ; ` | < >
+shell_filter () {
+    echo $1 | sed 's/\$//g' | sed 's/;//g' | sed 's/`//g' | sed 's/|//g' | sed 's/<//g' | sed 's/>//g'
+}
+
+shell_filter_strict () {
+# Filtering out:  $ ; ` | < > = ! { } [ ] / \ # &
+    echo $1 | sed 's/\$//g' | sed 's/;//g' | sed 's/`//g' | sed 's/|//g' | sed 's/<//g' | sed 's/>//g'  | sed 's/=//g' | sed 's/!//g' | sed 's/{//g' | sed 's/}//g' | sed 's/\[//g' | sed 's/\]//g' | sed 's/\///g' | sed 's/\\//g' | sed 's/#//g' | sed 's/&//g'
+
+# Filtering out: all but accepted chars
+#     echo $1 | sed "s/[^a-Z0-9_\-]//Ig"
+}
+