diff -uNr a/heartbeat/NovaEvacuate b/heartbeat/NovaEvacuate --- a/heartbeat/NovaEvacuate 2017-09-27 11:59:28.430326918 +0200 +++ b/heartbeat/NovaEvacuate 2017-09-27 12:04:21.599608299 +0200 @@ -77,6 +77,24 @@ + + +Region name for connecting to nova. + +Region name + + + + + +Explicitly allow client to perform "insecure" TLS (https) requests. +The server's certificate will not be verified against any certificate authorities. +This option should be used with caution. + +Allow insecure TLS requests + + + Disable shared storage recovery for instances. Use at your own risk! @@ -85,6 +103,14 @@ + + +Enable extra logging from the evacuation process + +Enable debug logging + + + @@ -143,16 +169,20 @@ need_evacuate=0 case $state in - "") ;; - no) ocf_log debug "$node is either fine or already handled";; - yes) need_evacuate=1;; + "") + ;; + no) + ocf_log debug "$node is either fine or already handled" + ;; + yes) need_evacuate=1 + ;; *@*) where=$(echo $state | awk -F@ '{print $1}') when=$(echo $state | awk -F@ '{print $2}') now=$(date +%s) if [ $(($now - $when)) -gt 60 ]; then - ocf_log info "Processing partial evacuation of $node by $where at $when" + ocf_log info "Processing partial evacuation of $node by $where at $when" need_evacuate=1 else # Give some time for any in-flight evacuations to either complete or fail @@ -163,9 +193,15 @@ esac if [ $need_evacuate = 1 ]; then - ocf_log notice "Initiating evacuation of $node" + fence_agent="fence_compute" + + if have_binary fence_evacuate + then + fence_agent="fence_evacuate" + fi - fence_compute ${fence_options} -o status -n ${node} + ocf_log notice "Initiating evacuation of $node with $fence_agent" + $fence_agent ${fence_options} -o status -n ${node} if [ $? = 1 ]; then ocf_log info "Nova does not know about ${node}" # Dont mark as no because perhaps nova is unavailable right now @@ -177,7 +213,7 @@ return $OCF_SUCCESS fi - fence_compute ${fence_options} -o off -n $node + $fence_agent ${fence_options} -o off -n $node rc=$? if [ $rc = 0 ]; then @@ -211,7 +247,10 @@ rc=$OCF_SUCCESS fence_options="" - check_binary fence_compute + + if ! have_binary fence_evacuate; then + check_binary fence_compute + fi # Is the state directory writable? state_dir=$(dirname $statefile) @@ -250,12 +289,29 @@ fence_options="${fence_options} -t ${OCF_RESKEY_tenant_name}" + if [ -n "${OCF_RESKEY_region_name}" ]; then + fence_options="${fence_options} \ + --region-name ${OCF_RESKEY_region_name}" + fi + + if [ -n "${OCF_RESKEY_insecure}" ]; then + if ocf_is_true "${OCF_RESKEY_insecure}"; then + fence_options="${fence_options} --insecure" + fi + fi + if [ -n "${OCF_RESKEY_no_shared_storage}" ]; then if ocf_is_true "${OCF_RESKEY_no_shared_storage}"; then fence_options="${fence_options} --no-shared-storage" fi fi + if [ -n "${OCF_RESKEY_verbose}" ]; then + if ocf_is_true "${OCF_RESKEY_verbose}"; then + fence_options="${fence_options} --verbose" + fi + fi + if [ -n "${OCF_RESKEY_endpoint_type}" ]; then case ${OCF_RESKEY_endpoint_type} in adminURL|publicURL|internalURL) ;; @@ -276,19 +332,32 @@ statefile="${HA_RSCTMP}/${OCF_RESOURCE_INSTANCE}.active" case $__OCF_ACTION in -start) evacuate_validate; evacuate_start;; -stop) evacuate_stop;; -monitor) evacuate_validate; evacuate_monitor;; -meta-data) meta_data - exit $OCF_SUCCESS - ;; -usage|help) evacuate_usage - exit $OCF_SUCCESS - ;; -validate-all) exit $OCF_SUCCESS;; -*) evacuate_usage - exit $OCF_ERR_UNIMPLEMENTED - ;; + start) + evacuate_validate + evacuate_start + ;; + stop) + evacuate_stop + ;; + monitor) + evacuate_validate + evacuate_monitor + ;; + meta-data) + meta_data + exit $OCF_SUCCESS + ;; + usage|help) + evacuate_usage + exit $OCF_SUCCESS + ;; + validate-all) + exit $OCF_SUCCESS + ;; + *) + evacuate_usage + exit $OCF_ERR_UNIMPLEMENTED + ;; esac rc=$? ocf_log debug "${OCF_RESOURCE_INSTANCE} $__OCF_ACTION : $rc"