#!@BASH_PATH@ # # Copyright 2009-2018 the Pacemaker project contributors # # The version control history for this file may have further details. # # This source code is licensed under the GNU General Public License version 2 # or later (GPLv2+) WITHOUT ANY WARRANTY. # USAGE_TEXT="Usage: crm_standby [options] Common options: --help Display this text, then exit --version Display version information, then exit -V, --verbose Specify multiple times to increase debug output -q, --quiet Print only the standby status (if querying) Commands: -G, --query Query 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 Additional Options: -N, --node=NODE Operate on the named node instead of the current one -l, --lifetime=VALUE Until when should the setting take effect (valid values: reboot, forever) -i, --id=VALUE (Advanced) XML ID used to identify standby attribute" HELP_TEXT="crm_standby - Query, enable, or disable standby mode for a node Nodes in standby mode may not host cluster resources. $USAGE_TEXT " exit_usage() { if [ $# -gt 0 ]; then echo "error:" "$@" >&2 fi echo echo "$USAGE_TEXT" exit 1 } op="" options="" lifetime=0 target="" SHORTOPTS_DEPRECATED="U:Q" LONGOPTS_DEPRECATED="uname:,get-value,delete-attr,attr-value:,attr-id:" SHORTOPTS="VqGv:DN:l:i:" LONGOPTS="help,version,verbose,quiet,query,update:,delete,node:,lifetime:,id:" TEMP=$(@GETOPT_PATH@ -o ${SHORTOPTS}${SHORTOPTS_DEPRECATED} \ --long ${LONGOPTS},${LONGOPTS_DEPRECATED} \ -n crm_standby -- "$@") if [ $? -ne 0 ]; then exit_usage fi eval set -- "$TEMP" # Quotes around $TEMP are essential while true ; do case "$1" in --help) echo "$HELP_TEXT" exit 0 ;; --version) crm_attribute --version exit 0 ;; -q|--quiet|-V|--verbose|-Q) options="$options $1" shift ;; -N|--node|-U|--uname) target="$2" shift shift ;; -G|--query|--get-value) options="$options --query" op=g shift ;; -v|--update|--attr-value) options="$options --update $2" op=u shift shift ;; -D|--delete|--delete-attr) options="$options --delete" op=d shift ;; -l|--lifetime) options="$options --lifetime $2" lifetime=1 shift shift ;; -i|--id|--attr-id) options="$options --id $2" shift shift ;; --) shift break ;; *) exit_usage "unknown option '$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