| #!/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 |