#!@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_master <command> [<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 value (if querying)
Commands:
-G, --query Query the current value of the promotion score
-v, --update=VALUE Update the value of the promotion score
-D, --delete Delete the promotion score
Additional Options:
-r, --resource=RSC ID of resource to act on
-N, --node=NODE Use promotion score on named node (instead of local node)
-l, --lifetime=VALUE Until when should the setting take effect
(valid values: reboot, forever)
-i, --id=VALUE (Advanced) XML ID used to identify promotion score attribute"
HELP_TEXT="crm_master - Query, update, or delete a resource's promotion score
This program should normally be invoked only from inside an OCF resource agent.
$USAGE_TEXT"
exit_usage() {
if [ $# -gt 0 ]; then
echo "error:" "$@" >&2
fi
echo
echo "$USAGE_TEXT"
exit 1
}
SHORTOPTS_DEPRECATED="U:Q"
LONGOPTS_DEPRECATED="uname:,get-value,delete-attr,attr-value:,attr-id:"
SHORTOPTS="VqGv:DN:l:i:r:"
LONGOPTS="help,version,verbose,quiet,query,update:,delete,node:,lifetime:,id:,resource:"
TEMP=$(@GETOPT_PATH@ -o ${SHORTOPTS}${SHORTOPTS_DEPRECATED} \
--long ${LONGOPTS},${LONGOPTS_DEPRECATED} \
-n crm_master -- "$@")
if [ $? -ne 0 ]; then
exit_usage
fi
eval set -- "$TEMP" # Quotes around $TEMP are essential
# Explicitly set the (usual default) lifetime, so the attribute gets set as a
# node attribute and not a cluster property.
options="--lifetime forever"
while true ; do
case "$1" in
--help)
echo "$HELP_TEXT"
exit 0
;;
--version)
crm_attribute --version
exit 0
;;
--verbose|-V|--quiet|-q|--query|-G|--delete|-D)
options="$options $1"
shift
;;
--update|-v|--node|-N|--lifetime|-l|--id|-i)
options="$options $1 $2"
shift
shift
;;
-r|--resource)
OCF_RESOURCE_INSTANCE=$2;
shift
shift
;;
--get-value|--delete-attr|-Q) # deprecated
options="$options $1"
shift
;;
--uname|-U|--attr-value|--attr-id) # deprecated
options="$options $1 $2"
shift
shift
;;
--)
shift
break
;;
*)
exit_usage "unknown option '$1'"
;;
esac
done
if [ -z "$OCF_RESOURCE_INSTANCE" ]; then
echo "This program should normally only be invoked from inside an OCF resource agent."
echo "To set a promotion score from the command line, please specify resource with -r."
exit 1
fi
crm_attribute -n master-$OCF_RESOURCE_INSTANCE $options