SHA / SSSC Processing Modules
The links below provide samples of the functioning of a CGI-based driver
for SHA/SSSC strategy modules.
The sample modules are mostly versions of public and private ones
already written, taken from
~CM/src/modules, ~CM/src/examples, and ~rick/src.
The only changes made specifically in support of the web-browser driver
are the additions of comments in the formerly-unused string field for
arg->maxvalid in the arguments lists (see
SSTR 62).
Modules from ~CM/src/modules are in fact compiled directly from links
to the production sources.
All features of the driver should be active, but please see the notes below!
Test & Sample Modules
N.B. Modules marked * are not yet implemented in this system; those
marked ** have pages, but do not work properly
Most work on an
SGI Server
(from ~rick/src):
does nothing at all; a simplified version of module noop with only an
input argument; useful for staging data
(from ~rick/src):
just echoes the argument values as received by the module, with all supported
argument types; an extended version of module noop
(from ~CM/modules):
RTFM
(from ~rick/src): list values of header records from online rdb files
(based on module ptplot).
(from ~rick/src): print out selected records from an obslog.
obsel_xxx
(from ~rick/src/obsel): skeletons and prototypes of functions to do
queries based on obslog entries.
- obsel
- obsel_close - find times of
1-minute and 5-minute magnetograms within selected time separations of
one another
- obsel_cont - find time intervals
for which coverage of full-disc Dopplergrams exceeds selected threshold for
selected duration
- obsel_holes - find time
intervals for which there are no data of any kind (or holes in the obslog
that need to be filled!)
- obsel_list - list number of
Level 0 DPC's contributing to a particular obervable in a selected time
window
- obshist - hsitogram distribution
of number of Level 0 DPC's per minute in the selected time window
- uniq_dpc - list counts of
unique Level 0 DPC's in the selected time window
(from ~rick/src): adjust the number of bits per pixel in a data set.
Known Bugs and Limitations
- All processes started by the httpd run as network user nobody
(UID 60001) with corresponding access permissions and umask (usually 022);
files can only be created in directories to which this UID has write
permission, and will be owned by nobody. There is no default
directory for this UID, so path names must be rooted.
- If no pvmd is running for user nobody at the time a pe is
started, the command goes into an endless wait state and has to be
stopped from the browser. Once it is stopped the pvm will be running
and the request can be reposted.
- The host machine option does not function properly;
it is impossible for the network user to connect with a pvm daemon on
a remote machine. Thus, all pe's most be run locally (the default).
- Archiving to the DSDS is not currently possible because
write permission to the /PDS partitions requires membership in group
soi, and nobody is not a member of that group. (That is correct
English.)
- No output or notification page is seen until the process has completed.
- There appears to be a timeout issue and pages may not be updated on
pe completion if there is along wait, e.g. for data staging
- Until the bug reported in SSTR 62 is fixed, modules with long (65 char+)
argument descriptions in the arg->maxvalid field cannot be run in
the pe.
- Arguments of type ARG_FLAG are binary-valued (0 or -1), rather than
ternary-valued (0, ±1) as in the command-line interface..
- Arguments of type ARG_NUME without a supplied default value will
default to the first element in the list, as a consequence of the way the
web form is generated.
- pe's can't open the pe kill log file.
- The ARG_FILEPTR type for arguments, which is deprecated, is not
supported.
- The default names for the history and errlog files
are pecgi_history and pecgi_logfile respectively; these
go into the output dataset if one is created by a pe. The defaults can of
course be overridden.
- The current working directory for executing modules (not pe's) is the
cgi-bin directory of the host machine; modules that specify . or
`pwd` as the path for files will probably not be able to find or
create those files.
- On the bright side, the CGI interface fixes a minor bug in the command
line interface, that the decision not to pass a default argument value
string such as "Not Specified" to the mapfile is case sensitive.