sam_info_server

Application goal

This application serves information from the sam log file and probably additional information sources that haven't yet been completly identified.

To do

These items have been moved to here.

Information Acquisition

The system reads the log file generated by the sam_logger and creates an internal database that represents what it found.  It optimizes parse time by keeping track of where it left off and only checking any new portions when one of it's methods is invoked to gather information.

CORBA Interface

The system presents it's information through CORBA methods that can be called from any of the D0 languages (Python, Java, C++).  The info server is registered by default as InfoServer with the name service, but this can be overridden in testing by setting an environment variable InfoName to whatever you want the name to be.  Once the server is acquired the following methods are available.

 TimeCounts GetFileAuthorizedCounts(in TimeT startTime, in TimeT endtime, in long interval, in AccessMode mode)

Returns an array of counts where each file that is opened in a given slot is aggregated into the total for the time slice.
 TimeCounts GetFileDeliveredCounts(in TimeT startTime, in TimeT endtime, in long interval, in AccessMode mode)
Same as GetFileAuthorizedCounts, but for delivery events.
 TimeCounts GetENCPFileTransferThroughput( in TimeT startTime, in TimeT endtime, in long interval, in AccessMode mode);
Returns an array that indicates the average files/min for a given time slice between SAM and enstore.
 TimeCounts GetENCPFileTransferBytes( in TimeT startTime, in TimeT endtime, in long interval, in AccessMode mode);
Same as above but for bytes and calculated as MB/sec, not MB/min.
 TimeCounts GetConsumerFileTransferThroughput( in TimeT startTime, in TimeT endTime, in long interval,
         in string station, in string project, in string consumer);
Returns an array that indicates the average files/min for a given time slice between SAM and a station, project, consumer combination.  These fields may be "*" to force all transfers at a level to be counted.  Note that providing a station and consumer, but using "*" for project is legal and will return accurate results, but is probably not the query that you wanted.
 TimeCounts GetConsumerFileTransferBytes( in TimeT startTime, in TimeT endTime, in long interval,
         in string station, in string project, in string consumer);
Same as above but for bytes and calculated as MB/sec, not MB/min.


 TimeCounts GetConsumerFileTransferCounts( in TimeT startTime, in TimeT endTime, in long interval, in string station, in string project, in string consumer);

Returns an array of counts where each file that is processed by a consumer is aggregated into the total for the time slice.
 TimeCounts GetConsumerFileTransferErrors( in TimeT startTime, in TimeT endTime, in long interval,
         in string station, in string project, in string consumer);
Returns an array of counts where each error that occurs is aggregated into the total for the time slice.
 StationList GetSystemTree();
Returns a system tree with all the elements the are referenced in the log file.
void GetLogRange( out TimeT startTime, out TimeT endTime )
Returns the start and end times for the log as defined by the records contained, not the file date.