When Airavata executes a remote command (launching a SLURM job, for example), it creates a working directory on the target machine's scratch space and two subdirectories, "input" and "output". Is there a good reason for creating these two subdirectories? Why not just do all the work in the top level of the working directory? It seems unnecessary. Also, I don't understand why these are in the GFAC module, as these should be constructed from Registry information.

Below is background information.
--------------
Below is an example working directory.

$ cd /oasis/scratch/trestles/ogce/temp_project/gta-work-dirs/TEST_8b10aa04-95c3-4695-af77-d3b3987c7ef9/
$ ls -tlr
total 20
drwxr-xr-x 2 ogce sds128 4096 Dec 23 07:17 output
-rw-r--r-- 1 ogce sds128  831 Dec 23 07:39 1203922204.pbs
-rw------- 1 ogce sds128   28 Dec 23 07:40 Gaussian.stdout
-rw------- 1 ogce sds128  663 Dec 23 07:40 Gaussian.stderr
drwxr-xr-x 2 ogce sds128 4096 Dec 23 07:47 input

The names of these subdirectories are specified in Constants.java (as OUTPUT_DATA_DIR_VAR_NAME and INPUT_DATA_DIR_VAR_NAME). Below are the files in the GFAC module that use these two constants.

$ find ./modules/gfac -type f -exec grep -il "OUTPUT_DATA_DIR_VAR" {} \; | grep java|grep -v target

./modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/Constants.java
./modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/cpi/BetterGfacImpl.java
./modules/gfac/gfac-gram/src/main/java/org/apache/airavata/gfac/gram/util/GramRSLGenerator.java
./modules/gfac/gfac-local/src/main/java/org/apache/airavata/gfac/local/provider/impl/LocalProvider.java
./modules/gfac/gfac-ssh/src/main/java/org/apache/airavata/gfac/ssh/provider/impl/SSHProvider.java

So we would need to clean these up if we remove the constants.

Marlon

Reply via email to