blob: 952f9ae282761f5b0797abf701bb412efac546a9 [file] [log] [blame]
#!/bin/bash
HELPTEXT="crm_standby - convenience wrapper for crm_attribute
Check, enable or disable standby mode for a cluster node.
Nodes in standby mode may not host cluster resources.
Usage: crm_standby <command> [options]
Commands:
--help Display this text and exit
--version Display version information and exit
-G, --query Display the current value of standby mode (on/off)
-v, --update=<value> Update the value of standby mode (on/off)
-D, --delete Let standby mode use default value
Options:
-V, --verbose Increase debug output (may be specified multiple times)
-q, --quiet Print nothing on stdout except the standby status
-N, --node=<value> Operate on the named node instead of the current one
-l, --lifetime=<value> Until when the setting should take effect (reboot/forever)
-i, --id=<value> (Advanced) ID used to identify the XML attribute"
op=""
options=""
lifetime=0
target=""
BACKWARD_COMPATIBLE="get-value,attr-value:,delete-attr,uname:,attr-id:"
TEMP=$(getopt -o qDGQVN:U:v:i:l: \
--long help,version,query,update:,delete,verbose,quiet,node:,lifetime:,id:,$BACKWARD_COMPATIBLE \
-n 'crm_standby' -- "$@")
if [ $? -ne 0 ]; then
echo
echo "$HELPTEXT"
exit 1
fi
# The quotes around $TEMP are essential!
eval set -- "$TEMP"
while true ; do
case "$1" in
-N|--node|-U|--uname) target="$2"; shift 2;;
-G|--query|--get-value) options="$options --query"; op=g; shift;;
-v|--update|--attr-value) options="$options --update $2"; op=u; shift 2;;
-D|--delete|--delete-attr) options="$options --delete"; op=d; shift;;
-l|--lifetime) options="$options --lifetime $2"; lifetime=1; shift 2;;
-i|--id|--attr-id) options="$options --id $2"; shift 2;;
-q|-Q|--quiet|-V|--verbose) options="$options $1"; shift;;
--version) crm_attribute --version; exit 0;;
--help) echo "$HELPTEXT"; exit 0;;
--) shift ; break ;;
*) echo "crm_standby: unrecognized option '$1'"; echo; echo "$HELPTEXT"; exit 1;;
esac
done
# It's important to call cluster commands only after arguments are processed,
# so --version and --help work without problems even if those commands don't.
if [ "$target" = "" ]; then
target=$(crm_node -n)
fi
options="-N $target -n standby $options"
if [ x$op = x ]; then
options="$options -G"; op=g
fi
# If the user didn't explicitly specify a lifetime ...
if [ $lifetime -eq 0 ]; then
case $op in
g)
# For query, report the forever entry if one exists, otherwise
# report the reboot entry if one exists, otherwise report off.
crm_attribute $options -l forever >/dev/null 2>&1
if [ $? -eq 0 ]; then
options="$options -l forever"
else
options="$options -l reboot -d off"
fi
;;
u)
# For update, default to updating the forever entry.
options="$options -l forever"
;;
d)
# For delete, default to deleting both forever and reboot entries.
crm_attribute $options -l forever
crm_attribute $options -l reboot
exit 0
;;
esac
fi
crm_attribute $options