You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 13 Next »

Purpose

In order to be able to stage jobs to resources and launch them there on behalf of a user, host-dependent information must be obtained dynamically by the Workflow Broker after scheduling the node to run. While it would be optimal if every Grid resource exposed this information consistently and through a uniform set of APIs, that is unfortunately not (yet?) the case. Hence we have developed a small information service with an administrative interface to store this data and make it readily available both for viewing and for workflow configuration. This is once again a GSI web service requiring authentication and authorization via certificate.

Mode of Usage

In most cases, the user, if administrator, will interact with this service through a specially designed Siege view (refer to the tutorial for specifics). The programmatic interactions, such as those accomplished by the broker, take place via the web service ports. The sections which follow thus are only of interest to potential developers wishing to gain understanding of what lies "under the hood".

API

The service can be contacted by the broker through its retrieve ports; it can be updated or modified through its add, update and remove ports. In addition, the find calls can be used to do simple listings for display in the user interface.

public interface HostInfoRepository
{
   /*
    * Add a new root element.
    */
   public void addHost( String hostInfoXml );
   
   /*
    *  Diff'd update of the root.
    */
   public void updateHost( String hostId, String hostInfoXml );
   
   /*
    *  Diff'd update of the root.
    */
   public void updateNode( String hostId, String nodeId, String nodeInfoXml );
   
   /*
    *  Diff'd update of the root.
    */
   public void updateUser( String hostId, String userName, String userInfoXml );
   
   /*
    * Remove can be called anywhere on the HostInfo tree.
    */
   public void removeHost( String hostId );
   public void removeUserFromHost( String hostId, String user );
   public void removeUserFromAllHosts( String user );
   public void removeHostEnvironmentVariable( String hostId, String name );
   public void removeUserEnvironmentVariable( String hostId, String user, String name );
   public void removeNodeFromHost( String hostId, String nodeId );
   public void removeProtocol( String nodeId, String protocolType, String protocolName );
   public void removeOptimizationProperty( String nodeId, String protocolType, String protocolName, String propertyName );
   public void removeSoftEnv( String nodeId );
   
   /*
    *  List queries.
    */
   public String[] findHosts();
   public String[] findUsers( String hostId );
   public String[] findNodes( String hostId );
   
   /*
    *  These return the serialized object.
    */
   public String retrieveHostInfo( String hostId ); 
   public String retrieveNodeInfo( String nodeId ); 
   public String retrieveUserInfoWithHostEnv( String nodeId, String user ); 
   public String retrieveUserInfoEntry( String hostId, String user );
}
  • No labels