Piscal Queue working more resilient to error

This commit is contained in:
2016-04-18 10:44:36 -04:00
parent 6623aa48ea
commit ca1a235c1d
21 changed files with 418 additions and 176 deletions
+68 -24
View File
@@ -1,28 +1,39 @@
#!/bin/bash
# piscal launcher
usage="$(basename "$0") [-h] -d working_directory [-f input_filename] -- script to launch Piscal
usage="$(basename "$0") [-h] -d working_directory [-u notify_url] -- script to launch Piscal
where:
-h show this help text
-d working directory
-f input filename"
-f input filename
-u url to notify on completion"
directory=""
input_filename=""
# http://stackoverflow.com/a/246128/99492
base_directory="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
working_directory=""
output_directory_base_name="output"
input_directory_name="input"
cleaned_input_directory_name="clninput"
touser_directory_name="fitresult/touser"
nottouser_directory_name="fitresult/nottouser"
notify_url=""
while getopts "hd:f:" opt; do
# import the settings from piscal.cfg
# $piscal_executable and $storage_directory
. "$base_directory/piscal_launcher.cfg"
while getopts "hd:f:u:" opt; do
case "$opt" in
h )
echo "$usage"
exit
;;
d )
directory=$OPTARG
working_directory=$OPTARG
;;
f )
input_filename=$OPTARG
task="process"
u )
notify_url=$OPTARG
;;
\?) printf "illegal option: -%s\n" "$OPTARG" >&2
echo "$usage" >&2
@@ -30,29 +41,62 @@ while getopts "hd:f:" opt; do
;;
esac
done
if [ -z "$directory" ]; then
if [ -z "$working_directory" ]; then
echo "working directory required (-d)"
exit 1
fi
if [ ! -d "$directory" ]; then
echo "working directory $directory not found"
if [ ! -d "$working_directory" ]; then
echo "working directory $working_directory not found"
exit 1
fi
if [ -z "$input_filename" ]; then
echo "input filename required (-f)"
exit 1
output_directory_base="$working_directory/$output_directory_base_name"
output_directory_touser="$output_directory_base/$touser_directory_name"
output_directory_nottouser="$output_directory_base/$nottouser_directory_name"
cleaned_input_directory="$output_directory_base/$cleaned_input_directory_name"
run_directory="$working_directory/run"
# setup output directories
if [ ! -d "$output_directory_base" ]; then
mkdir "$output_directory_base"
fi
if [ ! -f "$directory/$input_filename" ]; then
echo "input filename $directory/$input_filename not found"
exit 1
if [ ! -d "$cleaned_input_directory" ]; then
mkdir "$cleaned_input_directory"
fi
output_directory="$directory/output"
#find "$working_directory/$input_directory_name" -maxdepth 1 -type f\
# -exec cp {} "$cleaned_input_directory" \;
sleep 1m
if [ ! -d "$output_directory" ]; then
mkdir "$output_directory"
if [ ! -d "$output_directory_base/fitresult" ]; then
mkdir "$output_directory_base/fitresult"
fi
if [ ! -d "$output_directory_touser" ]; then
mkdir "$output_directory_touser"
fi
if [ ! -d "$output_directory_nottouser" ]; then
mkdir "$output_directory_nottouser"
fi
if [ ! -d "$run_directory" ]; then
mkdir "$run_directory"
fi
# TODO: run actual command
cp "/home/poprhythm/LeafWebTestOutput"/* "$output_directory"
# run piscal
pushd $run_directory >> /dev/null
if [ -z "$test_output_directory" ]; then
eval $piscal_executable
else
cp "$test_output_directory"/* "$output_directory_touser"/
cp "$test_output_directory"/* "$output_directory_nottouser"/
fi
popd >> /dev/null
# copy output to storage
cp "$output_directory_touser"/*.csv "$storage_directory"/
cp "$output_directory_nottouser"/*.csv "$storage_directory"/
# notify given url of completion
if [ -z "$notify_url" ]; then
wget -qO- "$notify_url" &> /dev/null
fi