#!/bin/bash

op=""
options=""
lifetime=0
target=`crm_node -n`

TEMP=`getopt -o qDGQVN:U:v:i:l: --long version,help,node:,uname:,id:,attr-value:,delete-attr,get-value,attr-id:,lifetime:,quiet \
     -n 'crm_standby' -- "$@"`

if [ $? != 0 ] ; then echo "crm_standby - A convenience wrapper for crm_attribute"; echo ""; crm_attribute -?; exit 1 ; fi

# Note the quotes around `$TEMP': they are essential!
eval set -- "$TEMP"

while true ; do
	case "$1" in
	    -N|--node)  target="$2"; shift; shift;;
	    -U|--uname) target="$2"; shift; shift;;
	    -v|--attr-value)  options="$options $1 $2"; op=u; shift; shift;;
	    -D|--delete-attr) options="$options $1"; op=d; shift;;
	    -G|--get-value)   options="$options $1"; op=g; shift;;
	    -l|--lifetime)    options="$options $1 $2"; lifetime=1; shift; shift;;
	    -i|--id|--attr-id)     options="$options $1 $2"; shift; shift;;
	    -Q|-q|--quiet|-V)    options="$options $1"; shift;;
	    --version) crm_attribute --version; exit 0;;
	    --help)
		echo "crm_standby - A convenience wrapper for crm_attribute";
		echo "";
		echo "";
		echo "Put the name node into and out of standby. Nodes in standby mode may not host cluster resources";
		echo "";
		echo "Usage: crm_standby crm_standby command [options]";
		echo "Options:"
		echo " --help 		This text"
		echo " --version 		Version information"
		echo " -V, --verbose 		Increase debug output"
		echo " -q, --quiet 		Print only the value on stdout"
		echo ""
		echo "Commands:"
		echo " -G, --query 		Query the current value of the attribute/option"
		echo " -v, --update=value	Update the value of the attribute/option"
		echo " -D, --delete 		Delete the attribute/option"
		echo ""
		echo "Additional Options:"
		echo " -N, --node=value	Set an attribute for the named node (instead of the current one)."
		echo " -l, --lifetime=value	Until when should the setting take affect."
		echo "	       		Valid values: reboot, forever"
		echo " -i, --id=value		(Advanced) The ID used to identify the attribute"
		exit 0;;
	    --) shift ; break ;;
	    *) echo "Unknown option: $1. See --help for details." exit 1;;
	esac
done

options="-N $target -n standby $options"
if [ x$op = x ]; then
    options="$options -G"; op=g
fi

if [ $lifetime = 0 ]; then
    case $op in
	g)
	    crm_attribute $options -l forever 2>&1 > /dev/null
	    if [ $? = 0 ]; then
		options="$options -l forever"
	    else
		options="$options -l reboot -d off"
	    fi
	    ;;
	u)
	    options="$options -l forever"
	    ;;
	d)
	    crm_attribute $options -l forever
	    crm_attribute $options -l reboot
	    exit 0
	    ;;
    esac
fi

#echo crm_attribute $options
crm_attribute $options
