GRAVI CEDPS Plans

From Globus

Contents

general plan

  • Ravi should be something here.

portals

Integrated portal for deploying services (gars)

  • works with the Virtual Workspace portlet services, etc
  • simple proof-of-concept working (shell script)
    • starts up VM on nimbus cloud and "contextualizes" it (adds GSI, wsjava core, etc)
    • copies over the MPIRun GAR, and deploys it to the resident container
    • starts up the container, service is available and contacting using gRAVI client

Provisioning VM & Services, Workflows

  • transparent to users
  • configurable, simple algorithms to select from
  • reliant on metadata provided by Repository service
  • Use Case: workflow with 5 different services that needs to be deployed
    • simple algorithm: How many VMs do we need? 1,2,3,4,5
    • Obviously this is related to workflow, all these services are going to be used as a group
    • No need to know the actual workflow, just to understand resource requirements

Issues to resolve

Repository Service

  • general status, is it currently usable
  • does the associated metadata contain resource requirements?
    • if it does are these part of a standard
    • Application_Templates and JSDL WGs in OGF

Generated Portlets for gRAVI services

  • portlets registered somewhere, loaded on demand and provide a simple interface to the service
  • possibilities:
  1. it could simply be an interface to the generated client
  2. take the WSDL and a few assumptions ( gRavi service ) and generate a simple portal exposing the WSDL operations

gravi TODO

Resource Context

  • getStatus method
    • Signature by org.globus.ravi.codegen.module.ResourceContextServiceEditor
    • WARNING HACK: output is a xsd:string, should be a jsdl enumeration?
    • Generated Code Example:
   MPIRun/src/org/cagrid/mpirun/context/service/MPIRunResultResourceImpl.java
   public java.lang.String getStatus(MPIRunResultResourceReference resReference) throws RemoteException
   {
       // CodeGen: org.globus.ravi.codegen.module.ResourceContextServiceEditor
       Process process = null;
       org.globus.exec.client.GramJob job = null;
       int raveType;
       try {
           ReferencePropertiesType referenceProperties = resReference.getEndpointReference().getProperties();
           ResourceKey rk = new SimpleResourceKey(new QName(referenceProperties.get_any()[0].getNamespaceURI(), referenceProperties.get_any()[0].getName()), referenceProperties.get_any()[0].getValue());
           MPIRunResultResourceResourceHome rh = this.getResourceHome();
           MPIRunResultResourceResourceBase resource = rh.getResource(rk);
           raveType = resource.getRaveType();
   
           if (raveType == 3) {
               job = resource.getJob();
           } else {
               process =  resource.getProcess();
           }
       } catch (Exception e){
           System.out.println("(ResultResourceImpl) Error getting Status" + e);
           return null;
       }
   
       int exitCode;
   
       if (raveType == 3){
           if (job.getState().equals(org.globus.exec.generated.StateEnumeration.Done)|| job.getState().equals(org.globus.exec.generated.StateEnumeration.Failed)){
               return "Finished:" + Integer.toString(job.getExitCode());
           }
   
           return "State: " + job.getState().getValue();
       }else {
           try {
               exitCode = process.exitValue();
           } catch (IllegalThreadStateException itse){
               System.out.println("(ResultResourceImpl) getStatus - IllegalThreadState (means process is still running) " + itse);
               return "Running";
           }
       }
   
       return "Finished: " + exitCode;
   }
Personal tools
Execution Projects
Information projects
Distribution Projects
Documentation Projects
Deprecated