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
 
<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
 
<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
 
<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 <vivb...@iu.edu> 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