| #!/usr/bin/env bash |
| # |
| # Licensed to the Apache Software Foundation (ASF) under one |
| # or more contributor license agreements. See the NOTICE file |
| # distributed with this work for additional information |
| # regarding copyright ownership. The ASF licenses this file |
| # to you under the Apache License, Version 2.0 (the |
| # "License"); you may not use this file except in compliance |
| # with the License. You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| # |
| |
| sleep 1 |
| preserveArgs=${1} |
| shift |
| callbackCmnd=${1} |
| shift |
| callbackUrl=${1} |
| shift |
| callbackPost=${1} |
| shift |
| actionId=${1} |
| shift |
| dir=`dirname $0` |
| mpid=`echo $$` |
| echo $mpid > $dir/$actionId.pid |
| stdout="$dir/$mpid.$actionId.stdout" |
| stderr="$dir/$mpid.$actionId.stderr" |
| errorFile="$dir/$mpid.$actionId.error" |
| successFile="$dir/$mpid.$actionId.success" |
| exitCodeMsg="Exit code:" |
| |
| if [ $preserveArgs == "PRESERVE_ARGS" ] |
| then |
| cmnd=${1} |
| shift |
| if $cmnd "$@" >>${stdout} 2>>${stderr}; then |
| export callbackUrl=`echo ${callbackUrl} | sed -e 's/#status/OK/'` |
| touch $successFile |
| else |
| ec=$? |
| export callbackUrl=`echo ${callbackUrl} | sed -e 's/#status/ERROR/'` |
| echo $exitCodeMsg$ec > $errorFile |
| fi |
| else |
| cmnd="${*}" |
| if $cmnd >>${stdout} 2>>${stderr}; then |
| export callbackUrl=`echo ${callbackUrl} | sed -e 's/#status/OK/'` |
| touch $successFile |
| else |
| ec=$? |
| export callbackUrl=`echo ${callbackUrl} | sed -e 's/#status/ERROR/'` |
| echo $exitCodeMsg$ec > $errorFile |
| fi |
| fi |
| sleep 1 |
| |
| if [ `du -k ${stdout} | awk '{print $1}'` -gt 8 ] |
| then |
| $callbackPost=_ |
| fi |
| |
| if [ $callbackPost == "_" ] |
| then |
| export callback="$callbackCmnd $callbackUrl" |
| else |
| callbackOptions=`echo ${callbackPost} | sed -e "s/%%%/ /g"` |
| stdout_temp=`echo ${stdout} | sed -e 's/\//%%%/g'` |
| callbackOptions=`echo ${callbackOptions} | sed -e "s/#stdout/${stdout_temp}/" | sed -e 's/%%%/\//g'` |
| export callback="$callbackCmnd $callbackUrl $callbackOptions" |
| fi |
| |
| if $callback; then |
| echo "Callback operation successful." |
| else |
| echo "Not able to perform callback operation." >>${stderr} |
| fi |