The design of the anvil user interface is driven by both the typical requirements of a UNIX command line interface and the IceCube Experiment Control requirements.
The design of the user interfacce for a generic UNIX command line interface is covered elsewhere, so this document will concentrate of the User Interface elements that are derived from the IceCube Experiment Control requirements.
(test name: start.stop)
The anvil commands "start <sub-system>" and "stop <sub-system>" will be used to fulfill this requirement, with the following names being used for their respective sub-systems.
For simplicity's sake, it will be permisable to specify more that one sub-system in a start and stop commands.
[jboss@sps-expcont]$ anvil anvil** start pnf spade "pnf" started "spade" started anvil** start sn "sn" started anvil** start status "status" started anvil** start cluster "cluster" started anvil** stop cluster "cluster" stopped anvil** stop status sn "status" stopped "sn" stopped anvil** stop spade "spade" stopped anvil** stop pnf "pnf" stopped anvil**
It will be considered an error if an unknown sub-system is specfied, in which case the command will not execute anything.
[jboss@sps-expcont]$ anvil anvil** start fred Unknown Subsystem: fred anvil**
(test name: start.run)
The anvil command "start daq" will be used to fulfill this requirement. However, unlike invocations for the continuous sub-systems, invoking this command with daq as one of the sub-systems requires the configuration keys for the DAQ, JeB and PnF sub-system to be specified.
[jboss@sps-expcont]$ anvil anvil** start -d 105 -j merge -p physics daq "daq" started, daq=105 jeb="merge" and pnf="physics" anvil**
It will be considered an error if any of the configuration keys are not specified.
[jboss@sps-expcont]$ anvil anvil** start -d 105 -j merge daq Usage: all configuration keys must be specified when starting the daq sub-system anvil**
(test name: stop.run)
The anvil command "stop daq" will be used to fulfill this requirement
[jboss@sps-expcont]$ anvil anvil** stop daq "daq" stopped anvil**
The anvil command "start sam" will be used to fulfill this requirement as sam is the "start and monitor" watchdog sub-system. To allow the specification of the time interval, when sam is specified as one of the sub-systems to start the length of runs will be supplied using the -t option.
[jboss@sps-expcont]$ anvil anvil** start -d 105 -j merge -p physics -t 4hr sam "sam" started, daq=105 jeb="merge" and pnf="physics", with 4hr runs anvil**
It will be considered an error if any of the configuration keys or the run length are not specified.
[jboss@sps-expcont]$ anvil anvil** start -d 105 -j merge -p physcis sam Usage: the run length must be specified when starting the sam sub-system anvil**
The anvil command "stop sam" will be used to fulfill this requirement.
[jboss@sps-expcont]$ anvil anvil** stop sam "sam" stopped anvil**
And, at the same time, a new run summary is created. (test name: flasher)
As each flasher run will require a sequence of flasher configurations it makes sense for these to be contained in a file that is then read by anvil. Thus, the "start flasher" command that will be used to fulfill this requirement take a -f option to specify the file containing the sequence of flasher configurations.
anvil** start -f flasher_settings flasher flasher runs started using the settings in "flasher_settings" anvil**
Given that the sequence of flasher configurations in a flasher run is finite there is no need for a "stop flasher" command as this type of run will stop of its own accord. However, it should be possible to stop a flasher run that is in progress and so a "stop flasher" command will be supplied for this eventuallity.
anvil** stop flasher "flasher" stopped anvil**
(test name: check)
The "check <sub-system>" command will be used to fulfill this requirement, with success meaning that the specified sub-system is in a running state and failure meaning it is not. "Running" is defined as having been started and neither stopped nor in an error state.
For simplicity's sake, it will be permisable to specify more that one sub-system in a "check" command.
[jboss@sps-expcont]$ anvil anvil** start pnf spade sn status cluster "pnf" started "spade" started "sn" started "status" started "cluster" started anvil** check pnf "pnf" passed anvil** check spade "spade" passed anvil** check sn status cluster "sn" passed "status" passed "cluster" passed anvil** start -d 105 -j merge -p physics -t 4hr sam "sam" started, daq=105 jeb="merge" and pnf="physics", with 4hr runs anvil** check daq "daq" passed anvil** check sam "sam" passed anvil** stop sam "sam" stopped anvil** check daq Elements failed Check: daq anvil** check sam Elements failed Check: sam anvil** stop pnf spade sn status cluster "pnf" stopped "spade" stopped "sn" stopped "status" stopped "cluster" stopped anvil** check cluster Elements failed Check: cluster anvil** check pnf spade sn status Elements failed Check: pnf spade sn status anvil**