GRAVI CEDPS Plans
From Globus
Contents |
[edit]
general plan
- Ravi should be something here.
[edit]
portals
[edit]
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
[edit]
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
[edit]
Issues to resolve
[edit]
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
[edit]
Generated Portlets for gRAVI services
- portlets registered somewhere, loaded on demand and provide a simple interface to the service
- possibilities:
- it could simply be an interface to the generated client
- take the WSDL and a few assumptions ( gRavi service ) and generate a simple portal exposing the WSDL operations
[edit]
gravi TODO
[edit]
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;
}

