#!/bin/bash
SUBDIR=
ThisDev=Dirigent
RsyncDevices # Tohle tu asi musí zustat ...
source Commons.sh
SessionDate=`date '+%Y%m%d_%H%M'`
function OpenSession()
{
mkdir -p $SHM; mkdir -p $SHM/Shots; mkdir -p $SHM0
echo `DataBaseQuerry "SELECT shot_no FROM shots_new ORDER BY timestamp DESC LIMIT 1;"` > $SHM/ShotNo
$LogFunctionStart
PingCheck
LogIt $SessionDate
mkdir -p $SHM/Control; cp *.* $SHM/Control/
RsyncDevices
for Dev in $RASPs; do
mkdir -p $SHM/Infrastructure/$Dev
RASPCommand $Dev RASPsOpenSession
sshfs golem@$Dev:$SHM/ $SHM/Infrastructure/$Dev/
done
for Dev in $DASs; do
mkdir -p $SHM/DASs/$Dev
DASCommand $Dev DASsOpenSession
done
df|grep shm
$LogFunctionEnd
}
function CloseSession()
{
$LogFunctionStart
mkdir -p Sessions/$SessionDate
for Dev in $RASPs; do
fusermount -u $SHM/Infrastructure/$Dev/
RASPCommand $Dev RASPsCloseSession
done
for Dev in $DASs; do
DASCommand $Dev DASsCloseSession
done
wait
rsync -a $SHM/ Sessions/$SessionDate #Bude muset byt trochu vyse .
rm -rf $SHM
Broadcast KillAllGMs
df|grep shm
#LogIt "^C"
}
function Broadcast()
{
LogIt "********* Broadcasting `echo "$1" | tr a-z A-Z`"
for Dev in $RASPs;
do
if [ `ssh golem@$Dev "source $Dev.sh;$@"|tail -1` != "OK" ]; then critical_error "Broadcast $Dev $1 KO";exit 1;fi &
done
for Dev in $DASs;
do
if [ `source $Dev.sh;$@|tail -1` != "OK" ]; then critical_error "Broadcast $Dev $1 KO";exit 1;fi &
done
wait
LogIt "*********`echo "$1" | tr a-z A-Z` end"
}
function MakeDischarge()
{
ShotNo=$((`cat $SHM/ShotNo`+1));echo $ShotNo>$SHM/ShotNo
rm -f $SHM0/ShotLogbook
LogIt "################# Discharge #$ShotNo ##################"
mkdir -p $SHM0;
mkdir -p $SHM0/Control; cp *.* $SHM0/Control/
#PingCheck #Ping all the devices ..
LogIt "Command Line: $COMMANDLINE"
LogIt "Load average: `cat /proc/loadavg`"
echo $ShotNo>$SHM/ShotNo;
Broadcast CommonInitDischarge
Broadcast PrepareDischarge $1 $2 $3 $WGpressure $PreionFlag
Broadcast Arming
sleep 2;Discharge Trigger;sleep 2
Broadcast PostDisch
sleep 3
Broadcast PostDischargeFinals
./Web.sh -r CreateShotHomepage
cp -r $SHM0 $SHM/Shots/$ShotNo
cp -r $SHM0 /golem/database/operation/shots/$ShotNo
echo "INSERT INTO shots_new (shot_no, timestamp, pre_comment) VALUES ($((`cat $SHM/ShotNo`+1)), NOW(), 'tuning the controll system');" | psql -U golem golem_database
$LogFunctionEnd
}
function Emergency ()
{
$LogFunctionPassing
}
function Null ()
{
$LogFunctionPassing
}
function Final()
{
LogIt "Load average: `cat /proc/loadavg`"
}
TASK=$1
COMMANDLINE=`echo $@|sed 's/-r //g'`
PAR1=$1
PAR2=$2
PAR3=$3
PAR4=$4
while [ $# -gt 0 ]; do
if [[ $1 == *"--"* ]]; then
v="${1/--/}"
declare $v="$2"
fi
shift
done
case "$TASK" in
"")
# echo "Usage: $0 [-d|--discharge] [-v|--vacuum] [-t|--test] [-s|--shutdown]"
RETVAL=1
;;
--discharge|-d)
MakeDischarge $UBt $Ucd
;;
--test|-t)
#Init
#Et "Init;Prepare 400 300"
#PwSpPap 3H
#PwSp UnPiRelayON 5
#Chamber RotPumpON
#Bt ShCt_DIS;Bt PS_ENG;sleep 0.3;Bt PS_DIS;Bt ShCt_ENG
#Et ShCt_DIS;Et PS_ENG;sleep 0.3;Et PS_DIS;Et ShCt_ENG
Broadcast Arming
;;
--shutdown|-s)
ShutDown
;;
--emergency|-e)
Broadcast Emergency
;;
--kill|-k)
Broadcast KillAllGMs
;;
--ping|-p)
PingCheck
;;
--close_session|-c)
CloseSession
;;
--raw_command|-r)
$COMMANDLINE
;;
--open_session|-o)
OpenSession
;;
--vacuum_on|-v)
Chamber PumpingON
;;
--logbook|-l)
tail -f /dev/shm/golem/GlobalLogbook
;;
--rsyncPUSH)
RsyncDevices
;;
--rsync)
RsyncDeviceFromDirigent
;;
--post)
Broadcast PostDisch
Broadcast PostDischargeFinals
;;
--commit)
cd $GWDirigentDir;git add .; git commit -am "$PAR1"; cd $OLDPWD
;;
--help)
echo "COMMIT: ./Dirigent.sh --commit \"Commit text\""
;;
esac