-
Notifications
You must be signed in to change notification settings - Fork 22
/
Copy pathtest_qscript.sh
executable file
·91 lines (91 loc) · 2.84 KB
/
test_qscript.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
#!/bin/bash
#
# set variables to be used in json template
# 1st test : parallel (padcirc) job
SCRIPTDIR=~/Campaigns/Development/asgs
ADCIRCDIR=/work/operator/adcirc/work
ADVISDIR=.
JOBTYPE=padcirc
qScriptRequestTemplate=$SCRIPTDIR/qscript_request_template.json
qScriptRequest=qscript_request_$JOBTYPE.json
qScriptResponse=qscript_response_$JOBTYPE.json
QSCRIPTTEMPLATE=$SCRIPTDIR/qscript.template
parallelism=parallel
NCPU=19
forncpu=19
NUMWRITERS=1
joblauncher=srun
WALLTIME=07:00:00
WALLTIMEFORMAT=minutes
PPN=20
QUEUENAME=workq
SERQUEUE=single
ACCOUNT=ADCIRC-ALLOCATION_001
SCENARIO=nowcast
RESERVATION=null
CONSTRAINT=null
QOS=highQuality
SYSLOG=syslog.log
SCENARIOLOG=./scenario.log
HOTSTARTCOMP=fulldomain
#QUEUESYS=SLURM
QUEUESYS=mpiexec
HPCENVSHORT=penguin
THIS="asgs_main.sh"
DATETIME=$(date +'%Y-%h-%d-T%H:%M:%S%z')
# keep sed from getting confused by escaping slashes
escSCRIPTDIR=${SCRIPTDIR////'\/'}
escADCIRCDIR=${ADCIRCDIR////'\/'}
escQSCRIPTTEMPLATE=${QSCRIPTTEMPLATE////'\/'}
escADVISDIR=${ADVISDIR////'\/'}
escSYSLOG=${SYSLOG////'\/'}
escSCENARIOLOG=${SCENARIOLOG////'\/'}
#
# create queue script request by filling in template
# with data needed to create queue script
#
sed \
-e "s/%jobtype%/$JOBTYPE/" \
-e "s/%qscripttemplate%/$escQSCRIPTTEMPLATE/" \
-e "s/%parallelism%/$parallelism/" \
-e "s/%ncpu%/$NCPU/" \
-e "s/%forncpu%/$NCPU/" \
-e "s/%numwriters%/$NUMWRITERS/" \
-e "s/%joblauncher%/$joblauncher/" \
-e "s/%walltime%/$WALLTIME/" \
-e "s/%walltimeformat%/$WALLTIMEFORMAT/" \
-e "s/%ppn%/$PPN/" \
-e "s/%queuename%/$QUEUENAME/" \
-e "s/%serqueue%/$SERQUEUE/" \
-e "s/%account%/$ACCOUNT/" \
-e "s/%advisdir%/$escADVISDIR/" \
-e "s/%scriptdir%/$escSCRIPTDIR/" \
-e "s/%adcircdir%/$escADCIRCDIR/" \
-e "s/%scenario%/$SCENARIO/" \
-e "s/%reservation%/$RESERVATION/" \
-e "s/%constraint%/$CONSTRAINT/" \
-e "s/%qos%/$QOS/" \
-e "s/%syslog%/$escSYSLOG/" \
-e "s/%scenariolog%/$escSCENARIOLOG/" \
-e "s/%hotstartcomp%/$HOTSTARTCOMP/" \
-e "s/%queuesys%/$QUEUESYS/" \
-e "s/%hpcenvshort%/$HPCENVSHORT/" \
-e "s/%asgsadmin%/$ASGSADMIN/" \
-e "s/%NULLLASTUPDATER%/$THIS/" \
-e "s/%NULLLASTUPDATETIME%/$DATETIME/" \
< $qScriptRequestTemplate \
> $qScriptRequest
#
# request queue script
$SCRIPTDIR/qscript.pl < $qScriptRequest \
> $qScriptResponse 2>> $SYSLOG
# extract queue script name from response
qscript=$(bashJSON.pl --key "qScriptFileName" \
< $qScriptResponse 2>> $SYSLOG)
# extract queue script from response
bashJSON.pl --key "script" < $qScriptResponse 2>> $SYSLOG \
| base64 -d \
> $qscript 2>> $SYSLOG
# update the run.properties file
echo "hpc.job.$JOBTYPE.file.qscript : $qscript" >> run.properties