Thank you for elaborating.

From: Suresh Marru <[email protected]>
Reply-To: "[email protected]" <[email protected]>
Date: Monday, March 30, 2020 at 11:53 PM
To: Airavata Dev <[email protected]>
Subject: [External] Re: Backend calls for

This message was sent from a non-IU address. Please exercise caution when 
clicking links or opening attachments from external sources.

Hi Vivek,

You seem to be looking at Airavata client SDK’s. If you want to follow server 
side create experiment flow you should look into the API handler code for 
create experiment - 
https://github.com/apache/airavata/blob/master/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java#L1400

But you quickly realize static code analysis will not take you too far since 
the communications happen between these components via messaging layer.

If you are looking for how experiment folder is created here is the flow:

The client (for instance Django Portal) create a unique working directory for 
the authenticated user and stages user provided input file into this folder. 
Then it sets this as the experiment Data Directory and passes the location to 
the server - 
https://github.com/apache/airavata/blob/master/thrift-interface-descriptions/data-models/experiment-catalog-models/experiment_model.thrift#L69

The serve code after the application execution is complete stages the output 
data to the folder specified above. All the required security credentials and 
communication protocols to the above storage resource should be pre-configired. 
If you are looking for the class where this transfer happens, this might help -
https://github.com/apache/airavata/blob/master/modules/airavata-helix/helix-spectator/src/main/java/org/apache/airavata/helix/impl/task/staging/OutputDataStagingTask.java

Suresh


On Mar 30, 2020, at 10:45 PM, Bandaru, Vivek Shresta 
<[email protected]<mailto:[email protected]>> wrote:

Hi All,

I’m trying to understand how an experiment and its respective folder is created 
by basic static code analysis.
I don’t think I get the whole picture.


I believe in workspace/views.py, through apache thrift, Django-portal delegates 
the creation of experiment to backend services.

Then, I believe the code for creating an experiement is in Java: 
org.apache.airavata.client.samples.CreateLaunchExperiment#createExperimentGROMACSStampede
 (Multiple create experiment functions in this class)

What I don’t understand is, I find createExperiments functions in other 
languages which make a thrift call to create an experiment.
Php :      pga/airavata-php-gateway/app/libraries/Airavata/API/Airavata.php:6274
Cpp :      lib/airavata/Airavata.h:7844 (Multiple create experiments)

When does the Php and Cpp code bases come into picture? Any pointers are very 
much appreciated.

Regards,
Vivek.

Reply via email to