ref: 063c3f398e949895bb9795539e83a2e0be364376
dir: /lib/sh/sched/
load std sexprs # load a job. result is the new job id. subfn job { { id := "{read} result=$id or {echo load ${quote $*} >[1=0]} { raise 'load failed' } } $* <> /n/remote/admin/clone } # load a job. print the new job id. fn job { echo ${job $*} } # load a job, then start it. fn start { id := ${job $*} ctl $id start echo $id } # send a control message to a job. fn ctl { if {~ $#* 0 1} { echo usage: ctl job-id request... >[1=2] raise usage } (id args) := $* echo ${quote $args} > /n/remote/admin/$id/ctl } # mount the scheduler name space fn mountsched { configfile := $configfile # stop changes propagating out. if{no $root}{ root=/grid/slave } opts := () fsopts := () schedaddr := () schedfsaddr := () readconfig { if{~ $attr schedaddr}{ schedaddr=$val }{~ $attr auth}{ if{~ $val 0}{ opts=($opts -A) } }{~ $attr keyfile}{ opts=($opts -k $val) }{~ $attr schedfsaddr}{ schedfsaddr=$val }{~ $attr fsauth}{ if{~ $val 0}{ fsopts=($fsopts -A) } }{~ $attr fskey fskeyfile}{ # first form is deprecated fsopts=($opts -k $val) } } if{no $schedaddr}{ ifs=' ' schedaddr=`{cat /grid/slave/schedaddr} if{no $schedaddr}{ echo no scheduler address found >[1=2] raise error } } mount $opts $schedaddr /n/remote no $schedfsaddr || mount $fsopts $schedfsaddr /n/gridfs } # print a format(2) file with the given format fn fmtcat { if {! ~ $#* 2} { echo usage: fmtread fmt file >[1=2] raise usage } (fmt file) := $* {echo $fmt >[1=0]; read -o 0; cat} <> $file } # readconfig command. # on entry $configfile is name of configuration file, or empty for default. # $root is default root directory. # run command for each entry in the config file, setting $attr and $val # to the attribute and the value in the entry. fn readconfig { (cmd nil) := $* if{no $configfile}{ if{ftest -f $root/config}{ configfile = $root/config } } { if{! ~ $configfile '/*' './*'} { configfile = $root/$configfile } if{! ftest -f $configfile}{ echo cannot find config file $configfile >[1=2] raise 'config error' } } if{! no $configfile} { < $configfile getsexprs { (attr sval) := ${els $sexp} if{! ~ $#sval 1}{ echo bad config line $sexp >[1=2] raise continue; } attr = ${text $attr} val := ${text $sval} $cmd } } }