#!/bin/bash
# This script is part of Booth.
# It checks whether the given resource (service) still has a chance
# to run on the local cluster, so that booth knows whether to
# acquire the ticket here.

service="${1:?Need a resource name as first argument.}"
tmpshadow=`mktemp booth-check.XXXXXX`
trap "rm -f $tmpshadow" EXIT


# We expect an output like
#   p_dummy        (ocf::pacemaker:Dummy): Started geo-rz2-a 

if crm_simulate -O $tmpshadow --ticket-grant "$BOOTH_TICKET" --simulate --live-check |
	sed -n '/^Revised cluster status:/,$p' |
	egrep "^[[:space:]]+$service[[:space:]]+\(.*\):[[:space:]]+Started ([^[:space:]]+) *$" >/dev/null
then
	# can be started - we're done.
	exit 0
fi

# If target-role is Stopped, it judges with being stopped explicitly.
output=$(crm_resource --meta --get-parameter="target-role" --resource=$service 2>/dev/null)
rc=$?
if [ $rc -eq 0 -a "$output" = "Stopped" ]; then
	exit 0
fi

# is ticket in standby?
output=$(crm_ticket --ticket "$BOOTH_TICKET" --get-attr standby)
rc=$?
if [ $rc -eq 0 -a "$output" = true ]; then
	exit 0
fi

# Some error occured.
# Try to help the admin with a bit of diagnostic.
#
# disallow ms-resources, ie. only primitives wanted here
if ! crm_resource -l | grep -v ":" | grep "$service" ; then
	ha_logger "Defined resource '$service' in $BOOTH_CONF_PATH is not a primitive??"
fi

exit 1

