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