GFAC Tutorial

From Ogce

Launching applications on Super Computers and managing the application during its lifetime and its output after it ends are challenging tasks. GFac aims at being able to provide simple GUI tools that can help launch and manage the application on remote supercomputers. This simple tutorial shows you how to manually configure a GFac service. In summary, you will need to create 4 files:

  • An application description: provides metadata about how the application will be run on a set of hosts.
  • A service description: describes the Web service invocation interface that your application will expose.
  • A host description"': contains metadata about a particular host resource.
  • A properties file: specifies the locations of the three files above.

The first step is to install GFac and XRegistry components. Good documentation to do this can be found on the <a href="http://www.collab-ogce.org/ogce/index.php/Workflow">OGCE web pages</a>. In short, download both and run mvn clean install.

After the installation is complete set the GFAC_HOME environment variable to point to the GFac's target/dist-bin folder:

export GFAC_HOME=/Users/archit/ogce/ogce-xsul-services-1.0-RC1/sgfac/target/dist-bin

Now create a folder to house the configuration files that will be used by our service.

cd ogce-xsul-services-1.0-RC1/sgfac mkdir helloworld cd helloworld

Now use your favorite editor to create the three XML configuration files needed by GFac to start the persistent service namely the App description document, the host description document and service description document.

Contents

Application Description File: helloworldapp.xml

<ApplicationDescription xmlns="http://www.extreme.indiana.edu/namespaces/2004/01/gFac" xmlns:lead="http://www.extreme.indiana.edu/lead">
   <applicationName targetNamespace="http://www.extreme.indiana.edu/lead">HelloWorldApp</applicationName>
   <jobType>single</jobType>
   <project>  
     <projectName>TG-XXXXXXXXXX</projectName>
     <projectDescription>TG staff</projectDescription>
   </project>
   <queue>
     <queueName>SERIAL</queueName>
     <queueDescription>BigRed queue</queueDescription>
   </queue>
   <maxWallTime>30</maxWallTime>
    <count>1</count>
    <rslparm name="project">TG-XXXXXXXXXX</rslparm>
    <rslparm name="queue">SERIAL</rslparm>
    <deploymentDescription>
       <hostName>bigred.iu.teragrid.org</hostName>
       <executable>/N/u/tg-archi/BigRed/helloworld</executable>
       <workdir>/N/u/tg-archi/BigRed/gfactmp</workdir>
       <!-- Tmp directory for this application.  If not specified, the tmp directory of the host will be used-->
       <tmpDir>/N/u/tg-archi/BigRed/gfactmp</tmpDir>
      <applicationEnv> 
         <name>FIRST_NAME</name> 
         <value>Archit</value>
      </applicationEnv>
     </deploymentDescription>
</ApplicationDescription>

ServiceDescription file: helloworldsvc.xml

<ServiceMap xmlns="http://www.extreme.indiana.edu/namespaces/2004/01/gFac" xmlns:lead="http://www.extreme.indiana.edu/lead">
   <service>
     <serviceName targetNamespace="http://www.extreme.indiana.edu/lead">HelloWorld</i><i>Service</serviceName>
   </service>
   <lifeTime>
     <notAfterInactiveMinutes>-1</notAfterInactiveMinutes>
   </lifeTime>
   <portType>
     <method stageOutputDataFiles="true" forceFileStagingToWorkDir="true">
     <methodName>Run</methodName>
     <application paramValuesOnly="true" useLEADNameListFile="true">
       <applicationName targetNamespace="http://www.extreme.indiana.edu/lead">HelloWorld</i><i>App</applicationName>
     </application>
     <inputParameter>
       <parameterName>lastname
       </parameterName>
       <parameterType>String</parameterType>
     </inputParameter>
     <inputParameter>
       <parameterName>inputfile</parameterName>
       <parameterType>URI</parameterType>
     </inputParameter>
     <outputParameter>
       <parameterName>friendCount</parameterName>
       <parameterType>String</parameterType>
     </outputParameter>
     <outputParameter>
       <parameterName>friendListFile</parameterName>
       <parameterType>URI</parameterType>
     </outputParameter>
     </method>
   </portType>
</ServiceMap>

Host Description File: bigred.xml

<HostDescription xmlns="http://www.extreme.indiana.edu/namespaces/2004/01/gFac" xmlns:lead="http://www.extreme.indiana.edu/lead">
   <documentInfo>
     <documentName targetNamespace="http://www.extreme.indiana.edu/lead">BigRed</documentName>
   </documentInfo>
   <hostName>bigred.iu.teragrid.org</hostName>
   <hostConfiguration>
     <tmpDir>/N/u/tg-archi/BigRed/gfactmp</tmpDir>
     <globusGatekeeper wsGram="true">
       <endPointReference>
        https://gatekeeper.bigred.iu.teragrid.org:8443/wsrf/services/ManagedJobFactoryService
       </endPointReference>
       <jobmanagertype>Loadleveler</jobmanagertype>
     </globusGatekeeper>
     <gridFTP>
      <endPointReference>gridftp.bigred.iu.teragrid.org:2811</endPointReference>
     </gridFTP>
   </hostConfiguration>
</HostDescription>

Create the service properties file

Finally, create the GFac service property file: helloworld.properties. This will tell GFac where to get the service, application, and host description files you just made.

  serviceMapFile = helloworld/helloworldsvc.xml
  appDescFile = helloworld/helloworldapp.xml
  hostDescFile = helloworld/bigred.xml
  port = 12346
  #Comment this to make Factory and Services starts up without https
  #transportSecurity=true
  #private key used by the GFac to connect to other services, and start https socket, if it is enabled
  ssl.hostcertsKeyFile=/home/ogce/ogce-xsul-services-1.0-RC1/sgfac/target/dist-bin/conf/ogce_services_key.pem
  ssl.trustedCertsFile=/home/ogce/ogce-xsul-services-1.0-RC1/sgfac/target/dist-bin/conf/trusted_cas.pem
  registryURL=https://<yourip>:6666/xregistry?wsdl
  #Ask Gfac to go to local mode, so it can work without credentails. Comment if you need a remote installation
  installation=local
  myproxyServer=myproxy.teragrid.org
  myproxyUserName=XXXXX
  myproxyLifetime=86400
  myproxyPasswd=XXXXXX
  #gfac.prefferedProvider=Local|Gram|WSGram|SSH|ResourceBroker
  wsgramPrefered=true

Now with your JAVA_HOME and GFAC_HOME set start the persisitent HelloWorldService using the run.sh provided with GFac as foolows:

  ./run.sh helloworld/helloworld.properties
This will start the service on port 12345 and you are ready to submit HelloWorld jobs.

Web site tools