64 lines · 1.6 KB · Text
RawDownload
#!/bin/rc# spawns a fossil on a storage server from a given rootscore rforkscorefile=/n/9fat/scorenameslistenport=10564rootname=foousedisk=no while(~ $1 -*){	switch($1){	case -l		listenport=$2		shift	case -v		scorefile=$2		shift	case -d		usedisk=yes	}	shift} rootname=$1 if(! test -e $scorefile)	mount /srv/fatsrv /n/9fatrootscore=`{ndb/query -f $scorefile scorename $rootname rootscore}if(~ $rootscore ''){	echo root $rootname not found >[2=1]	exit} if(~ $usedisk yes){	disknum=`{cat /usr/grid/nextdisk}	if(~ $disknum `{cat /usr/grid/diskmax}){		echo 'no available disk slots' >[2=1]		exit	}	usedisk=`{cat /usr/grid/disk^$disknum}} if(~ $usedisk no){	namefossil -l $listenport $rootscore $rootname $rootname >>[2]/usr/grid/fossilogs	echo /srv/$rootname >/usr/grid/$rootname}if not {	namefossil -f $usedisk -l $listenport $rootscore $rootname $rootname >>[2]/usr/grid/fossilogs	if(test -e /srv/$rootname^fossil){		disknum=`{echo $disknum + 1 |hoc}		echo $disknum >/usr/grid/nextdisk		echo $usedisk >/usr/grid/$rootname		echo 'disknum=`{cat /usr/grid/nextdisk}' >>/usr/grid/killscript		echo 'disknum=`{echo $disknum - 1 |hoc}' >>/usr/grid/killscript		echo 'echo $disknum >/usr/grid/nextdisk' >>/usr/grid/killscript		echo 'echo ' $usedisk ' >/usr/grid/disk^$disknum' >>/usr/grid/killscript	}	if not		echo namefossil $rootname failed >[1=2]}echo 'spawncount=`{cat /usr/grid/spawncount}' >>/usr/grid/killscriptecho 'spawncount=`{echo $spawncount - 1 |hoc}' >>/usr/grid/killscriptecho 'echo $spawncount >/usr/grid/spawncount' >>/usr/grid/killscriptmv /usr/grid/killscript /usr/grid/kill.$rootname