You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by sh...@apache.org on 2016/01/13 18:02:38 UTC

[01/42] airavata git commit: updating database scripts to have updated time with current timestamp

Repository: airavata
Updated Branches:
  refs/heads/develop a14d717f4 -> 4039bf7b8


updating database scripts to have updated time with current timestamp


Project: http://git-wip-us.apache.org/repos/asf/airavata/repo
Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/c0ebe04d
Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/c0ebe04d
Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/c0ebe04d

Branch: refs/heads/develop
Commit: c0ebe04de3cb5369897a2b6c0a7f885c40e611db
Parents: 6d09915
Author: Chathuri Wimalasena <ch...@apache.org>
Authored: Mon Jan 4 14:16:22 2016 -0500
Committer: Chathuri Wimalasena <ch...@apache.org>
Committed: Mon Jan 4 14:16:22 2016 -0500

----------------------------------------------------------------------
 .../src/main/resources/expcatalog-derby.sql           | 12 ++++++------
 .../src/main/resources/expcatalog-mysql.sql           | 14 +++++++-------
 2 files changed, 13 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/c0ebe04d/modules/registry/registry-core/src/main/resources/expcatalog-derby.sql
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/resources/expcatalog-derby.sql b/modules/registry/registry-core/src/main/resources/expcatalog-derby.sql
index 38a850a..7689030 100644
--- a/modules/registry/registry-core/src/main/resources/expcatalog-derby.sql
+++ b/modules/registry/registry-core/src/main/resources/expcatalog-derby.sql
@@ -122,7 +122,7 @@ CREATE TABLE EXPERIMENT_STATUS (
   STATUS_ID varchar(255),
   EXPERIMENT_ID varchar(255),
   STATE varchar(255),
-  TIME_OF_STATE_CHANGE timestamp DEFAULT '0000-00-00 00:00:00',
+  TIME_OF_STATE_CHANGE TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
   REASON CLOB,
   PRIMARY KEY (STATUS_ID, EXPERIMENT_ID),
   FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE
@@ -235,7 +235,7 @@ CREATE TABLE PROCESS_STATUS (
   STATUS_ID varchar(255),
   PROCESS_ID varchar(255),
   STATE varchar(255),
-  TIME_OF_STATE_CHANGE timestamp DEFAULT '0000-00-00 00:00:00',
+  TIME_OF_STATE_CHANGE TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
   REASON CLOB,
   PRIMARY KEY (STATUS_ID, PROCESS_ID),
   FOREIGN KEY (PROCESS_ID) REFERENCES PROCESS(PROCESS_ID) ON DELETE CASCADE
@@ -284,7 +284,7 @@ CREATE TABLE TASK_STATUS (
   STATUS_ID varchar(255),
   TASK_ID varchar(255),
   STATE varchar(255),
-  TIME_OF_STATE_CHANGE timestamp DEFAULT '0000-00-00 00:00:00',
+  TIME_OF_STATE_CHANGE TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
   REASON CLOB,
   PRIMARY KEY (STATUS_ID, TASK_ID),
   FOREIGN KEY (TASK_ID) REFERENCES TASK(TASK_ID) ON DELETE CASCADE
@@ -308,7 +308,7 @@ CREATE TABLE JOB (
   TASK_ID varchar(255),
   PROCESS_ID varchar(255),
   JOB_DESCRIPTION CLOB NOT NULL,
-  CREATION_TIME  timestamp DEFAULT '0000-00-00 00:00:00',
+  CREATION_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
   COMPUTE_RESOURCE_CONSUMED varchar(255),
   JOB_NAME varchar(255),
   WORKING_DIR varchar(255),
@@ -324,7 +324,7 @@ CREATE TABLE JOB_STATUS (
   JOB_ID varchar(255),
   TASK_ID varchar(255),
   STATE varchar(255),
-  TIME_OF_STATE_CHANGE  timestamp DEFAULT '0000-00-00 00:00:00',
+  TIME_OF_STATE_CHANGE TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
   REASON CLOB,
   PRIMARY KEY (STATUS_ID, JOB_ID, TASK_ID),
   FOREIGN KEY (JOB_ID, TASK_ID) REFERENCES JOB(JOB_ID, TASK_ID) ON DELETE CASCADE
@@ -334,7 +334,7 @@ CREATE TABLE CONFIGURATION
 (
         CONFIG_KEY VARCHAR(255),
         CONFIG_VAL VARCHAR(255),
-        EXPIRE_DATE TIMESTAMP DEFAULT '0000-00-00 00:00:00',
+        EXPIRE_DATE TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
         CATEGORY_ID VARCHAR (255),
         PRIMARY KEY(CONFIG_KEY, CONFIG_VAL, CATEGORY_ID)
 );

http://git-wip-us.apache.org/repos/asf/airavata/blob/c0ebe04d/modules/registry/registry-core/src/main/resources/expcatalog-mysql.sql
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/resources/expcatalog-mysql.sql b/modules/registry/registry-core/src/main/resources/expcatalog-mysql.sql
index b71b9b1..aa9c8a0 100644
--- a/modules/registry/registry-core/src/main/resources/expcatalog-mysql.sql
+++ b/modules/registry/registry-core/src/main/resources/expcatalog-mysql.sql
@@ -124,7 +124,7 @@ CREATE TABLE EXPERIMENT_STATUS (
   STATUS_ID varchar(255),
   EXPERIMENT_ID varchar(255),
   STATE varchar(255),
-  TIME_OF_STATE_CHANGE timestamp DEFAULT '0000-00-00 00:00:00',
+  TIME_OF_STATE_CHANGE TIMESTAMP DEFAULT NOW() ON UPDATE NOW(),
   REASON LONGTEXT,
   PRIMARY KEY (STATUS_ID, EXPERIMENT_ID),
   FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE
@@ -183,7 +183,7 @@ CREATE TABLE PROCESS (
   PROCESS_ID varchar(255),
   EXPERIMENT_ID varchar(255),
   CREATION_TIME  TIMESTAMP DEFAULT NOW(),
-  LAST_UPDATE_TIME  TIMESTAMP DEFAULT '0000-00-00 00:00:00',
+  LAST_UPDATE_TIME  TIMESTAMP DEFAULT NOW() ON UPDATE NOW(),
   PROCESS_DETAIL text,
   APPLICATION_INTERFACE_ID varchar(255),
   TASK_DAG TEXT,
@@ -239,7 +239,7 @@ CREATE TABLE PROCESS_STATUS (
   STATUS_ID varchar(255),
   PROCESS_ID varchar(255),
   STATE varchar(255),
-  TIME_OF_STATE_CHANGE timestamp DEFAULT '0000-00-00 00:00:00',
+  TIME_OF_STATE_CHANGE DEFAULT NOW() ON UPDATE NOW(),
   REASON LONGTEXT,
   PRIMARY KEY (STATUS_ID, PROCESS_ID),
   FOREIGN KEY (PROCESS_ID) REFERENCES PROCESS(PROCESS_ID) ON DELETE CASCADE
@@ -276,7 +276,7 @@ CREATE TABLE TASK (
   TASK_TYPE varchar(255),
   PARENT_PROCESS_ID varchar(255),
   CREATION_TIME timestamp DEFAULT NOW(),
-  LAST_UPDATE_TIME timestamp DEFAULT '0000-00-00 00:00:00',
+  LAST_UPDATE_TIME DEFAULT NOW() ON UPDATE NOW(),
   TASK_DETAIL text,
   TASK_INTERNAL_STORE tinyint(4),
   PRIMARY KEY (TASK_ID),
@@ -287,7 +287,7 @@ CREATE TABLE TASK_STATUS (
   STATUS_ID varchar(255),
   TASK_ID varchar(255),
   STATE varchar(255),
-  TIME_OF_STATE_CHANGE timestamp DEFAULT '0000-00-00 00:00:00',
+  TIME_OF_STATE_CHANGE DEFAULT NOW() ON UPDATE NOW(),
   REASON LONGTEXT,
   PRIMARY KEY (STATUS_ID, TASK_ID),
   FOREIGN KEY (TASK_ID) REFERENCES TASK(TASK_ID) ON DELETE CASCADE
@@ -327,7 +327,7 @@ CREATE TABLE JOB_STATUS (
   JOB_ID varchar(255),
   TASK_ID varchar(255),
   STATE varchar(255),
-  TIME_OF_STATE_CHANGE timestamp DEFAULT '0000-00-00 00:00:00',
+  TIME_OF_STATE_CHANGE DEFAULT NOW() ON UPDATE NOW(),
   REASON LONGTEXT,
   PRIMARY KEY (STATUS_ID, JOB_ID, TASK_ID),
   FOREIGN KEY (JOB_ID, TASK_ID) REFERENCES JOB(JOB_ID, TASK_ID) ON DELETE CASCADE
@@ -338,7 +338,7 @@ CREATE TABLE CONFIGURATION
 (
         CONFIG_KEY VARCHAR(255),
         CONFIG_VAL VARCHAR(255),
-        EXPIRE_DATE TIMESTAMP DEFAULT '0000-00-00 00:00:00',
+        EXPIRE_DATE TIMESTAMP  TIMESTAMP DEFAULT NOW() ON UPDATE NOW(),
         CATEGORY_ID VARCHAR (255),
         PRIMARY KEY(CONFIG_KEY, CONFIG_VAL, CATEGORY_ID)
 );


[09/42] airavata git commit: added log info messages to API server handler

Posted by sh...@apache.org.
added log info messages to API server handler


Project: http://git-wip-us.apache.org/repos/asf/airavata/repo
Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/ebf67dac
Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/ebf67dac
Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/ebf67dac

Branch: refs/heads/develop
Commit: ebf67dac45203c00fbf5d10a4d18b24c0d9cf018
Parents: f9b0d2e
Author: Chathuri Wimalasena <ch...@apache.org>
Authored: Mon Jan 4 14:48:32 2016 -0500
Committer: Chathuri Wimalasena <ch...@apache.org>
Committed: Mon Jan 4 14:48:32 2016 -0500

----------------------------------------------------------------------
 .../apache/airavata/api/server/handler/AiravataServerHandler.java   | 1 +
 1 file changed, 1 insertion(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/ebf67dac/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java b/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java
index f38126b..fc30136 100644
--- a/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java
+++ b/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java
@@ -1404,6 +1404,7 @@ public class AiravataServerHandler implements Airavata.Iface {
                 });
                 experimentModel.setProcesses(processList);
             }
+            logger.info("Airavata retrieved detailed experiment with experiment id : " + airavataExperimentId);
             return experimentModel;
         } catch (Exception e) {
             logger.error("Error while retrieving the experiment", e);


[22/42] airavata git commit: Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/airavata

Posted by sh...@apache.org.
Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/airavata


Project: http://git-wip-us.apache.org/repos/asf/airavata/repo
Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/531cbdfb
Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/531cbdfb
Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/531cbdfb

Branch: refs/heads/develop
Commit: 531cbdfbcdc07893f69f0bea8cec9011fdf3a7b7
Parents: bd77541 4dc6588
Author: scnakandala <su...@gmail.com>
Authored: Wed Jan 6 11:34:39 2016 -0500
Committer: scnakandala <su...@gmail.com>
Committed: Wed Jan 6 11:34:39 2016 -0500

----------------------------------------------------------------------
 .../server/handler/AiravataServerHandler.java   | 232 ++++++++++++++-----
 .../src/main/resources/expcatalog-mysql.sql     |  13 +-
 2 files changed, 179 insertions(+), 66 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/531cbdfb/modules/registry/registry-core/src/main/resources/expcatalog-mysql.sql
----------------------------------------------------------------------


[38/42] airavata git commit: adding full path for stdout and stderr

Posted by sh...@apache.org.
adding full path for stdout and stderr


Project: http://git-wip-us.apache.org/repos/asf/airavata/repo
Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/e43b6d91
Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/e43b6d91
Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/e43b6d91

Branch: refs/heads/develop
Commit: e43b6d9188d4e9b9e13eaece1b8a89f44b30910e
Parents: da4ba5b
Author: Chathuri Wimalasena <ch...@apache.org>
Authored: Mon Jan 11 15:57:48 2016 -0500
Committer: Chathuri Wimalasena <ch...@apache.org>
Committed: Mon Jan 11 15:57:48 2016 -0500

----------------------------------------------------------------------
 .../org/apache/airavata/gfac/core/GFacUtils.java     |  4 ++--
 .../apache/airavata/gfac/impl/GFacEngineImpl.java    | 15 ++++++++++-----
 2 files changed, 12 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/e43b6d91/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/GFacUtils.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/GFacUtils.java b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/GFacUtils.java
index a021e97..0a2d207 100644
--- a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/GFacUtils.java
+++ b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/GFacUtils.java
@@ -486,9 +486,9 @@ public class GFacUtils {
                 if (inputDataObjectType.getValue() != null
                         && !inputDataObjectType.getValue().equals("")) {
                     if (inputDataObjectType.getType() == DataType.URI) {
-                        // set only the relative path : relative path does not work with lonestar
+                        // set only the relative path
                         String filePath = inputDataObjectType.getValue();
-//                        filePath = filePath.substring(filePath.lastIndexOf(File.separatorChar) + 1, filePath.length());
+                        filePath = filePath.substring(filePath.lastIndexOf(File.separatorChar) + 1, filePath.length());
                         inputValues.add(filePath);
                     } else {
                         inputValues.add(inputDataObjectType.getValue());

http://git-wip-us.apache.org/repos/asf/airavata/blob/e43b6d91/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/GFacEngineImpl.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/GFacEngineImpl.java b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/GFacEngineImpl.java
index f05c85d..4339869 100644
--- a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/GFacEngineImpl.java
+++ b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/GFacEngineImpl.java
@@ -40,6 +40,7 @@ import org.apache.airavata.gfac.impl.task.DataStreamingTask;
 import org.apache.airavata.gfac.impl.task.EnvironmentSetupTask;
 import org.apache.airavata.model.appcatalog.appinterface.ApplicationInterfaceDescription;
 import org.apache.airavata.model.appcatalog.computeresource.*;
+import org.apache.airavata.model.appcatalog.gatewayprofile.ComputeResourcePreference;
 import org.apache.airavata.model.appcatalog.gatewayprofile.GatewayResourceProfile;
 import org.apache.airavata.model.appcatalog.gatewayprofile.StoragePreference;
 import org.apache.airavata.model.appcatalog.storageresource.StorageResourceDescription;
@@ -70,6 +71,7 @@ import org.apache.thrift.TException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.io.File;
 import java.net.URI;
 import java.net.URISyntaxException;
 import java.util.*;
@@ -106,8 +108,11 @@ public class GFacEngineImpl implements GFacEngine {
 
             GatewayResourceProfile gatewayProfile = appCatalog.getGatewayProfile().getGatewayProfile(gatewayId);
             processContext.setGatewayResourceProfile(gatewayProfile);
-            processContext.setComputeResourcePreference(appCatalog.getGatewayProfile().getComputeResourcePreference
-                    (gatewayId, processModel.getComputeResourceId()));
+            ComputeResourcePreference computeResourcePreference = appCatalog.getGatewayProfile().getComputeResourcePreference
+                    (gatewayId, processModel.getComputeResourceId());
+            String scratchLocation = computeResourcePreference.getScratchLocation();
+            scratchLocation = scratchLocation + File.separator + processId + File.separator;
+            processContext.setComputeResourcePreference(computeResourcePreference);
             StoragePreference storagePreference = appCatalog.getGatewayProfile().getStoragePreference(gatewayId, processModel.getStorageResourceId());
             StorageResourceDescription storageResource = appCatalog.getStorageResource().getStorageResource(processModel.getStorageResourceId());
             if (storageResource != null){
@@ -151,15 +156,15 @@ public class GFacEngineImpl implements GFacEngine {
                 for (OutputDataObjectType outputDataObjectType : applicationOutputs) {
                     if (outputDataObjectType.getType().equals(DataType.STDOUT)) {
                         if (outputDataObjectType.getValue() == null || outputDataObjectType.getValue().equals("")) {
-                            outputDataObjectType.setValue(applicationInterface.getApplicationName() + ".stdout");
-                            processContext.setStdoutLocation(applicationInterface.getApplicationName() + ".stdout");
+                            outputDataObjectType.setValue(scratchLocation + applicationInterface.getApplicationName() + ".stdout");
+                            processContext.setStdoutLocation(scratchLocation + applicationInterface.getApplicationName() + ".stdout");
                         } else {
                             processContext.setStdoutLocation(outputDataObjectType.getValue());
                         }
                     }
                     if (outputDataObjectType.getType().equals(DataType.STDERR)) {
                         if (outputDataObjectType.getValue() == null || outputDataObjectType.getValue().equals("")) {
-                            String stderrLocation = applicationInterface.getApplicationName() + ".stderr";
+                            String stderrLocation = scratchLocation + applicationInterface.getApplicationName() + ".stderr";
                             outputDataObjectType.setValue(stderrLocation);
                             processContext.setStderrLocation(stderrLocation);
                         } else {


[03/42] airavata git commit: selecting distinct projects

Posted by sh...@apache.org.
selecting distinct projects


Project: http://git-wip-us.apache.org/repos/asf/airavata/repo
Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/d2d72e52
Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/d2d72e52
Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/d2d72e52

Branch: refs/heads/develop
Commit: d2d72e52b2f4475ec179abce180710527de3d7f7
Parents: 6d09915
Author: scnakandala <su...@gmail.com>
Authored: Mon Jan 4 14:34:34 2016 -0500
Committer: scnakandala <su...@gmail.com>
Committed: Mon Jan 4 14:36:03 2016 -0500

----------------------------------------------------------------------
 .../registry/core/experiment/catalog/resources/WorkerResource.java | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/d2d72e52/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/WorkerResource.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/WorkerResource.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/WorkerResource.java
index bf04eff..cf2f59b 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/WorkerResource.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/WorkerResource.java
@@ -513,7 +513,7 @@ public class WorkerResource extends AbstractExpCatResource {
         List<org.apache.airavata.registry.core.experiment.catalog.resources.ProjectResource> result = new ArrayList<org.apache.airavata.registry.core.experiment.catalog.resources.ProjectResource>();
         EntityManager em = null;
         try {
-            String query = "SELECT p from Project p WHERE ";
+            String query = "SELECT DISTINCT p from Project p WHERE ";
             if (filters != null && filters.size() != 0) {
                 for (String field : filters.keySet()) {
                     String filterVal = filters.get(field);


[20/42] airavata git commit: adding experimentDataDir to user configuration data

Posted by sh...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata/blob/bd775410/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/experiment/UserConfigurationDataModel.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/experiment/UserConfigurationDataModel.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/experiment/UserConfigurationDataModel.java
index cc9f70f..7283f63 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/experiment/UserConfigurationDataModel.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/experiment/UserConfigurationDataModel.java
@@ -56,7 +56,7 @@ import org.slf4j.LoggerFactory;
  * 
  * 
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2015-12-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-06")
 public class UserConfigurationDataModel implements org.apache.thrift.TBase<UserConfigurationDataModel, UserConfigurationDataModel._Fields>, java.io.Serializable, Cloneable, Comparable<UserConfigurationDataModel> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("UserConfigurationDataModel");
 
@@ -68,6 +68,7 @@ public class UserConfigurationDataModel implements org.apache.thrift.TBase<UserC
   private static final org.apache.thrift.protocol.TField USER_DN_FIELD_DESC = new org.apache.thrift.protocol.TField("userDN", org.apache.thrift.protocol.TType.STRING, (short)6);
   private static final org.apache.thrift.protocol.TField GENERATE_CERT_FIELD_DESC = new org.apache.thrift.protocol.TField("generateCert", org.apache.thrift.protocol.TType.BOOL, (short)7);
   private static final org.apache.thrift.protocol.TField STORAGE_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("storageId", org.apache.thrift.protocol.TType.STRING, (short)8);
+  private static final org.apache.thrift.protocol.TField EXPERIMENT_DATA_DIR_FIELD_DESC = new org.apache.thrift.protocol.TField("experimentDataDir", org.apache.thrift.protocol.TType.STRING, (short)9);
 
   private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
   static {
@@ -83,6 +84,7 @@ public class UserConfigurationDataModel implements org.apache.thrift.TBase<UserC
   private String userDN; // optional
   private boolean generateCert; // optional
   private String storageId; // optional
+  private String experimentDataDir; // optional
 
   /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
   public enum _Fields implements org.apache.thrift.TFieldIdEnum {
@@ -93,7 +95,8 @@ public class UserConfigurationDataModel implements org.apache.thrift.TBase<UserC
     THROTTLE_RESOURCES((short)5, "throttleResources"),
     USER_DN((short)6, "userDN"),
     GENERATE_CERT((short)7, "generateCert"),
-    STORAGE_ID((short)8, "storageId");
+    STORAGE_ID((short)8, "storageId"),
+    EXPERIMENT_DATA_DIR((short)9, "experimentDataDir");
 
     private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
 
@@ -124,6 +127,8 @@ public class UserConfigurationDataModel implements org.apache.thrift.TBase<UserC
           return GENERATE_CERT;
         case 8: // STORAGE_ID
           return STORAGE_ID;
+        case 9: // EXPERIMENT_DATA_DIR
+          return EXPERIMENT_DATA_DIR;
         default:
           return null;
       }
@@ -170,7 +175,7 @@ public class UserConfigurationDataModel implements org.apache.thrift.TBase<UserC
   private static final int __THROTTLERESOURCES_ISSET_ID = 3;
   private static final int __GENERATECERT_ISSET_ID = 4;
   private byte __isset_bitfield = 0;
-  private static final _Fields optionals[] = {_Fields.SHARE_EXPERIMENT_PUBLICLY,_Fields.COMPUTATIONAL_RESOURCE_SCHEDULING,_Fields.THROTTLE_RESOURCES,_Fields.USER_DN,_Fields.GENERATE_CERT,_Fields.STORAGE_ID};
+  private static final _Fields optionals[] = {_Fields.SHARE_EXPERIMENT_PUBLICLY,_Fields.COMPUTATIONAL_RESOURCE_SCHEDULING,_Fields.THROTTLE_RESOURCES,_Fields.USER_DN,_Fields.GENERATE_CERT,_Fields.STORAGE_ID,_Fields.EXPERIMENT_DATA_DIR};
   public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
   static {
     Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
@@ -190,6 +195,8 @@ public class UserConfigurationDataModel implements org.apache.thrift.TBase<UserC
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.BOOL)));
     tmpMap.put(_Fields.STORAGE_ID, new org.apache.thrift.meta_data.FieldMetaData("storageId", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    tmpMap.put(_Fields.EXPERIMENT_DATA_DIR, new org.apache.thrift.meta_data.FieldMetaData("experimentDataDir", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
     metaDataMap = Collections.unmodifiableMap(tmpMap);
     org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(UserConfigurationDataModel.class, metaDataMap);
   }
@@ -237,6 +244,9 @@ public class UserConfigurationDataModel implements org.apache.thrift.TBase<UserC
     if (other.isSetStorageId()) {
       this.storageId = other.storageId;
     }
+    if (other.isSetExperimentDataDir()) {
+      this.experimentDataDir = other.experimentDataDir;
+    }
   }
 
   public UserConfigurationDataModel deepCopy() {
@@ -258,6 +268,7 @@ public class UserConfigurationDataModel implements org.apache.thrift.TBase<UserC
     this.generateCert = false;
 
     this.storageId = null;
+    this.experimentDataDir = null;
   }
 
   public boolean isAiravataAutoSchedule() {
@@ -439,6 +450,29 @@ public class UserConfigurationDataModel implements org.apache.thrift.TBase<UserC
     }
   }
 
+  public String getExperimentDataDir() {
+    return this.experimentDataDir;
+  }
+
+  public void setExperimentDataDir(String experimentDataDir) {
+    this.experimentDataDir = experimentDataDir;
+  }
+
+  public void unsetExperimentDataDir() {
+    this.experimentDataDir = null;
+  }
+
+  /** Returns true if field experimentDataDir is set (has been assigned a value) and false otherwise */
+  public boolean isSetExperimentDataDir() {
+    return this.experimentDataDir != null;
+  }
+
+  public void setExperimentDataDirIsSet(boolean value) {
+    if (!value) {
+      this.experimentDataDir = null;
+    }
+  }
+
   public void setFieldValue(_Fields field, Object value) {
     switch (field) {
     case AIRAVATA_AUTO_SCHEDULE:
@@ -505,6 +539,14 @@ public class UserConfigurationDataModel implements org.apache.thrift.TBase<UserC
       }
       break;
 
+    case EXPERIMENT_DATA_DIR:
+      if (value == null) {
+        unsetExperimentDataDir();
+      } else {
+        setExperimentDataDir((String)value);
+      }
+      break;
+
     }
   }
 
@@ -534,6 +576,9 @@ public class UserConfigurationDataModel implements org.apache.thrift.TBase<UserC
     case STORAGE_ID:
       return getStorageId();
 
+    case EXPERIMENT_DATA_DIR:
+      return getExperimentDataDir();
+
     }
     throw new IllegalStateException();
   }
@@ -561,6 +606,8 @@ public class UserConfigurationDataModel implements org.apache.thrift.TBase<UserC
       return isSetGenerateCert();
     case STORAGE_ID:
       return isSetStorageId();
+    case EXPERIMENT_DATA_DIR:
+      return isSetExperimentDataDir();
     }
     throw new IllegalStateException();
   }
@@ -650,6 +697,15 @@ public class UserConfigurationDataModel implements org.apache.thrift.TBase<UserC
         return false;
     }
 
+    boolean this_present_experimentDataDir = true && this.isSetExperimentDataDir();
+    boolean that_present_experimentDataDir = true && that.isSetExperimentDataDir();
+    if (this_present_experimentDataDir || that_present_experimentDataDir) {
+      if (!(this_present_experimentDataDir && that_present_experimentDataDir))
+        return false;
+      if (!this.experimentDataDir.equals(that.experimentDataDir))
+        return false;
+    }
+
     return true;
   }
 
@@ -697,6 +753,11 @@ public class UserConfigurationDataModel implements org.apache.thrift.TBase<UserC
     if (present_storageId)
       list.add(storageId);
 
+    boolean present_experimentDataDir = true && (isSetExperimentDataDir());
+    list.add(present_experimentDataDir);
+    if (present_experimentDataDir)
+      list.add(experimentDataDir);
+
     return list.hashCode();
   }
 
@@ -788,6 +849,16 @@ public class UserConfigurationDataModel implements org.apache.thrift.TBase<UserC
         return lastComparison;
       }
     }
+    lastComparison = Boolean.valueOf(isSetExperimentDataDir()).compareTo(other.isSetExperimentDataDir());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetExperimentDataDir()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.experimentDataDir, other.experimentDataDir);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
     return 0;
   }
 
@@ -863,6 +934,16 @@ public class UserConfigurationDataModel implements org.apache.thrift.TBase<UserC
       }
       first = false;
     }
+    if (isSetExperimentDataDir()) {
+      if (!first) sb.append(", ");
+      sb.append("experimentDataDir:");
+      if (this.experimentDataDir == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.experimentDataDir);
+      }
+      first = false;
+    }
     sb.append(")");
     return sb.toString();
   }
@@ -984,6 +1065,14 @@ public class UserConfigurationDataModel implements org.apache.thrift.TBase<UserC
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
+          case 9: // EXPERIMENT_DATA_DIR
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.experimentDataDir = iprot.readString();
+              struct.setExperimentDataDirIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
           default:
             org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
         }
@@ -1039,6 +1128,13 @@ public class UserConfigurationDataModel implements org.apache.thrift.TBase<UserC
           oprot.writeFieldEnd();
         }
       }
+      if (struct.experimentDataDir != null) {
+        if (struct.isSetExperimentDataDir()) {
+          oprot.writeFieldBegin(EXPERIMENT_DATA_DIR_FIELD_DESC);
+          oprot.writeString(struct.experimentDataDir);
+          oprot.writeFieldEnd();
+        }
+      }
       oprot.writeFieldStop();
       oprot.writeStructEnd();
     }
@@ -1077,7 +1173,10 @@ public class UserConfigurationDataModel implements org.apache.thrift.TBase<UserC
       if (struct.isSetStorageId()) {
         optionals.set(5);
       }
-      oprot.writeBitSet(optionals, 6);
+      if (struct.isSetExperimentDataDir()) {
+        optionals.set(6);
+      }
+      oprot.writeBitSet(optionals, 7);
       if (struct.isSetShareExperimentPublicly()) {
         oprot.writeBool(struct.shareExperimentPublicly);
       }
@@ -1096,6 +1195,9 @@ public class UserConfigurationDataModel implements org.apache.thrift.TBase<UserC
       if (struct.isSetStorageId()) {
         oprot.writeString(struct.storageId);
       }
+      if (struct.isSetExperimentDataDir()) {
+        oprot.writeString(struct.experimentDataDir);
+      }
     }
 
     @Override
@@ -1105,7 +1207,7 @@ public class UserConfigurationDataModel implements org.apache.thrift.TBase<UserC
       struct.setAiravataAutoScheduleIsSet(true);
       struct.overrideManualScheduledParams = iprot.readBool();
       struct.setOverrideManualScheduledParamsIsSet(true);
-      BitSet incoming = iprot.readBitSet(6);
+      BitSet incoming = iprot.readBitSet(7);
       if (incoming.get(0)) {
         struct.shareExperimentPublicly = iprot.readBool();
         struct.setShareExperimentPubliclyIsSet(true);
@@ -1131,6 +1233,10 @@ public class UserConfigurationDataModel implements org.apache.thrift.TBase<UserC
         struct.storageId = iprot.readString();
         struct.setStorageIdIsSet(true);
       }
+      if (incoming.get(6)) {
+        struct.experimentDataDir = iprot.readString();
+        struct.setExperimentDataDirIsSet(true);
+      }
     }
   }
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/bd775410/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/job/JobModel.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/job/JobModel.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/job/JobModel.java
index f2e63a7..ecc82df 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/job/JobModel.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/job/JobModel.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2015-12-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-06")
 public class JobModel implements org.apache.thrift.TBase<JobModel, JobModel._Fields>, java.io.Serializable, Cloneable, Comparable<JobModel> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("JobModel");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/bd775410/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/ExperimentStatusChangeEvent.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/ExperimentStatusChangeEvent.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/ExperimentStatusChangeEvent.java
index ba87f77..b999c45 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/ExperimentStatusChangeEvent.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/ExperimentStatusChangeEvent.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2015-12-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-06")
 public class ExperimentStatusChangeEvent implements org.apache.thrift.TBase<ExperimentStatusChangeEvent, ExperimentStatusChangeEvent._Fields>, java.io.Serializable, Cloneable, Comparable<ExperimentStatusChangeEvent> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("ExperimentStatusChangeEvent");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/bd775410/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/JobIdentifier.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/JobIdentifier.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/JobIdentifier.java
index 6e256be..c280651 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/JobIdentifier.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/JobIdentifier.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2015-12-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-06")
 public class JobIdentifier implements org.apache.thrift.TBase<JobIdentifier, JobIdentifier._Fields>, java.io.Serializable, Cloneable, Comparable<JobIdentifier> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("JobIdentifier");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/bd775410/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/JobStatusChangeEvent.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/JobStatusChangeEvent.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/JobStatusChangeEvent.java
index 8db0c3b..304a50a 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/JobStatusChangeEvent.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/JobStatusChangeEvent.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2015-12-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-06")
 public class JobStatusChangeEvent implements org.apache.thrift.TBase<JobStatusChangeEvent, JobStatusChangeEvent._Fields>, java.io.Serializable, Cloneable, Comparable<JobStatusChangeEvent> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("JobStatusChangeEvent");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/bd775410/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/JobStatusChangeRequestEvent.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/JobStatusChangeRequestEvent.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/JobStatusChangeRequestEvent.java
index c24b5b9..47e6ee4 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/JobStatusChangeRequestEvent.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/JobStatusChangeRequestEvent.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2015-12-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-06")
 public class JobStatusChangeRequestEvent implements org.apache.thrift.TBase<JobStatusChangeRequestEvent, JobStatusChangeRequestEvent._Fields>, java.io.Serializable, Cloneable, Comparable<JobStatusChangeRequestEvent> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("JobStatusChangeRequestEvent");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/bd775410/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/Message.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/Message.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/Message.java
index 8df73ca..2824f93 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/Message.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/Message.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2015-12-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-06")
 public class Message implements org.apache.thrift.TBase<Message, Message._Fields>, java.io.Serializable, Cloneable, Comparable<Message> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("Message");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/bd775410/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/ProcessIdentifier.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/ProcessIdentifier.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/ProcessIdentifier.java
index 55a5e71..f1c1f98 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/ProcessIdentifier.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/ProcessIdentifier.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2015-12-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-06")
 public class ProcessIdentifier implements org.apache.thrift.TBase<ProcessIdentifier, ProcessIdentifier._Fields>, java.io.Serializable, Cloneable, Comparable<ProcessIdentifier> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("ProcessIdentifier");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/bd775410/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/ProcessStatusChangeEvent.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/ProcessStatusChangeEvent.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/ProcessStatusChangeEvent.java
index 829ac76..09f9623 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/ProcessStatusChangeEvent.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/ProcessStatusChangeEvent.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2015-12-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-06")
 public class ProcessStatusChangeEvent implements org.apache.thrift.TBase<ProcessStatusChangeEvent, ProcessStatusChangeEvent._Fields>, java.io.Serializable, Cloneable, Comparable<ProcessStatusChangeEvent> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("ProcessStatusChangeEvent");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/bd775410/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/ProcessStatusChangeRequestEvent.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/ProcessStatusChangeRequestEvent.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/ProcessStatusChangeRequestEvent.java
index 09e920d..2ac0bec 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/ProcessStatusChangeRequestEvent.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/ProcessStatusChangeRequestEvent.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2015-12-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-06")
 public class ProcessStatusChangeRequestEvent implements org.apache.thrift.TBase<ProcessStatusChangeRequestEvent, ProcessStatusChangeRequestEvent._Fields>, java.io.Serializable, Cloneable, Comparable<ProcessStatusChangeRequestEvent> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("ProcessStatusChangeRequestEvent");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/bd775410/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/ProcessSubmitEvent.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/ProcessSubmitEvent.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/ProcessSubmitEvent.java
index d036ba1..81322cf 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/ProcessSubmitEvent.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/ProcessSubmitEvent.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2015-12-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-06")
 public class ProcessSubmitEvent implements org.apache.thrift.TBase<ProcessSubmitEvent, ProcessSubmitEvent._Fields>, java.io.Serializable, Cloneable, Comparable<ProcessSubmitEvent> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("ProcessSubmitEvent");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/bd775410/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/ProcessTerminateEvent.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/ProcessTerminateEvent.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/ProcessTerminateEvent.java
index 2778042..d9ea6f9 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/ProcessTerminateEvent.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/ProcessTerminateEvent.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2015-12-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-06")
 public class ProcessTerminateEvent implements org.apache.thrift.TBase<ProcessTerminateEvent, ProcessTerminateEvent._Fields>, java.io.Serializable, Cloneable, Comparable<ProcessTerminateEvent> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("ProcessTerminateEvent");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/bd775410/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/TaskIdentifier.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/TaskIdentifier.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/TaskIdentifier.java
index a93c7a5..c321b5b 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/TaskIdentifier.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/TaskIdentifier.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2015-12-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-06")
 public class TaskIdentifier implements org.apache.thrift.TBase<TaskIdentifier, TaskIdentifier._Fields>, java.io.Serializable, Cloneable, Comparable<TaskIdentifier> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("TaskIdentifier");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/bd775410/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/TaskOutputChangeEvent.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/TaskOutputChangeEvent.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/TaskOutputChangeEvent.java
index a7516c4..95c7e59 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/TaskOutputChangeEvent.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/TaskOutputChangeEvent.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2015-12-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-06")
 public class TaskOutputChangeEvent implements org.apache.thrift.TBase<TaskOutputChangeEvent, TaskOutputChangeEvent._Fields>, java.io.Serializable, Cloneable, Comparable<TaskOutputChangeEvent> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("TaskOutputChangeEvent");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/bd775410/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/TaskStatusChangeEvent.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/TaskStatusChangeEvent.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/TaskStatusChangeEvent.java
index 090f045..591ce76 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/TaskStatusChangeEvent.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/TaskStatusChangeEvent.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2015-12-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-06")
 public class TaskStatusChangeEvent implements org.apache.thrift.TBase<TaskStatusChangeEvent, TaskStatusChangeEvent._Fields>, java.io.Serializable, Cloneable, Comparable<TaskStatusChangeEvent> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("TaskStatusChangeEvent");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/bd775410/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/TaskStatusChangeRequestEvent.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/TaskStatusChangeRequestEvent.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/TaskStatusChangeRequestEvent.java
index 369eec6..6ec06d0 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/TaskStatusChangeRequestEvent.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/TaskStatusChangeRequestEvent.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2015-12-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-06")
 public class TaskStatusChangeRequestEvent implements org.apache.thrift.TBase<TaskStatusChangeRequestEvent, TaskStatusChangeRequestEvent._Fields>, java.io.Serializable, Cloneable, Comparable<TaskStatusChangeRequestEvent> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("TaskStatusChangeRequestEvent");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/bd775410/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/process/ProcessModel.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/process/ProcessModel.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/process/ProcessModel.java
index 26ba661..232d45c 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/process/ProcessModel.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/process/ProcessModel.java
@@ -60,7 +60,7 @@ import org.slf4j.LoggerFactory;
  * 
  * 
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2015-12-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-06")
 public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, ProcessModel._Fields>, java.io.Serializable, Cloneable, Comparable<ProcessModel> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("ProcessModel");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/bd775410/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/scheduling/ComputationalResourceSchedulingModel.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/scheduling/ComputationalResourceSchedulingModel.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/scheduling/ComputationalResourceSchedulingModel.java
index 2b124eb..e62f5ab 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/scheduling/ComputationalResourceSchedulingModel.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/scheduling/ComputationalResourceSchedulingModel.java
@@ -56,7 +56,7 @@ import org.slf4j.LoggerFactory;
  * 
  * 
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2015-12-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-06")
 public class ComputationalResourceSchedulingModel implements org.apache.thrift.TBase<ComputationalResourceSchedulingModel, ComputationalResourceSchedulingModel._Fields>, java.io.Serializable, Cloneable, Comparable<ComputationalResourceSchedulingModel> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("ComputationalResourceSchedulingModel");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/bd775410/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/security/AuthzToken.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/security/AuthzToken.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/security/AuthzToken.java
index 7b14510..cd2fb00 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/security/AuthzToken.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/security/AuthzToken.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2015-12-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-06")
 public class AuthzToken implements org.apache.thrift.TBase<AuthzToken, AuthzToken._Fields>, java.io.Serializable, Cloneable, Comparable<AuthzToken> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("AuthzToken");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/bd775410/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/status/ExperimentStatus.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/status/ExperimentStatus.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/status/ExperimentStatus.java
index ff3ba45..4e00b2c 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/status/ExperimentStatus.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/status/ExperimentStatus.java
@@ -64,7 +64,7 @@ import org.slf4j.LoggerFactory;
  *   User friendly reason on how the state is inferred.
  * 
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2015-12-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-06")
 public class ExperimentStatus implements org.apache.thrift.TBase<ExperimentStatus, ExperimentStatus._Fields>, java.io.Serializable, Cloneable, Comparable<ExperimentStatus> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("ExperimentStatus");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/bd775410/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/status/JobStatus.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/status/JobStatus.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/status/JobStatus.java
index 42d730d..d311113 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/status/JobStatus.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/status/JobStatus.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2015-12-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-06")
 public class JobStatus implements org.apache.thrift.TBase<JobStatus, JobStatus._Fields>, java.io.Serializable, Cloneable, Comparable<JobStatus> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("JobStatus");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/bd775410/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/status/ProcessStatus.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/status/ProcessStatus.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/status/ProcessStatus.java
index 6c3e703..effc713 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/status/ProcessStatus.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/status/ProcessStatus.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2015-12-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-06")
 public class ProcessStatus implements org.apache.thrift.TBase<ProcessStatus, ProcessStatus._Fields>, java.io.Serializable, Cloneable, Comparable<ProcessStatus> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("ProcessStatus");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/bd775410/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/status/TaskStatus.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/status/TaskStatus.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/status/TaskStatus.java
index b862fe5..8099fc7 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/status/TaskStatus.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/status/TaskStatus.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2015-12-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-06")
 public class TaskStatus implements org.apache.thrift.TBase<TaskStatus, TaskStatus._Fields>, java.io.Serializable, Cloneable, Comparable<TaskStatus> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("TaskStatus");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/bd775410/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/task/DataStagingTaskModel.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/task/DataStagingTaskModel.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/task/DataStagingTaskModel.java
index 5ad7c2c..a51c0aa 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/task/DataStagingTaskModel.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/task/DataStagingTaskModel.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2015-12-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-06")
 public class DataStagingTaskModel implements org.apache.thrift.TBase<DataStagingTaskModel, DataStagingTaskModel._Fields>, java.io.Serializable, Cloneable, Comparable<DataStagingTaskModel> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("DataStagingTaskModel");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/bd775410/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/task/EnvironmentSetupTaskModel.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/task/EnvironmentSetupTaskModel.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/task/EnvironmentSetupTaskModel.java
index 72e480d..2f7a4a5 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/task/EnvironmentSetupTaskModel.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/task/EnvironmentSetupTaskModel.java
@@ -55,7 +55,7 @@ import org.slf4j.LoggerFactory;
  * EnvironmentSetupTaskModel: A structure holding the environment creation task details
  * 
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2015-12-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-06")
 public class EnvironmentSetupTaskModel implements org.apache.thrift.TBase<EnvironmentSetupTaskModel, EnvironmentSetupTaskModel._Fields>, java.io.Serializable, Cloneable, Comparable<EnvironmentSetupTaskModel> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("EnvironmentSetupTaskModel");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/bd775410/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/task/JobSubmissionTaskModel.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/task/JobSubmissionTaskModel.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/task/JobSubmissionTaskModel.java
index 936cbdf..40e1ec6 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/task/JobSubmissionTaskModel.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/task/JobSubmissionTaskModel.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2015-12-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-06")
 public class JobSubmissionTaskModel implements org.apache.thrift.TBase<JobSubmissionTaskModel, JobSubmissionTaskModel._Fields>, java.io.Serializable, Cloneable, Comparable<JobSubmissionTaskModel> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("JobSubmissionTaskModel");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/bd775410/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/task/MonitorTaskModel.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/task/MonitorTaskModel.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/task/MonitorTaskModel.java
index 74eac6d..7ce14d4 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/task/MonitorTaskModel.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/task/MonitorTaskModel.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2015-12-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-06")
 public class MonitorTaskModel implements org.apache.thrift.TBase<MonitorTaskModel, MonitorTaskModel._Fields>, java.io.Serializable, Cloneable, Comparable<MonitorTaskModel> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("MonitorTaskModel");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/bd775410/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/task/TaskModel.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/task/TaskModel.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/task/TaskModel.java
index eac5a11..15c99c5 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/task/TaskModel.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/task/TaskModel.java
@@ -60,7 +60,7 @@ import org.slf4j.LoggerFactory;
  * subTaskModel:
  *   A generic byte object for the Task developer to store internal serialized data into registry catalogs.
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2015-12-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-06")
 public class TaskModel implements org.apache.thrift.TBase<TaskModel, TaskModel._Fields>, java.io.Serializable, Cloneable, Comparable<TaskModel> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("TaskModel");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/bd775410/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/workspace/Gateway.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/workspace/Gateway.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/workspace/Gateway.java
index ed97270..cc87166 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/workspace/Gateway.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/workspace/Gateway.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2015-12-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-06")
 public class Gateway implements org.apache.thrift.TBase<Gateway, Gateway._Fields>, java.io.Serializable, Cloneable, Comparable<Gateway> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("Gateway");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/bd775410/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/workspace/Group.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/workspace/Group.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/workspace/Group.java
index c8f1baf..8ca4f4d 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/workspace/Group.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/workspace/Group.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2015-12-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-06")
 public class Group implements org.apache.thrift.TBase<Group, Group._Fields>, java.io.Serializable, Cloneable, Comparable<Group> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("Group");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/bd775410/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/workspace/Project.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/workspace/Project.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/workspace/Project.java
index 174882a..c680bdf 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/workspace/Project.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/workspace/Project.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2015-12-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-06")
 public class Project implements org.apache.thrift.TBase<Project, Project._Fields>, java.io.Serializable, Cloneable, Comparable<Project> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("Project");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/bd775410/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/workspace/User.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/workspace/User.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/workspace/User.java
index 05bf930..0392e90 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/workspace/User.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/workspace/User.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2015-12-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-06")
 public class User implements org.apache.thrift.TBase<User, User._Fields>, java.io.Serializable, Cloneable, Comparable<User> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("User");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/bd775410/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentRegistry.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentRegistry.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentRegistry.java
index 5e10395..24ffa5f 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentRegistry.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentRegistry.java
@@ -146,6 +146,7 @@ public class ExperimentRegistry {
             configDataResource.setTotalPhysicalMemory(configurationData.getComputationalResourceScheduling().getTotalPhysicalMemory());
             configDataResource.setStaticWorkingDir(configurationData.getComputationalResourceScheduling().getStaticWorkingDir());
             configDataResource.setStorageId(configurationData.getStorageId());
+            configDataResource.setExperimentDataDir(configurationData.getExperimentDataDir());
             configDataResource.save();
         } catch (Exception e) {
             logger.error("Unable to save user config data", e);
@@ -703,6 +704,7 @@ public class ExperimentRegistry {
             configDataResource.setWallTimeLimit(configurationData.getComputationalResourceScheduling().getWallTimeLimit());
             configDataResource.setTotalPhysicalMemory(configurationData.getComputationalResourceScheduling().getTotalPhysicalMemory());
             configDataResource.setStaticWorkingDir(configurationData.getComputationalResourceScheduling().getStaticWorkingDir());
+            configDataResource.setExperimentDataDir(configurationData.getExperimentDataDir());
             configDataResource.save();
         } catch (Exception e) {
             logger.error("Unable to save user config data", e);

http://git-wip-us.apache.org/repos/asf/airavata/blob/bd775410/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/UserConfigurationData.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/UserConfigurationData.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/UserConfigurationData.java
index d72a8b7..638dee9 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/UserConfigurationData.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/UserConfigurationData.java
@@ -46,6 +46,7 @@ public class UserConfigurationData {
     private Experiment experiment;
     private String staticWorkingDir;
     private String storageId;
+    private String experimentDataDir;
 
     @Id
     @Column(name = "EXPERIMENT_ID")
@@ -192,6 +193,16 @@ public class UserConfigurationData {
         this.storageId = storageId;
     }
 
+    @Column(name = "EXPERIMENT_DATA_DIR")
+    public String getExperimentDataDir() {
+        return experimentDataDir;
+    }
+
+    public void setExperimentDataDir(String experimentDataDir) {
+        this.experimentDataDir = experimentDataDir;
+    }
+
+
     //    @Override
 //    public boolean equals(Object o) {
 //        if (this == o) return true;

http://git-wip-us.apache.org/repos/asf/airavata/blob/bd775410/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/UserConfigurationDataResource.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/UserConfigurationDataResource.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/UserConfigurationDataResource.java
index aebf9dc..ebf29bd 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/UserConfigurationDataResource.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/UserConfigurationDataResource.java
@@ -50,6 +50,7 @@ public class UserConfigurationDataResource extends AbstractExpCatResource {
     private Integer totalPhysicalMemory;
     private String staticWorkingDir;
     private String storageId;
+    private String experimentDataDir;
 
     public String getExperimentId() {
         return experimentId;
@@ -179,6 +180,14 @@ public class UserConfigurationDataResource extends AbstractExpCatResource {
         this.staticWorkingDir = staticWorkingDir;
     }
 
+    public String getExperimentDataDir() {
+        return experimentDataDir;
+    }
+
+    public void setExperimentDataDir(String experimentDataDir) {
+        this.experimentDataDir = experimentDataDir;
+    }
+
     public ExperimentCatResource create(ResourceType type) throws RegistryException {
         logger.error("Unsupported resource type for process resource scheduling data resource.", new UnsupportedOperationException());
         throw new UnsupportedOperationException();
@@ -242,6 +251,7 @@ public class UserConfigurationDataResource extends AbstractExpCatResource {
             userConfigurationData.setStaticWorkingDir(staticWorkingDir);
             userConfigurationData.setTotalPhysicalMemory(totalPhysicalMemory);
             userConfigurationData.setStorageId(storageId);
+            userConfigurationData.setExperimentDataDir(experimentDataDir);
             if (existingConf == null){
                 em.persist(userConfigurationData);
             }else {

http://git-wip-us.apache.org/repos/asf/airavata/blob/bd775410/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/Utils.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/Utils.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/Utils.java
index 9642fe8..7e7a9a8 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/Utils.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/Utils.java
@@ -513,6 +513,7 @@ public class Utils {
             configurationDataResource.setTotalPhysicalMemory(o.getTotalPhysicalMemory());
             configurationDataResource.setStaticWorkingDir(o.getStaticWorkingDir());
             configurationDataResource.setStorageId(o.getStorageId());
+            configurationDataResource.setExperimentDataDir(o.getExperimentDataDir());
         }
         return configurationDataResource;
     }

http://git-wip-us.apache.org/repos/asf/airavata/blob/bd775410/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/utils/ThriftDataModelConversion.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/utils/ThriftDataModelConversion.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/utils/ThriftDataModelConversion.java
index ec80798..dc9bfde 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/utils/ThriftDataModelConversion.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/utils/ThriftDataModelConversion.java
@@ -497,6 +497,7 @@ public class ThriftDataModelConversion {
             data.setUserDN(resource.getUserDn());
             data.setGenerateCert(resource.getGenerateCert());
             data.setStorageId(resource.getStorageId());
+            data.setExperimentDataDir(resource.getExperimentDataDir());
 
             ComputationalResourceSchedulingModel resourceSchedulingModel = new ComputationalResourceSchedulingModel();
             resourceSchedulingModel.setResourceHostId(resource.getResourceHostId());

http://git-wip-us.apache.org/repos/asf/airavata/blob/bd775410/modules/registry/registry-core/src/main/resources/expcatalog-derby.sql
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/resources/expcatalog-derby.sql b/modules/registry/registry-core/src/main/resources/expcatalog-derby.sql
index 7689030..603c921 100644
--- a/modules/registry/registry-core/src/main/resources/expcatalog-derby.sql
+++ b/modules/registry/registry-core/src/main/resources/expcatalog-derby.sql
@@ -158,6 +158,7 @@ CREATE TABLE USER_CONFIGURATION_DATA (
   TOTAL_PHYSICAL_MEMORY INT,
   STATIC_WORKING_DIR varchar(255),
   STORAGE_RESOURCE_ID varchar(255),
+  EXPERIMENT_DATA_DIR VARCHAR (512),
   PRIMARY KEY (EXPERIMENT_ID),
   FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE
 );

http://git-wip-us.apache.org/repos/asf/airavata/blob/bd775410/modules/registry/registry-core/src/main/resources/expcatalog-mysql.sql
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/resources/expcatalog-mysql.sql b/modules/registry/registry-core/src/main/resources/expcatalog-mysql.sql
index f7834bb..1fae15d 100644
--- a/modules/registry/registry-core/src/main/resources/expcatalog-mysql.sql
+++ b/modules/registry/registry-core/src/main/resources/expcatalog-mysql.sql
@@ -161,6 +161,7 @@ CREATE TABLE USER_CONFIGURATION_DATA (
   TOTAL_PHYSICAL_MEMORY int(11),
   STATIC_WORKING_DIR varchar(255),
   STORAGE_RESOURCE_ID varchar(255),
+  EXPERIMENT_DATA_DIR VARCHAR (512),
   PRIMARY KEY (EXPERIMENT_ID),
   FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE
 );

http://git-wip-us.apache.org/repos/asf/airavata/blob/bd775410/thrift-interface-descriptions/data-models/experiment-catalog-models/experiment_model.thrift
----------------------------------------------------------------------
diff --git a/thrift-interface-descriptions/data-models/experiment-catalog-models/experiment_model.thrift b/thrift-interface-descriptions/data-models/experiment-catalog-models/experiment_model.thrift
index 98a2523..5caf7e9 100644
--- a/thrift-interface-descriptions/data-models/experiment-catalog-models/experiment_model.thrift
+++ b/thrift-interface-descriptions/data-models/experiment-catalog-models/experiment_model.thrift
@@ -57,6 +57,7 @@ struct UserConfigurationDataModel {
     6: optional string userDN,
     7: optional bool generateCert = 0,
     8: optional string storageId;
+    9: optional string experimentDataDir;
 }
 
 /**


[18/42] airavata git commit: fixing bug in sql script

Posted by sh...@apache.org.
fixing bug in sql script


Project: http://git-wip-us.apache.org/repos/asf/airavata/repo
Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/fc3f979a
Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/fc3f979a
Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/fc3f979a

Branch: refs/heads/develop
Commit: fc3f979a45f6347b3d6e5494cd44212cca021f22
Parents: 94629e1
Author: Chathuri Wimalasena <ch...@apache.org>
Authored: Tue Jan 5 10:58:32 2016 -0500
Committer: Chathuri Wimalasena <ch...@apache.org>
Committed: Tue Jan 5 10:58:32 2016 -0500

----------------------------------------------------------------------
 .../registry/registry-core/src/main/resources/expcatalog-mysql.sql | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/fc3f979a/modules/registry/registry-core/src/main/resources/expcatalog-mysql.sql
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/resources/expcatalog-mysql.sql b/modules/registry/registry-core/src/main/resources/expcatalog-mysql.sql
index 47e6134..36b6db6 100644
--- a/modules/registry/registry-core/src/main/resources/expcatalog-mysql.sql
+++ b/modules/registry/registry-core/src/main/resources/expcatalog-mysql.sql
@@ -338,7 +338,7 @@ CREATE TABLE CONFIGURATION
 (
         CONFIG_KEY VARCHAR(255),
         CONFIG_VAL VARCHAR(255),
-        EXPIRE_DATE TIMESTAMP  TIMESTAMP DEFAULT NOW() ON UPDATE NOW(),
+        EXPIRE_DATE TIMESTAMP DEFAULT NOW() ON UPDATE NOW(),
         CATEGORY_ID VARCHAR (255),
         PRIMARY KEY(CONFIG_KEY, CONFIG_VAL, CATEGORY_ID)
 );


[08/42] airavata git commit: Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/airavata

Posted by sh...@apache.org.
Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/airavata


Project: http://git-wip-us.apache.org/repos/asf/airavata/repo
Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/4286bf78
Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/4286bf78
Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/4286bf78

Branch: refs/heads/develop
Commit: 4286bf783eea7e9515b5109f444b7dec1cb23c4b
Parents: f715026 7523c1e
Author: scnakandala <su...@gmail.com>
Authored: Mon Jan 4 14:46:34 2016 -0500
Committer: scnakandala <su...@gmail.com>
Committed: Mon Jan 4 14:46:34 2016 -0500

----------------------------------------------------------------------
 .../gfac/core/cluster/JobSubmissionOutput.java  |  2 +-
 .../impl/task/DefaultJobSubmissionTask.java     | 52 ++++++++++++++------
 2 files changed, 39 insertions(+), 15 deletions(-)
----------------------------------------------------------------------



[15/42] airavata git commit: fixing bug in sql script

Posted by sh...@apache.org.
fixing bug in sql script


Project: http://git-wip-us.apache.org/repos/asf/airavata/repo
Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/1d9eaf8e
Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/1d9eaf8e
Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/1d9eaf8e

Branch: refs/heads/develop
Commit: 1d9eaf8e4c554e4e45db70ff0dc6d72364b12c03
Parents: 8851582
Author: Chathuri Wimalasena <ch...@apache.org>
Authored: Tue Jan 5 10:30:08 2016 -0500
Committer: Chathuri Wimalasena <ch...@apache.org>
Committed: Tue Jan 5 10:30:08 2016 -0500

----------------------------------------------------------------------
 .../server/handler/AiravataServerHandler.java   | 66 ++++++++++++++++----
 .../src/main/resources/expcatalog-mysql.sql     |  1 -
 2 files changed, 53 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/1d9eaf8e/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java b/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java
index e513d06..7c54deb 100644
--- a/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java
+++ b/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java
@@ -1668,7 +1668,9 @@ public class AiravataServerHandler implements Airavata.Iface {
     @SecurityCheck
     public ExperimentStatus getExperimentStatus(AuthzToken authzToken, String airavataExperimentId) throws InvalidRequestException,
             ExperimentNotFoundException, AiravataClientException, AiravataSystemException, AuthorizationException, TException {
-        return getExperimentStatusInternal(airavataExperimentId);
+        ExperimentStatus experimentStatus = getExperimentStatusInternal(airavataExperimentId);
+        logger.info("Airavata retrieved experiment status for experiment id : " + airavataExperimentId);
+        return experimentStatus;
     }
 
     /*Private method wraps the logic of getExperimentStatus method since this method is called internally.*/
@@ -1701,6 +1703,7 @@ public class AiravataServerHandler implements Airavata.Iface {
                 logger.error(airavataExperimentId, "Get experiment outputs failed, experiment {} doesn't exit.", airavataExperimentId);
                 throw new ExperimentNotFoundException("Requested experiment id " + airavataExperimentId + " does not exist in the system..");
             }
+            logger.info("Airavata retrieved experiment outputs for experiment id : " + airavataExperimentId);
             return (List<OutputDataObjectType>) experimentCatalog.get(ExperimentCatalogModelType.EXPERIMENT_OUTPUT, airavataExperimentId);
         } catch (Exception e) {
             logger.error(airavataExperimentId, "Error while retrieving the experiment outputs", e);
@@ -1751,6 +1754,7 @@ public class AiravataServerHandler implements Airavata.Iface {
                     }
                 }
             }
+            logger.info("Airavata retrieved job statuses for experiment with experiment id : " + airavataExperimentId);
             return jobStatus;
         } catch (Exception e) {
             logger.error(airavataExperimentId, "Error while retrieving the job statuses", e);
@@ -1788,6 +1792,7 @@ public class AiravataServerHandler implements Airavata.Iface {
                     }
                 }
             }
+            logger.info("Airavata retrieved job models for experiment with experiment id : " + airavataExperimentId);
             return jobList;
         } catch (Exception e) {
             logger.error(airavataExperimentId, "Error while retrieving the job details", e);
@@ -1851,6 +1856,7 @@ public class AiravataServerHandler implements Airavata.Iface {
     	OrchestratorService.Client orchestratorClient = getOrchestratorClient();
     	if (orchestratorClient.validateExperiment(airavataExperimentId)) {
     		orchestratorClient.launchExperiment(airavataExperimentId, gatewayId);
+            logger.info("Airavata launched experiment with experiment id : " + airavataExperimentId);
     	}else {
             logger.error(airavataExperimentId, "Couldn't identify experiment type, experiment {} is neither single application nor workflow.", airavataExperimentId);
             throw new InvalidRequestException("Experiment '" + airavataExperimentId + "' launch failed. Unable to figureout execution type for application " + experiment.getExecutionId());
@@ -1944,6 +1950,7 @@ public class AiravataServerHandler implements Airavata.Iface {
                     existingExperiment.getUserConfigurationData().setComputationalResourceScheduling(null);
                 }
             }
+            logger.info("Airavata cloned experiment with experiment id : " + existingExperimentID);
             return (String) experimentCatalog.add(ExpCatParentDataType.EXPERIMENT, existingExperiment, gatewayId);
         } catch (Exception e) {
             logger.error(existingExperimentID, "Error while cloning the experiment with existing configuration...", e);
@@ -1986,6 +1993,7 @@ public class AiravataServerHandler implements Airavata.Iface {
             }
             Client client = getOrchestratorClient();
             client.terminateExperiment(airavataExperimentId, gatewayId);
+            logger.info("Airavata cancelled experiment with experiment id : " + airavataExperimentId);
         } catch (RegistryException e) {
             logger.error(airavataExperimentId, "Error while cancelling the experiment...", e);
             AiravataSystemException exception = new AiravataSystemException();
@@ -2012,7 +2020,9 @@ public class AiravataServerHandler implements Airavata.Iface {
         }
         try {
             appCatalog = RegistryFactory.getAppCatalog();
-            return appCatalog.getApplicationInterface().addApplicationModule(applicationModule, gatewayId);
+            String module = appCatalog.getApplicationInterface().addApplicationModule(applicationModule, gatewayId);
+            logger.info("Airavata registered application module for gateway id : " + gatewayId);
+            return module;
         } catch (AppCatalogException e) {
             logger.error("Error while adding application module...", e);
             AiravataSystemException exception = new AiravataSystemException();
@@ -2035,7 +2045,9 @@ public class AiravataServerHandler implements Airavata.Iface {
             AiravataClientException, AiravataSystemException, AuthorizationException, TException {
         try {
             appCatalog = RegistryFactory.getAppCatalog();
-            return appCatalog.getApplicationInterface().getApplicationModule(appModuleId);
+            ApplicationModule module = appCatalog.getApplicationInterface().getApplicationModule(appModuleId);
+            logger.info("Airavata retrieved application module with module id : " + appModuleId);
+            return module;
         } catch (AppCatalogException e) {
             logger.error(appModuleId, "Error while retrieving application module...", e);
             AiravataSystemException exception = new AiravataSystemException();
@@ -2060,6 +2072,7 @@ public class AiravataServerHandler implements Airavata.Iface {
         try {
             appCatalog = RegistryFactory.getAppCatalog();
             appCatalog.getApplicationInterface().updateApplicationModule(appModuleId, applicationModule);
+            logger.info("Airavata updated application module with module id: " + appModuleId);
             return true;
         } catch (AppCatalogException e) {
             logger.error(appModuleId, "Error while updating application module...", e);
@@ -2080,7 +2093,9 @@ public class AiravataServerHandler implements Airavata.Iface {
         }
         try {
             appCatalog = RegistryFactory.getAppCatalog();
-            return appCatalog.getApplicationInterface().getAllApplicationModules(gatewayId);
+            List<ApplicationModule> moduleList = appCatalog.getApplicationInterface().getAllApplicationModules(gatewayId);
+            logger.info("Airavata retrieved modules for gateway id : " + gatewayId);
+            return moduleList;
         } catch (AppCatalogException e) {
             logger.error("Error while retrieving all application modules...", e);
             AiravataSystemException exception = new AiravataSystemException();
@@ -2103,6 +2118,7 @@ public class AiravataServerHandler implements Airavata.Iface {
             AiravataClientException, AiravataSystemException, AuthorizationException, TException {
         try {
             appCatalog = RegistryFactory.getAppCatalog();
+            logger.info("Airavata deleted application module with module id : " + appModuleId);
             return appCatalog.getApplicationInterface().removeApplicationModule(appModuleId);
         } catch (AppCatalogException e) {
             logger.error(appModuleId, "Error while deleting application module...", e);
@@ -2129,7 +2145,9 @@ public class AiravataServerHandler implements Airavata.Iface {
         }
         try {
             appCatalog = RegistryFactory.getAppCatalog();
-            return appCatalog.getApplicationDeployment().addApplicationDeployment(applicationDeployment, gatewayId);
+            String deployment = appCatalog.getApplicationDeployment().addApplicationDeployment(applicationDeployment, gatewayId);
+            logger.info("Airavata registered application deployment for gateway id : " + gatewayId);
+            return deployment;
         } catch (AppCatalogException e) {
             logger.error("Error while adding application deployment...", e);
             AiravataSystemException exception = new AiravataSystemException();
@@ -2152,7 +2170,9 @@ public class AiravataServerHandler implements Airavata.Iface {
             throws InvalidRequestException, AiravataClientException, AiravataSystemException, AuthorizationException, TException {
         try {
             appCatalog = RegistryFactory.getAppCatalog();
-            return appCatalog.getApplicationDeployment().getApplicationDeployement(appDeploymentId);
+            ApplicationDeploymentDescription deployement = appCatalog.getApplicationDeployment().getApplicationDeployement(appDeploymentId);
+            logger.info("Airavata registered application deployment for deployment id : " + appDeploymentId);
+            return deployement;
         } catch (AppCatalogException e) {
             logger.error(appDeploymentId, "Error while retrieving application deployment...", e);
             AiravataSystemException exception = new AiravataSystemException();
@@ -2178,6 +2198,7 @@ public class AiravataServerHandler implements Airavata.Iface {
         try {
             appCatalog = RegistryFactory.getAppCatalog();
             appCatalog.getApplicationDeployment().updateApplicationDeployment(appDeploymentId, applicationDeployment);
+            logger.info("Airavata updated application deployment for deployment id : " + appDeploymentId);
             return true;
         } catch (AppCatalogException e) {
             logger.error(appDeploymentId, "Error while updating application deployment...", e);
@@ -2202,6 +2223,7 @@ public class AiravataServerHandler implements Airavata.Iface {
         try {
             appCatalog = RegistryFactory.getAppCatalog();
             appCatalog.getApplicationDeployment().removeAppDeployment(appDeploymentId);
+            logger.info("Airavata removed application deployment with deployment id : " + appDeploymentId);
             return true;
         } catch (AppCatalogException e) {
             logger.error(appDeploymentId, "Error while deleting application deployment...", e);
@@ -2228,7 +2250,9 @@ public class AiravataServerHandler implements Airavata.Iface {
         }
         try {
             appCatalog = RegistryFactory.getAppCatalog();
-            return appCatalog.getApplicationDeployment().getAllApplicationDeployements(gatewayId);
+            List<ApplicationDeploymentDescription> deployements = appCatalog.getApplicationDeployment().getAllApplicationDeployements(gatewayId);
+            logger.info("Airavata retrieved application deployments for gateway id : " + gatewayId);
+            return deployements;
         } catch (AppCatalogException e) {
             logger.error("Error while retrieving application deployments...", e);
             AiravataSystemException exception = new AiravataSystemException();
@@ -2258,6 +2282,7 @@ public class AiravataServerHandler implements Airavata.Iface {
             for (ApplicationDeploymentDescription description : applicationDeployments){
                 appDeployments.add(description.getAppDeploymentId());
             }
+            logger.info("Airavata retrieved application deployments for module id : " + appModuleId);
             return appDeployments;
         } catch (AppCatalogException e) {
             logger.error(appModuleId, "Error while retrieving application deployments...", e);
@@ -2285,7 +2310,9 @@ public class AiravataServerHandler implements Airavata.Iface {
         }
         try {
             appCatalog = RegistryFactory.getAppCatalog();
-            return appCatalog.getApplicationInterface().addApplicationInterface(applicationInterface, gatewayId);
+            String interfaceId = appCatalog.getApplicationInterface().addApplicationInterface(applicationInterface, gatewayId);
+            logger.info("Airavata registered application interface for gateway id : " + gatewayId);
+            return interfaceId;
         } catch (AppCatalogException e) {
             logger.error("Error while adding application interface...", e);
             AiravataSystemException exception = new AiravataSystemException();
@@ -2308,7 +2335,9 @@ public class AiravataServerHandler implements Airavata.Iface {
             throws InvalidRequestException, AiravataClientException, AiravataSystemException, AuthorizationException, TException {
         try {
             appCatalog = RegistryFactory.getAppCatalog();
-            return appCatalog.getApplicationInterface().getApplicationInterface(appInterfaceId);
+            ApplicationInterfaceDescription interfaceDescription = appCatalog.getApplicationInterface().getApplicationInterface(appInterfaceId);
+            logger.info("Airavata retrieved application interface with interface id : " + appInterfaceId);
+            return interfaceDescription;
         } catch (AppCatalogException e) {
             logger.error(appInterfaceId, "Error while retrieving application interface...", e);
             AiravataSystemException exception = new AiravataSystemException();
@@ -2334,6 +2363,7 @@ public class AiravataServerHandler implements Airavata.Iface {
         try {
             appCatalog = RegistryFactory.getAppCatalog();
             appCatalog.getApplicationInterface().updateApplicationInterface(appInterfaceId, applicationInterface);
+            logger.info("Airavata updated application interface with interface id : " + appInterfaceId);
             return true;
         } catch (AppCatalogException e) {
             logger.error(appInterfaceId, "Error while updating application interface...", e);
@@ -2357,7 +2387,9 @@ public class AiravataServerHandler implements Airavata.Iface {
             AiravataClientException, AiravataSystemException, AuthorizationException, TException {
         try {
             appCatalog = RegistryFactory.getAppCatalog();
-            return appCatalog.getApplicationInterface().removeApplicationInterface(appInterfaceId);
+            boolean removeApplicationInterface = appCatalog.getApplicationInterface().removeApplicationInterface(appInterfaceId);
+            logger.info("Airavata removed application interface with interface id : " + appInterfaceId);
+            return removeApplicationInterface;
         } catch (AppCatalogException e) {
             logger.error(appInterfaceId, "Error while deleting application interface...", e);
             AiravataSystemException exception = new AiravataSystemException();
@@ -2390,6 +2422,7 @@ public class AiravataServerHandler implements Airavata.Iface {
                     allApplicationInterfacesMap.put(interfaceDescription.getApplicationInterfaceId(), interfaceDescription.getApplicationName());
                 }
             }
+            logger.info("Airavata retrieved application interfaces for gateway id : " + gatewayId);
             return allApplicationInterfacesMap;
         } catch (AppCatalogException e) {
             logger.error("Error while retrieving application interfaces...", e);
@@ -2416,7 +2449,9 @@ public class AiravataServerHandler implements Airavata.Iface {
         }
         try {
             appCatalog = RegistryFactory.getAppCatalog();
-            return appCatalog.getApplicationInterface().getAllApplicationInterfaces(gatewayId);
+            List<ApplicationInterfaceDescription> interfaces = appCatalog.getApplicationInterface().getAllApplicationInterfaces(gatewayId);
+            logger.info("Airavata retrieved application interfaces for gateway id : " + gatewayId);
+            return interfaces;
         } catch (AppCatalogException e) {
             logger.error("Error while retrieving application interfaces...", e);
             AiravataSystemException exception = new AiravataSystemException();
@@ -2439,7 +2474,9 @@ public class AiravataServerHandler implements Airavata.Iface {
             AiravataClientException, AiravataSystemException, AuthorizationException, TException {
         try {
             appCatalog = RegistryFactory.getAppCatalog();
-            return appCatalog.getApplicationInterface().getApplicationInputs(appInterfaceId);
+            List<InputDataObjectType> applicationInputs = appCatalog.getApplicationInterface().getApplicationInputs(appInterfaceId);
+            logger.info("Airavata retrieved application inputs for application interface id : " + appInterfaceId);
+            return applicationInputs;
         } catch (AppCatalogException e) {
             logger.error(appInterfaceId, "Error while retrieving application inputs...", e);
             AiravataSystemException exception = new AiravataSystemException();
@@ -2460,7 +2497,9 @@ public class AiravataServerHandler implements Airavata.Iface {
     @SecurityCheck
     public List<OutputDataObjectType> getApplicationOutputs(AuthzToken authzToken, String appInterfaceId) throws InvalidRequestException,
             AiravataClientException, AiravataSystemException, AuthorizationException, TException {
-        return getApplicationOutputsInternal(appInterfaceId);
+        List<OutputDataObjectType> list = getApplicationOutputsInternal(appInterfaceId);
+        logger.info("Airavata retrieved application outputs for app interface id : " + appInterfaceId);
+        return list;
     }
 
     /*This private method wraps the logic of getApplicationOutputs method as this method is called internally in the API.*/
@@ -2511,6 +2550,7 @@ public class AiravataServerHandler implements Airavata.Iface {
                     }
                 }
             }
+            logger.info("Airavata retrieved available compute resources for application interface id : " + appInterfaceId);
             return availableComputeResources;
         } catch (AppCatalogException e) {
             logger.error(appInterfaceId, "Error while saving compute resource...", e);

http://git-wip-us.apache.org/repos/asf/airavata/blob/1d9eaf8e/modules/registry/registry-core/src/main/resources/expcatalog-mysql.sql
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/resources/expcatalog-mysql.sql b/modules/registry/registry-core/src/main/resources/expcatalog-mysql.sql
index f7834bb..bf8bf5a 100644
--- a/modules/registry/registry-core/src/main/resources/expcatalog-mysql.sql
+++ b/modules/registry/registry-core/src/main/resources/expcatalog-mysql.sql
@@ -80,7 +80,6 @@ CREATE TABLE EXPERIMENT (
   ENABLE_EMAIL_NOTIFICATION tinyint(1),
   EMAIL_ADDRESSES text,
   PRIMARY KEY (EXPERIMENT_ID),
-  FOREIGN KEY (USER_NAME) REFERENCES USERS(USER_NAME) ON DELETE CASCADE,
   FOREIGN KEY (PROJECT_ID) REFERENCES PROJECT(PROJECT_ID) ON DELETE CASCADE
 );
 


[05/42] airavata git commit: when checking user exists should check with user's gateway id

Posted by sh...@apache.org.
when checking user exists should check with user's gateway id

# Conflicts:
#	modules/file-manager/file-manager-core/src/main/java/org/apache/airavata/file/manager/core/MetadataCatalogService.java


Project: http://git-wip-us.apache.org/repos/asf/airavata/repo
Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/6efba7c7
Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/6efba7c7
Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/6efba7c7

Branch: refs/heads/develop
Commit: 6efba7c7489e26ec5cf7abc5b6d038400ade702e
Parents: 6751a37
Author: scnakandala <su...@gmail.com>
Authored: Mon Jan 4 14:16:30 2016 -0500
Committer: scnakandala <su...@gmail.com>
Committed: Mon Jan 4 14:39:40 2016 -0500

----------------------------------------------------------------------
 .../manager/core/MetadataCatalogService.java    | 76 ++++++++++++++++++++
 1 file changed, 76 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/6efba7c7/modules/file-manager/file-manager-core/src/main/java/org/apache/airavata/file/manager/core/MetadataCatalogService.java
----------------------------------------------------------------------
diff --git a/modules/file-manager/file-manager-core/src/main/java/org/apache/airavata/file/manager/core/MetadataCatalogService.java b/modules/file-manager/file-manager-core/src/main/java/org/apache/airavata/file/manager/core/MetadataCatalogService.java
new file mode 100644
index 0000000..5c09de5
--- /dev/null
+++ b/modules/file-manager/file-manager-core/src/main/java/org/apache/airavata/file/manager/core/MetadataCatalogService.java
@@ -0,0 +1,76 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+*/
+package org.apache.airavata.file.manager.core;
+
+import org.apache.airavata.file.manager.cpi.FileManagerException;
+import org.apache.airavata.model.file.metadata.MetadataModel;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class MetadataCatalogService implements org.apache.airavata.file.manager.cpi.MetadataCatalogService{
+    private final static Logger logger = LoggerFactory.getLogger(MetadataCatalogService.class);
+
+    /**
+     * Create new metadata model
+     *
+     * @param metadataModel
+     * @return
+     * @throws FileManagerException
+     */
+    @Override
+    public String createMetadata(MetadataModel metadataModel) throws FileManagerException {
+        return null;
+    }
+
+    /**
+     * Update existing metadata model
+     *
+     * @param metadataModel
+     * @throws FileManagerException
+     */
+    @Override
+    public void updateMetadata(MetadataModel metadataModel) throws FileManagerException {
+
+    }
+
+    /**
+     * Delete existing metadata model
+     *
+     * @param metadataId
+     * @throws FileManagerException
+     */
+    @Override
+    public void deleteMetadata(String metadataId) throws FileManagerException {
+
+    }
+
+    /**
+     * Retrieve metadata model
+     *
+     * @param metadataId
+     * @return
+     * @throws FileManagerException
+     */
+    @Override
+    public MetadataModel getMetadata(String metadataId) throws FileManagerException {
+        return null;
+    }
+}
\ No newline at end of file


[25/42] airavata git commit: Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/airavata

Posted by sh...@apache.org.
Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/airavata


Project: http://git-wip-us.apache.org/repos/asf/airavata/repo
Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/98fc3f58
Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/98fc3f58
Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/98fc3f58

Branch: refs/heads/develop
Commit: 98fc3f58280d126f2c6fd1d03477f8b9a9332838
Parents: 5ce750d 2fe5278
Author: Shameera Rathnayaka <sh...@gmail.com>
Authored: Wed Jan 6 14:15:50 2016 -0500
Committer: Shameera Rathnayaka <sh...@gmail.com>
Committed: Wed Jan 6 14:15:50 2016 -0500

----------------------------------------------------------------------
 .../server/handler/AiravataServerHandler.java   | 166 ++++++++++++++-----
 .../java/org/apache/airavata/api/Airavata.java  |   2 +-
 .../lib/airavata/experiment_model_types.cpp     |  22 +++
 .../lib/airavata/experiment_model_types.h       |  12 +-
 .../lib/airavata/process_model_types.cpp        |  22 +++
 .../lib/airavata/process_model_types.h          |  12 +-
 .../lib/Airavata/Model/Experiment/Types.php     |  23 +++
 .../lib/Airavata/Model/Process/Types.php        |  23 +++
 .../apache/airavata/model/experiment/ttypes.py  |  15 +-
 .../lib/apache/airavata/model/process/ttypes.py |  15 +-
 .../org/apache/airavata/model/Workflow.java     |   2 +-
 .../ApplicationDeploymentDescription.java       |   2 +-
 .../appdeployment/ApplicationModule.java        |   2 +-
 .../appcatalog/appdeployment/CommandObject.java |   2 +-
 .../appcatalog/appdeployment/SetEnvPaths.java   |   2 +-
 .../ApplicationInterfaceDescription.java        |   2 +-
 .../appcatalog/computeresource/BatchQueue.java  |   2 +-
 .../computeresource/CloudJobSubmission.java     |   2 +-
 .../ComputeResourceDescription.java             |   2 +-
 .../computeresource/GlobusJobSubmission.java    |   2 +-
 .../computeresource/JobSubmissionInterface.java |   2 +-
 .../computeresource/LOCALSubmission.java        |   2 +-
 .../computeresource/ResourceJobManager.java     |   2 +-
 .../computeresource/SSHJobSubmission.java       |   2 +-
 .../computeresource/UnicoreJobSubmission.java   |   2 +-
 .../ComputeResourcePreference.java              |   2 +-
 .../gatewayprofile/GatewayResourceProfile.java  |   2 +-
 .../gatewayprofile/StoragePreference.java       |   2 +-
 .../StorageResourceDescription.java             |   2 +-
 .../application/io/InputDataObjectType.java     |   2 +-
 .../application/io/OutputDataObjectType.java    |   2 +-
 .../airavata/model/commons/ErrorModel.java      |   2 +-
 .../model/commons/ValidationResults.java        |   2 +-
 .../airavata/model/commons/ValidatorResult.java |   2 +-
 .../data/movement/DataMovementInterface.java    |   2 +-
 .../data/movement/GridFTPDataMovement.java      |   2 +-
 .../model/data/movement/LOCALDataMovement.java  |   2 +-
 .../model/data/movement/SCPDataMovement.java    |   2 +-
 .../data/movement/UnicoreDataMovement.java      |   2 +-
 .../data/resource/DataReplicaLocationModel.java |   2 +-
 .../model/data/resource/DataResourceModel.java  |   2 +-
 .../model/error/AiravataClientException.java    |   2 +-
 .../model/error/AiravataSystemException.java    |   2 +-
 .../model/error/AuthenticationException.java    |   2 +-
 .../model/error/AuthorizationException.java     |   2 +-
 .../error/ExperimentNotFoundException.java      |   2 +-
 .../model/error/InvalidRequestException.java    |   2 +-
 .../model/error/LaunchValidationException.java  |   2 +-
 .../model/error/ProjectNotFoundException.java   |   2 +-
 .../airavata/model/error/TimedOutException.java |   2 +-
 .../airavata/model/error/ValidationResults.java |   2 +-
 .../airavata/model/error/ValidatorResult.java   |   2 +-
 .../model/experiment/ExperimentModel.java       |   2 +-
 .../model/experiment/ExperimentStatistics.java  |   2 +-
 .../experiment/ExperimentSummaryModel.java      |   2 +-
 .../experiment/UserConfigurationDataModel.java  | 116 ++++++++++++-
 .../org/apache/airavata/model/job/JobModel.java |   2 +-
 .../event/ExperimentStatusChangeEvent.java      |   2 +-
 .../model/messaging/event/JobIdentifier.java    |   2 +-
 .../messaging/event/JobStatusChangeEvent.java   |   2 +-
 .../event/JobStatusChangeRequestEvent.java      |   2 +-
 .../airavata/model/messaging/event/Message.java |   2 +-
 .../messaging/event/ProcessIdentifier.java      |   2 +-
 .../event/ProcessStatusChangeEvent.java         |   2 +-
 .../event/ProcessStatusChangeRequestEvent.java  |   2 +-
 .../messaging/event/ProcessSubmitEvent.java     |   2 +-
 .../messaging/event/ProcessTerminateEvent.java  |   2 +-
 .../model/messaging/event/TaskIdentifier.java   |   2 +-
 .../messaging/event/TaskOutputChangeEvent.java  |   2 +-
 .../messaging/event/TaskStatusChangeEvent.java  |   2 +-
 .../event/TaskStatusChangeRequestEvent.java     |   2 +-
 .../airavata/model/process/ProcessModel.java    | 116 ++++++++++++-
 .../ComputationalResourceSchedulingModel.java   |   2 +-
 .../airavata/model/security/AuthzToken.java     |   2 +-
 .../airavata/model/status/ExperimentStatus.java |   2 +-
 .../apache/airavata/model/status/JobStatus.java |   2 +-
 .../airavata/model/status/ProcessStatus.java    |   2 +-
 .../airavata/model/status/TaskStatus.java       |   2 +-
 .../model/task/DataStagingTaskModel.java        |   2 +-
 .../model/task/EnvironmentSetupTaskModel.java   |   2 +-
 .../model/task/JobSubmissionTaskModel.java      |   2 +-
 .../airavata/model/task/MonitorTaskModel.java   |   2 +-
 .../apache/airavata/model/task/TaskModel.java   |   2 +-
 .../airavata/model/workspace/Gateway.java       |   2 +-
 .../apache/airavata/model/workspace/Group.java  |   2 +-
 .../airavata/model/workspace/Project.java       |   2 +-
 .../apache/airavata/model/workspace/User.java   |   2 +-
 .../model/util/ExperimentModelUtil.java         |   1 +
 .../gfac/impl/task/SCPDataStageTask.java        |  17 +-
 .../catalog/impl/ExperimentRegistry.java        |   4 +
 .../core/experiment/catalog/model/Process.java  |  10 ++
 .../catalog/model/UserConfigurationData.java    |  11 ++
 .../catalog/resources/ProcessResource.java      |  10 ++
 .../UserConfigurationDataResource.java          |  10 ++
 .../experiment/catalog/resources/Utils.java     |   1 +
 .../utils/ThriftDataModelConversion.java        |   2 +
 .../src/main/resources/expcatalog-derby.sql     |   2 +
 .../src/main/resources/expcatalog-mysql.sql     |   2 +
 .../experiment_model.thrift                     |   1 +
 .../process_model.thrift                        |   3 +-
 100 files changed, 627 insertions(+), 141 deletions(-)
----------------------------------------------------------------------



[16/42] airavata git commit: fixing bug in sql script

Posted by sh...@apache.org.
fixing bug in sql script


Project: http://git-wip-us.apache.org/repos/asf/airavata/repo
Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/5e4eb57a
Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/5e4eb57a
Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/5e4eb57a

Branch: refs/heads/develop
Commit: 5e4eb57a0ae53daab4ea6e0170a79f2a1b00ca59
Parents: 1d9eaf8
Author: Chathuri Wimalasena <ch...@apache.org>
Authored: Tue Jan 5 10:51:11 2016 -0500
Committer: Chathuri Wimalasena <ch...@apache.org>
Committed: Tue Jan 5 10:51:11 2016 -0500

----------------------------------------------------------------------
 .../registry-core/src/main/resources/expcatalog-mysql.sql        | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/5e4eb57a/modules/registry/registry-core/src/main/resources/expcatalog-mysql.sql
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/resources/expcatalog-mysql.sql b/modules/registry/registry-core/src/main/resources/expcatalog-mysql.sql
index bf8bf5a..af1d495 100644
--- a/modules/registry/registry-core/src/main/resources/expcatalog-mysql.sql
+++ b/modules/registry/registry-core/src/main/resources/expcatalog-mysql.sql
@@ -183,7 +183,7 @@ CREATE TABLE PROCESS (
   PROCESS_ID varchar(255),
   EXPERIMENT_ID varchar(255),
   CREATION_TIME  TIMESTAMP DEFAULT NOW(),
-  LAST_UPDATE_TIME  TIMESTAMP DEFAULT NOW() ON UPDATE NOW(),
+  LAST_UPDATE_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00',
   PROCESS_DETAIL text,
   APPLICATION_INTERFACE_ID varchar(255),
   TASK_DAG TEXT,
@@ -276,7 +276,7 @@ CREATE TABLE TASK (
   TASK_TYPE varchar(255),
   PARENT_PROCESS_ID varchar(255),
   CREATION_TIME timestamp DEFAULT NOW(),
-  LAST_UPDATE_TIME DEFAULT NOW() ON UPDATE NOW(),
+  LAST_UPDATE_TIME DEFAULT '0000-00-00 00:00:00',
   TASK_DETAIL text,
   TASK_INTERNAL_STORE tinyint(4),
   PRIMARY KEY (TASK_ID),


[40/42] airavata git commit: updated process status to cancelling with cron job cancelling task

Posted by sh...@apache.org.
updated process status to cancelling with cron job cancelling task


Project: http://git-wip-us.apache.org/repos/asf/airavata/repo
Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/06647364
Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/06647364
Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/06647364

Branch: refs/heads/develop
Commit: 066473649714e5b22b1964267d0cc06f4c9d3f53
Parents: 7c935e7
Author: Shameera Rathnayaka <sh...@gmail.com>
Authored: Wed Jan 13 11:02:40 2016 -0500
Committer: Shameera Rathnayaka <sh...@gmail.com>
Committed: Wed Jan 13 11:02:40 2016 -0500

----------------------------------------------------------------------
 .../apache/airavata/gfac/monitor/email/EmailBasedMonitor.java    | 4 ++++
 1 file changed, 4 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/06647364/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/monitor/email/EmailBasedMonitor.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/monitor/email/EmailBasedMonitor.java b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/monitor/email/EmailBasedMonitor.java
index 9e802ae..b2df00b 100644
--- a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/monitor/email/EmailBasedMonitor.java
+++ b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/monitor/email/EmailBasedMonitor.java
@@ -138,6 +138,10 @@ public class EmailBasedMonitor implements JobMonitor, Runnable{
                     jobModel.setJobStatus(newJobStatus);
                     GFacUtils.saveJobStatus(pc, jobModel);
                 }
+                ProcessStatus pStatus = new ProcessStatus(ProcessState.CANCELLING);
+                pStatus.setReason("Job cancelled");
+                pc.setProcessStatus(pStatus);
+                GFacUtils.saveAndPublishProcessStatus(pc);
                 GFacThreadPoolExecutor.getCachedThreadPool().execute(new GFacWorker(pc));
 			} catch (GFacException e) {
 				log.info("[EJM]: Error while running output tasks", e);


[34/42] airavata git commit: storage resource never set when populating process context

Posted by sh...@apache.org.
storage resource never set when populating process context


Project: http://git-wip-us.apache.org/repos/asf/airavata/repo
Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/c4861b09
Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/c4861b09
Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/c4861b09

Branch: refs/heads/develop
Commit: c4861b09aecd315436a4d5d10d72e6fdbb18ea4d
Parents: 843940f
Author: Chathuri Wimalasena <ch...@apache.org>
Authored: Fri Jan 8 22:29:31 2016 -0500
Committer: Chathuri Wimalasena <ch...@apache.org>
Committed: Fri Jan 8 22:29:31 2016 -0500

----------------------------------------------------------------------
 .../org/apache/airavata/gfac/impl/GFacEngineImpl.java    | 11 +++++++++++
 1 file changed, 11 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/c4861b09/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/GFacEngineImpl.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/GFacEngineImpl.java b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/GFacEngineImpl.java
index f264e6c..f05c85d 100644
--- a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/GFacEngineImpl.java
+++ b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/GFacEngineImpl.java
@@ -42,6 +42,7 @@ import org.apache.airavata.model.appcatalog.appinterface.ApplicationInterfaceDes
 import org.apache.airavata.model.appcatalog.computeresource.*;
 import org.apache.airavata.model.appcatalog.gatewayprofile.GatewayResourceProfile;
 import org.apache.airavata.model.appcatalog.gatewayprofile.StoragePreference;
+import org.apache.airavata.model.appcatalog.storageresource.StorageResourceDescription;
 import org.apache.airavata.model.application.io.DataType;
 import org.apache.airavata.model.application.io.InputDataObjectType;
 import org.apache.airavata.model.application.io.OutputDataObjectType;
@@ -108,6 +109,16 @@ public class GFacEngineImpl implements GFacEngine {
             processContext.setComputeResourcePreference(appCatalog.getGatewayProfile().getComputeResourcePreference
                     (gatewayId, processModel.getComputeResourceId()));
             StoragePreference storagePreference = appCatalog.getGatewayProfile().getStoragePreference(gatewayId, processModel.getStorageResourceId());
+            StorageResourceDescription storageResource = appCatalog.getStorageResource().getStorageResource(processModel.getStorageResourceId());
+            if (storageResource != null){
+                processContext.setStorageResource(storageResource);
+            }else {
+                // we need to fail the process which will fail the experiment
+                processContext.setProcessStatus(new ProcessStatus(ProcessState.FAILED));
+                GFacUtils.saveAndPublishProcessStatus(processContext);
+                throw new GFacException("expId: " + processModel.getExperimentId() + ", processId: " + processId +
+                        ":- Couldn't find storage resource for storage resource id :" + processModel.getStorageResourceId());
+            }
             if (storagePreference != null) {
                 processContext.setStoragePreference(storagePreference);
             } else {


[10/42] airavata git commit: Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/airavata

Posted by sh...@apache.org.
Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/airavata


Project: http://git-wip-us.apache.org/repos/asf/airavata/repo
Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/27626707
Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/27626707
Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/27626707

Branch: refs/heads/develop
Commit: 276267074933bfe0752f35183a191eb22f2f35d9
Parents: ebf67da 4286bf7
Author: Chathuri Wimalasena <ch...@apache.org>
Authored: Mon Jan 4 14:48:59 2016 -0500
Committer: Chathuri Wimalasena <ch...@apache.org>
Committed: Mon Jan 4 14:48:59 2016 -0500

----------------------------------------------------------------------
 .../server/handler/AiravataServerHandler.java   | 20 +++---
 .../api/server/util/RegistryInitUtil.java       |  2 +-
 .../manager/core/MetadataCatalogService.java    | 76 ++++++++++++++++++++
 .../experiment/catalog/ExpCatResourceUtils.java |  9 +--
 .../catalog/impl/ExperimentCatalogImpl.java     |  4 +-
 .../catalog/impl/ExperimentRegistry.java        |  2 +-
 .../catalog/impl/ProjectRegistry.java           |  2 +-
 .../catalog/resources/WorkerResource.java       |  2 +-
 .../src/main/resources/expcatalog-mysql.sql     |  3 +-
 9 files changed, 99 insertions(+), 21 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/27626707/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/airavata/blob/27626707/modules/registry/registry-core/src/main/resources/expcatalog-mysql.sql
----------------------------------------------------------------------


[42/42] airavata git commit: Merge branch 'master' into develop

Posted by sh...@apache.org.
Merge branch 'master' into develop


Project: http://git-wip-us.apache.org/repos/asf/airavata/repo
Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/4039bf7b
Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/4039bf7b
Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/4039bf7b

Branch: refs/heads/develop
Commit: 4039bf7b82d1d87ea4b612622fee66569b76a4f9
Parents: a14d717 0664736
Author: Shameera Rathnayaka <sh...@gmail.com>
Authored: Wed Jan 13 12:01:49 2016 -0500
Committer: Shameera Rathnayaka <sh...@gmail.com>
Committed: Wed Jan 13 12:01:49 2016 -0500

----------------------------------------------------------------------
 .../server/handler/AiravataServerHandler.java   |   257 +-
 .../java/org/apache/airavata/api/Airavata.java  | 45811 ++++++++++-------
 .../lib/airavata/experiment_model_types.cpp     |    22 +
 .../lib/airavata/experiment_model_types.h       |    12 +-
 .../lib/airavata/process_model_types.cpp        |    22 +
 .../lib/airavata/process_model_types.h          |    12 +-
 .../lib/Airavata/Model/Experiment/Types.php     |    23 +
 .../lib/Airavata/Model/Process/Types.php        |    23 +
 .../apache/airavata/model/experiment/ttypes.py  |    15 +-
 .../lib/apache/airavata/model/process/ttypes.py |    15 +-
 .../org/apache/airavata/model/Workflow.java     |     2 +-
 .../ApplicationDeploymentDescription.java       |     2 +-
 .../appdeployment/ApplicationModule.java        |     2 +-
 .../appcatalog/appdeployment/CommandObject.java |     2 +-
 .../appcatalog/appdeployment/SetEnvPaths.java   |     2 +-
 .../ApplicationInterfaceDescription.java        |     2 +-
 .../appcatalog/computeresource/BatchQueue.java  |     2 +-
 .../computeresource/CloudJobSubmission.java     |     2 +-
 .../ComputeResourceDescription.java             |     2 +-
 .../computeresource/GlobusJobSubmission.java    |     2 +-
 .../computeresource/JobSubmissionInterface.java |     2 +-
 .../computeresource/LOCALSubmission.java        |     2 +-
 .../computeresource/ResourceJobManager.java     |     2 +-
 .../computeresource/SSHJobSubmission.java       |     2 +-
 .../computeresource/UnicoreJobSubmission.java   |     2 +-
 .../ComputeResourcePreference.java              |     2 +-
 .../gatewayprofile/GatewayResourceProfile.java  |     2 +-
 .../gatewayprofile/StoragePreference.java       |     2 +-
 .../StorageResourceDescription.java             |     2 +-
 .../application/io/InputDataObjectType.java     |     2 +-
 .../application/io/OutputDataObjectType.java    |     2 +-
 .../airavata/model/commons/ErrorModel.java      |     2 +-
 .../model/commons/ValidationResults.java        |     2 +-
 .../airavata/model/commons/ValidatorResult.java |     2 +-
 .../data/movement/DataMovementInterface.java    |     2 +-
 .../data/movement/GridFTPDataMovement.java      |     2 +-
 .../model/data/movement/LOCALDataMovement.java  |     2 +-
 .../model/data/movement/SCPDataMovement.java    |     2 +-
 .../data/movement/UnicoreDataMovement.java      |     2 +-
 .../model/data/replica/FileReplicaModel.java    |  1143 +-
 .../model/data/resource/DataResourceModel.java  |  1837 +
 .../model/error/AiravataClientException.java    |     2 +-
 .../model/error/AiravataSystemException.java    |     2 +-
 .../model/error/AuthenticationException.java    |     2 +-
 .../model/error/AuthorizationException.java     |     2 +-
 .../error/ExperimentNotFoundException.java      |     2 +-
 .../model/error/InvalidRequestException.java    |     2 +-
 .../model/error/LaunchValidationException.java  |     2 +-
 .../model/error/ProjectNotFoundException.java   |     2 +-
 .../airavata/model/error/TimedOutException.java |     2 +-
 .../airavata/model/error/ValidationResults.java |     2 +-
 .../airavata/model/error/ValidatorResult.java   |     2 +-
 .../model/experiment/ExperimentModel.java       |     2 +-
 .../model/experiment/ExperimentStatistics.java  |     2 +-
 .../experiment/ExperimentSummaryModel.java      |     2 +-
 .../experiment/UserConfigurationDataModel.java  |   116 +-
 .../org/apache/airavata/model/job/JobModel.java |     2 +-
 .../event/ExperimentStatusChangeEvent.java      |     2 +-
 .../model/messaging/event/JobIdentifier.java    |     2 +-
 .../messaging/event/JobStatusChangeEvent.java   |     2 +-
 .../event/JobStatusChangeRequestEvent.java      |     2 +-
 .../airavata/model/messaging/event/Message.java |     2 +-
 .../messaging/event/ProcessIdentifier.java      |     2 +-
 .../event/ProcessStatusChangeEvent.java         |     2 +-
 .../event/ProcessStatusChangeRequestEvent.java  |     2 +-
 .../messaging/event/ProcessSubmitEvent.java     |     2 +-
 .../messaging/event/ProcessTerminateEvent.java  |     2 +-
 .../model/messaging/event/TaskIdentifier.java   |     2 +-
 .../messaging/event/TaskOutputChangeEvent.java  |     2 +-
 .../messaging/event/TaskStatusChangeEvent.java  |     2 +-
 .../event/TaskStatusChangeRequestEvent.java     |     2 +-
 .../airavata/model/process/ProcessModel.java    |   116 +-
 .../ComputationalResourceSchedulingModel.java   |     2 +-
 .../airavata/model/security/AuthzToken.java     |     2 +-
 .../airavata/model/status/ExperimentStatus.java |     2 +-
 .../apache/airavata/model/status/JobStatus.java |     2 +-
 .../airavata/model/status/ProcessStatus.java    |     2 +-
 .../airavata/model/status/TaskStatus.java       |     2 +-
 .../model/task/DataStagingTaskModel.java        |     2 +-
 .../model/task/EnvironmentSetupTaskModel.java   |     2 +-
 .../model/task/JobSubmissionTaskModel.java      |     2 +-
 .../airavata/model/task/MonitorTaskModel.java   |     2 +-
 .../apache/airavata/model/task/TaskModel.java   |     2 +-
 .../airavata/model/workspace/Gateway.java       |     2 +-
 .../apache/airavata/model/workspace/Group.java  |     2 +-
 .../airavata/model/workspace/Project.java       |     2 +-
 .../apache/airavata/model/workspace/User.java   |     2 +-
 .../model/util/ExperimentModelUtil.java         |     1 +
 .../airavata/common/utils/AiravataUtils.java    |     4 +-
 .../gfac/core/cluster/JobSubmissionOutput.java  |    18 +
 .../gfac/core/cluster/OutputParser.java         |     8 +
 .../gfac/core/context/ProcessContext.java       |     9 +
 .../airavata/gfac/impl/GFacEngineImpl.java      |   132 +-
 .../apache/airavata/gfac/impl/GFacWorker.java   |    68 +-
 .../airavata/gfac/impl/HPCRemoteCluster.java    |     6 +
 .../gfac/impl/job/ForkOutputParser.java         |     5 +
 .../airavata/gfac/impl/job/LSFOutputParser.java |     5 +
 .../airavata/gfac/impl/job/PBSOutputParser.java |     5 +
 .../gfac/impl/job/SlurmOutputParser.java        |     7 +
 .../airavata/gfac/impl/job/UGEOutputParser.java |     5 +
 .../impl/task/DefaultJobSubmissionTask.java     |   123 +-
 .../gfac/impl/task/SCPDataStageTask.java        |    17 +-
 .../gfac/monitor/email/EmailBasedMonitor.java   |    30 +-
 .../airavata/gfac/server/GfacServerHandler.java |    72 +-
 .../cpi/impl/SimpleOrchestratorImpl.java        |     1 +
 .../server/OrchestratorServerHandler.java       |    33 +-
 .../catalog/impl/ExperimentRegistry.java        |     4 +
 .../core/experiment/catalog/model/Process.java  |    10 +
 .../core/experiment/catalog/model/Project.java  |    11 -
 .../catalog/model/UserConfigurationData.java    |    11 +
 .../catalog/resources/ProcessResource.java      |    10 +
 .../catalog/resources/ProjectResource.java      |    10 +-
 .../UserConfigurationDataResource.java          |    10 +
 .../experiment/catalog/resources/Utils.java     |     4 +-
 .../utils/ThriftDataModelConversion.java        |     2 +
 .../src/main/resources/expcatalog-derby.sql     |    14 +-
 .../src/main/resources/expcatalog-mysql.sql     |    17 +-
 .../experiment_model.thrift                     |     1 +
 .../process_model.thrift                        |     3 +-
 119 files changed, 31054 insertions(+), 19172 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/4039bf7b/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java
----------------------------------------------------------------------


[17/42] airavata git commit: fixing bug in sql script

Posted by sh...@apache.org.
fixing bug in sql script


Project: http://git-wip-us.apache.org/repos/asf/airavata/repo
Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/94629e16
Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/94629e16
Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/94629e16

Branch: refs/heads/develop
Commit: 94629e1691dc262a97abf703bd442ce85743223c
Parents: 5e4eb57
Author: Chathuri Wimalasena <ch...@apache.org>
Authored: Tue Jan 5 10:57:02 2016 -0500
Committer: Chathuri Wimalasena <ch...@apache.org>
Committed: Tue Jan 5 10:57:02 2016 -0500

----------------------------------------------------------------------
 .../registry-core/src/main/resources/expcatalog-mysql.sql    | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/94629e16/modules/registry/registry-core/src/main/resources/expcatalog-mysql.sql
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/resources/expcatalog-mysql.sql b/modules/registry/registry-core/src/main/resources/expcatalog-mysql.sql
index af1d495..47e6134 100644
--- a/modules/registry/registry-core/src/main/resources/expcatalog-mysql.sql
+++ b/modules/registry/registry-core/src/main/resources/expcatalog-mysql.sql
@@ -239,7 +239,7 @@ CREATE TABLE PROCESS_STATUS (
   STATUS_ID varchar(255),
   PROCESS_ID varchar(255),
   STATE varchar(255),
-  TIME_OF_STATE_CHANGE DEFAULT NOW() ON UPDATE NOW(),
+  TIME_OF_STATE_CHANGE TIMESTAMP DEFAULT NOW() ON UPDATE NOW(),
   REASON LONGTEXT,
   PRIMARY KEY (STATUS_ID, PROCESS_ID),
   FOREIGN KEY (PROCESS_ID) REFERENCES PROCESS(PROCESS_ID) ON DELETE CASCADE
@@ -276,7 +276,7 @@ CREATE TABLE TASK (
   TASK_TYPE varchar(255),
   PARENT_PROCESS_ID varchar(255),
   CREATION_TIME timestamp DEFAULT NOW(),
-  LAST_UPDATE_TIME DEFAULT '0000-00-00 00:00:00',
+  LAST_UPDATE_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00',
   TASK_DETAIL text,
   TASK_INTERNAL_STORE tinyint(4),
   PRIMARY KEY (TASK_ID),
@@ -287,7 +287,7 @@ CREATE TABLE TASK_STATUS (
   STATUS_ID varchar(255),
   TASK_ID varchar(255),
   STATE varchar(255),
-  TIME_OF_STATE_CHANGE DEFAULT NOW() ON UPDATE NOW(),
+  TIME_OF_STATE_CHANGE TIMESTAMP DEFAULT NOW() ON UPDATE NOW(),
   REASON LONGTEXT,
   PRIMARY KEY (STATUS_ID, TASK_ID),
   FOREIGN KEY (TASK_ID) REFERENCES TASK(TASK_ID) ON DELETE CASCADE
@@ -327,7 +327,7 @@ CREATE TABLE JOB_STATUS (
   JOB_ID varchar(255),
   TASK_ID varchar(255),
   STATE varchar(255),
-  TIME_OF_STATE_CHANGE DEFAULT NOW() ON UPDATE NOW(),
+  TIME_OF_STATE_CHANGE TIMESTAMP DEFAULT NOW() ON UPDATE NOW(),
   REASON LONGTEXT,
   PRIMARY KEY (STATUS_ID, JOB_ID, TASK_ID),
   FOREIGN KEY (JOB_ID, TASK_ID) REFERENCES JOB(JOB_ID, TASK_ID) ON DELETE CASCADE


[02/42] airavata git commit: added log info messages to API server handler

Posted by sh...@apache.org.
added log info messages to API server handler


Project: http://git-wip-us.apache.org/repos/asf/airavata/repo
Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/7121dd7d
Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/7121dd7d
Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/7121dd7d

Branch: refs/heads/develop
Commit: 7121dd7dc7b0e6f63f195dde8e51d54a51ff9049
Parents: c0ebe04
Author: Chathuri Wimalasena <ch...@apache.org>
Authored: Mon Jan 4 14:35:11 2016 -0500
Committer: Chathuri Wimalasena <ch...@apache.org>
Committed: Mon Jan 4 14:35:11 2016 -0500

----------------------------------------------------------------------
 .../server/handler/AiravataServerHandler.java   | 24 +++++++++++++++++++-
 1 file changed, 23 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/7121dd7d/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java b/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java
index 1ceb797..f38126b 100644
--- a/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java
+++ b/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java
@@ -301,6 +301,7 @@ public class AiravataServerHandler implements Airavata.Iface {
                 csClient = getCredentialStoreServiceClient();
             }
             SSHCredential sshCredential = csClient.getSSHCredential(airavataCredStoreToken, gatewayId);
+            logger.info("Airavata retrieved SSH pub key for gateway id : " + gatewayId + " and for token : " + airavataCredStoreToken);
             return sshCredential.getPublicKey();
         }catch (Exception e){
             logger.error("Error occurred while retrieving SSH credential", e);
@@ -318,6 +319,7 @@ public class AiravataServerHandler implements Airavata.Iface {
             if (csClient == null){
                 csClient = getCredentialStoreServiceClient();
             }
+            logger.info("Airavata retrieved all SSH pub keys for user name : " + userName);
             return csClient.getAllSSHKeysForUser(userName);
         }catch (Exception e){
             logger.error("Error occurred while retrieving SSH public keys for user : " + userName , e);
@@ -334,6 +336,7 @@ public class AiravataServerHandler implements Airavata.Iface {
             if (csClient == null){
                 csClient = getCredentialStoreServiceClient();
             }
+            logger.info("Airavata retrieved all SSH pub keys for gateway Id : " + gatewayId);
             return csClient.getAllSSHKeysForGateway(gatewayId);
         }catch (Exception e){
             logger.error("Error occurred while retrieving SSH public keys for gateway : " + gatewayId , e);
@@ -350,6 +353,7 @@ public class AiravataServerHandler implements Airavata.Iface {
             if (csClient == null){
                 csClient = getCredentialStoreServiceClient();
             }
+            logger.info("Airavata deleted SSH pub key for gateway Id : " + gatewayId + " and with token id : " + airavataCredStoreToken);
             return csClient.deleteSSHCredential(airavataCredStoreToken, gatewayId);
         }catch (Exception e){
             logger.error("Error occurred while deleting SSH credential", e);
@@ -384,7 +388,9 @@ public class AiravataServerHandler implements Airavata.Iface {
                 logger.error("Gateway does not exist.Please provide a valid gateway id...");
                 throw new AiravataSystemException(AiravataErrorType.INTERNAL_ERROR);
             }
-            return (String) experimentCatalog.add(ExpCatParentDataType.PROJECT, project, gatewayId);
+            String projectId = (String) experimentCatalog.add(ExpCatParentDataType.PROJECT, project, gatewayId);
+            logger.info("Airavata created project with project Id : " + projectId + " for gateway Id : " + gatewayId);
+            return projectId;
         } catch (RegistryException e) {
             logger.error("Error while creating the project", e);
             AiravataSystemException exception = new AiravataSystemException();
@@ -414,6 +420,7 @@ public class AiravataServerHandler implements Airavata.Iface {
                 throw exception;
             }
             experimentCatalog.update(ExperimentCatalogModelType.PROJECT, updatedProject, projectId);
+            logger.info("Airavata updated project with project Id : " + projectId );
         } catch (RegistryException e) {
             logger.error("Error while updating the project", e);
             AiravataSystemException exception = new AiravataSystemException();
@@ -438,6 +445,7 @@ public class AiravataServerHandler implements Airavata.Iface {
                 throw exception;
             }
             experimentCatalog.remove(ExperimentCatalogModelType.PROJECT, projectId);
+            logger.info("Airavata deleted project with project Id : " + projectId );
             return true;
         } catch (RegistryException e) {
             logger.error("Error while removing the project", e);
@@ -472,6 +480,7 @@ public class AiravataServerHandler implements Airavata.Iface {
                 exception.setMessage("Project does not exist in the system. Please provide a valid project ID...");
                 throw exception;
             }
+            logger.info("Airavata retrieved project with project Id : " + projectId );
             return (Project) experimentCatalog.get(ExperimentCatalogModelType.PROJECT, projectId);
         } catch (RegistryException e) {
             logger.error("Error while retrieving the project", e);
@@ -531,6 +540,7 @@ public class AiravataServerHandler implements Airavata.Iface {
                     projects.add((Project) o);
                 }
             }
+            logger.info("Airavata retrieved projects for user : " + userName + " and gateway id : " + gatewayId );
             return projects;
         } catch (RegistryException e) {
             logger.error("Error while retrieving projects", e);
@@ -591,6 +601,7 @@ public class AiravataServerHandler implements Airavata.Iface {
             for (Object object : results) {
                 projects.add((Project)object);
             }
+            logger.info("Airavata retrieved projects for user : " + userName + " and gateway id : " + gatewayId  + " with project name : " + projectName);
             return projects;
         }catch (Exception e) {
             logger.error("Error while retrieving projects", e);
@@ -651,6 +662,7 @@ public class AiravataServerHandler implements Airavata.Iface {
             for (Object object : results) {
                 projects.add((Project)object);
             }
+            logger.info("Airavata retrieved projects for user : " + userName + " and gateway id : " + gatewayId + " with project description : " + description);
             return projects;
         }catch (Exception e) {
             logger.error("Error while retrieving projects", e);
@@ -711,6 +723,7 @@ public class AiravataServerHandler implements Airavata.Iface {
             for (Object object : results) {
                 summaries.add((ExperimentSummaryModel) object);
             }
+            logger.info("Airavata retrieved experiments for user : " + userName + " and gateway id : " + gatewayId + " with experiment name : " + expName);
             return summaries;
         }catch (Exception e) {
             logger.error("Error while retrieving experiments", e);
@@ -771,6 +784,7 @@ public class AiravataServerHandler implements Airavata.Iface {
             for (Object object : results) {
                 summaries.add((ExperimentSummaryModel) object);
             }
+            logger.info("Airavata retrieved experiments for user : " + userName + " and gateway id : " + gatewayId + " with experiment description : " + description);
             return summaries;
         }catch (Exception e) {
             logger.error("Error while retrieving experiments", e);
@@ -832,6 +846,7 @@ public class AiravataServerHandler implements Airavata.Iface {
             for (Object object : results) {
                 summaries.add((ExperimentSummaryModel) object);
             }
+            logger.info("Airavata retrieved experiments for user : " + userName + " and gateway id : " + gatewayId + " with application id : " + applicationId);
             return summaries;
         }catch (Exception e) {
             logger.error("Error while retrieving experiments", e);
@@ -893,6 +908,7 @@ public class AiravataServerHandler implements Airavata.Iface {
             for (Object object : results) {
                 summaries.add((ExperimentSummaryModel) object);
             }
+            logger.info("Airavata retrieved experiments for user : " + userName + " and gateway id : " + gatewayId + " with experiment status : " + experimentState);
             return summaries;
         }catch (Exception e) {
             logger.error("Error while retrieving experiments", e);
@@ -957,6 +973,7 @@ public class AiravataServerHandler implements Airavata.Iface {
             for (Object object : results) {
                 summaries.add((ExperimentSummaryModel) object);
             }
+            logger.info("Airavata retrieved experiments for user : " + userName + " and gateway id : " + gatewayId + " with experiment creation time : " + AiravataUtils.getTime(fromTime));
             return summaries;
         }catch (Exception e) {
             logger.error("Error while retrieving experiments", e);
@@ -1034,6 +1051,7 @@ public class AiravataServerHandler implements Airavata.Iface {
             for (Object object : results) {
                 summaries.add((ExperimentSummaryModel) object);
             }
+            logger.info("Airavata retrieved experiments for user : " + userName + " and gateway id : " + gatewayId );
             return summaries;
         }catch (Exception e) {
             logger.error("Error while retrieving experiments", e);
@@ -1072,6 +1090,7 @@ public class AiravataServerHandler implements Airavata.Iface {
             filters.put(Constants.FieldConstants.ExperimentConstants.TO_DATE, toTime+"");
 
             List<Object> results = experimentCatalog.search(ExperimentCatalogModelType.EXPERIMENT_STATISTICS, filters);
+            logger.info("Airavata retrieved experiments for gateway id : " + gatewayId + " between : " + AiravataUtils.getTime(fromTime) + " and " + AiravataUtils.getTime(toTime));
             return (ExperimentStatistics) results.get(0);
         }catch (Exception e) {
             logger.error("Error while retrieving experiments", e);
@@ -1122,6 +1141,7 @@ public class AiravataServerHandler implements Airavata.Iface {
                     experiments.add((ExperimentModel) o);
                 }
             }
+            logger.info("Airavata retrieved experiments for project : " + projectId);
             return experiments;
         } catch (Exception e) {
             logger.error("Error while retrieving the experiments", e);
@@ -1179,6 +1199,7 @@ public class AiravataServerHandler implements Airavata.Iface {
                     experiments.add((ExperimentModel)o);
                 }
             }
+            logger.info("Airavata retrieved experiments for user : " + userName);
             return experiments;
         } catch (Exception e) {
             logger.error("Error while retrieving the experiments", e);
@@ -1290,6 +1311,7 @@ public class AiravataServerHandler implements Airavata.Iface {
                 throw new ExperimentCatalogException("Experiment is not in CREATED state. Hence cannot deleted. ID:"+ experimentId);
             }
             experimentCatalog.remove(ExperimentCatalogModelType.EXPERIMENT, experimentId);
+            logger.info("Airavata removed experiment with experiment id : " + experimentId);
             return true;
         } catch (Exception e) {
             logger.error("Error while deleting the experiment", e);


[30/42] airavata git commit: Fixing issues with cancelation with recovery

Posted by sh...@apache.org.
Fixing issues with cancelation with recovery


Project: http://git-wip-us.apache.org/repos/asf/airavata/repo
Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/6d338d07
Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/6d338d07
Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/6d338d07

Branch: refs/heads/develop
Commit: 6d338d07f039bcc30de2d9324a8a37f268ea3b2b
Parents: 0b75afd
Author: Shameera Rathnayaka <sh...@gmail.com>
Authored: Thu Jan 7 18:32:18 2016 -0500
Committer: Shameera Rathnayaka <sh...@gmail.com>
Committed: Thu Jan 7 18:32:18 2016 -0500

----------------------------------------------------------------------
 .../gfac/core/context/ProcessContext.java       |  9 +++
 .../airavata/gfac/impl/GFacEngineImpl.java      | 75 +++++++++++++++++++-
 .../airavata/gfac/server/GfacServerHandler.java | 50 +++++++++----
 .../server/OrchestratorServerHandler.java       | 15 ++--
 4 files changed, 131 insertions(+), 18 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/6d338d07/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/context/ProcessContext.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/context/ProcessContext.java b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/context/ProcessContext.java
index 02d4cbc..2880551 100644
--- a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/context/ProcessContext.java
+++ b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/context/ProcessContext.java
@@ -97,6 +97,7 @@ public class ProcessContext {
     private TaskModel currentExecutingTaskModel; // current execution task model in case we pause process execution we need this to continue process exectuion again
 	private boolean acknowledge;
 	private SSHKeyAuthentication sshKeyAuthentication;
+	private boolean recoveryWithCancel = false;
 
 	/**
 	 * Note: process context property use lazy loading approach. In runtime you will see some properties as null
@@ -501,5 +502,13 @@ public class ProcessContext {
 	public void setSshKeyAuthentication(SSHKeyAuthentication sshKeyAuthentication) {
 		this.sshKeyAuthentication = sshKeyAuthentication;
 	}
+
+	public boolean isRecoveryWithCancel() {
+		return recoveryWithCancel;
+	}
+
+	public void setRecoveryWithCancel(boolean recoveryWithCancel) {
+		this.recoveryWithCancel = recoveryWithCancel;
+	}
 }
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/6d338d07/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/GFacEngineImpl.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/GFacEngineImpl.java b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/GFacEngineImpl.java
index dd10c12..00d920d 100644
--- a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/GFacEngineImpl.java
+++ b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/GFacEngineImpl.java
@@ -25,6 +25,7 @@ import org.apache.airavata.common.exception.AiravataException;
 import org.apache.airavata.common.utils.AiravataUtils;
 import org.apache.airavata.common.utils.ServerSettings;
 import org.apache.airavata.common.utils.ThriftUtils;
+import org.apache.airavata.common.utils.ZkConstants;
 import org.apache.airavata.gfac.core.GFacEngine;
 import org.apache.airavata.gfac.core.GFacException;
 import org.apache.airavata.gfac.core.GFacUtils;
@@ -61,6 +62,9 @@ import org.apache.airavata.registry.cpi.ExpCatChildDataType;
 import org.apache.airavata.registry.cpi.ExperimentCatalog;
 import org.apache.airavata.registry.cpi.ExperimentCatalogModelType;
 import org.apache.airavata.registry.cpi.RegistryException;
+import org.apache.airavata.registry.cpi.utils.Constants;
+import org.apache.curator.framework.CuratorFramework;
+import org.apache.curator.utils.ZKPaths;
 import org.apache.thrift.TException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -91,6 +95,14 @@ public class GFacEngineImpl implements GFacEngine {
 
             ProcessModel processModel = (ProcessModel) expCatalog.get(ExperimentCatalogModelType.PROCESS, processId);
             processContext.setProcessModel(processModel);
+
+            try {
+                checkRecoveryWithCancel(processContext);
+            } catch (Exception e) {
+                log.error("expId: {}, processId: {}, Error while checking process cancel data in zookeeper",
+                        processContext.getExperimentId(), processContext.getProcessId());
+            }
+
             GatewayResourceProfile gatewayProfile = appCatalog.getGatewayProfile().getGatewayProfile(gatewayId);
             processContext.setGatewayResourceProfile(gatewayProfile);
             processContext.setComputeResourcePreference(appCatalog.getGatewayProfile().getComputeResourcePreference
@@ -176,6 +188,19 @@ public class GFacEngineImpl implements GFacEngine {
         }
     }
 
+    private void checkRecoveryWithCancel(ProcessContext processContext) throws Exception {
+        CuratorFramework curatorClient = processContext.getCuratorClient();
+        String experimentId = processContext.getExperimentId();
+        String processId = processContext.getProcessId();
+        String processCancelNodePath = ZKPaths.makePath(ZKPaths.makePath(ZKPaths.makePath(
+                ZkConstants.ZOOKEEPER_EXPERIMENT_NODE, experimentId), processId), ZkConstants.ZOOKEEPER_CANCEL_LISTENER_NODE);
+        log.info("expId: {}, processId: {}, get process cancel data from zookeeper node {}", experimentId, processId, processCancelNodePath);
+        byte[] bytes = curatorClient.getData().forPath(processCancelNodePath);
+        if (bytes != null && new String(bytes).equalsIgnoreCase(ZkConstants.ZOOKEEPER_CANCEL_REQEUST)) {
+            processContext.setRecoveryWithCancel(true);
+        }
+    }
+
     @Override
     public void executeProcess(ProcessContext processContext) throws GFacException {
         if (processContext.isInterrupted()) {
@@ -509,6 +534,7 @@ public class GFacEngineImpl implements GFacEngine {
         processContext.setTaskExecutionOrder(taskExecutionOrder);
         Map<String, TaskModel> taskMap = processContext.getTaskMap();
         String recoverTaskId = null;
+        String previousTaskId = null;
         TaskModel taskModel = null;
         for (String taskId : taskExecutionOrder) {
             taskModel = taskMap.get(taskId);
@@ -517,9 +543,56 @@ public class GFacEngineImpl implements GFacEngine {
                 recoverTaskId = taskId;
                 break;
             }
+            previousTaskId = taskId;
+        }
+        final String rTaskId = recoverTaskId;
+        final String pTaskId = previousTaskId;
+        if (recoverTaskId != null) {
+            if (processContext.isRecoveryWithCancel()) {
+                cancelJobSubmission(processContext, rTaskId, pTaskId);
+            }
+            continueProcess(processContext, recoverTaskId);
         }
+    }
 
-        continueProcess(processContext, recoverTaskId);
+    private void cancelJobSubmission(ProcessContext processContext, String rTaskId, String pTaskId) {
+        new Thread(() -> {
+            try {
+                processContext.setCancel(true);
+                ProcessState processState = processContext.getProcessState();
+                List<Object> jobModels = null;
+                switch (processState) {
+                    case EXECUTING:
+                        jobModels = processContext.getExperimentCatalog().get(
+                                ExperimentCatalogModelType.JOB, Constants.FieldConstants.TaskConstants.TASK_ID,
+                                rTaskId);
+                        break;
+                    case MONITORING:
+                        if (pTaskId != null) {
+                            jobModels = processContext.getExperimentCatalog().get(
+                                    ExperimentCatalogModelType.JOB, Constants.FieldConstants.TaskConstants.TASK_ID,
+                                    pTaskId);
+                        }
+                }
+
+                if (jobModels != null && !jobModels.isEmpty()) {
+                    JobModel jobModel = (JobModel) jobModels.get(jobModels.size() - 1);
+                    processContext.setJobModel(jobModel);
+                    log.info("expId: {}, processId: {}, Canceling jobId {}", processContext.getExperimentId(),
+                            processContext.getProcessId(), jobModel.getJobId());
+                    cancelProcess(processContext);
+                    log.info("expId: {}, processId: {}, Canceled jobId {}", processContext.getExperimentId(),
+                            processContext.getProcessId(), jobModel.getJobId());
+                }
+            } catch (GFacException e) {
+                log.error("expId: {}, processId: {}, Error while canceling process which is in recovery mode",
+                        processContext.getExperimentId(), processContext.getProcessId());
+            } catch (RegistryException e) {
+                log.error("expId: {}, processId: {}, Error while getting job model for taskId {}, " +
+                                "couldn't cancel process which is in recovery mode", processContext.getExperimentId(),
+                        processContext.getProcessId(), rTaskId);
+            }
+        }).start();
     }
 
     private JobModel getJobModel(ProcessContext processContext) {

http://git-wip-us.apache.org/repos/asf/airavata/blob/6d338d07/modules/gfac/gfac-service/src/main/java/org/apache/airavata/gfac/server/GfacServerHandler.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-service/src/main/java/org/apache/airavata/gfac/server/GfacServerHandler.java b/modules/gfac/gfac-service/src/main/java/org/apache/airavata/gfac/server/GfacServerHandler.java
index 10da052..c59e199 100644
--- a/modules/gfac/gfac-service/src/main/java/org/apache/airavata/gfac/server/GfacServerHandler.java
+++ b/modules/gfac/gfac-service/src/main/java/org/apache/airavata/gfac/server/GfacServerHandler.java
@@ -28,6 +28,7 @@ import org.apache.airavata.common.utils.ServerSettings;
 import org.apache.airavata.common.utils.ThriftUtils;
 import org.apache.airavata.common.utils.ZkConstants;
 import org.apache.airavata.common.utils.listener.AbstractActivityListener;
+import org.apache.airavata.gfac.core.GFac;
 import org.apache.airavata.gfac.core.GFacException;
 import org.apache.airavata.gfac.core.GFacUtils;
 import org.apache.airavata.gfac.cpi.GfacService;
@@ -247,14 +248,29 @@ public class GfacServerHandler implements GfacService.Iface {
 			                .getProcessId());
 	                publishProcessStatus(event, status);
                     try {
-	                    createProcessZKNode(curatorClient, gfacServerName, event, message);
+                        createProcessZKNode(curatorClient, gfacServerName, event, message);
                         boolean isCancel = setCancelWatcher(curatorClient, event.getExperimentId(), event.getProcessId());
-                        submitProcess(event.getProcessId(), event.getGatewayId(), event.getTokenId());
                         if (isCancel) {
-                            // Need to trigger process cancel watcher, wait till process recover and then set zk data.
-                            Thread.sleep(10000);
-                            setCancelData(event.getExperimentId());
+                            if (status.getState() == ProcessState.STARTED) {
+                                status.setState(ProcessState.CANCELLING);
+                                status.setReason("Process Cancel is triggered");
+                                status.setTimeOfStateChange(AiravataUtils.getCurrentTimestamp().getTime());
+                                Factory.getDefaultExpCatalog().update(ExperimentCatalogModelType.PROCESS_STATUS, status, event.getProcessId());
+                                publishProcessStatus(event, status);
+
+                                // do cancel operation here
+
+                                status.setState(ProcessState.CANCELED);
+                                status.setTimeOfStateChange(AiravataUtils.getCurrentTimestamp().getTime());
+                                Factory.getDefaultExpCatalog().update(ExperimentCatalogModelType.PROCESS_STATUS, status, event.getProcessId());
+                                publishProcessStatus(event, status);
+                                rabbitMQProcessLaunchConsumer.sendAck(message.getDeliveryTag());
+                                return;
+                            } else {
+                                setCancelData(event.getExperimentId(),event.getProcessId());
+                            }
                         }
+                        submitProcess(event.getProcessId(), event.getGatewayId(), event.getTokenId());
                     } catch (Exception e) {
                         log.error(e.getMessage(), e);
                         rabbitMQProcessLaunchConsumer.sendAck(message.getDeliveryTag());
@@ -295,10 +311,11 @@ public class GfacServerHandler implements GfacService.Iface {
         }
     }
 
-    private void setCancelData(String experimentId) throws Exception {
-        String expCancelNodePath = ZKPaths.makePath(ZKPaths.makePath(ZkConstants.ZOOKEEPER_EXPERIMENT_NODE,
-                experimentId), ZkConstants.ZOOKEEPER_CANCEL_LISTENER_NODE);
-        curatorClient.setData().withVersion(-1).forPath(expCancelNodePath, ZkConstants.ZOOKEEPER_CANCEL_REQEUST
+    private void setCancelData(String experimentId, String processId) throws Exception {
+        String processCancelNodePath = ZKPaths.makePath(ZKPaths.makePath(ZKPaths.makePath(
+                ZkConstants.ZOOKEEPER_EXPERIMENT_NODE, experimentId), processId), ZkConstants.ZOOKEEPER_CANCEL_LISTENER_NODE);
+        log.info("expId: {}, processId: {}, set process cancel data to zookeeper node {}", experimentId, processId, processCancelNodePath);
+        curatorClient.setData().withVersion(-1).forPath(processCancelNodePath, ZkConstants.ZOOKEEPER_CANCEL_REQEUST
                 .getBytes());
     }
 
@@ -307,10 +324,15 @@ public class GfacServerHandler implements GfacService.Iface {
                                      String processId) throws Exception {
 
         String experimentNodePath = GFacUtils.getExperimentNodePath(experimentId);
-        // create /experiments/{experimentId}/cancel node and set watcher for data changes
+        // /experiments/{experimentId}/cancelListener, set watcher for data changes
         String experimentCancelNode = ZKPaths.makePath(experimentNodePath, ZkConstants.ZOOKEEPER_CANCEL_LISTENER_NODE);
-        byte[] bytes = curatorClient.getData().usingWatcher(Factory.getCancelRequestWatcher(experimentId, processId)).forPath(experimentCancelNode);
-        return bytes != null && new String(bytes).equalsIgnoreCase(ZkConstants.ZOOKEEPER_CANCEL_REQEUST);
+        byte[] bytes = curatorClient.getData().forPath(experimentCancelNode);
+        if (bytes != null && new String(bytes).equalsIgnoreCase(ZkConstants.ZOOKEEPER_CANCEL_REQEUST)) {
+            return true;
+        } else {
+            bytes = curatorClient.getData().usingWatcher(Factory.getCancelRequestWatcher(experimentId, processId)).forPath(experimentCancelNode);
+            return bytes != null && new String(bytes).equalsIgnoreCase(ZkConstants.ZOOKEEPER_CANCEL_REQEUST);
+        }
 
     }
 
@@ -339,6 +361,10 @@ public class GfacServerHandler implements GfacService.Iface {
 		curatorClient.setData().withVersion(-1).forPath(zkProcessNodePath, gfacServerName.getBytes());
 		curatorClient.getData().usingWatcher(Factory.getRedeliveryReqeustWatcher(experimentId, processId)).forPath(zkProcessNodePath);
 
+        // create /experiments//{experimentId}{processId}/cancelListener
+        String zkProcessCancelPath = ZKPaths.makePath(zkProcessNodePath, ZkConstants.ZOOKEEPER_CANCEL_LISTENER_NODE);
+        ZKPaths.mkdirs(curatorClient.getZookeeperClient().getZooKeeper(), zkProcessCancelPath);
+
 		// create /experiments/{experimentId}/{processId}/deliveryTag node and set data - deliveryTag
 		String deliveryTagPath = ZKPaths.makePath(zkProcessNodePath, ZkConstants.ZOOKEEPER_DELIVERYTAG_NODE);
 		ZKPaths.mkdirs(curatorClient.getZookeeperClient().getZooKeeper(), deliveryTagPath);

http://git-wip-us.apache.org/repos/asf/airavata/blob/6d338d07/modules/orchestrator/orchestrator-service/src/main/java/org/apache/airavata/orchestrator/server/OrchestratorServerHandler.java
----------------------------------------------------------------------
diff --git a/modules/orchestrator/orchestrator-service/src/main/java/org/apache/airavata/orchestrator/server/OrchestratorServerHandler.java b/modules/orchestrator/orchestrator-service/src/main/java/org/apache/airavata/orchestrator/server/OrchestratorServerHandler.java
index 9e39c47..2cda709 100644
--- a/modules/orchestrator/orchestrator-service/src/main/java/org/apache/airavata/orchestrator/server/OrchestratorServerHandler.java
+++ b/modules/orchestrator/orchestrator-service/src/main/java/org/apache/airavata/orchestrator/server/OrchestratorServerHandler.java
@@ -408,16 +408,21 @@ public class OrchestratorServerHandler implements OrchestratorService.Iface {
 
         private boolean launchSingleAppExperiment() throws TException {
             try {
-                List<String> processIds = experimentCatalog.getIds(ExperimentCatalogModelType.PROCESS, AbstractExpCatResource.ProcessConstants.EXPERIMENT_ID, experimentId);
+                List<String> processIds = experimentCatalog.getIds(ExperimentCatalogModelType.PROCESS,
+						AbstractExpCatResource.ProcessConstants.EXPERIMENT_ID, experimentId);
                 for (String processId : processIds) {
                     launchProcess(processId, airavataCredStoreToken, gatewayId);
                 }
-
-            } catch (Exception e) {
+				ExperimentStatus status = new ExperimentStatus(ExperimentState.LAUNCHED);
+				status.setReason("submitted all processes");
+				status.setTimeOfStateChange(AiravataUtils.getCurrentTimestamp().getTime());
+				OrchestratorUtils.updageExperimentStatus(experimentId, status);
+				log.info("expId: {}, Launched experiment ", experimentId);
+			} catch (Exception e) {
 	            ExperimentStatus status = new ExperimentStatus(ExperimentState.FAILED);
 	            status.setReason("Error while updating task status");
 	            OrchestratorUtils.updageExperimentStatus(experimentId, status);
-	            log.error(experimentId, "Error while updating task status, hence updated experiment status to " +
+	            log.error("expId: " + experimentId + ", Error while updating task status, hence updated experiment status to " +
 			            ExperimentState.FAILED, e);
 	            throw new TException(e);
             }
@@ -465,7 +470,7 @@ public class OrchestratorServerHandler implements OrchestratorService.Iface {
 										.getExperimentId());
 								if (stat.getState() == ExperimentState.CANCELING) {
 									status.setState(ExperimentState.CANCELING);
-									status.setReason("Process competed but experiment cancelling is triggered");
+									status.setReason("Process started but experiment cancelling is triggered");
 								} else {
 									status.setState(ExperimentState.EXECUTING);
 									status.setReason("process  started");


[33/42] airavata git commit: Idetify job submission failures using output parsers

Posted by sh...@apache.org.
Idetify job submission failures using output parsers


Project: http://git-wip-us.apache.org/repos/asf/airavata/repo
Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/843940fa
Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/843940fa
Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/843940fa

Branch: refs/heads/develop
Commit: 843940fa0bdde4e5cca397e8acdf38125c92ee16
Parents: 4792eac
Author: Shameera Rathnayaka <sh...@gmail.com>
Authored: Fri Jan 8 16:03:26 2016 -0500
Committer: Shameera Rathnayaka <sh...@gmail.com>
Committed: Fri Jan 8 16:03:26 2016 -0500

----------------------------------------------------------------------
 .../gfac/core/cluster/JobSubmissionOutput.java  |  18 +++
 .../gfac/core/cluster/OutputParser.java         |   8 ++
 .../airavata/gfac/impl/HPCRemoteCluster.java    |   6 +
 .../gfac/impl/job/ForkOutputParser.java         |   5 +
 .../airavata/gfac/impl/job/LSFOutputParser.java |   5 +
 .../airavata/gfac/impl/job/PBSOutputParser.java |   5 +
 .../gfac/impl/job/SlurmOutputParser.java        |   7 ++
 .../airavata/gfac/impl/job/UGEOutputParser.java |   5 +
 .../impl/task/DefaultJobSubmissionTask.java     | 112 +++++++++++--------
 9 files changed, 123 insertions(+), 48 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/843940fa/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/cluster/JobSubmissionOutput.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/cluster/JobSubmissionOutput.java b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/cluster/JobSubmissionOutput.java
index 6632ab5..d912409 100644
--- a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/cluster/JobSubmissionOutput.java
+++ b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/cluster/JobSubmissionOutput.java
@@ -27,6 +27,8 @@ public class JobSubmissionOutput {
 	private String stdErr;
 	private String command;
 	private String jobId;
+	private boolean isJobSubmissionFailed;
+	private String failureReason;
 
 	public int getExitCode() {
 		return exitCode;
@@ -67,4 +69,20 @@ public class JobSubmissionOutput {
 	public void setJobId(String jobId) {
 		this.jobId = jobId;
 	}
+
+	public boolean isJobSubmissionFailed() {
+		return isJobSubmissionFailed;
+	}
+
+	public void setJobSubmissionFailed(boolean jobSubmissionFailed) {
+		isJobSubmissionFailed = jobSubmissionFailed;
+	}
+
+	public String getFailureReason() {
+		return failureReason;
+	}
+
+	public void setFailureReason(String failureReason) {
+		this.failureReason = failureReason;
+	}
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/843940fa/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/cluster/OutputParser.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/cluster/OutputParser.java b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/cluster/OutputParser.java
index 521e23f..18de355 100644
--- a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/cluster/OutputParser.java
+++ b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/cluster/OutputParser.java
@@ -44,6 +44,14 @@ public interface OutputParser {
 
 
     /**
+     * Parse output return by job submission task and identify jobSubmission failures.
+     * @param rawOutput
+     * @return true if job submission has been failed, false otherwise.
+     */
+    public boolean isJobSubmissionFailed(String rawOutput);
+
+
+    /**
      * This can be used to get the job status from the output
      * @param jobID
      * @param rawOutput

http://git-wip-us.apache.org/repos/asf/airavata/blob/843940fa/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/HPCRemoteCluster.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/HPCRemoteCluster.java b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/HPCRemoteCluster.java
index 8c4a4c0..022c8bc 100644
--- a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/HPCRemoteCluster.java
+++ b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/HPCRemoteCluster.java
@@ -91,6 +91,12 @@ public class HPCRemoteCluster extends AbstractRemoteCluster{
 		executeCommand(submitCommand, reader);
 //		throwExceptionOnError(reader, submitCommand);
 		jsoutput.setJobId(outputParser.parseJobSubmission(reader.getStdOutputString()));
+		if (jsoutput.getJobId() == null) {
+			if (outputParser.isJobSubmissionFailed(reader.getStdOutputString())) {
+				jsoutput.setJobSubmissionFailed(true);
+				jsoutput.setFailureReason(reader.getStdOutputString());
+			}
+		}
 		jsoutput.setExitCode(reader.getExitCode());
 		jsoutput.setStdOut(reader.getStdOutputString());
 		jsoutput.setStdErr(reader.getStdErrorString());

http://git-wip-us.apache.org/repos/asf/airavata/blob/843940fa/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/job/ForkOutputParser.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/job/ForkOutputParser.java b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/job/ForkOutputParser.java
index 72856e5..b99db30 100644
--- a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/job/ForkOutputParser.java
+++ b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/job/ForkOutputParser.java
@@ -44,6 +44,11 @@ public class ForkOutputParser implements OutputParser {
     }
 
     @Override
+    public boolean isJobSubmissionFailed(String rawOutput) {
+        return false;
+    }
+
+    @Override
     public JobStatus parseJobStatus(String jobID, String rawOutput) throws SSHApiException {
         return null;
     }

http://git-wip-us.apache.org/repos/asf/airavata/blob/843940fa/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/job/LSFOutputParser.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/job/LSFOutputParser.java b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/job/LSFOutputParser.java
index b16aa9b..bb0ae46 100644
--- a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/job/LSFOutputParser.java
+++ b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/job/LSFOutputParser.java
@@ -52,6 +52,11 @@ public class LSFOutputParser implements OutputParser {
     }
 
     @Override
+    public boolean isJobSubmissionFailed(String rawOutput) {
+        return false;
+    }
+
+    @Override
     public JobStatus parseJobStatus(String jobID, String rawOutput) throws SSHApiException {
         boolean jobFount = false;
         logger.debug(rawOutput);

http://git-wip-us.apache.org/repos/asf/airavata/blob/843940fa/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/job/PBSOutputParser.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/job/PBSOutputParser.java b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/job/PBSOutputParser.java
index f187724..7f97a68 100644
--- a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/job/PBSOutputParser.java
+++ b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/job/PBSOutputParser.java
@@ -135,6 +135,11 @@ public class PBSOutputParser implements OutputParser {
         return jobId;  //In PBS stdout is going to be directly the jobID
     }
 
+    @Override
+    public boolean isJobSubmissionFailed(String rawOutput) {
+        return false;
+    }
+
     public JobStatus parseJobStatus(String jobID, String rawOutput) {
         boolean jobFount = false;
         log.debug(rawOutput);

http://git-wip-us.apache.org/repos/asf/airavata/blob/843940fa/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/job/SlurmOutputParser.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/job/SlurmOutputParser.java b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/job/SlurmOutputParser.java
index fecb5e7..dff0a9b 100644
--- a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/job/SlurmOutputParser.java
+++ b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/job/SlurmOutputParser.java
@@ -115,6 +115,13 @@ public class SlurmOutputParser implements OutputParser {
 	    return "";
     }
 
+    @Override
+    public boolean isJobSubmissionFailed(String rawOutput) {
+        Pattern pattern = Pattern.compile("FAILED");
+        Matcher matcher = pattern.matcher(rawOutput);
+        return matcher.find();
+    }
+
     public JobStatus parseJobStatus(String jobID, String rawOutput) throws SSHApiException {
         log.info(rawOutput);
         Pattern pattern = Pattern.compile(jobID + "(?=\\s+\\S+\\s+\\S+\\s+\\S+\\s+(?<" + STATUS + ">\\w+))");

http://git-wip-us.apache.org/repos/asf/airavata/blob/843940fa/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/job/UGEOutputParser.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/job/UGEOutputParser.java b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/job/UGEOutputParser.java
index 0ece2d9..f19d4f7 100644
--- a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/job/UGEOutputParser.java
+++ b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/job/UGEOutputParser.java
@@ -135,6 +135,11 @@ public class UGEOutputParser implements OutputParser {
 		}
 	}
 
+    @Override
+    public boolean isJobSubmissionFailed(String rawOutput) {
+        return false;
+    }
+
     public JobStatus parseJobStatus(String jobID, String rawOutput) {
         Pattern pattern = Pattern.compile("job_number:[\\s]+" + jobID);
         Matcher matcher = pattern.matcher(rawOutput);

http://git-wip-us.apache.org/repos/asf/airavata/blob/843940fa/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/DefaultJobSubmissionTask.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/DefaultJobSubmissionTask.java b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/DefaultJobSubmissionTask.java
index 68d3bac..ebdda13 100644
--- a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/DefaultJobSubmissionTask.java
+++ b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/DefaultJobSubmissionTask.java
@@ -82,40 +82,56 @@ public class DefaultJobSubmissionTask implements JobSubmissionTask {
 				jobModel.setStdErr(jobSubmissionOutput.getStdErr());
 				jobModel.setStdOut(jobSubmissionOutput.getStdOut());
 				String jobId = jobSubmissionOutput.getJobId();
-				if (exitCode != 0 && jobId == null) {
+				if (exitCode != 0 || jobSubmissionOutput.isJobSubmissionFailed()) {
 					jobModel.setJobId(DEFAULT_JOB_ID);
-					GFacUtils.saveJobModel(processContext, jobModel);
-					String msg;
-					if (exitCode != Integer.MIN_VALUE) {
-						msg = "expId:" + processContext.getProcessModel().getExperimentId() + ", processId:" +
-								processContext.getProcessId() + ", taskId: " + taskContext.getTaskId() +
-								" return non zero exit code:" + exitCode + "  for JobName:" + jobModel.getJobName() +
-								", Hence changing job state to Failed";
+					if (jobSubmissionOutput.isJobSubmissionFailed()) {
+						jobModel.setJobStatus(new JobStatus(JobState.FAILED));
+						jobModel.getJobStatus().setReason(jobSubmissionOutput.getFailureReason());
+						log.error("expId: {}, processid: {}, taskId: {} :- Job submission failed for job name {}",
+								taskContext.getExperimentId(), taskContext.getProcessId(), taskContext.getTaskId(), jobModel.getJobName());
+						ErrorModel errorModel = new ErrorModel();
+						errorModel.setUserFriendlyMessage(jobSubmissionOutput.getFailureReason());
+						errorModel.setActualErrorMessage(jobSubmissionOutput.getFailureReason());
+						GFacUtils.saveExperimentError(processContext, errorModel);
+						GFacUtils.saveProcessError(processContext, errorModel);
+						GFacUtils.saveTaskError(taskContext, errorModel);
+						taskStatus.setState(TaskState.FAILED);
+						taskStatus.setReason("Job submission command exit with non zero exit code");
+						taskStatus.setTimeOfStateChange(AiravataUtils.getCurrentTimestamp().getTime());
+						taskContext.setTaskStatus(taskStatus);
 					} else {
-						msg = "expId:" + processContext.getProcessModel().getExperimentId() + ", processId:" +
-								processContext.getProcessId() + ", taskId: " + taskContext.getTaskId() +
-								" doesn't  return valid job submission exit code for JobName:" + jobModel.getJobName() +
-								", Hence changing job state to Failed";
+						String msg;
+						GFacUtils.saveJobModel(processContext, jobModel);
+						if (exitCode != Integer.MIN_VALUE) {
+							msg = "expId:" + processContext.getProcessModel().getExperimentId() + ", processId:" +
+									processContext.getProcessId() + ", taskId: " + taskContext.getTaskId() +
+									" return non zero exit code:" + exitCode + "  for JobName:" + jobModel.getJobName() +
+									", Hence changing job state to Failed";
+						} else {
+							msg = "expId:" + processContext.getProcessModel().getExperimentId() + ", processId:" +
+									processContext.getProcessId() + ", taskId: " + taskContext.getTaskId() +
+									" doesn't  return valid job submission exit code for JobName:" + jobModel.getJobName() +
+									", Hence changing job state to Failed";
+						}
+						log.error(msg);
+						ErrorModel errorModel = new ErrorModel();
+						errorModel.setUserFriendlyMessage(msg);
+						errorModel.setActualErrorMessage(msg);
+						GFacUtils.saveExperimentError(processContext, errorModel);
+						GFacUtils.saveProcessError(processContext, errorModel);
+						GFacUtils.saveTaskError(taskContext, errorModel);
+						taskStatus.setState(TaskState.FAILED);
+						taskStatus.setReason("Job submission command exit with non zero exit code");
+						taskStatus.setTimeOfStateChange(AiravataUtils.getCurrentTimestamp().getTime());
+						taskContext.setTaskStatus(taskStatus);
 					}
-					log.error(msg);
-					ErrorModel errorModel = new ErrorModel();
-					errorModel.setUserFriendlyMessage(msg);
-					errorModel.setActualErrorMessage(msg);
-					GFacUtils.saveExperimentError(processContext, errorModel);
-					GFacUtils.saveProcessError(processContext, errorModel);
-					GFacUtils.saveTaskError(taskContext, errorModel);
-					taskStatus.setState(TaskState.FAILED);
-					taskStatus.setReason("Job submission command exit with non zero exit code");
-					taskStatus.setTimeOfStateChange(AiravataUtils.getCurrentTimestamp().getTime());
-					taskContext.setTaskStatus(taskStatus);
 					try {
 						GFacUtils.saveAndPublishTaskStatus(taskContext);
 					} catch (GFacException e) {
 						log.error("Error while saving task status", e);
 					}
 					return taskStatus;
-				}
-			    if (jobId != null && !jobId.isEmpty()) {
+				} else if (jobId != null && !jobId.isEmpty()) {
 				    jobModel.setJobId(jobId);
 				    GFacUtils.saveJobModel(processContext, jobModel);
 				    jobStatus.setJobState(JobState.SUBMITTED);
@@ -134,29 +150,29 @@ public class DefaultJobSubmissionTask implements JobSubmissionTask {
 				    taskStatus = new TaskStatus(TaskState.COMPLETED);
 				    taskStatus.setReason("Submitted job to compute resource");
                     taskStatus.setTimeOfStateChange(AiravataUtils.getCurrentTimestamp().getTime());
-			    } else {
-				    int verificationTryCount = 0;
-				    while (verificationTryCount++ < 3) {
-					    String verifyJobId = verifyJobSubmission(remoteCluster, jobModel);
-					    if (verifyJobId != null && !verifyJobId.isEmpty()) {
-						    // JobStatus either changed from SUBMITTED to QUEUED or directly to QUEUED
-						    jobId = verifyJobId;
-						    jobModel.setJobId(jobId);
-						    GFacUtils.saveJobModel(processContext,jobModel);
-						    jobStatus.setJobState(JobState.QUEUED);
-						    jobStatus.setReason("Verification step succeeded");
-                            jobStatus.setTimeOfStateChange(AiravataUtils.getCurrentTimestamp().getTime());
-						    jobModel.setJobStatus(jobStatus);
-						    GFacUtils.saveJobStatus(taskContext.getParentProcessContext(), jobModel);
-						    taskStatus.setState(TaskState.COMPLETED);
-						    taskStatus.setReason("Submitted job to compute resource");
-                            taskStatus.setTimeOfStateChange(AiravataUtils.getCurrentTimestamp().getTime());
-						    break;
-					    }
-					    log.info("Verify step return invalid jobId, retry verification step in {} secs", verificationTryCount * 10);
-					    Thread.sleep(verificationTryCount * 10000);
-				    }
-			    }
+				} else {
+					int verificationTryCount = 0;
+					while (verificationTryCount++ < 3) {
+						String verifyJobId = verifyJobSubmission(remoteCluster, jobModel);
+						if (verifyJobId != null && !verifyJobId.isEmpty()) {
+							// JobStatus either changed from SUBMITTED to QUEUED or directly to QUEUED
+							jobId = verifyJobId;
+							jobModel.setJobId(jobId);
+							GFacUtils.saveJobModel(processContext, jobModel);
+							jobStatus.setJobState(JobState.QUEUED);
+							jobStatus.setReason("Verification step succeeded");
+							jobStatus.setTimeOfStateChange(AiravataUtils.getCurrentTimestamp().getTime());
+							jobModel.setJobStatus(jobStatus);
+							GFacUtils.saveJobStatus(taskContext.getParentProcessContext(), jobModel);
+							taskStatus.setState(TaskState.COMPLETED);
+							taskStatus.setReason("Submitted job to compute resource");
+							taskStatus.setTimeOfStateChange(AiravataUtils.getCurrentTimestamp().getTime());
+							break;
+						}
+						log.info("Verify step return invalid jobId, retry verification step in {} secs", verificationTryCount * 10);
+						Thread.sleep(verificationTryCount * 10000);
+					}
+				}
 
 			    if (jobId == null || jobId.isEmpty()) {
 					jobModel.setJobId(DEFAULT_JOB_ID);


[29/42] airavata git commit: fixing wrong remoteOutputDir issue

Posted by sh...@apache.org.
fixing wrong remoteOutputDir issue


Project: http://git-wip-us.apache.org/repos/asf/airavata/repo
Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/0b75afd8
Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/0b75afd8
Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/0b75afd8

Branch: refs/heads/develop
Commit: 0b75afd8aa781fcef4ed723449a302526e9c8742
Parents: 51ba071
Author: scnakandala <su...@gmail.com>
Authored: Thu Jan 7 10:27:23 2016 -0500
Committer: scnakandala <su...@gmail.com>
Committed: Thu Jan 7 10:27:23 2016 -0500

----------------------------------------------------------------------
 .../cpi/impl/SimpleOrchestratorImpl.java             | 15 +--------------
 1 file changed, 1 insertion(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/0b75afd8/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/cpi/impl/SimpleOrchestratorImpl.java
----------------------------------------------------------------------
diff --git a/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/cpi/impl/SimpleOrchestratorImpl.java b/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/cpi/impl/SimpleOrchestratorImpl.java
index fce6b84..ff515ef 100644
--- a/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/cpi/impl/SimpleOrchestratorImpl.java
+++ b/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/cpi/impl/SimpleOrchestratorImpl.java
@@ -555,20 +555,7 @@ public class SimpleOrchestratorImpl extends AbstractOrchestrator{
             ComputeResourcePreference computeResourcePreference = OrchestratorUtils.getComputeResourcePreference(orchestratorContext, processModel, gatewayId);
             ComputeResourceDescription computeResource = orchestratorContext.getRegistry().getAppCatalog().getComputeResource().getComputeResource(processModel.getComputeResourceId());
 
-            String experimentDataDir = processModel.getExperimentDataDir();
-            String remoteOutputDir;
-            if(experimentDataDir != null && !experimentDataDir.isEmpty()) {
-                if(experimentDataDir.startsWith(File.separator)){
-                    experimentDataDir = experimentDataDir.substring(1);
-                }
-                if(!experimentDataDir.endsWith(File.separator)){
-                    experimentDataDir += File.separator;
-                }
-                remoteOutputDir = computeResourcePreference.getScratchLocation() + File.separator +
-                        experimentDataDir + processModel.getProcessId();
-            } else {
-                remoteOutputDir = computeResourcePreference.getScratchLocation() + File.separator + processModel.getProcessId();
-            }
+            String remoteOutputDir = computeResourcePreference.getScratchLocation() + File.separator + processModel.getProcessId();
             remoteOutputDir = remoteOutputDir.endsWith("/") ? remoteOutputDir : remoteOutputDir + "/";
             DataStagingTaskModel submodel = new DataStagingTaskModel();
             submodel.setType(DataStageType.OUPUT);


[04/42] airavata git commit: merging with remote master

Posted by sh...@apache.org.
merging with remote master


Project: http://git-wip-us.apache.org/repos/asf/airavata/repo
Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/6751a37b
Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/6751a37b
Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/6751a37b

Branch: refs/heads/develop
Commit: 6751a37b569afaebad45f280594e8df2d3decb08
Parents: d2d72e5
Author: scnakandala <su...@gmail.com>
Authored: Mon Jan 4 14:16:30 2016 -0500
Committer: scnakandala <su...@gmail.com>
Committed: Mon Jan 4 14:38:37 2016 -0500

----------------------------------------------------------------------
 .../server/handler/AiravataServerHandler.java   | 20 ++++++++++----------
 .../api/server/util/RegistryInitUtil.java       |  2 +-
 .../experiment/catalog/ExpCatResourceUtils.java |  9 +++++----
 .../catalog/impl/ExperimentCatalogImpl.java     |  4 ++--
 .../catalog/impl/ExperimentRegistry.java        |  2 +-
 .../catalog/impl/ProjectRegistry.java           |  2 +-
 .../src/main/resources/expcatalog-mysql.sql     |  3 ++-
 7 files changed, 22 insertions(+), 20 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/6751a37b/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java b/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java
index 1ceb797..889b8d2 100644
--- a/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java
+++ b/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java
@@ -513,7 +513,7 @@ public class AiravataServerHandler implements Airavata.Iface {
         }
         List<Project> projects = new ArrayList<Project>();
         try {
-            if (!ExpCatResourceUtils.isUserExist(userName)){
+            if (!ExpCatResourceUtils.isUserExist(userName, gatewayId)){
                 logger.error("User does not exist in the system. Please provide a valid user..");
                 AiravataSystemException exception = new AiravataSystemException();
                 exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
@@ -573,7 +573,7 @@ public class AiravataServerHandler implements Airavata.Iface {
             throw new AiravataSystemException(AiravataErrorType.INTERNAL_ERROR);
         }
         try {
-            if (!ExpCatResourceUtils.isUserExist(userName)){
+            if (!ExpCatResourceUtils.isUserExist(userName, gatewayId)){
                 logger.error("User does not exist in the system. Please provide a valid user..");
                 AiravataSystemException exception = new AiravataSystemException();
                 exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
@@ -633,7 +633,7 @@ public class AiravataServerHandler implements Airavata.Iface {
             throw new AiravataSystemException(AiravataErrorType.INTERNAL_ERROR);
         }
         try {
-            if (!ExpCatResourceUtils.isUserExist(userName)){
+            if (!ExpCatResourceUtils.isUserExist(userName, gatewayId)){
                 logger.error("User does not exist in the system. Please provide a valid user..");
                 AiravataSystemException exception = new AiravataSystemException();
                 exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
@@ -693,7 +693,7 @@ public class AiravataServerHandler implements Airavata.Iface {
             throw new AiravataSystemException(AiravataErrorType.INTERNAL_ERROR);
         }
         try {
-            if (!ExpCatResourceUtils.isUserExist(userName)){
+            if (!ExpCatResourceUtils.isUserExist(userName, gatewayId)){
                 logger.error("User does not exist in the system. Please provide a valid user..");
                 AiravataSystemException exception = new AiravataSystemException();
                 exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
@@ -753,7 +753,7 @@ public class AiravataServerHandler implements Airavata.Iface {
             throw new AiravataSystemException(AiravataErrorType.INTERNAL_ERROR);
         }
         try {
-            if (!ExpCatResourceUtils.isUserExist(userName)){
+            if (!ExpCatResourceUtils.isUserExist(userName, gatewayId)){
                 logger.error("User does not exist in the system. Please provide a valid user..");
                 AiravataSystemException exception = new AiravataSystemException();
                 exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
@@ -814,7 +814,7 @@ public class AiravataServerHandler implements Airavata.Iface {
             throw new AiravataSystemException(AiravataErrorType.INTERNAL_ERROR);
         }
         try {
-            if (!ExpCatResourceUtils.isUserExist(userName)){
+            if (!ExpCatResourceUtils.isUserExist(userName, gatewayId)){
                 logger.error("User does not exist in the system. Please provide a valid user..");
                 AiravataSystemException exception = new AiravataSystemException();
                 exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
@@ -875,7 +875,7 @@ public class AiravataServerHandler implements Airavata.Iface {
             throw new AiravataSystemException(AiravataErrorType.INTERNAL_ERROR);
         }
         try {
-            if (!ExpCatResourceUtils.isUserExist(userName)){
+            if (!ExpCatResourceUtils.isUserExist(userName, gatewayId)){
                 logger.error("User does not exist in the system. Please provide a valid user..");
                 AiravataSystemException exception = new AiravataSystemException();
                 exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
@@ -938,7 +938,7 @@ public class AiravataServerHandler implements Airavata.Iface {
             throw new AiravataSystemException(AiravataErrorType.INTERNAL_ERROR);
         }
         try {
-            if (!ExpCatResourceUtils.isUserExist(userName)){
+            if (!ExpCatResourceUtils.isUserExist(userName, gatewayId)){
                 logger.error("User does not exist in the system. Please provide a valid user..");
                 AiravataSystemException exception = new AiravataSystemException();
                 exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
@@ -999,7 +999,7 @@ public class AiravataServerHandler implements Airavata.Iface {
             throw new AiravataSystemException(AiravataErrorType.INTERNAL_ERROR);
         }
         try {
-            if (!ExpCatResourceUtils.isUserExist(userName)){
+            if (!ExpCatResourceUtils.isUserExist(userName, gatewayId)){
                 logger.error("User does not exist in the system. Please provide a valid user..");
                 AiravataSystemException exception = new AiravataSystemException();
                 exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
@@ -1162,7 +1162,7 @@ public class AiravataServerHandler implements Airavata.Iface {
             throw new AiravataSystemException(AiravataErrorType.INTERNAL_ERROR);
         }
         try {
-            if (!ExpCatResourceUtils.isUserExist(userName)){
+            if (!ExpCatResourceUtils.isUserExist(userName, gatewayId)){
                 logger.error("User does not exist in the system. Please provide a valid user..");
                 AiravataSystemException exception = new AiravataSystemException();
                 exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);

http://git-wip-us.apache.org/repos/asf/airavata/blob/6751a37b/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/util/RegistryInitUtil.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/util/RegistryInitUtil.java b/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/util/RegistryInitUtil.java
index 82cedba..9f61c65 100644
--- a/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/util/RegistryInitUtil.java
+++ b/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/util/RegistryInitUtil.java
@@ -93,7 +93,7 @@ public class RegistryInitUtil {
                 }
 
                 UserResource user;
-                if (!ExpCatResourceUtils.isUserExist(ServerSettings.getDefaultUser())){
+                if (!ExpCatResourceUtils.isUserExist(ServerSettings.getDefaultUser(), ServerSettings.getDefaultUserGateway())){
                     user = ExpCatResourceUtils.createUser(ServerSettings.getDefaultUser(), ServerSettings.getDefaultUserPassword(), ServerSettings.getDefaultUserGateway());
                     user.save();
                 }else {

http://git-wip-us.apache.org/repos/asf/airavata/blob/6751a37b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/ExpCatResourceUtils.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/ExpCatResourceUtils.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/ExpCatResourceUtils.java
index 2777ff0..035a456 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/ExpCatResourceUtils.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/ExpCatResourceUtils.java
@@ -85,7 +85,7 @@ public class ExpCatResourceUtils {
     }
 
     public static UserResource createUser(String username, String password, String gatewayId) throws RegistryException {
-        if (!isUserExist(username)) {
+        if (!isUserExist(username, gatewayId)) {
             UserResource userResource = new UserResource();
             userResource.setUserName(username);
             userResource.setPassword(password);
@@ -129,13 +129,14 @@ public class ExpCatResourceUtils {
         resource.save();
     }
 
-    public static boolean isUserExist (String username) throws RegistryException{
+    public static boolean isUserExist (String username, String gatewayId) throws RegistryException{
         EntityManager em = null;
         try {
             em = getEntityManager();
             em.getTransaction().begin();
             QueryGenerator generator = new QueryGenerator(AbstractExpCatResource.USERS);
             generator.setParameter(AbstractExpCatResource.UserConstants.USERNAME, username);
+            generator.setParameter(AbstractExpCatResource.UserConstants.GATEWAY_ID, gatewayId);
             Query q = generator.selectQuery(em);
             int size = q.getResultList().size();
             em.getTransaction().commit();
@@ -158,7 +159,7 @@ public class ExpCatResourceUtils {
     public static ExperimentCatResource getUser(String userName, String gatewayId) throws RegistryException{
         EntityManager em = null;
         try {
-            if (isUserExist(userName)) {
+            if (isUserExist(userName, gatewayId)) {
                 em = getEntityManager();
                 UserPK userPK = new UserPK();
                 userPK.setUserName(userName);
@@ -314,7 +315,7 @@ public class ExpCatResourceUtils {
             if (!isGatewayExist(gatewayResource.getGatewayName())){
                 gatewayResource.save();
             }
-            if (!isUserExist(userResource.getUserName())){
+            if (!isUserExist(userResource.getUserName(), gatewayResource.getGatewayId())){
                 userResource.save();
             }
             Gateway gateway = em.find(Gateway.class, gatewayResource.getGatewayId());

http://git-wip-us.apache.org/repos/asf/airavata/blob/6751a37b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentCatalogImpl.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentCatalogImpl.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentCatalogImpl.java
index 7ef834e..48d31b0 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentCatalogImpl.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentCatalogImpl.java
@@ -68,7 +68,7 @@ public class ExperimentCatalogImpl implements ExperimentCatalog {
                 gatewayResource = (GatewayResource) ExpCatResourceUtils.getGateway(ServerSettings.getDefaultUserGateway());
             }
 
-            if (!ExpCatResourceUtils.isUserExist(ServerSettings.getDefaultUser())){
+            if (!ExpCatResourceUtils.isUserExist(ServerSettings.getDefaultUser(), ServerSettings.getDefaultUserGateway())){
                 user = ExpCatResourceUtils.createUser(ServerSettings.getDefaultUser(), ServerSettings.getDefaultUserPassword(), ServerSettings.getDefaultUserGateway());
                 user.save();
             }else {
@@ -91,7 +91,7 @@ public class ExperimentCatalogImpl implements ExperimentCatalog {
             gatewayResource = (GatewayResource) ExpCatResourceUtils.getGateway(gateway);
         }
 
-        if (!ExpCatResourceUtils.isUserExist(username)){
+        if (!ExpCatResourceUtils.isUserExist(username, gatewayResource.getGatewayId())){
             user = ExpCatResourceUtils.createUser(username, password, gateway);
             user.save();
         }else {

http://git-wip-us.apache.org/repos/asf/airavata/blob/6751a37b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentRegistry.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentRegistry.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentRegistry.java
index 533f55b..5e10395 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentRegistry.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentRegistry.java
@@ -70,7 +70,7 @@ public class ExperimentRegistry {
     public String addExperiment(ExperimentModel experiment) throws RegistryException {
         String experimentId;
         try {
-            if (!ExpCatResourceUtils.isUserExist(experiment.getUserName())) {
+            if (!ExpCatResourceUtils.isUserExist(experiment.getUserName(), experiment.getGatewayId())) {
                 ExpCatResourceUtils.addUser(experiment.getUserName(), null, experiment.getGatewayId());
             }
             if (!workerResource.isProjectExists(experiment.getProjectId())) {

http://git-wip-us.apache.org/repos/asf/airavata/blob/6751a37b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ProjectRegistry.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ProjectRegistry.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ProjectRegistry.java
index 7d77308..ef44c64 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ProjectRegistry.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ProjectRegistry.java
@@ -57,7 +57,7 @@ public class ProjectRegistry {
     public String addProject (Project project, String gatewayId) throws RegistryException{
         String projectId;
         try {
-            if (!ExpCatResourceUtils.isUserExist(project.getOwner())){
+            if (!ExpCatResourceUtils.isUserExist(project.getOwner(), gatewayId)){
                 ExpCatResourceUtils.addUser(project.getOwner(), null, gatewayId);
             }
             ProjectResource projectResource = new ProjectResource();

http://git-wip-us.apache.org/repos/asf/airavata/blob/6751a37b/modules/registry/registry-core/src/main/resources/expcatalog-mysql.sql
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/resources/expcatalog-mysql.sql b/modules/registry/registry-core/src/main/resources/expcatalog-mysql.sql
index b71b9b1..a3c335f 100644
--- a/modules/registry/registry-core/src/main/resources/expcatalog-mysql.sql
+++ b/modules/registry/registry-core/src/main/resources/expcatalog-mysql.sql
@@ -31,7 +31,8 @@ CREATE TABLE USERS
 (
         USER_NAME VARCHAR(255),
         PASSWORD VARCHAR(255),
-        PRIMARY KEY(USER_NAME)
+        GATEWAY_ID VARCHAR(255),
+        PRIMARY KEY(USER_NAME, GATEWAY_ID)
 );
 
 CREATE TABLE GATEWAY_WORKER


[12/42] airavata git commit: Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/airavata

Posted by sh...@apache.org.
Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/airavata


Project: http://git-wip-us.apache.org/repos/asf/airavata/repo
Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/bedf91c1
Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/bedf91c1
Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/bedf91c1

Branch: refs/heads/develop
Commit: bedf91c1a01166fd5b04c0d99c9a0043026b85cd
Parents: 4409f99 2762670
Author: Shameera Rathnayaka <sh...@gmail.com>
Authored: Mon Jan 4 16:01:39 2016 -0500
Committer: Shameera Rathnayaka <sh...@gmail.com>
Committed: Mon Jan 4 16:01:39 2016 -0500

----------------------------------------------------------------------
 .../server/handler/AiravataServerHandler.java   | 45 +++++++++---
 .../api/server/util/RegistryInitUtil.java       |  2 +-
 .../manager/core/MetadataCatalogService.java    | 76 ++++++++++++++++++++
 .../experiment/catalog/ExpCatResourceUtils.java |  9 +--
 .../catalog/impl/ExperimentCatalogImpl.java     |  4 +-
 .../catalog/impl/ExperimentRegistry.java        |  2 +-
 .../catalog/impl/ProjectRegistry.java           |  2 +-
 .../catalog/resources/WorkerResource.java       |  2 +-
 .../src/main/resources/expcatalog-derby.sql     | 12 ++--
 .../src/main/resources/expcatalog-mysql.sql     | 17 ++---
 10 files changed, 136 insertions(+), 35 deletions(-)
----------------------------------------------------------------------



[26/42] airavata git commit: adding missing setExperimentDataDir line

Posted by sh...@apache.org.
adding missing setExperimentDataDir line


Project: http://git-wip-us.apache.org/repos/asf/airavata/repo
Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/c22a73dc
Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/c22a73dc
Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/c22a73dc

Branch: refs/heads/develop
Commit: c22a73dc5f6d65956019bb46f2dbbabe660618c2
Parents: 2fe5278
Author: scnakandala <su...@gmail.com>
Authored: Wed Jan 6 22:52:51 2016 -0500
Committer: scnakandala <su...@gmail.com>
Committed: Wed Jan 6 22:52:51 2016 -0500

----------------------------------------------------------------------
 .../airavata/registry/core/experiment/catalog/resources/Utils.java  | 1 +
 1 file changed, 1 insertion(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/c22a73dc/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/Utils.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/Utils.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/Utils.java
index 7e7a9a8..c94fef9 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/Utils.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/Utils.java
@@ -536,6 +536,7 @@ public class Utils {
             processResource.setStorageResourceId(o.getStorageId());
             processResource.setUserDn(o.getUserDn());
             processResource.setGenerateCert(o.getGenerateCert());
+            processResource.setExperimentDataDir(o.getExperimentDataDir());
         }
         return processResource;
     }


[31/42] airavata git commit: adding possible fix to same update time

Posted by sh...@apache.org.
adding possible fix to same update time


Project: http://git-wip-us.apache.org/repos/asf/airavata/repo
Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/545e7534
Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/545e7534
Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/545e7534

Branch: refs/heads/develop
Commit: 545e7534483d271baf999df52e8cdf2b5a12ec45
Parents: 6d338d0
Author: Chathuri Wimalasena <ch...@apache.org>
Authored: Fri Jan 8 10:27:15 2016 -0500
Committer: Chathuri Wimalasena <ch...@apache.org>
Committed: Fri Jan 8 10:27:15 2016 -0500

----------------------------------------------------------------------
 .../server/OrchestratorServerHandler.java       | 28 +++++++++++++++-----
 1 file changed, 21 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/545e7534/modules/orchestrator/orchestrator-service/src/main/java/org/apache/airavata/orchestrator/server/OrchestratorServerHandler.java
----------------------------------------------------------------------
diff --git a/modules/orchestrator/orchestrator-service/src/main/java/org/apache/airavata/orchestrator/server/OrchestratorServerHandler.java b/modules/orchestrator/orchestrator-service/src/main/java/org/apache/airavata/orchestrator/server/OrchestratorServerHandler.java
index 2cda709..66861dd 100644
--- a/modules/orchestrator/orchestrator-service/src/main/java/org/apache/airavata/orchestrator/server/OrchestratorServerHandler.java
+++ b/modules/orchestrator/orchestrator-service/src/main/java/org/apache/airavata/orchestrator/server/OrchestratorServerHandler.java
@@ -177,6 +177,11 @@ public class OrchestratorServerHandler implements OrchestratorService.Iface {
             if (executionType == ExperimentType.SINGLE_APPLICATION) {
                 //its an single application execution experiment
                 log.debug(experimentId, "Launching single application experiment {}.", experimentId);
+                ExperimentStatus status = new ExperimentStatus(ExperimentState.LAUNCHED);
+                status.setReason("submitted all processes");
+                status.setTimeOfStateChange(AiravataUtils.getCurrentTimestamp().getTime());
+                OrchestratorUtils.updageExperimentStatus(experimentId, status);
+                log.info("expId: {}, Launched experiment ", experimentId);
 	            ExperimentStatusChangeEvent event = new ExperimentStatusChangeEvent(ExperimentState.LAUNCHED,
 			            experimentId,
 			            gatewayId);
@@ -402,28 +407,37 @@ public class OrchestratorServerHandler implements OrchestratorService.Iface {
             try {
                 launchSingleAppExperiment();
             } catch (TException e) {
-                e.printStackTrace();
+                log.error("Unable to launch experiment..", e);
+            } catch (AiravataException e) {
+                log.error("Unable to publish experiment status..", e);
             }
         }
 
-        private boolean launchSingleAppExperiment() throws TException {
+        private boolean launchSingleAppExperiment() throws TException, AiravataException {
             try {
                 List<String> processIds = experimentCatalog.getIds(ExperimentCatalogModelType.PROCESS,
 						AbstractExpCatResource.ProcessConstants.EXPERIMENT_ID, experimentId);
                 for (String processId : processIds) {
                     launchProcess(processId, airavataCredStoreToken, gatewayId);
                 }
-				ExperimentStatus status = new ExperimentStatus(ExperimentState.LAUNCHED);
-				status.setReason("submitted all processes");
-				status.setTimeOfStateChange(AiravataUtils.getCurrentTimestamp().getTime());
-				OrchestratorUtils.updageExperimentStatus(experimentId, status);
-				log.info("expId: {}, Launched experiment ", experimentId);
+//				ExperimentStatus status = new ExperimentStatus(ExperimentState.LAUNCHED);
+//				status.setReason("submitted all processes");
+//				status.setTimeOfStateChange(AiravataUtils.getCurrentTimestamp().getTime());
+//				OrchestratorUtils.updageExperimentStatus(experimentId, status);
+//				log.info("expId: {}, Launched experiment ", experimentId);
 			} catch (Exception e) {
 	            ExperimentStatus status = new ExperimentStatus(ExperimentState.FAILED);
 	            status.setReason("Error while updating task status");
 	            OrchestratorUtils.updageExperimentStatus(experimentId, status);
 	            log.error("expId: " + experimentId + ", Error while updating task status, hence updated experiment status to " +
 			            ExperimentState.FAILED, e);
+                ExperimentStatusChangeEvent event = new ExperimentStatusChangeEvent(ExperimentState.FAILED,
+                        experimentId,
+                        gatewayId);
+                String messageId = AiravataUtils.getId("EXPERIMENT");
+                MessageContext messageContext = new MessageContext(event, MessageType.EXPERIMENT, messageId, gatewayId);
+                messageContext.setUpdatedTime(AiravataUtils.getCurrentTimestamp());
+                publisher.publish(messageContext);
 	            throw new TException(e);
             }
             return true;


[36/42] airavata git commit: update timestamp to miliseconds

Posted by sh...@apache.org.
update timestamp to miliseconds


Project: http://git-wip-us.apache.org/repos/asf/airavata/repo
Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/494857a3
Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/494857a3
Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/494857a3

Branch: refs/heads/develop
Commit: 494857a374d12fc2ad9b73e91d85e6519be43cb3
Parents: cae7925
Author: Chathuri Wimalasena <ch...@apache.org>
Authored: Mon Jan 11 13:48:00 2016 -0500
Committer: Chathuri Wimalasena <ch...@apache.org>
Committed: Mon Jan 11 13:48:00 2016 -0500

----------------------------------------------------------------------
 .../java/org/apache/airavata/common/utils/AiravataUtils.java     | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/494857a3/modules/commons/src/main/java/org/apache/airavata/common/utils/AiravataUtils.java
----------------------------------------------------------------------
diff --git a/modules/commons/src/main/java/org/apache/airavata/common/utils/AiravataUtils.java b/modules/commons/src/main/java/org/apache/airavata/common/utils/AiravataUtils.java
index 52d114f..6a44f02 100644
--- a/modules/commons/src/main/java/org/apache/airavata/common/utils/AiravataUtils.java
+++ b/modules/commons/src/main/java/org/apache/airavata/common/utils/AiravataUtils.java
@@ -29,8 +29,8 @@ public class AiravataUtils {
 
     public static Timestamp getCurrentTimestamp() {
         Calendar calender = Calendar.getInstance();
-        java.util.Date d = calender.getTime();
-        return new Timestamp(d.getTime());
+//        java.util.Date d = calender.getTimeInMillis();
+        return new Timestamp(calender.getTimeInMillis());
     }
 
     public static Timestamp getTime(long time) {


[32/42] airavata git commit: Fixed edge case issues with cancel & recovery

Posted by sh...@apache.org.
Fixed edge case issues with cancel & recovery


Project: http://git-wip-us.apache.org/repos/asf/airavata/repo
Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/4792eac6
Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/4792eac6
Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/4792eac6

Branch: refs/heads/develop
Commit: 4792eac6e173c9ec81bab4f510ebb45da341a3ad
Parents: 545e753
Author: Shameera Rathnayaka <sh...@gmail.com>
Authored: Fri Jan 8 13:36:44 2016 -0500
Committer: Shameera Rathnayaka <sh...@gmail.com>
Committed: Fri Jan 8 13:36:44 2016 -0500

----------------------------------------------------------------------
 .../airavata/gfac/impl/GFacEngineImpl.java      | 28 +++++++++------
 .../apache/airavata/gfac/impl/GFacWorker.java   | 36 +++++++++++++++-----
 .../gfac/monitor/email/EmailBasedMonitor.java   | 18 ++++++----
 3 files changed, 56 insertions(+), 26 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/4792eac6/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/GFacEngineImpl.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/GFacEngineImpl.java b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/GFacEngineImpl.java
index 00d920d..f264e6c 100644
--- a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/GFacEngineImpl.java
+++ b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/GFacEngineImpl.java
@@ -215,7 +215,7 @@ public class GFacEngineImpl implements GFacEngine {
 
     private void executeTaskListFrom(ProcessContext processContext, String startingTaskId) throws GFacException {
         // checkpoint
-        if (processContext.isInterrupted()) {
+        if (processContext.isInterrupted() && processContext.getProcessState() != ProcessState.MONITORING) {
             GFacUtils.handleProcessInterrupt(processContext);
             return;
         }
@@ -552,7 +552,12 @@ public class GFacEngineImpl implements GFacEngine {
                 cancelJobSubmission(processContext, rTaskId, pTaskId);
             }
             continueProcess(processContext, recoverTaskId);
+        } else {
+            log.error("expId: {}, processId: {}, Error while recovering process, couldn't find recovery task",
+                    processContext.getExperimentId(), processContext.getProcessId());
         }
+
+
     }
 
     private void cancelJobSubmission(ProcessContext processContext, String rTaskId, String pTaskId) {
@@ -577,12 +582,17 @@ public class GFacEngineImpl implements GFacEngine {
 
                 if (jobModels != null && !jobModels.isEmpty()) {
                     JobModel jobModel = (JobModel) jobModels.get(jobModels.size() - 1);
-                    processContext.setJobModel(jobModel);
-                    log.info("expId: {}, processId: {}, Canceling jobId {}", processContext.getExperimentId(),
-                            processContext.getProcessId(), jobModel.getJobId());
-                    cancelProcess(processContext);
-                    log.info("expId: {}, processId: {}, Canceled jobId {}", processContext.getExperimentId(),
-                            processContext.getProcessId(), jobModel.getJobId());
+                    if (jobModel.getJobId() != null) {
+                        processContext.setJobModel(jobModel);
+                        log.info("expId: {}, processId: {}, Canceling jobId {}", processContext.getExperimentId(),
+                                processContext.getProcessId(), jobModel.getJobId());
+                        cancelProcess(processContext);
+                        log.info("expId: {}, processId: {}, Canceled jobId {}", processContext.getExperimentId(),
+                                processContext.getProcessId(), jobModel.getJobId());
+                    } else {
+                        log.error("expId: {}, processId: {}, Couldn't find jobId in jobModel, aborting process recovery",
+                                processContext.getExperimentId(), processContext.getProcessId());
+                    }
                 }
             } catch (GFacException e) {
                 log.error("expId: {}, processId: {}, Error while canceling process which is in recovery mode",
@@ -606,10 +616,6 @@ public class GFacEngineImpl implements GFacEngine {
 
     @Override
     public void continueProcess(ProcessContext processContext, String taskId) throws GFacException {
-        if (processContext.isInterrupted()) {
-            GFacUtils.handleProcessInterrupt(processContext);
-            return;
-        }
         executeTaskListFrom(processContext, taskId);
     }
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/4792eac6/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/GFacWorker.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/GFacWorker.java b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/GFacWorker.java
index e0664a5..fd6dad3 100644
--- a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/GFacWorker.java
+++ b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/GFacWorker.java
@@ -29,6 +29,7 @@ import org.apache.airavata.gfac.core.context.ProcessContext;
 import org.apache.airavata.model.commons.ErrorModel;
 import org.apache.airavata.model.status.ProcessState;
 import org.apache.airavata.model.status.ProcessStatus;
+import org.apache.airavata.registry.core.experiment.catalog.model.Process;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -53,7 +54,7 @@ public class GFacWorker implements Runnable {
 	 */
 	public GFacWorker(ProcessContext processContext) throws GFacException {
 		if (processContext == null) {
-			throw new GFacException("Worker must initialize with valide processContext, Process context is null");
+			throw new GFacException("Worker must initialize with valid processContext, Process context is null");
 		}
 		this.processId = processContext.getProcessId();
 		this.gatewayId = processContext.getGatewayId();
@@ -78,7 +79,7 @@ public class GFacWorker implements Runnable {
 	@Override
 	public void run() {
 		try {
-			ProcessState processState = processContext.getProcessStatus().getState();
+			ProcessState processState = processContext.getProcessState();
 			switch (processState) {
 				case CREATED:
 				case VALIDATED:
@@ -101,6 +102,9 @@ public class GFacWorker implements Runnable {
 				case COMPLETED:
 					completeProcess();
 					break;
+				case CANCELLING:
+					cancelProcess();
+					break;
 				case CANCELED:
 					// TODO - implement cancel scenario
 					break;
@@ -111,12 +115,18 @@ public class GFacWorker implements Runnable {
 					throw new GFacException("process Id : " + processId + " Couldn't identify process type");
 			}
 			if (processContext.isCancel()) {
-				if (processContext.getProcessState() == ProcessState.MONITORING
-						|| processContext.getProcessState() == ProcessState.EXECUTING) {
-					// don't send ack if the process is in MONITORING state, wait until cancel email comes to airavata.
-				} else {
-					sendAck();
-					Factory.getGfacContext().removeProcess(processContext.getProcessId());
+				processState = processContext.getProcessState();
+				switch (processState) {
+					case MONITORING: case EXECUTING:
+						// don't send ack if the process is in MONITORING or EXECUTING states, wait until cancel email comes to airavata
+						break;
+					case CANCELLING:
+						cancelProcess();
+						break;
+					default:
+						sendAck();
+						Factory.getGfacContext().removeProcess(processContext.getProcessId());
+						break;
 				}
 			}
 		} catch (GFacException e) {
@@ -143,6 +153,16 @@ public class GFacWorker implements Runnable {
 		}
 	}
 
+	private void cancelProcess() throws GFacException {
+		// do cleanup works before cancel the process.
+		ProcessStatus processStatus = new ProcessStatus(ProcessState.CANCELED);
+		processStatus.setReason("Process cancellation has been triggered");
+		processContext.setProcessStatus(processStatus);
+		GFacUtils.saveAndPublishProcessStatus(processContext);
+		sendAck();
+		Factory.getGfacContext().removeProcess(processContext.getProcessId());
+	}
+
 	private void completeProcess() throws GFacException {
         ProcessStatus status = new ProcessStatus(ProcessState.COMPLETED);
         status.setTimeOfStateChange(AiravataUtils.getCurrentTimestamp().getTime());

http://git-wip-us.apache.org/repos/asf/airavata/blob/4792eac6/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/monitor/email/EmailBasedMonitor.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/monitor/email/EmailBasedMonitor.java b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/monitor/email/EmailBasedMonitor.java
index 144465b..c7a6875 100644
--- a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/monitor/email/EmailBasedMonitor.java
+++ b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/monitor/email/EmailBasedMonitor.java
@@ -35,10 +35,7 @@ import org.apache.airavata.gfac.core.monitor.JobStatusResult;
 import org.apache.airavata.gfac.impl.GFacWorker;
 import org.apache.airavata.model.appcatalog.computeresource.ResourceJobManagerType;
 import org.apache.airavata.model.job.JobModel;
-import org.apache.airavata.model.status.JobState;
-import org.apache.airavata.model.status.JobStatus;
-import org.apache.airavata.model.status.TaskState;
-import org.apache.airavata.model.status.TaskStatus;
+import org.apache.airavata.model.status.*;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -333,7 +330,8 @@ public class EmailBasedMonitor implements JobMonitor, Runnable{
         // TODO : update job state on process context
         boolean runOutflowTasks = false;
         JobStatus jobStatus = new JobStatus();
-        JobModel jobModel = taskContext.getParentProcessContext().getJobModel();
+        ProcessContext parentProcessContext = taskContext.getParentProcessContext();
+        JobModel jobModel = parentProcessContext.getJobModel();
         String jobDetails = "JobName : " + jobStatusResult.getJobName() + ", JobId : " + jobStatusResult.getJobId();
         // TODO - Handle all other valid JobStates
         if (resultState == JobState.COMPLETE) {
@@ -374,7 +372,7 @@ public class EmailBasedMonitor implements JobMonitor, Runnable{
 		    try {
 			    jobModel.setJobStatus(jobStatus);
 			    log.info("[EJM]: Publishing status changes to amqp. " + jobDetails);
-			    GFacUtils.saveJobStatus(taskContext.getParentProcessContext(), jobModel);
+			    GFacUtils.saveJobStatus(parentProcessContext, jobModel);
 		    } catch (GFacException e) {
 			    log.error("expId: {}, processId: {}, taskId: {}, jobId: {} :- Error while save and publishing Job " +
                         "status {}", taskContext.getExperimentId(), taskContext.getProcessId(), jobModel
@@ -390,7 +388,13 @@ public class EmailBasedMonitor implements JobMonitor, Runnable{
                 taskStatus.setReason("Job monitoring completed with final state: " + TaskState.COMPLETED.name());
                 taskContext.setTaskStatus(taskStatus);
                 GFacUtils.saveAndPublishTaskStatus(taskContext);
-		        GFacThreadPoolExecutor.getCachedThreadPool().execute(new GFacWorker(taskContext.getParentProcessContext()));
+                if (parentProcessContext.isCancel()) {
+                    ProcessStatus processStatus = new ProcessStatus(ProcessState.CANCELLING);
+                    processStatus.setReason("Process has been cancelled");
+                    parentProcessContext.setProcessStatus(processStatus);
+                    GFacUtils.saveAndPublishProcessStatus(parentProcessContext);
+                }
+		        GFacThreadPoolExecutor.getCachedThreadPool().execute(new GFacWorker(parentProcessContext));
 	        } catch (GFacException e) {
 		        log.info("[EJM]: Error while running output tasks", e);
 	        }


[07/42] airavata git commit: Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/airavata

Posted by sh...@apache.org.
Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/airavata


Project: http://git-wip-us.apache.org/repos/asf/airavata/repo
Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/f9b0d2ed
Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/f9b0d2ed
Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/f9b0d2ed

Branch: refs/heads/develop
Commit: f9b0d2ed61f80b26fd78fddc138188ebc118c939
Parents: 7121dd7 7523c1e
Author: Chathuri Wimalasena <ch...@apache.org>
Authored: Mon Jan 4 14:44:53 2016 -0500
Committer: Chathuri Wimalasena <ch...@apache.org>
Committed: Mon Jan 4 14:44:53 2016 -0500

----------------------------------------------------------------------
 .../gfac/core/cluster/JobSubmissionOutput.java  |  2 +-
 .../impl/task/DefaultJobSubmissionTask.java     | 52 ++++++++++++++------
 2 files changed, 39 insertions(+), 15 deletions(-)
----------------------------------------------------------------------



[14/42] airavata git commit: Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/airavata

Posted by sh...@apache.org.
Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/airavata


Project: http://git-wip-us.apache.org/repos/asf/airavata/repo
Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/88515820
Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/88515820
Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/88515820

Branch: refs/heads/develop
Commit: 88515820221414173461a7b7ae3207afe3a9a621
Parents: fde02b8 bedf91c
Author: scnakandala <su...@gmail.com>
Authored: Mon Jan 4 17:10:24 2016 -0500
Committer: scnakandala <su...@gmail.com>
Committed: Mon Jan 4 17:10:24 2016 -0500

----------------------------------------------------------------------
 .../server/handler/AiravataServerHandler.java   | 25 +++++++++++++++++++-
 .../impl/task/DefaultJobSubmissionTask.java     | 15 +++++++-----
 .../src/main/resources/expcatalog-derby.sql     | 12 +++++-----
 .../src/main/resources/expcatalog-mysql.sql     | 14 +++++------
 4 files changed, 46 insertions(+), 20 deletions(-)
----------------------------------------------------------------------



[24/42] airavata git commit: Fixed AIRAVATA-1888

Posted by sh...@apache.org.
Fixed AIRAVATA-1888


Project: http://git-wip-us.apache.org/repos/asf/airavata/repo
Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/5ce750d5
Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/5ce750d5
Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/5ce750d5

Branch: refs/heads/develop
Commit: 5ce750d53bc4e8def467b9024c491a463e62203d
Parents: fc3f979
Author: Shameera Rathnayaka <sh...@gmail.com>
Authored: Wed Jan 6 14:15:35 2016 -0500
Committer: Shameera Rathnayaka <sh...@gmail.com>
Committed: Wed Jan 6 14:15:35 2016 -0500

----------------------------------------------------------------------
 .../airavata/gfac/impl/GFacEngineImpl.java      |  3 +-
 .../apache/airavata/gfac/impl/GFacWorker.java   | 32 +++-----------
 .../airavata/gfac/server/GfacServerHandler.java | 44 +++++++++++++-------
 3 files changed, 38 insertions(+), 41 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/5ce750d5/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/GFacEngineImpl.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/GFacEngineImpl.java b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/GFacEngineImpl.java
index 9e6a522..dd10c12 100644
--- a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/GFacEngineImpl.java
+++ b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/GFacEngineImpl.java
@@ -509,8 +509,9 @@ public class GFacEngineImpl implements GFacEngine {
         processContext.setTaskExecutionOrder(taskExecutionOrder);
         Map<String, TaskModel> taskMap = processContext.getTaskMap();
         String recoverTaskId = null;
+        TaskModel taskModel = null;
         for (String taskId : taskExecutionOrder) {
-            TaskModel taskModel = taskMap.get(taskId);
+            taskModel = taskMap.get(taskId);
             TaskState state = taskModel.getTaskStatus().getState();
             if (state == TaskState.CREATED || state == TaskState.EXECUTING) {
                 recoverTaskId = taskId;

http://git-wip-us.apache.org/repos/asf/airavata/blob/5ce750d5/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/GFacWorker.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/GFacWorker.java b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/GFacWorker.java
index c701ed5..e0664a5 100644
--- a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/GFacWorker.java
+++ b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/GFacWorker.java
@@ -78,14 +78,6 @@ public class GFacWorker implements Runnable {
 	@Override
 	public void run() {
 		try {
-			if (processContext.isInterrupted()) {
-				GFacUtils.handleProcessInterrupt(processContext);
-				if (processContext.isCancel()) {
-					sendAck();
-					Factory.getGfacContext().removeProcess(processContext.getProcessId());
-				}
-				return;
-			}
 			ProcessState processState = processContext.getProcessStatus().getState();
 			switch (processState) {
 				case CREATED:
@@ -206,7 +198,13 @@ public class GFacWorker implements Runnable {
     }
 
 	private void executeProcess() throws GFacException {
+		// checkpoint
+		if (processContext.isInterrupted()) {
+			return;
+		}
+
 		engine.executeProcess(processContext);
+		// checkpoint
 		if (processContext.isInterrupted()) {
 			return;
 		}
@@ -216,24 +214,6 @@ public class GFacWorker implements Runnable {
         }
 	}
 
-//	private void monitorProcess() throws GFacException {
-//		try {
-//			JobMonitor monitorService = Factory.getMonitorService(processContext.getMonitorMode());
-//			if (monitorService != null) {
-//				monitorService.monitor(processContext.getJobModel().getJobId(), processContext);
-//                ProcessStatus status = new ProcessStatus(ProcessState.MONITORING);
-//                status.setTimeOfStateChange(AiravataUtils.getCurrentTimestamp().getTime());
-//                processContext.setProcessStatus(status);
-//				GFacUtils.saveAndPublishProcessStatus(processContext);
-//			} else {
-//				// we directly invoke outflow
-//				continueTaskExecution();
-//			}
-//		} catch (AiravataException e) {
-//			throw new GFacException("Error while retrieving moniot service", e);
-//		}
-//	}
-
 	private void sendAck() {
 		// this ensure, gfac doesn't send ack more than once for a process. which cause to remove gfac rabbitmq consumer from rabbitmq server.
 		if (!processContext.isAcknowledge()) {

http://git-wip-us.apache.org/repos/asf/airavata/blob/5ce750d5/modules/gfac/gfac-service/src/main/java/org/apache/airavata/gfac/server/GfacServerHandler.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-service/src/main/java/org/apache/airavata/gfac/server/GfacServerHandler.java b/modules/gfac/gfac-service/src/main/java/org/apache/airavata/gfac/server/GfacServerHandler.java
index c1c08a5..10da052 100644
--- a/modules/gfac/gfac-service/src/main/java/org/apache/airavata/gfac/server/GfacServerHandler.java
+++ b/modules/gfac/gfac-service/src/main/java/org/apache/airavata/gfac/server/GfacServerHandler.java
@@ -28,10 +28,8 @@ import org.apache.airavata.common.utils.ServerSettings;
 import org.apache.airavata.common.utils.ThriftUtils;
 import org.apache.airavata.common.utils.ZkConstants;
 import org.apache.airavata.common.utils.listener.AbstractActivityListener;
-import org.apache.airavata.gfac.core.GFacConstants;
 import org.apache.airavata.gfac.core.GFacException;
 import org.apache.airavata.gfac.core.GFacUtils;
-import org.apache.airavata.gfac.core.watcher.CancelRequestWatcher;
 import org.apache.airavata.gfac.cpi.GfacService;
 import org.apache.airavata.gfac.cpi.gfac_cpiConstants;
 import org.apache.airavata.gfac.impl.Factory;
@@ -250,7 +248,13 @@ public class GfacServerHandler implements GfacService.Iface {
 	                publishProcessStatus(event, status);
                     try {
 	                    createProcessZKNode(curatorClient, gfacServerName, event, message);
-	                    submitProcess(event.getProcessId(), event.getGatewayId(), event.getTokenId());
+                        boolean isCancel = setCancelWatcher(curatorClient, event.getExperimentId(), event.getProcessId());
+                        submitProcess(event.getProcessId(), event.getGatewayId(), event.getTokenId());
+                        if (isCancel) {
+                            // Need to trigger process cancel watcher, wait till process recover and then set zk data.
+                            Thread.sleep(10000);
+                            setCancelData(event.getExperimentId());
+                        }
                     } catch (Exception e) {
                         log.error(e.getMessage(), e);
                         rabbitMQProcessLaunchConsumer.sendAck(message.getDeliveryTag());
@@ -262,7 +266,9 @@ public class GfacServerHandler implements GfacService.Iface {
                 } catch (AiravataException e) {
 	                log.error("Error while publishing process status", e);
                 }
-            } else if (message.getType().equals(MessageType.TERMINATEPROCESS)) {
+            }
+            // TODO - Now there is no process termination type messages, use zookeeper instead of rabbitmq to do that. it is safe to remove this else part.
+            else if (message.getType().equals(MessageType.TERMINATEPROCESS)) {
                 ProcessTerminateEvent event = new ProcessTerminateEvent();
                 TBase messageEvent = message.getEvent();
                 try {
@@ -289,7 +295,26 @@ public class GfacServerHandler implements GfacService.Iface {
         }
     }
 
-	private void publishProcessStatus(ProcessSubmitEvent event, ProcessStatus status) throws AiravataException {
+    private void setCancelData(String experimentId) throws Exception {
+        String expCancelNodePath = ZKPaths.makePath(ZKPaths.makePath(ZkConstants.ZOOKEEPER_EXPERIMENT_NODE,
+                experimentId), ZkConstants.ZOOKEEPER_CANCEL_LISTENER_NODE);
+        curatorClient.setData().withVersion(-1).forPath(expCancelNodePath, ZkConstants.ZOOKEEPER_CANCEL_REQEUST
+                .getBytes());
+    }
+
+    private boolean setCancelWatcher(CuratorFramework curatorClient,
+                                     String experimentId,
+                                     String processId) throws Exception {
+
+        String experimentNodePath = GFacUtils.getExperimentNodePath(experimentId);
+        // create /experiments/{experimentId}/cancel node and set watcher for data changes
+        String experimentCancelNode = ZKPaths.makePath(experimentNodePath, ZkConstants.ZOOKEEPER_CANCEL_LISTENER_NODE);
+        byte[] bytes = curatorClient.getData().usingWatcher(Factory.getCancelRequestWatcher(experimentId, processId)).forPath(experimentCancelNode);
+        return bytes != null && new String(bytes).equalsIgnoreCase(ZkConstants.ZOOKEEPER_CANCEL_REQEUST);
+
+    }
+
+    private void publishProcessStatus(ProcessSubmitEvent event, ProcessStatus status) throws AiravataException {
 		ProcessIdentifier identifier = new ProcessIdentifier(event.getProcessId(),
 				event.getExperimentId(),
 				event.getGatewayId());
@@ -324,15 +349,6 @@ public class GfacServerHandler implements GfacService.Iface {
 		ZKPaths.mkdirs(curatorClient.getZookeeperClient().getZooKeeper(), tokenNodePath);
 		curatorClient.setData().withVersion(-1).forPath(tokenNodePath, token.getBytes());
 
-		// create /experiments/{experimentId}/{processId}/cancelListener node and set watcher for data changes
-/*		String cancelListenerNode = ZKPaths.makePath(zkProcessNodePath, GFacConstants.ZOOKEEPER_CANCEL_LISTENER_NODE);
-		ZKPaths.mkdirs(curatorClient.getZookeeperClient().getZooKeeper(), cancelListenerNode);
-		curatorClient.getData().usingWatcher(Factory.getCancelRequestWatcher()).forPath(cancelListenerNode);*/
-
-		// create /experiments/{experimentId}/cancel node and set watcher for data changes
-		String experimentCancelNode = ZKPaths.makePath(experimentNodePath, ZkConstants.ZOOKEEPER_CANCEL_LISTENER_NODE);
-		curatorClient.getData().usingWatcher(Factory.getCancelRequestWatcher(experimentId, processId)).forPath (experimentCancelNode);
-
 	}
 
 	private void updateDeliveryTag(CuratorFramework curatorClient, String gfacServerName, ProcessSubmitEvent event,


[39/42] airavata git commit: adding stdout to error message

Posted by sh...@apache.org.
adding stdout to error message


Project: http://git-wip-us.apache.org/repos/asf/airavata/repo
Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/7c935e75
Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/7c935e75
Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/7c935e75

Branch: refs/heads/develop
Commit: 7c935e75d9c6e69665ff3229d62f03a8c6b49d8d
Parents: e43b6d9
Author: Chathuri Wimalasena <ch...@apache.org>
Authored: Wed Jan 13 10:52:00 2016 -0500
Committer: Chathuri Wimalasena <ch...@apache.org>
Committed: Wed Jan 13 10:52:00 2016 -0500

----------------------------------------------------------------------
 .../org/apache/airavata/gfac/impl/GFacEngineImpl.java   | 12 ++++++------
 .../gfac/impl/task/DefaultJobSubmissionTask.java        |  6 +++---
 2 files changed, 9 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/7c935e75/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/GFacEngineImpl.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/GFacEngineImpl.java b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/GFacEngineImpl.java
index 4339869..caddbb2 100644
--- a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/GFacEngineImpl.java
+++ b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/GFacEngineImpl.java
@@ -524,21 +524,21 @@ public class GFacEngineImpl implements GFacEngine {
         return false;
     }
 
-    private void checkFailures(TaskContext taskContext, TaskStatus taskStatus, Task dMoveTask) throws GFacException {
+    private void checkFailures(TaskContext taskContext, TaskStatus taskStatus, Task task) throws GFacException {
         if (taskStatus.getState() == TaskState.FAILED) {
-            log.error("expId: {}, processId: {}, taskId: {} type: {},:- Input statging failed, " +
+            log.error("expId: {}, processId: {}, taskId: {} type: {},:- " + task.getType().toString() + " failed, " +
                     "reason:" + " {}", taskContext.getParentProcessContext().getExperimentId(), taskContext
-                    .getParentProcessContext().getProcessId(), taskContext.getTaskId(), dMoveTask.getType
+                    .getParentProcessContext().getProcessId(), taskContext.getTaskId(), task.getType
                     ().name(), taskStatus.getReason());
             String errorMsg = new StringBuilder("expId: ").append(taskContext.getParentProcessContext().getExperimentId()).append(", processId: ")
                     .append(taskContext.getParentProcessContext().getProcessId()).append(", taskId: ").append(taskContext.getTaskId())
-                    .append(", type: ").append(taskContext.getTaskType().name()).append(" :- Input staging failed. Reason: ")
+                    .append(", type: ").append(taskContext.getTaskType().name()).append(" :- " + task.getType().toString() + " failed. Reason: ")
                     .append(taskStatus.getReason()).toString();
             ErrorModel errorModel = new ErrorModel();
-            errorModel.setUserFriendlyMessage("Error while staging input data");
+            errorModel.setUserFriendlyMessage("Error while executing " + task.getType() + " task" );
             errorModel.setActualErrorMessage(errorMsg);
             GFacUtils.saveTaskError(taskContext, errorModel);
-            throw new GFacException("Error while staging input data");
+            throw new GFacException("Error while executing " + task.getType() + " task");
         }
     }
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/7c935e75/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/DefaultJobSubmissionTask.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/DefaultJobSubmissionTask.java b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/DefaultJobSubmissionTask.java
index ebdda13..81b5f91 100644
--- a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/DefaultJobSubmissionTask.java
+++ b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/DefaultJobSubmissionTask.java
@@ -106,12 +106,12 @@ public class DefaultJobSubmissionTask implements JobSubmissionTask {
 							msg = "expId:" + processContext.getProcessModel().getExperimentId() + ", processId:" +
 									processContext.getProcessId() + ", taskId: " + taskContext.getTaskId() +
 									" return non zero exit code:" + exitCode + "  for JobName:" + jobModel.getJobName() +
-									", Hence changing job state to Failed";
+									", with failure reason :  " + jobSubmissionOutput.getStdOut() +  " Hence changing job state to Failed." ;
 						} else {
 							msg = "expId:" + processContext.getProcessModel().getExperimentId() + ", processId:" +
 									processContext.getProcessId() + ", taskId: " + taskContext.getTaskId() +
 									" doesn't  return valid job submission exit code for JobName:" + jobModel.getJobName() +
-									", Hence changing job state to Failed";
+                                    ", with failure reason :  " + jobSubmissionOutput.getStdOut() +  " Hence changing job state to Failed." ;
 						}
 						log.error(msg);
 						ErrorModel errorModel = new ErrorModel();
@@ -121,7 +121,7 @@ public class DefaultJobSubmissionTask implements JobSubmissionTask {
 						GFacUtils.saveProcessError(processContext, errorModel);
 						GFacUtils.saveTaskError(taskContext, errorModel);
 						taskStatus.setState(TaskState.FAILED);
-						taskStatus.setReason("Job submission command exit with non zero exit code");
+						taskStatus.setReason(msg);
 						taskStatus.setTimeOfStateChange(AiravataUtils.getCurrentTimestamp().getTime());
 						taskContext.setTaskStatus(taskStatus);
 					}


[06/42] airavata git commit: when checking user exists should check with user's gateway id

Posted by sh...@apache.org.
when checking user exists should check with user's gateway id


Project: http://git-wip-us.apache.org/repos/asf/airavata/repo
Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/f7150269
Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/f7150269
Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/f7150269

Branch: refs/heads/develop
Commit: f715026910e3ce1bbf419ecf834a2e3c81678c20
Parents: 6efba7c
Author: scnakandala <su...@gmail.com>
Authored: Mon Jan 4 14:16:30 2016 -0500
Committer: scnakandala <su...@gmail.com>
Committed: Mon Jan 4 14:43:26 2016 -0500

----------------------------------------------------------------------

----------------------------------------------------------------------



[11/42] airavata git commit: Fixed jobId null issue

Posted by sh...@apache.org.
Fixed jobId null issue


Project: http://git-wip-us.apache.org/repos/asf/airavata/repo
Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/4409f996
Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/4409f996
Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/4409f996

Branch: refs/heads/develop
Commit: 4409f99681d2a8bfd5ec71d8c48f2fb4d9f6856c
Parents: 7523c1e
Author: Shameera Rathnayaka <sh...@gmail.com>
Authored: Mon Jan 4 16:00:35 2016 -0500
Committer: Shameera Rathnayaka <sh...@gmail.com>
Committed: Mon Jan 4 16:00:35 2016 -0500

----------------------------------------------------------------------
 .../gfac/impl/task/DefaultJobSubmissionTask.java     | 15 +++++++++------
 1 file changed, 9 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/4409f996/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/DefaultJobSubmissionTask.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/DefaultJobSubmissionTask.java b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/DefaultJobSubmissionTask.java
index 7629f67..68d3bac 100644
--- a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/DefaultJobSubmissionTask.java
+++ b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/DefaultJobSubmissionTask.java
@@ -46,7 +46,8 @@ import java.io.IOException;
 import java.util.Map;
 
 public class DefaultJobSubmissionTask implements JobSubmissionTask {
-    private static final Logger log = LoggerFactory.getLogger(DefaultJobSubmissionTask.class);
+	private static final Logger log = LoggerFactory.getLogger(DefaultJobSubmissionTask.class);
+	public static final String DEFAULT_JOB_ID = "DEFAULT_JOB_ID";
 	private static int waitForProcessIdmillis = 5000;
 	private static int pauseTimeInSec = waitForProcessIdmillis / 1000;
 
@@ -80,8 +81,10 @@ public class DefaultJobSubmissionTask implements JobSubmissionTask {
 				jobModel.setExitCode(exitCode);
 				jobModel.setStdErr(jobSubmissionOutput.getStdErr());
 				jobModel.setStdOut(jobSubmissionOutput.getStdOut());
-				GFacUtils.saveJobModel(processContext, jobModel);
-				if (exitCode != 0) {
+				String jobId = jobSubmissionOutput.getJobId();
+				if (exitCode != 0 && jobId == null) {
+					jobModel.setJobId(DEFAULT_JOB_ID);
+					GFacUtils.saveJobModel(processContext, jobModel);
 					String msg;
 					if (exitCode != Integer.MIN_VALUE) {
 						msg = "expId:" + processContext.getProcessModel().getExperimentId() + ", processId:" +
@@ -98,7 +101,6 @@ public class DefaultJobSubmissionTask implements JobSubmissionTask {
 					ErrorModel errorModel = new ErrorModel();
 					errorModel.setUserFriendlyMessage(msg);
 					errorModel.setActualErrorMessage(msg);
-					GFacUtils.saveJobModel(processContext, jobModel);
 					GFacUtils.saveExperimentError(processContext, errorModel);
 					GFacUtils.saveProcessError(processContext, errorModel);
 					GFacUtils.saveTaskError(taskContext, errorModel);
@@ -113,7 +115,6 @@ public class DefaultJobSubmissionTask implements JobSubmissionTask {
 					}
 					return taskStatus;
 				}
-			    String jobId = jobSubmissionOutput.getJobId();
 			    if (jobId != null && !jobId.isEmpty()) {
 				    jobModel.setJobId(jobId);
 				    GFacUtils.saveJobModel(processContext, jobModel);
@@ -158,7 +159,9 @@ public class DefaultJobSubmissionTask implements JobSubmissionTask {
 			    }
 
 			    if (jobId == null || jobId.isEmpty()) {
-				    String msg = "expId:" + processContext.getProcessModel().getExperimentId() + " Couldn't find " +
+					jobModel.setJobId(DEFAULT_JOB_ID);
+					GFacUtils.saveJobModel(processContext, jobModel);
+					String msg = "expId:" + processContext.getProcessModel().getExperimentId() + " Couldn't find " +
 						    "remote jobId for JobName:" + jobModel.getJobName() + ", both submit and verify steps " +
 						    "doesn't return a valid JobId. " + "Hence changing experiment state to Failed";
 				    log.error(msg);


[37/42] airavata git commit: relative paths does not work for lonestart

Posted by sh...@apache.org.
relative paths does not work for lonestart


Project: http://git-wip-us.apache.org/repos/asf/airavata/repo
Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/da4ba5b5
Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/da4ba5b5
Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/da4ba5b5

Branch: refs/heads/develop
Commit: da4ba5b54778fbea4f250e9ab21330ea4e1856d1
Parents: 494857a
Author: Chathuri Wimalasena <ch...@apache.org>
Authored: Mon Jan 11 15:18:14 2016 -0500
Committer: Chathuri Wimalasena <ch...@apache.org>
Committed: Mon Jan 11 15:18:14 2016 -0500

----------------------------------------------------------------------
 .../src/main/java/org/apache/airavata/gfac/core/GFacUtils.java   | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/da4ba5b5/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/GFacUtils.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/GFacUtils.java b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/GFacUtils.java
index 0a2d207..a021e97 100644
--- a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/GFacUtils.java
+++ b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/GFacUtils.java
@@ -486,9 +486,9 @@ public class GFacUtils {
                 if (inputDataObjectType.getValue() != null
                         && !inputDataObjectType.getValue().equals("")) {
                     if (inputDataObjectType.getType() == DataType.URI) {
-                        // set only the relative path
+                        // set only the relative path : relative path does not work with lonestar
                         String filePath = inputDataObjectType.getValue();
-                        filePath = filePath.substring(filePath.lastIndexOf(File.separatorChar) + 1, filePath.length());
+//                        filePath = filePath.substring(filePath.lastIndexOf(File.separatorChar) + 1, filePath.length());
                         inputValues.add(filePath);
                     } else {
                         inputValues.add(inputDataObjectType.getValue());


[27/42] airavata git commit: Merge remote-tracking branch 'origin/master'

Posted by sh...@apache.org.
Merge remote-tracking branch 'origin/master'


Project: http://git-wip-us.apache.org/repos/asf/airavata/repo
Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/d959615e
Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/d959615e
Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/d959615e

Branch: refs/heads/develop
Commit: d959615ed5e3e357acb54c27b9647175b3584c27
Parents: c22a73d 98fc3f5
Author: scnakandala <su...@gmail.com>
Authored: Wed Jan 6 22:53:00 2016 -0500
Committer: scnakandala <su...@gmail.com>
Committed: Wed Jan 6 22:53:00 2016 -0500

----------------------------------------------------------------------
 .../airavata/gfac/impl/GFacEngineImpl.java      |  3 +-
 .../apache/airavata/gfac/impl/GFacWorker.java   | 32 +++-----------
 .../airavata/gfac/server/GfacServerHandler.java | 44 +++++++++++++-------
 3 files changed, 38 insertions(+), 41 deletions(-)
----------------------------------------------------------------------



[35/42] airavata git commit: Fixed email match issue with lonestar resource

Posted by sh...@apache.org.
Fixed email match issue with lonestar resource


Project: http://git-wip-us.apache.org/repos/asf/airavata/repo
Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/cae7925b
Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/cae7925b
Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/cae7925b

Branch: refs/heads/develop
Commit: cae7925b5d63e0abde7cb11b43edd5debf1701fd
Parents: c4861b0
Author: Shameera Rathnayaka <sh...@gmail.com>
Authored: Mon Jan 11 11:05:17 2016 -0500
Committer: Shameera Rathnayaka <sh...@gmail.com>
Committed: Mon Jan 11 11:07:14 2016 -0500

----------------------------------------------------------------------
 .../airavata/gfac/monitor/email/EmailBasedMonitor.java       | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/cae7925b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/monitor/email/EmailBasedMonitor.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/monitor/email/EmailBasedMonitor.java b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/monitor/email/EmailBasedMonitor.java
index c7a6875..9e802ae 100644
--- a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/monitor/email/EmailBasedMonitor.java
+++ b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/monitor/email/EmailBasedMonitor.java
@@ -170,10 +170,10 @@ public class EmailBasedMonitor implements JobMonitor, Runnable{
     private ResourceJobManagerType getJobMonitorType(String addressStr) throws AiravataException {
 //        System.out.println("*********** address ******** : " + addressStr);
 	    for (Map.Entry<String, ResourceJobManagerType> addressEntry : addressMap.entrySet()) {
-		    if (addressEntry.getKey().matches(addressStr)) {
-			    return addressEntry.getValue();
-		    }
-	    }
+            if (addressStr.contains(addressEntry.getKey())) {
+                return addressEntry.getValue();
+            }
+        }
 	    throw new AiravataException("[EJM]: Couldn't identify Resource job manager type from address " + addressStr);
     }
 


[21/42] airavata git commit: adding experimentDataDir to user configuration data

Posted by sh...@apache.org.
adding experimentDataDir to user configuration data


Project: http://git-wip-us.apache.org/repos/asf/airavata/repo
Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/bd775410
Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/bd775410
Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/bd775410

Branch: refs/heads/develop
Commit: bd7754101a2ffe638caf9be0b24d936713e829a9
Parents: 8851582
Author: scnakandala <su...@gmail.com>
Authored: Wed Jan 6 11:34:29 2016 -0500
Committer: scnakandala <su...@gmail.com>
Committed: Wed Jan 6 11:34:29 2016 -0500

----------------------------------------------------------------------
 .../java/org/apache/airavata/api/Airavata.java  |   2 +-
 .../lib/airavata/experiment_model_types.cpp     |  22 ++++
 .../lib/airavata/experiment_model_types.h       |  12 +-
 .../lib/Airavata/Model/Experiment/Types.php     |  23 ++++
 .../apache/airavata/model/experiment/ttypes.py  |  15 ++-
 .../org/apache/airavata/model/Workflow.java     |   2 +-
 .../ApplicationDeploymentDescription.java       |   2 +-
 .../appdeployment/ApplicationModule.java        |   2 +-
 .../appcatalog/appdeployment/CommandObject.java |   2 +-
 .../appcatalog/appdeployment/SetEnvPaths.java   |   2 +-
 .../ApplicationInterfaceDescription.java        |   2 +-
 .../appcatalog/computeresource/BatchQueue.java  |   2 +-
 .../computeresource/CloudJobSubmission.java     |   2 +-
 .../ComputeResourceDescription.java             |   2 +-
 .../computeresource/GlobusJobSubmission.java    |   2 +-
 .../computeresource/JobSubmissionInterface.java |   2 +-
 .../computeresource/LOCALSubmission.java        |   2 +-
 .../computeresource/ResourceJobManager.java     |   2 +-
 .../computeresource/SSHJobSubmission.java       |   2 +-
 .../computeresource/UnicoreJobSubmission.java   |   2 +-
 .../ComputeResourcePreference.java              |   2 +-
 .../gatewayprofile/GatewayResourceProfile.java  |   2 +-
 .../gatewayprofile/StoragePreference.java       |   2 +-
 .../StorageResourceDescription.java             |   2 +-
 .../application/io/InputDataObjectType.java     |   2 +-
 .../application/io/OutputDataObjectType.java    |   2 +-
 .../airavata/model/commons/ErrorModel.java      |   2 +-
 .../model/commons/ValidationResults.java        |   2 +-
 .../airavata/model/commons/ValidatorResult.java |   2 +-
 .../data/movement/DataMovementInterface.java    |   2 +-
 .../data/movement/GridFTPDataMovement.java      |   2 +-
 .../model/data/movement/LOCALDataMovement.java  |   2 +-
 .../model/data/movement/SCPDataMovement.java    |   2 +-
 .../data/movement/UnicoreDataMovement.java      |   2 +-
 .../data/resource/DataReplicaLocationModel.java |   2 +-
 .../model/data/resource/DataResourceModel.java  |   2 +-
 .../model/error/AiravataClientException.java    |   2 +-
 .../model/error/AiravataSystemException.java    |   2 +-
 .../model/error/AuthenticationException.java    |   2 +-
 .../model/error/AuthorizationException.java     |   2 +-
 .../error/ExperimentNotFoundException.java      |   2 +-
 .../model/error/InvalidRequestException.java    |   2 +-
 .../model/error/LaunchValidationException.java  |   2 +-
 .../model/error/ProjectNotFoundException.java   |   2 +-
 .../airavata/model/error/TimedOutException.java |   2 +-
 .../airavata/model/error/ValidationResults.java |   2 +-
 .../airavata/model/error/ValidatorResult.java   |   2 +-
 .../model/experiment/ExperimentModel.java       |   2 +-
 .../model/experiment/ExperimentStatistics.java  |   2 +-
 .../experiment/ExperimentSummaryModel.java      |   2 +-
 .../experiment/UserConfigurationDataModel.java  | 116 ++++++++++++++++++-
 .../org/apache/airavata/model/job/JobModel.java |   2 +-
 .../event/ExperimentStatusChangeEvent.java      |   2 +-
 .../model/messaging/event/JobIdentifier.java    |   2 +-
 .../messaging/event/JobStatusChangeEvent.java   |   2 +-
 .../event/JobStatusChangeRequestEvent.java      |   2 +-
 .../airavata/model/messaging/event/Message.java |   2 +-
 .../messaging/event/ProcessIdentifier.java      |   2 +-
 .../event/ProcessStatusChangeEvent.java         |   2 +-
 .../event/ProcessStatusChangeRequestEvent.java  |   2 +-
 .../messaging/event/ProcessSubmitEvent.java     |   2 +-
 .../messaging/event/ProcessTerminateEvent.java  |   2 +-
 .../model/messaging/event/TaskIdentifier.java   |   2 +-
 .../messaging/event/TaskOutputChangeEvent.java  |   2 +-
 .../messaging/event/TaskStatusChangeEvent.java  |   2 +-
 .../event/TaskStatusChangeRequestEvent.java     |   2 +-
 .../airavata/model/process/ProcessModel.java    |   2 +-
 .../ComputationalResourceSchedulingModel.java   |   2 +-
 .../airavata/model/security/AuthzToken.java     |   2 +-
 .../airavata/model/status/ExperimentStatus.java |   2 +-
 .../apache/airavata/model/status/JobStatus.java |   2 +-
 .../airavata/model/status/ProcessStatus.java    |   2 +-
 .../airavata/model/status/TaskStatus.java       |   2 +-
 .../model/task/DataStagingTaskModel.java        |   2 +-
 .../model/task/EnvironmentSetupTaskModel.java   |   2 +-
 .../model/task/JobSubmissionTaskModel.java      |   2 +-
 .../airavata/model/task/MonitorTaskModel.java   |   2 +-
 .../apache/airavata/model/task/TaskModel.java   |   2 +-
 .../airavata/model/workspace/Gateway.java       |   2 +-
 .../apache/airavata/model/workspace/Group.java  |   2 +-
 .../airavata/model/workspace/Project.java       |   2 +-
 .../apache/airavata/model/workspace/User.java   |   2 +-
 .../catalog/impl/ExperimentRegistry.java        |   2 +
 .../catalog/model/UserConfigurationData.java    |  11 ++
 .../UserConfigurationDataResource.java          |  10 ++
 .../experiment/catalog/resources/Utils.java     |   1 +
 .../utils/ThriftDataModelConversion.java        |   1 +
 .../src/main/resources/expcatalog-derby.sql     |   1 +
 .../src/main/resources/expcatalog-mysql.sql     |   1 +
 .../experiment_model.thrift                     |   1 +
 90 files changed, 285 insertions(+), 85 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/bd775410/airavata-api/airavata-api-stubs/src/main/java/org/apache/airavata/api/Airavata.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-api-stubs/src/main/java/org/apache/airavata/api/Airavata.java b/airavata-api/airavata-api-stubs/src/main/java/org/apache/airavata/api/Airavata.java
index 816a39f..99b48b1 100644
--- a/airavata-api/airavata-api-stubs/src/main/java/org/apache/airavata/api/Airavata.java
+++ b/airavata-api/airavata-api-stubs/src/main/java/org/apache/airavata/api/Airavata.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2015-12-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-06")
 public class Airavata {
 
   public interface Iface {

http://git-wip-us.apache.org/repos/asf/airavata/blob/bd775410/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/experiment_model_types.cpp
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/experiment_model_types.cpp b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/experiment_model_types.cpp
index 1a756ac..f27b08b 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/experiment_model_types.cpp
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/experiment_model_types.cpp
@@ -103,6 +103,11 @@ void UserConfigurationDataModel::__set_storageId(const std::string& val) {
 __isset.storageId = true;
 }
 
+void UserConfigurationDataModel::__set_experimentDataDir(const std::string& val) {
+  this->experimentDataDir = val;
+__isset.experimentDataDir = true;
+}
+
 uint32_t UserConfigurationDataModel::read(::apache::thrift::protocol::TProtocol* iprot) {
 
   apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
@@ -190,6 +195,14 @@ uint32_t UserConfigurationDataModel::read(::apache::thrift::protocol::TProtocol*
           xfer += iprot->skip(ftype);
         }
         break;
+      case 9:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->experimentDataDir);
+          this->__isset.experimentDataDir = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
       default:
         xfer += iprot->skip(ftype);
         break;
@@ -249,6 +262,11 @@ uint32_t UserConfigurationDataModel::write(::apache::thrift::protocol::TProtocol
     xfer += oprot->writeString(this->storageId);
     xfer += oprot->writeFieldEnd();
   }
+  if (this->__isset.experimentDataDir) {
+    xfer += oprot->writeFieldBegin("experimentDataDir", ::apache::thrift::protocol::T_STRING, 9);
+    xfer += oprot->writeString(this->experimentDataDir);
+    xfer += oprot->writeFieldEnd();
+  }
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
   return xfer;
@@ -264,6 +282,7 @@ void swap(UserConfigurationDataModel &a, UserConfigurationDataModel &b) {
   swap(a.userDN, b.userDN);
   swap(a.generateCert, b.generateCert);
   swap(a.storageId, b.storageId);
+  swap(a.experimentDataDir, b.experimentDataDir);
   swap(a.__isset, b.__isset);
 }
 
@@ -276,6 +295,7 @@ UserConfigurationDataModel::UserConfigurationDataModel(const UserConfigurationDa
   userDN = other0.userDN;
   generateCert = other0.generateCert;
   storageId = other0.storageId;
+  experimentDataDir = other0.experimentDataDir;
   __isset = other0.__isset;
 }
 UserConfigurationDataModel& UserConfigurationDataModel::operator=(const UserConfigurationDataModel& other1) {
@@ -287,6 +307,7 @@ UserConfigurationDataModel& UserConfigurationDataModel::operator=(const UserConf
   userDN = other1.userDN;
   generateCert = other1.generateCert;
   storageId = other1.storageId;
+  experimentDataDir = other1.experimentDataDir;
   __isset = other1.__isset;
   return *this;
 }
@@ -301,6 +322,7 @@ void UserConfigurationDataModel::printTo(std::ostream& out) const {
   out << ", " << "userDN="; (__isset.userDN ? (out << to_string(userDN)) : (out << "<null>"));
   out << ", " << "generateCert="; (__isset.generateCert ? (out << to_string(generateCert)) : (out << "<null>"));
   out << ", " << "storageId="; (__isset.storageId ? (out << to_string(storageId)) : (out << "<null>"));
+  out << ", " << "experimentDataDir="; (__isset.experimentDataDir ? (out << to_string(experimentDataDir)) : (out << "<null>"));
   out << ")";
 }
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/bd775410/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/experiment_model_types.h
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/experiment_model_types.h b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/experiment_model_types.h
index 5b2763b..aaaf20b 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/experiment_model_types.h
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/experiment_model_types.h
@@ -73,13 +73,14 @@ class ExperimentSummaryModel;
 class ExperimentStatistics;
 
 typedef struct _UserConfigurationDataModel__isset {
-  _UserConfigurationDataModel__isset() : shareExperimentPublicly(true), computationalResourceScheduling(false), throttleResources(true), userDN(false), generateCert(true), storageId(false) {}
+  _UserConfigurationDataModel__isset() : shareExperimentPublicly(true), computationalResourceScheduling(false), throttleResources(true), userDN(false), generateCert(true), storageId(false), experimentDataDir(false) {}
   bool shareExperimentPublicly :1;
   bool computationalResourceScheduling :1;
   bool throttleResources :1;
   bool userDN :1;
   bool generateCert :1;
   bool storageId :1;
+  bool experimentDataDir :1;
 } _UserConfigurationDataModel__isset;
 
 class UserConfigurationDataModel {
@@ -87,7 +88,7 @@ class UserConfigurationDataModel {
 
   UserConfigurationDataModel(const UserConfigurationDataModel&);
   UserConfigurationDataModel& operator=(const UserConfigurationDataModel&);
-  UserConfigurationDataModel() : airavataAutoSchedule(false), overrideManualScheduledParams(false), shareExperimentPublicly(false), throttleResources(false), userDN(), generateCert(false), storageId() {
+  UserConfigurationDataModel() : airavataAutoSchedule(false), overrideManualScheduledParams(false), shareExperimentPublicly(false), throttleResources(false), userDN(), generateCert(false), storageId(), experimentDataDir() {
   }
 
   virtual ~UserConfigurationDataModel() throw();
@@ -99,6 +100,7 @@ class UserConfigurationDataModel {
   std::string userDN;
   bool generateCert;
   std::string storageId;
+  std::string experimentDataDir;
 
   _UserConfigurationDataModel__isset __isset;
 
@@ -118,6 +120,8 @@ class UserConfigurationDataModel {
 
   void __set_storageId(const std::string& val);
 
+  void __set_experimentDataDir(const std::string& val);
+
   bool operator == (const UserConfigurationDataModel & rhs) const
   {
     if (!(airavataAutoSchedule == rhs.airavataAutoSchedule))
@@ -148,6 +152,10 @@ class UserConfigurationDataModel {
       return false;
     else if (__isset.storageId && !(storageId == rhs.storageId))
       return false;
+    if (__isset.experimentDataDir != rhs.__isset.experimentDataDir)
+      return false;
+    else if (__isset.experimentDataDir && !(experimentDataDir == rhs.experimentDataDir))
+      return false;
     return true;
   }
   bool operator != (const UserConfigurationDataModel &rhs) const {

http://git-wip-us.apache.org/repos/asf/airavata/blob/bd775410/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Experiment/Types.php
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Experiment/Types.php b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Experiment/Types.php
index fdca5bd..7180c44 100644
--- a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Experiment/Types.php
+++ b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Experiment/Types.php
@@ -85,6 +85,10 @@ class UserConfigurationDataModel {
    * @var string
    */
   public $storageId = null;
+  /**
+   * @var string
+   */
+  public $experimentDataDir = null;
 
   public function __construct($vals=null) {
     if (!isset(self::$_TSPEC)) {
@@ -122,6 +126,10 @@ class UserConfigurationDataModel {
           'var' => 'storageId',
           'type' => TType::STRING,
           ),
+        9 => array(
+          'var' => 'experimentDataDir',
+          'type' => TType::STRING,
+          ),
         );
     }
     if (is_array($vals)) {
@@ -149,6 +157,9 @@ class UserConfigurationDataModel {
       if (isset($vals['storageId'])) {
         $this->storageId = $vals['storageId'];
       }
+      if (isset($vals['experimentDataDir'])) {
+        $this->experimentDataDir = $vals['experimentDataDir'];
+      }
     }
   }
 
@@ -228,6 +239,13 @@ class UserConfigurationDataModel {
             $xfer += $input->skip($ftype);
           }
           break;
+        case 9:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->experimentDataDir);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
         default:
           $xfer += $input->skip($ftype);
           break;
@@ -284,6 +302,11 @@ class UserConfigurationDataModel {
       $xfer += $output->writeString($this->storageId);
       $xfer += $output->writeFieldEnd();
     }
+    if ($this->experimentDataDir !== null) {
+      $xfer += $output->writeFieldBegin('experimentDataDir', TType::STRING, 9);
+      $xfer += $output->writeString($this->experimentDataDir);
+      $xfer += $output->writeFieldEnd();
+    }
     $xfer += $output->writeFieldStop();
     $xfer += $output->writeStructEnd();
     return $xfer;

http://git-wip-us.apache.org/repos/asf/airavata/blob/bd775410/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/experiment/ttypes.py
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/experiment/ttypes.py b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/experiment/ttypes.py
index f8343de..158aa70 100644
--- a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/experiment/ttypes.py
+++ b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/experiment/ttypes.py
@@ -81,6 +81,7 @@ class UserConfigurationDataModel:
    - userDN
    - generateCert
    - storageId
+   - experimentDataDir
   """
 
   thrift_spec = (
@@ -93,9 +94,10 @@ class UserConfigurationDataModel:
     (6, TType.STRING, 'userDN', None, None, ), # 6
     (7, TType.BOOL, 'generateCert', None, False, ), # 7
     (8, TType.STRING, 'storageId', None, None, ), # 8
+    (9, TType.STRING, 'experimentDataDir', None, None, ), # 9
   )
 
-  def __init__(self, airavataAutoSchedule=thrift_spec[1][4], overrideManualScheduledParams=thrift_spec[2][4], shareExperimentPublicly=thrift_spec[3][4], computationalResourceScheduling=None, throttleResources=thrift_spec[5][4], userDN=None, generateCert=thrift_spec[7][4], storageId=None,):
+  def __init__(self, airavataAutoSchedule=thrift_spec[1][4], overrideManualScheduledParams=thrift_spec[2][4], shareExperimentPublicly=thrift_spec[3][4], computationalResourceScheduling=None, throttleResources=thrift_spec[5][4], userDN=None, generateCert=thrift_spec[7][4], storageId=None, experimentDataDir=None,):
     self.airavataAutoSchedule = airavataAutoSchedule
     self.overrideManualScheduledParams = overrideManualScheduledParams
     self.shareExperimentPublicly = shareExperimentPublicly
@@ -104,6 +106,7 @@ class UserConfigurationDataModel:
     self.userDN = userDN
     self.generateCert = generateCert
     self.storageId = storageId
+    self.experimentDataDir = experimentDataDir
 
   def read(self, iprot):
     if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
@@ -155,6 +158,11 @@ class UserConfigurationDataModel:
           self.storageId = iprot.readString()
         else:
           iprot.skip(ftype)
+      elif fid == 9:
+        if ftype == TType.STRING:
+          self.experimentDataDir = iprot.readString()
+        else:
+          iprot.skip(ftype)
       else:
         iprot.skip(ftype)
       iprot.readFieldEnd()
@@ -197,6 +205,10 @@ class UserConfigurationDataModel:
       oprot.writeFieldBegin('storageId', TType.STRING, 8)
       oprot.writeString(self.storageId)
       oprot.writeFieldEnd()
+    if self.experimentDataDir is not None:
+      oprot.writeFieldBegin('experimentDataDir', TType.STRING, 9)
+      oprot.writeString(self.experimentDataDir)
+      oprot.writeFieldEnd()
     oprot.writeFieldStop()
     oprot.writeStructEnd()
 
@@ -218,6 +230,7 @@ class UserConfigurationDataModel:
     value = (value * 31) ^ hash(self.userDN)
     value = (value * 31) ^ hash(self.generateCert)
     value = (value * 31) ^ hash(self.storageId)
+    value = (value * 31) ^ hash(self.experimentDataDir)
     return value
 
   def __repr__(self):

http://git-wip-us.apache.org/repos/asf/airavata/blob/bd775410/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/Workflow.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/Workflow.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/Workflow.java
index 43e34ce..d0b04cf 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/Workflow.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/Workflow.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2015-12-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-06")
 public class Workflow implements org.apache.thrift.TBase<Workflow, Workflow._Fields>, java.io.Serializable, Cloneable, Comparable<Workflow> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("Workflow");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/bd775410/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/appdeployment/ApplicationDeploymentDescription.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/appdeployment/ApplicationDeploymentDescription.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/appdeployment/ApplicationDeploymentDescription.java
index e07b157..9a99e3e 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/appdeployment/ApplicationDeploymentDescription.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/appdeployment/ApplicationDeploymentDescription.java
@@ -77,7 +77,7 @@ import org.slf4j.LoggerFactory;
  *  assigns to the environment variable "NAME" the value
  * 
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2015-12-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-06")
 public class ApplicationDeploymentDescription implements org.apache.thrift.TBase<ApplicationDeploymentDescription, ApplicationDeploymentDescription._Fields>, java.io.Serializable, Cloneable, Comparable<ApplicationDeploymentDescription> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("ApplicationDeploymentDescription");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/bd775410/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/appdeployment/ApplicationModule.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/appdeployment/ApplicationModule.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/appdeployment/ApplicationModule.java
index d070673..70a515d 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/appdeployment/ApplicationModule.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/appdeployment/ApplicationModule.java
@@ -66,7 +66,7 @@ import org.slf4j.LoggerFactory;
  *    Descriprion of the Module
  * 
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2015-12-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-06")
 public class ApplicationModule implements org.apache.thrift.TBase<ApplicationModule, ApplicationModule._Fields>, java.io.Serializable, Cloneable, Comparable<ApplicationModule> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("ApplicationModule");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/bd775410/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/appdeployment/CommandObject.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/appdeployment/CommandObject.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/appdeployment/CommandObject.java
index 71da883..21aec7c 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/appdeployment/CommandObject.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/appdeployment/CommandObject.java
@@ -60,7 +60,7 @@ import org.slf4j.LoggerFactory;
  * commandOrder:
  *   Order of the command in the multiple command situation
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2015-12-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-06")
 public class CommandObject implements org.apache.thrift.TBase<CommandObject, CommandObject._Fields>, java.io.Serializable, Cloneable, Comparable<CommandObject> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("CommandObject");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/bd775410/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/appdeployment/SetEnvPaths.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/appdeployment/SetEnvPaths.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/appdeployment/SetEnvPaths.java
index 0e10c9d..5f33c42 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/appdeployment/SetEnvPaths.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/appdeployment/SetEnvPaths.java
@@ -63,7 +63,7 @@ import org.slf4j.LoggerFactory;
  * envPathOrder:
  *   The order of the setting of the env variables when there are multiple env variables
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2015-12-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-06")
 public class SetEnvPaths implements org.apache.thrift.TBase<SetEnvPaths, SetEnvPaths._Fields>, java.io.Serializable, Cloneable, Comparable<SetEnvPaths> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("SetEnvPaths");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/bd775410/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/appinterface/ApplicationInterfaceDescription.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/appinterface/ApplicationInterfaceDescription.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/appinterface/ApplicationInterfaceDescription.java
index d82ebf2..a0206f9 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/appinterface/ApplicationInterfaceDescription.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/appinterface/ApplicationInterfaceDescription.java
@@ -64,7 +64,7 @@ import org.slf4j.LoggerFactory;
  *   Outputs generated from the application
  * 
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2015-12-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-06")
 public class ApplicationInterfaceDescription implements org.apache.thrift.TBase<ApplicationInterfaceDescription, ApplicationInterfaceDescription._Fields>, java.io.Serializable, Cloneable, Comparable<ApplicationInterfaceDescription> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("ApplicationInterfaceDescription");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/bd775410/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/BatchQueue.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/BatchQueue.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/BatchQueue.java
index 9c0b346..b4c0185 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/BatchQueue.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/BatchQueue.java
@@ -57,7 +57,7 @@ import org.slf4j.LoggerFactory;
  * maxRunTime:
  *  Maximum allowed run time in hours.
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2015-12-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-06")
 public class BatchQueue implements org.apache.thrift.TBase<BatchQueue, BatchQueue._Fields>, java.io.Serializable, Cloneable, Comparable<BatchQueue> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("BatchQueue");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/bd775410/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/CloudJobSubmission.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/CloudJobSubmission.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/CloudJobSubmission.java
index eae625c..d84f75e 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/CloudJobSubmission.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/CloudJobSubmission.java
@@ -56,7 +56,7 @@ import org.slf4j.LoggerFactory;
  * 
  * 
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2015-12-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-06")
 public class CloudJobSubmission implements org.apache.thrift.TBase<CloudJobSubmission, CloudJobSubmission._Fields>, java.io.Serializable, Cloneable, Comparable<CloudJobSubmission> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("CloudJobSubmission");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/bd775410/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/ComputeResourceDescription.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/ComputeResourceDescription.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/ComputeResourceDescription.java
index 9a9ee2f..6837240 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/ComputeResourceDescription.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/ComputeResourceDescription.java
@@ -80,7 +80,7 @@ import org.slf4j.LoggerFactory;
  *  Map of file systems type and the path.
  * 
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2015-12-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-06")
 public class ComputeResourceDescription implements org.apache.thrift.TBase<ComputeResourceDescription, ComputeResourceDescription._Fields>, java.io.Serializable, Cloneable, Comparable<ComputeResourceDescription> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("ComputeResourceDescription");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/bd775410/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/GlobusJobSubmission.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/GlobusJobSubmission.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/GlobusJobSubmission.java
index 0e39cad..6bbb53a 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/GlobusJobSubmission.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/GlobusJobSubmission.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2015-12-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-06")
 public class GlobusJobSubmission implements org.apache.thrift.TBase<GlobusJobSubmission, GlobusJobSubmission._Fields>, java.io.Serializable, Cloneable, Comparable<GlobusJobSubmission> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("GlobusJobSubmission");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/bd775410/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/JobSubmissionInterface.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/JobSubmissionInterface.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/JobSubmissionInterface.java
index 8a776de..0291df5 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/JobSubmissionInterface.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/JobSubmissionInterface.java
@@ -61,7 +61,7 @@ import org.slf4j.LoggerFactory;
  *   Lower the numerical number, higher the priority
  * 
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2015-12-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-06")
 public class JobSubmissionInterface implements org.apache.thrift.TBase<JobSubmissionInterface, JobSubmissionInterface._Fields>, java.io.Serializable, Cloneable, Comparable<JobSubmissionInterface> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("JobSubmissionInterface");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/bd775410/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/LOCALSubmission.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/LOCALSubmission.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/LOCALSubmission.java
index 3591251..4eb7773 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/LOCALSubmission.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/LOCALSubmission.java
@@ -60,7 +60,7 @@ import org.slf4j.LoggerFactory;
  * sshPort:
  *  If a non-default port needs to used, specify it.
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2015-12-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-06")
 public class LOCALSubmission implements org.apache.thrift.TBase<LOCALSubmission, LOCALSubmission._Fields>, java.io.Serializable, Cloneable, Comparable<LOCALSubmission> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("LOCALSubmission");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/bd775410/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/ResourceJobManager.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/ResourceJobManager.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/ResourceJobManager.java
index a820b68..5614b27 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/ResourceJobManager.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/ResourceJobManager.java
@@ -68,7 +68,7 @@ import org.slf4j.LoggerFactory;
  *  An enumeration of commonly used manager commands.
  * 
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2015-12-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-06")
 public class ResourceJobManager implements org.apache.thrift.TBase<ResourceJobManager, ResourceJobManager._Fields>, java.io.Serializable, Cloneable, Comparable<ResourceJobManager> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("ResourceJobManager");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/bd775410/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/SSHJobSubmission.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/SSHJobSubmission.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/SSHJobSubmission.java
index 3b087f9..88a1bfa 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/SSHJobSubmission.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/SSHJobSubmission.java
@@ -67,7 +67,7 @@ import org.slf4j.LoggerFactory;
  *    the same. Example: *@*.example.com or *@example.com
  * 
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2015-12-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-06")
 public class SSHJobSubmission implements org.apache.thrift.TBase<SSHJobSubmission, SSHJobSubmission._Fields>, java.io.Serializable, Cloneable, Comparable<SSHJobSubmission> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("SSHJobSubmission");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/bd775410/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/UnicoreJobSubmission.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/UnicoreJobSubmission.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/UnicoreJobSubmission.java
index 31eb8dd..4f57e14 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/UnicoreJobSubmission.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/UnicoreJobSubmission.java
@@ -59,7 +59,7 @@ import org.slf4j.LoggerFactory;
  * authenticationMode
  *  The authenticationMode defines the way certificate is fetched.
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2015-12-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-06")
 public class UnicoreJobSubmission implements org.apache.thrift.TBase<UnicoreJobSubmission, UnicoreJobSubmission._Fields>, java.io.Serializable, Cloneable, Comparable<UnicoreJobSubmission> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("UnicoreJobSubmission");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/bd775410/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/gatewayprofile/ComputeResourcePreference.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/gatewayprofile/ComputeResourcePreference.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/gatewayprofile/ComputeResourcePreference.java
index f3f8752..f34836c 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/gatewayprofile/ComputeResourcePreference.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/gatewayprofile/ComputeResourcePreference.java
@@ -85,7 +85,7 @@ import org.slf4j.LoggerFactory;
  *   default credential store.
  * 
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2015-12-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-06")
 public class ComputeResourcePreference implements org.apache.thrift.TBase<ComputeResourcePreference, ComputeResourcePreference._Fields>, java.io.Serializable, Cloneable, Comparable<ComputeResourcePreference> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("ComputeResourcePreference");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/bd775410/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/gatewayprofile/GatewayResourceProfile.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/gatewayprofile/GatewayResourceProfile.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/gatewayprofile/GatewayResourceProfile.java
index a94b952..66aa31d 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/gatewayprofile/GatewayResourceProfile.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/gatewayprofile/GatewayResourceProfile.java
@@ -64,7 +64,7 @@ import org.slf4j.LoggerFactory;
  *  List of resource preferences for each of the registered compute resources.
  * 
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2015-12-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-06")
 public class GatewayResourceProfile implements org.apache.thrift.TBase<GatewayResourceProfile, GatewayResourceProfile._Fields>, java.io.Serializable, Cloneable, Comparable<GatewayResourceProfile> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("GatewayResourceProfile");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/bd775410/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/gatewayprofile/StoragePreference.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/gatewayprofile/StoragePreference.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/gatewayprofile/StoragePreference.java
index e4ab458..2dddf01 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/gatewayprofile/StoragePreference.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/gatewayprofile/StoragePreference.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2015-12-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-06")
 public class StoragePreference implements org.apache.thrift.TBase<StoragePreference, StoragePreference._Fields>, java.io.Serializable, Cloneable, Comparable<StoragePreference> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("StoragePreference");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/bd775410/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/storageresource/StorageResourceDescription.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/storageresource/StorageResourceDescription.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/storageresource/StorageResourceDescription.java
index a98b3b4..83bde98 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/storageresource/StorageResourceDescription.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/storageresource/StorageResourceDescription.java
@@ -68,7 +68,7 @@ import org.slf4j.LoggerFactory;
  * 
  * 
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2015-12-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-06")
 public class StorageResourceDescription implements org.apache.thrift.TBase<StorageResourceDescription, StorageResourceDescription._Fields>, java.io.Serializable, Cloneable, Comparable<StorageResourceDescription> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("StorageResourceDescription");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/bd775410/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/application/io/InputDataObjectType.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/application/io/InputDataObjectType.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/application/io/InputDataObjectType.java
index 74ea450..3518cd1 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/application/io/InputDataObjectType.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/application/io/InputDataObjectType.java
@@ -77,7 +77,7 @@ import org.slf4j.LoggerFactory;
  *   Any metadat. This is typically ignore by Airavata and is used by gateways for application configuration.
  * 
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2015-12-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-06")
 public class InputDataObjectType implements org.apache.thrift.TBase<InputDataObjectType, InputDataObjectType._Fields>, java.io.Serializable, Cloneable, Comparable<InputDataObjectType> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("InputDataObjectType");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/bd775410/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/application/io/OutputDataObjectType.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/application/io/OutputDataObjectType.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/application/io/OutputDataObjectType.java
index 503a6f9..d698137 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/application/io/OutputDataObjectType.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/application/io/OutputDataObjectType.java
@@ -77,7 +77,7 @@ import org.slf4j.LoggerFactory;
  *   Any metadat. This is typically ignore by Airavata and is used by gateways for application configuration.
  * 
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2015-12-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-06")
 public class OutputDataObjectType implements org.apache.thrift.TBase<OutputDataObjectType, OutputDataObjectType._Fields>, java.io.Serializable, Cloneable, Comparable<OutputDataObjectType> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("OutputDataObjectType");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/bd775410/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/commons/ErrorModel.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/commons/ErrorModel.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/commons/ErrorModel.java
index 3ddb9d0..dd87084 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/commons/ErrorModel.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/commons/ErrorModel.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2015-12-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-06")
 public class ErrorModel implements org.apache.thrift.TBase<ErrorModel, ErrorModel._Fields>, java.io.Serializable, Cloneable, Comparable<ErrorModel> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("ErrorModel");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/bd775410/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/commons/ValidationResults.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/commons/ValidationResults.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/commons/ValidationResults.java
index ead2eee..8232d56 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/commons/ValidationResults.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/commons/ValidationResults.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2015-12-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-06")
 public class ValidationResults implements org.apache.thrift.TBase<ValidationResults, ValidationResults._Fields>, java.io.Serializable, Cloneable, Comparable<ValidationResults> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("ValidationResults");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/bd775410/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/commons/ValidatorResult.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/commons/ValidatorResult.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/commons/ValidatorResult.java
index 8028a1b..7df0e6b 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/commons/ValidatorResult.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/commons/ValidatorResult.java
@@ -58,7 +58,7 @@ import org.slf4j.LoggerFactory;
  * during the experiment launch operation
  * 
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2015-12-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-06")
 public class ValidatorResult implements org.apache.thrift.TBase<ValidatorResult, ValidatorResult._Fields>, java.io.Serializable, Cloneable, Comparable<ValidatorResult> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("ValidatorResult");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/bd775410/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/movement/DataMovementInterface.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/movement/DataMovementInterface.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/movement/DataMovementInterface.java
index 6418e4c..5640869 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/movement/DataMovementInterface.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/movement/DataMovementInterface.java
@@ -61,7 +61,7 @@ import org.slf4j.LoggerFactory;
  *   Lower the numerical number, higher the priority
  * 
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2015-12-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-06")
 public class DataMovementInterface implements org.apache.thrift.TBase<DataMovementInterface, DataMovementInterface._Fields>, java.io.Serializable, Cloneable, Comparable<DataMovementInterface> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("DataMovementInterface");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/bd775410/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/movement/GridFTPDataMovement.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/movement/GridFTPDataMovement.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/movement/GridFTPDataMovement.java
index 4db2e31..25db05a 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/movement/GridFTPDataMovement.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/movement/GridFTPDataMovement.java
@@ -60,7 +60,7 @@ import org.slf4j.LoggerFactory;
  * sshPort:
  *  If a non-default port needs to used, specify it.
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2015-12-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-06")
 public class GridFTPDataMovement implements org.apache.thrift.TBase<GridFTPDataMovement, GridFTPDataMovement._Fields>, java.io.Serializable, Cloneable, Comparable<GridFTPDataMovement> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("GridFTPDataMovement");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/bd775410/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/movement/LOCALDataMovement.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/movement/LOCALDataMovement.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/movement/LOCALDataMovement.java
index c05f14c..0ddedff 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/movement/LOCALDataMovement.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/movement/LOCALDataMovement.java
@@ -60,7 +60,7 @@ import org.slf4j.LoggerFactory;
  * sshPort:
  *  If a non-defualt port needs to used, specify it.
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2015-12-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-06")
 public class LOCALDataMovement implements org.apache.thrift.TBase<LOCALDataMovement, LOCALDataMovement._Fields>, java.io.Serializable, Cloneable, Comparable<LOCALDataMovement> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("LOCALDataMovement");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/bd775410/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/movement/SCPDataMovement.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/movement/SCPDataMovement.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/movement/SCPDataMovement.java
index 877f159..f4928ca 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/movement/SCPDataMovement.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/movement/SCPDataMovement.java
@@ -60,7 +60,7 @@ import org.slf4j.LoggerFactory;
  * sshPort:
  *  If a non-default port needs to used, specify it.
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2015-12-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-06")
 public class SCPDataMovement implements org.apache.thrift.TBase<SCPDataMovement, SCPDataMovement._Fields>, java.io.Serializable, Cloneable, Comparable<SCPDataMovement> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("SCPDataMovement");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/bd775410/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/movement/UnicoreDataMovement.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/movement/UnicoreDataMovement.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/movement/UnicoreDataMovement.java
index 715e4b3..d5fc5e6 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/movement/UnicoreDataMovement.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/movement/UnicoreDataMovement.java
@@ -57,7 +57,7 @@ import org.slf4j.LoggerFactory;
  * unicoreEndPointURL:
  *  unicoreGateway End Point. The provider will query this service to fetch required service end points.
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2015-12-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-06")
 public class UnicoreDataMovement implements org.apache.thrift.TBase<UnicoreDataMovement, UnicoreDataMovement._Fields>, java.io.Serializable, Cloneable, Comparable<UnicoreDataMovement> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("UnicoreDataMovement");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/bd775410/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/resource/DataReplicaLocationModel.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/resource/DataReplicaLocationModel.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/resource/DataReplicaLocationModel.java
index 52884de..08cd070 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/resource/DataReplicaLocationModel.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/resource/DataReplicaLocationModel.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2015-12-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-06")
 public class DataReplicaLocationModel implements org.apache.thrift.TBase<DataReplicaLocationModel, DataReplicaLocationModel._Fields>, java.io.Serializable, Cloneable, Comparable<DataReplicaLocationModel> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("DataReplicaLocationModel");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/bd775410/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/resource/DataResourceModel.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/resource/DataResourceModel.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/resource/DataResourceModel.java
index 3d9ce64..2e7e116 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/resource/DataResourceModel.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/resource/DataResourceModel.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2015-12-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-06")
 public class DataResourceModel implements org.apache.thrift.TBase<DataResourceModel, DataResourceModel._Fields>, java.io.Serializable, Cloneable, Comparable<DataResourceModel> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("DataResourceModel");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/bd775410/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/AiravataClientException.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/AiravataClientException.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/AiravataClientException.java
index 700b875..088e806 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/AiravataClientException.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/AiravataClientException.java
@@ -66,7 +66,7 @@ import org.slf4j.LoggerFactory;
  * parameter:  If the error applied to a particular input parameter, this will
  *   indicate which parameter.
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2015-12-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-06")
 public class AiravataClientException extends TException implements org.apache.thrift.TBase<AiravataClientException, AiravataClientException._Fields>, java.io.Serializable, Cloneable, Comparable<AiravataClientException> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("AiravataClientException");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/bd775410/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/AiravataSystemException.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/AiravataSystemException.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/AiravataSystemException.java
index 892eed1..cf1deb3 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/AiravataSystemException.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/AiravataSystemException.java
@@ -61,7 +61,7 @@ import org.slf4j.LoggerFactory;
  * message:  This may contain additional information about the error
  * 
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2015-12-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-06")
 public class AiravataSystemException extends TException implements org.apache.thrift.TBase<AiravataSystemException, AiravataSystemException._Fields>, java.io.Serializable, Cloneable, Comparable<AiravataSystemException> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("AiravataSystemException");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/bd775410/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/AuthenticationException.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/AuthenticationException.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/AuthenticationException.java
index 6b73164..84681af 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/AuthenticationException.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/AuthenticationException.java
@@ -56,7 +56,7 @@ import org.slf4j.LoggerFactory;
  * 
  *  message: contains the cause of the authorization failure.
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2015-12-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-06")
 public class AuthenticationException extends TException implements org.apache.thrift.TBase<AuthenticationException, AuthenticationException._Fields>, java.io.Serializable, Cloneable, Comparable<AuthenticationException> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("AuthenticationException");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/bd775410/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/AuthorizationException.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/AuthorizationException.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/AuthorizationException.java
index aa0c52a..1c0b54d 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/AuthorizationException.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/AuthorizationException.java
@@ -56,7 +56,7 @@ import org.slf4j.LoggerFactory;
  * 
  *  message: contains the authorization failure message
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2015-12-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-06")
 public class AuthorizationException extends TException implements org.apache.thrift.TBase<AuthorizationException, AuthorizationException._Fields>, java.io.Serializable, Cloneable, Comparable<AuthorizationException> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("AuthorizationException");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/bd775410/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/ExperimentNotFoundException.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/ExperimentNotFoundException.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/ExperimentNotFoundException.java
index da2dac8..3f04031 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/ExperimentNotFoundException.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/ExperimentNotFoundException.java
@@ -58,7 +58,7 @@ import org.slf4j.LoggerFactory;
  * 
  * key:  The value passed from the client in the identifier, which was not found.
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2015-12-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-06")
 public class ExperimentNotFoundException extends TException implements org.apache.thrift.TBase<ExperimentNotFoundException, ExperimentNotFoundException._Fields>, java.io.Serializable, Cloneable, Comparable<ExperimentNotFoundException> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("ExperimentNotFoundException");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/bd775410/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/InvalidRequestException.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/InvalidRequestException.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/InvalidRequestException.java
index 598ac65..f4240a3 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/InvalidRequestException.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/InvalidRequestException.java
@@ -57,7 +57,7 @@ import org.slf4j.LoggerFactory;
  * 
  *  message: contains the associated error message.
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2015-12-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-06")
 public class InvalidRequestException extends TException implements org.apache.thrift.TBase<InvalidRequestException, InvalidRequestException._Fields>, java.io.Serializable, Cloneable, Comparable<InvalidRequestException> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("InvalidRequestException");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/bd775410/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/LaunchValidationException.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/LaunchValidationException.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/LaunchValidationException.java
index 001281b..a159aa1 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/LaunchValidationException.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/LaunchValidationException.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2015-12-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-06")
 public class LaunchValidationException extends TException implements org.apache.thrift.TBase<LaunchValidationException, LaunchValidationException._Fields>, java.io.Serializable, Cloneable, Comparable<LaunchValidationException> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("LaunchValidationException");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/bd775410/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/ProjectNotFoundException.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/ProjectNotFoundException.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/ProjectNotFoundException.java
index 8124077..903b262 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/ProjectNotFoundException.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/ProjectNotFoundException.java
@@ -56,7 +56,7 @@ import org.slf4j.LoggerFactory;
  * 2:  optional  string key
  * 
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2015-12-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-06")
 public class ProjectNotFoundException extends TException implements org.apache.thrift.TBase<ProjectNotFoundException, ProjectNotFoundException._Fields>, java.io.Serializable, Cloneable, Comparable<ProjectNotFoundException> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("ProjectNotFoundException");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/bd775410/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/TimedOutException.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/TimedOutException.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/TimedOutException.java
index a259baf..7db9059 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/TimedOutException.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/TimedOutException.java
@@ -54,7 +54,7 @@ import org.slf4j.LoggerFactory;
 /**
  * This exception is thrown when RPC timeout gets exceeded.
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2015-12-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-06")
 public class TimedOutException extends TException implements org.apache.thrift.TBase<TimedOutException, TimedOutException._Fields>, java.io.Serializable, Cloneable, Comparable<TimedOutException> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("TimedOutException");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/bd775410/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/ValidationResults.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/ValidationResults.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/ValidationResults.java
index f7c7a26..f931098 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/ValidationResults.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/ValidationResults.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2015-12-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-06")
 public class ValidationResults implements org.apache.thrift.TBase<ValidationResults, ValidationResults._Fields>, java.io.Serializable, Cloneable, Comparable<ValidationResults> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("ValidationResults");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/bd775410/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/ValidatorResult.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/ValidatorResult.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/ValidatorResult.java
index 27e6315..5da455e 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/ValidatorResult.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/error/ValidatorResult.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2015-12-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-06")
 public class ValidatorResult implements org.apache.thrift.TBase<ValidatorResult, ValidatorResult._Fields>, java.io.Serializable, Cloneable, Comparable<ValidatorResult> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("ValidatorResult");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/bd775410/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/experiment/ExperimentModel.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/experiment/ExperimentModel.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/experiment/ExperimentModel.java
index 52a9ce0..af2f733 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/experiment/ExperimentModel.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/experiment/ExperimentModel.java
@@ -67,7 +67,7 @@ import org.slf4j.LoggerFactory;
  * experimentDescription:
  *    The verbose description of the experiment. This is an optional parameter.
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2015-12-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-06")
 public class ExperimentModel implements org.apache.thrift.TBase<ExperimentModel, ExperimentModel._Fields>, java.io.Serializable, Cloneable, Comparable<ExperimentModel> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("ExperimentModel");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/bd775410/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/experiment/ExperimentStatistics.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/experiment/ExperimentStatistics.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/experiment/ExperimentStatistics.java
index 6fa002d..d1e8149 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/experiment/ExperimentStatistics.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/experiment/ExperimentStatistics.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2015-12-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-06")
 public class ExperimentStatistics implements org.apache.thrift.TBase<ExperimentStatistics, ExperimentStatistics._Fields>, java.io.Serializable, Cloneable, Comparable<ExperimentStatistics> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("ExperimentStatistics");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/bd775410/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/experiment/ExperimentSummaryModel.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/experiment/ExperimentSummaryModel.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/experiment/ExperimentSummaryModel.java
index 6025c10..97cc531 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/experiment/ExperimentSummaryModel.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/experiment/ExperimentSummaryModel.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2015-12-22")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-06")
 public class ExperimentSummaryModel implements org.apache.thrift.TBase<ExperimentSummaryModel, ExperimentSummaryModel._Fields>, java.io.Serializable, Cloneable, Comparable<ExperimentSummaryModel> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("ExperimentSummaryModel");
 


[13/42] airavata git commit: removing user reference in Project JPA model

Posted by sh...@apache.org.
removing user reference in Project JPA model


Project: http://git-wip-us.apache.org/repos/asf/airavata/repo
Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/fde02b84
Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/fde02b84
Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/fde02b84

Branch: refs/heads/develop
Commit: fde02b84c440acd535dfc0a5ccdcad7e46f3352b
Parents: 4286bf7
Author: scnakandala <su...@gmail.com>
Authored: Mon Jan 4 17:10:07 2016 -0500
Committer: scnakandala <su...@gmail.com>
Committed: Mon Jan 4 17:10:07 2016 -0500

----------------------------------------------------------------------
 .../manager/core/MetadataCatalogService.java    | 76 --------------------
 .../core/experiment/catalog/model/Project.java  | 11 ---
 .../catalog/resources/ProjectResource.java      | 10 +--
 .../experiment/catalog/resources/Utils.java     |  2 +-
 4 files changed, 3 insertions(+), 96 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/fde02b84/modules/file-manager/file-manager-core/src/main/java/org/apache/airavata/file/manager/core/MetadataCatalogService.java
----------------------------------------------------------------------
diff --git a/modules/file-manager/file-manager-core/src/main/java/org/apache/airavata/file/manager/core/MetadataCatalogService.java b/modules/file-manager/file-manager-core/src/main/java/org/apache/airavata/file/manager/core/MetadataCatalogService.java
deleted file mode 100644
index 5c09de5..0000000
--- a/modules/file-manager/file-manager-core/src/main/java/org/apache/airavata/file/manager/core/MetadataCatalogService.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-package org.apache.airavata.file.manager.core;
-
-import org.apache.airavata.file.manager.cpi.FileManagerException;
-import org.apache.airavata.model.file.metadata.MetadataModel;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class MetadataCatalogService implements org.apache.airavata.file.manager.cpi.MetadataCatalogService{
-    private final static Logger logger = LoggerFactory.getLogger(MetadataCatalogService.class);
-
-    /**
-     * Create new metadata model
-     *
-     * @param metadataModel
-     * @return
-     * @throws FileManagerException
-     */
-    @Override
-    public String createMetadata(MetadataModel metadataModel) throws FileManagerException {
-        return null;
-    }
-
-    /**
-     * Update existing metadata model
-     *
-     * @param metadataModel
-     * @throws FileManagerException
-     */
-    @Override
-    public void updateMetadata(MetadataModel metadataModel) throws FileManagerException {
-
-    }
-
-    /**
-     * Delete existing metadata model
-     *
-     * @param metadataId
-     * @throws FileManagerException
-     */
-    @Override
-    public void deleteMetadata(String metadataId) throws FileManagerException {
-
-    }
-
-    /**
-     * Retrieve metadata model
-     *
-     * @param metadataId
-     * @return
-     * @throws FileManagerException
-     */
-    @Override
-    public MetadataModel getMetadata(String metadataId) throws FileManagerException {
-        return null;
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/fde02b84/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/Project.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/Project.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/Project.java
index 98a5d87..ef72004 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/Project.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/Project.java
@@ -38,7 +38,6 @@ public class Project {
     private String description;
     private Timestamp creationTime;
     private Collection<Experiment> experiments;
-    private Users user;
     private Gateway gateway;
     private Collection<ProjectUser> projectUsers;
 
@@ -138,16 +137,6 @@ public class Project {
     }
 
     @ManyToOne
-    @JoinColumn(name = "USER_NAME", referencedColumnName = "USER_NAME")
-    public Users getUser() {
-        return user;
-    }
-
-    public void setUser(Users userByOwnerName) {
-        this.user = userByOwnerName;
-    }
-
-    @ManyToOne
     @JoinColumn(name = "GATEWAY_ID", referencedColumnName = "GATEWAY_ID")
     public Gateway getGateway() {
         return gateway;

http://git-wip-us.apache.org/repos/asf/airavata/blob/fde02b84/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ProjectResource.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ProjectResource.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ProjectResource.java
index b1738d2..a4251a0 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ProjectResource.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ProjectResource.java
@@ -339,20 +339,14 @@ public class ProjectResource extends AbstractExpCatResource {
             project.setProjectId(id);
             project.setProjectName(name);
             project.setGatewayId(gatewayId);
-            UserPK userPK = new UserPK();
-            userPK.setUserName(worker.getUser());
-            userPK.setGatewayId(getGatewayId());
-            Users user = em.find(Users.class, userPK);
-            project.setUser(user);
-            project.setUserName(user.getUserName());
+            project.setUserName(worker.getUser());
             project.setDescription(description);
             project.setCreationTime(creationTime);
 
             if (existingProject != null) {
                 existingProject.setProjectName(name);
                 existingProject.setGatewayId(gatewayId);
-                existingProject.setUser(user);
-                existingProject.setUserName(user.getUserName());
+                existingProject.setUserName(worker.getUser());
                 existingProject.setDescription(description);
                 existingProject.setCreationTime(creationTime);
                 em.merge(existingProject);

http://git-wip-us.apache.org/repos/asf/airavata/blob/fde02b84/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/Utils.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/Utils.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/Utils.java
index d2818a6..9642fe8 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/Utils.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/Utils.java
@@ -351,7 +351,7 @@ public class Utils {
             projectResource.setGatewayId(o.getGatewayId());
             GatewayWorker gatewayWorker = new GatewayWorker();
             gatewayWorker.setGateway(o.getGateway());
-            gatewayWorker.setUserName(o.getUser().getUserName());
+            gatewayWorker.setUserName(o.getUserName());
             WorkerResource workerResource = (WorkerResource) createGatewayWorker(gatewayWorker);
             projectResource.setWorker(workerResource);
             projectResource.setDescription(o.getDescription());


[28/42] airavata git commit: tasks are created in Orchestrator. So changing the orchestrator

Posted by sh...@apache.org.
tasks are created in Orchestrator. So changing the orchestrator


Project: http://git-wip-us.apache.org/repos/asf/airavata/repo
Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/51ba0719
Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/51ba0719
Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/51ba0719

Branch: refs/heads/develop
Commit: 51ba07196a8da56c963651fe0e32b95174d296ba
Parents: d959615
Author: scnakandala <su...@gmail.com>
Authored: Thu Jan 7 00:30:09 2016 -0500
Committer: scnakandala <su...@gmail.com>
Committed: Thu Jan 7 00:30:09 2016 -0500

----------------------------------------------------------------------
 .../cpi/impl/SimpleOrchestratorImpl.java            | 16 +++++++++++++++-
 1 file changed, 15 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/51ba0719/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/cpi/impl/SimpleOrchestratorImpl.java
----------------------------------------------------------------------
diff --git a/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/cpi/impl/SimpleOrchestratorImpl.java b/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/cpi/impl/SimpleOrchestratorImpl.java
index 2f69dfd..fce6b84 100644
--- a/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/cpi/impl/SimpleOrchestratorImpl.java
+++ b/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/cpi/impl/SimpleOrchestratorImpl.java
@@ -554,7 +554,21 @@ public class SimpleOrchestratorImpl extends AbstractOrchestrator{
             taskModel.setTaskType(TaskTypes.DATA_STAGING);
             ComputeResourcePreference computeResourcePreference = OrchestratorUtils.getComputeResourcePreference(orchestratorContext, processModel, gatewayId);
             ComputeResourceDescription computeResource = orchestratorContext.getRegistry().getAppCatalog().getComputeResource().getComputeResource(processModel.getComputeResourceId());
-            String remoteOutputDir = computeResourcePreference.getScratchLocation() + File.separator + processModel.getProcessId();
+
+            String experimentDataDir = processModel.getExperimentDataDir();
+            String remoteOutputDir;
+            if(experimentDataDir != null && !experimentDataDir.isEmpty()) {
+                if(experimentDataDir.startsWith(File.separator)){
+                    experimentDataDir = experimentDataDir.substring(1);
+                }
+                if(!experimentDataDir.endsWith(File.separator)){
+                    experimentDataDir += File.separator;
+                }
+                remoteOutputDir = computeResourcePreference.getScratchLocation() + File.separator +
+                        experimentDataDir + processModel.getProcessId();
+            } else {
+                remoteOutputDir = computeResourcePreference.getScratchLocation() + File.separator + processModel.getProcessId();
+            }
             remoteOutputDir = remoteOutputDir.endsWith("/") ? remoteOutputDir : remoteOutputDir + "/";
             DataStagingTaskModel submodel = new DataStagingTaskModel();
             submodel.setType(DataStageType.OUPUT);


[19/42] airavata git commit: adding log info messages to airavata API

Posted by sh...@apache.org.
adding log info messages to airavata API


Project: http://git-wip-us.apache.org/repos/asf/airavata/repo
Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/4dc65887
Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/4dc65887
Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/4dc65887

Branch: refs/heads/develop
Commit: 4dc65887241821b23643a930cdd222238cda277c
Parents: fc3f979
Author: Chathuri Wimalasena <ch...@apache.org>
Authored: Tue Jan 5 15:20:53 2016 -0500
Committer: Chathuri Wimalasena <ch...@apache.org>
Committed: Tue Jan 5 15:20:53 2016 -0500

----------------------------------------------------------------------
 .../server/handler/AiravataServerHandler.java   | 166 ++++++++++++++-----
 1 file changed, 120 insertions(+), 46 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/4dc65887/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java b/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java
index 7c54deb..d9f5dc6 100644
--- a/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java
+++ b/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java
@@ -2574,7 +2574,9 @@ public class AiravataServerHandler implements Airavata.Iface {
             throws InvalidRequestException, AiravataClientException, AiravataSystemException, AuthorizationException, TException {
     	try {
             appCatalog = RegistryFactory.getAppCatalog();
-            return appCatalog.getComputeResource().addComputeResource(computeResourceDescription);
+            String computeResource = appCatalog.getComputeResource().addComputeResource(computeResourceDescription);
+            logger.info("Airavata registered compute resource with compute resource Id : " + computeResource);
+            return computeResource;
         } catch (AppCatalogException e) {
             logger.error("Error while saving compute resource...", e);
             AiravataSystemException exception = new AiravataSystemException();
@@ -2597,7 +2599,9 @@ public class AiravataServerHandler implements Airavata.Iface {
             throws InvalidRequestException, AiravataClientException, AiravataSystemException, AuthorizationException, TException {
     	try {
             appCatalog = RegistryFactory.getAppCatalog();
-            return appCatalog.getComputeResource().getComputeResource(computeResourceId);
+            ComputeResourceDescription computeResource = appCatalog.getComputeResource().getComputeResource(computeResourceId);
+            logger.info("Airavata retrieved compute resource with compute resource Id : " + computeResourceId);
+            return computeResource;
         } catch (AppCatalogException e) {
             logger.error(computeResourceId, "Error while retrieving compute resource...", e);
             AiravataSystemException exception = new AiravataSystemException();
@@ -2619,7 +2623,9 @@ public class AiravataServerHandler implements Airavata.Iface {
             AiravataClientException, AiravataSystemException, AuthorizationException, TException {
         try {
             appCatalog = RegistryFactory.getAppCatalog();
-            return appCatalog.getComputeResource().getAllComputeResourceIdList();
+            Map<String, String> computeResourceIdList = appCatalog.getComputeResource().getAllComputeResourceIdList();
+            logger.info("Airavata retrieved all the available compute resources...");
+            return computeResourceIdList;
         } catch (AppCatalogException e) {
             logger.error("Error while retrieving compute resource...", e);
             AiravataSystemException exception = new AiravataSystemException();
@@ -2644,6 +2650,7 @@ public class AiravataServerHandler implements Airavata.Iface {
     	try {
             appCatalog = RegistryFactory.getAppCatalog();
             appCatalog.getComputeResource().updateComputeResource(computeResourceId, computeResourceDescription);
+            logger.info("Airavata updated compute resource with compute resource Id : " + computeResourceId);
             return true;
         } catch (AppCatalogException e) {
             logger.error(computeResourceId, "Error while updating compute resource...", e);
@@ -2668,6 +2675,7 @@ public class AiravataServerHandler implements Airavata.Iface {
     	try {
             appCatalog = RegistryFactory.getAppCatalog();
             appCatalog.getComputeResource().removeComputeResource(computeResourceId);
+            logger.info("Airavata deleted compute resource with compute resource Id : " + computeResourceId);
             return true;
         } catch (AppCatalogException e) {
             logger.error(computeResourceId, "Error while deleting compute resource...", e);
@@ -2690,7 +2698,9 @@ public class AiravataServerHandler implements Airavata.Iface {
     public String registerStorageResource(AuthzToken authzToken, StorageResourceDescription storageResourceDescription) throws InvalidRequestException, AiravataClientException, AiravataSystemException, AuthorizationException, TException {
         try {
             appCatalog = RegistryFactory.getAppCatalog();
-            return appCatalog.getStorageResource().addStorageResource(storageResourceDescription);
+            String storageResource = appCatalog.getStorageResource().addStorageResource(storageResourceDescription);
+            logger.info("Airavata registered storage resource with storage resource Id : " + storageResource);
+            return storageResource;
         } catch (AppCatalogException e) {
             logger.error("Error while saving storage resource...", e);
             AiravataSystemException exception = new AiravataSystemException();
@@ -2712,7 +2722,9 @@ public class AiravataServerHandler implements Airavata.Iface {
     public StorageResourceDescription getStorageResource(AuthzToken authzToken, String storageResourceId) throws InvalidRequestException, AiravataClientException, AiravataSystemException, AuthorizationException, TException {
         try {
             appCatalog = RegistryFactory.getAppCatalog();
-            return appCatalog.getStorageResource().getStorageResource(storageResourceId);
+            StorageResourceDescription storageResource = appCatalog.getStorageResource().getStorageResource(storageResourceId);
+            logger.info("Airavata retrieved storage resource with storage resource Id : " + storageResourceId);
+            return storageResource;
         } catch (AppCatalogException e) {
             logger.error(storageResourceId, "Error while retrieving storage resource...", e);
             AiravataSystemException exception = new AiravataSystemException();
@@ -2733,7 +2745,9 @@ public class AiravataServerHandler implements Airavata.Iface {
     public Map<String, String> getAllStorageResourceNames(AuthzToken authzToken) throws InvalidRequestException, AiravataClientException, AiravataSystemException, AuthorizationException, TException {
         try {
             appCatalog = RegistryFactory.getAppCatalog();
-            return appCatalog.getStorageResource().getAllStorageResourceIdList();
+            Map<String, String> resourceIdList = appCatalog.getStorageResource().getAllStorageResourceIdList();
+            logger.info("Airavata retrieved storage resources list...");
+            return resourceIdList;
         } catch (AppCatalogException e) {
             logger.error("Error while retrieving storage resource...", e);
             AiravataSystemException exception = new AiravataSystemException();
@@ -2757,6 +2771,7 @@ public class AiravataServerHandler implements Airavata.Iface {
         try {
             appCatalog = RegistryFactory.getAppCatalog();
             appCatalog.getStorageResource().updateStorageResource(storageResourceId, storageResourceDescription);
+            logger.info("Airavata updated storage resource with storage resource Id : " + storageResourceId);
             return true;
         } catch (AppCatalogException e) {
             logger.error(storageResourceId, "Error while updating storage resource...", e);
@@ -2780,6 +2795,7 @@ public class AiravataServerHandler implements Airavata.Iface {
         try {
             appCatalog = RegistryFactory.getAppCatalog();
             appCatalog.getStorageResource().removeStorageResource(storageResourceId);
+            logger.info("Airavata deleted storage resource with storage resource Id : " + storageResourceId);
             return true;
         } catch (AppCatalogException e) {
             logger.error(storageResourceId, "Error while deleting storage resource...", e);
@@ -2807,8 +2823,10 @@ public class AiravataServerHandler implements Airavata.Iface {
     	try {
             appCatalog = RegistryFactory.getAppCatalog();
             ComputeResource computeResource = appCatalog.getComputeResource();
-            return addJobSubmissionInterface(computeResource, computeResourceId,
-            		computeResource.addLocalJobSubmission(localSubmission), JobSubmissionProtocol.LOCAL, priorityOrder);
+            String submissionInterface = addJobSubmissionInterface(computeResource, computeResourceId,
+                    computeResource.addLocalJobSubmission(localSubmission), JobSubmissionProtocol.LOCAL, priorityOrder);
+            logger.info("Airavata added local job submission for compute resource id: " + computeResourceId);
+            return submissionInterface;
         } catch (AppCatalogException e) {
             logger.error(computeResourceId, "Error while adding job submission interface to resource compute resource...", e);
             AiravataSystemException exception = new AiravataSystemException();
@@ -2834,6 +2852,7 @@ public class AiravataServerHandler implements Airavata.Iface {
             LocalSubmissionResource submission = AppCatalogThriftConversion.getLocalJobSubmission(localSubmission);
             submission.setJobSubmissionInterfaceId(jobSubmissionInterfaceId);
             submission.save();
+            logger.info("Airavata updated local job submission for job submission interface id: " + jobSubmissionInterfaceId);
             return true;
         } catch (Exception e) {
             logger.error(jobSubmissionInterfaceId, "Error while adding job submission interface to resource compute resource...", e);
@@ -2850,7 +2869,9 @@ public class AiravataServerHandler implements Airavata.Iface {
             AiravataClientException, AiravataSystemException, AuthorizationException, TException {
         try {
             appCatalog = RegistryFactory.getAppCatalog();
-            return appCatalog.getComputeResource().getLocalJobSubmission(jobSubmissionId);
+            LOCALSubmission localJobSubmission = appCatalog.getComputeResource().getLocalJobSubmission(jobSubmissionId);
+            logger.info("Airavata retrieved local job submission for job submission interface id: " + jobSubmissionId);
+            return localJobSubmission;
         } catch (AppCatalogException e) {
             String errorMsg = "Error while retrieving local job submission interface to resource compute resource...";
             logger.error(jobSubmissionId, errorMsg, e);
@@ -2889,8 +2910,10 @@ public class AiravataServerHandler implements Airavata.Iface {
     	try {
             appCatalog = RegistryFactory.getAppCatalog();
             ComputeResource computeResource = appCatalog.getComputeResource();
-            return addJobSubmissionInterface(computeResource, computeResourceId,
-            		computeResource.addSSHJobSubmission(sshJobSubmission), JobSubmissionProtocol.SSH, priorityOrder);
+            String submissionInterface = addJobSubmissionInterface(computeResource, computeResourceId,
+                    computeResource.addSSHJobSubmission(sshJobSubmission), JobSubmissionProtocol.SSH, priorityOrder);
+            logger.info("Airavata registered SSH job submission for compute resource id: " + computeResourceId);
+            return submissionInterface;
         } catch (AppCatalogException e) {
             logger.error(computeResourceId, "Error while adding job submission interface to resource compute resource...", e);
             AiravataSystemException exception = new AiravataSystemException();
@@ -2917,8 +2940,10 @@ public class AiravataServerHandler implements Airavata.Iface {
         try {
             appCatalog = RegistryFactory.getAppCatalog();
             ComputeResource computeResource = appCatalog.getComputeResource();
-            return addJobSubmissionInterface(computeResource, computeResourceId,
+            String submissionDetails = addJobSubmissionInterface(computeResource, computeResourceId,
                     computeResource.addSSHJobSubmission(sshJobSubmission), JobSubmissionProtocol.SSH_FORK, priorityOrder);
+            logger.info("Airavata registered Fork job submission for compute resource id: " + computeResourceId);
+            return submissionDetails;
         } catch (AppCatalogException e) {
             logger.error(computeResourceId, "Error while adding job submission interface to resource compute resource...", e);
             AiravataSystemException exception = new AiravataSystemException();
@@ -2934,7 +2959,9 @@ public class AiravataServerHandler implements Airavata.Iface {
             AiravataClientException, AiravataSystemException, AuthorizationException, TException {
         try {
             appCatalog = RegistryFactory.getAppCatalog();
-            return appCatalog.getComputeResource().getSSHJobSubmission(jobSubmissionId);
+            SSHJobSubmission sshJobSubmission = appCatalog.getComputeResource().getSSHJobSubmission(jobSubmissionId);
+            logger.info("Airavata retrieved SSH job submission for job submission interface id: " + jobSubmissionId);
+            return sshJobSubmission;
         } catch (AppCatalogException e) {
             String errorMsg = "Error while retrieving SSH job submission interface to resource compute resource...";
             logger.error(jobSubmissionId, errorMsg, e);
@@ -2963,8 +2990,10 @@ public class AiravataServerHandler implements Airavata.Iface {
         try {
             appCatalog = RegistryFactory.getAppCatalog();
             ComputeResource computeResource = appCatalog.getComputeResource();
-            return addJobSubmissionInterface(computeResource, computeResourceId,
+            String submissionInterface = addJobSubmissionInterface(computeResource, computeResourceId,
                     computeResource.addCloudJobSubmission(cloudJobSubmission), JobSubmissionProtocol.CLOUD, priorityOrder);
+            logger.info("Airavata registered Cloud job submission for compute resource id: " + computeResourceId);
+            return submissionInterface;
         } catch (AppCatalogException e) {
             logger.error(computeResourceId, "Error while adding job submission interface to resource compute resource...", e);
             AiravataSystemException exception = new AiravataSystemException();
@@ -2980,7 +3009,9 @@ public class AiravataServerHandler implements Airavata.Iface {
             AiravataClientException, AiravataSystemException, AuthorizationException, TException {
         try {
             appCatalog = RegistryFactory.getAppCatalog();
-            return appCatalog.getComputeResource().getCloudJobSubmission(jobSubmissionId);
+            CloudJobSubmission cloudJobSubmission = appCatalog.getComputeResource().getCloudJobSubmission(jobSubmissionId);
+            logger.info("Airavata retrieved cloud job submission for job submission interface id: " + jobSubmissionId);
+            return cloudJobSubmission;
         } catch (AppCatalogException e) {
             String errorMsg = "Error while retrieving Cloud job submission interface to resource compute resource...";
             logger.error(jobSubmissionId, errorMsg, e);
@@ -2999,8 +3030,10 @@ public class AiravataServerHandler implements Airavata.Iface {
 		try {
 	        appCatalog = RegistryFactory.getAppCatalog();
 	        ComputeResource computeResource = appCatalog.getComputeResource();
-	        return addJobSubmissionInterface(computeResource, computeResourceId,
-	        		computeResource.addUNICOREJobSubmission(unicoreJobSubmission), JobSubmissionProtocol.UNICORE, priorityOrder);
+            String submissionInterface = addJobSubmissionInterface(computeResource, computeResourceId,
+                    computeResource.addUNICOREJobSubmission(unicoreJobSubmission), JobSubmissionProtocol.UNICORE, priorityOrder);
+            logger.info("Airavata registered UNICORE job submission for compute resource id: " + computeResourceId);
+            return submissionInterface;
 	    } catch (AppCatalogException e) {
 	        logger.error("Error while adding job submission interface to resource compute resource...", e);
 	        AiravataSystemException exception = new AiravataSystemException();
@@ -3016,7 +3049,9 @@ public class AiravataServerHandler implements Airavata.Iface {
             throws InvalidRequestException, AiravataClientException, AiravataSystemException, AuthorizationException, TException {
         try {
             appCatalog = RegistryFactory.getAppCatalog();
-            return appCatalog.getComputeResource().getUNICOREJobSubmission(jobSubmissionId);
+            UnicoreJobSubmission unicoreJobSubmission = appCatalog.getComputeResource().getUNICOREJobSubmission(jobSubmissionId);
+            logger.info("Airavata retrieved UNICORE job submission for job submission interface id: " + jobSubmissionId);
+            return unicoreJobSubmission;
         } catch (AppCatalogException e) {
             String errorMsg = "Error while retrieving Unicore job submission interface to resource compute resource...";
             logger.error(jobSubmissionId, errorMsg, e);
@@ -3043,6 +3078,7 @@ public class AiravataServerHandler implements Airavata.Iface {
             SshJobSubmissionResource submission = AppCatalogThriftConversion.getSSHJobSubmission(sshJobSubmission);
             submission.setJobSubmissionInterfaceId(jobSubmissionInterfaceId);
             submission.save();
+            logger.info("Airavata updated SSH job submission for job submission interface id: " + jobSubmissionInterfaceId);
             return true;
         } catch (Exception e) {
             logger.error(jobSubmissionInterfaceId, "Error while adding job submission interface to resource compute resource...", e);
@@ -3069,6 +3105,7 @@ public class AiravataServerHandler implements Airavata.Iface {
             CloudSubmissionResource submission = AppCatalogThriftConversion.getCloudJobSubmission(cloudJobSubmission);
             submission.setJobSubmissionInterfaceId(jobSubmissionInterfaceId);
             submission.save();
+            logger.info("Airavata updated Cloud job submission for job submission interface id: " + jobSubmissionInterfaceId);
             return true;
         } catch (Exception e) {
             logger.error(jobSubmissionInterfaceId, "Error while adding job submission interface to resource compute resource...", e);
@@ -3087,6 +3124,7 @@ public class AiravataServerHandler implements Airavata.Iface {
             UnicoreJobSubmissionResource submission = AppCatalogThriftConversion.getUnicoreJobSubmission(unicoreJobSubmission);
             submission.setjobSubmissionInterfaceId(jobSubmissionInterfaceId);
             submission.save();
+            logger.info("Airavata updated UNICORE job submission for job submission interface id: " + jobSubmissionInterfaceId);
             return true;
         } catch (Exception e) {
             logger.error(jobSubmissionInterfaceId, "Error while adding job submission interface to resource compute resource...", e);
@@ -3115,8 +3153,10 @@ public class AiravataServerHandler implements Airavata.Iface {
     	try {
             appCatalog = RegistryFactory.getAppCatalog();
             ComputeResource computeResource = appCatalog.getComputeResource();
-            return addDataMovementInterface(computeResource, resourceId,dmType,
-            		computeResource.addLocalDataMovement(localDataMovement), DataMovementProtocol.LOCAL, priorityOrder);
+            String movementInterface = addDataMovementInterface(computeResource, resourceId, dmType,
+                    computeResource.addLocalDataMovement(localDataMovement), DataMovementProtocol.LOCAL, priorityOrder);
+            logger.info("Airavata registered local data movement for resource Id: " + resourceId);
+            return movementInterface;
         } catch (AppCatalogException e) {
             logger.error(resourceId, "Error while adding data movement interface to resource resource...", e);
             AiravataSystemException exception = new AiravataSystemException();
@@ -3129,25 +3169,26 @@ public class AiravataServerHandler implements Airavata.Iface {
     /**
      * Update the given Local data movement details
      *
-     * @param jobSubmissionInterfaceId The identifier of the JobSubmission Interface to be updated.
+     * @param dataMovementInterfaceId The identifier of the JobSubmission Interface to be updated.
      * @param localDataMovement        The LOCALDataMovement object to be updated.
      * @return status
      * Returns a success/failure of the update.
      */
     @Override
     @SecurityCheck
-    public boolean updateLocalDataMovementDetails(AuthzToken authzToken, String jobSubmissionInterfaceId, LOCALDataMovement localDataMovement)
+    public boolean updateLocalDataMovementDetails(AuthzToken authzToken, String dataMovementInterfaceId, LOCALDataMovement localDataMovement)
             throws InvalidRequestException, AiravataClientException, AiravataSystemException, AuthorizationException, TException {
     	try {
             LocalDataMovementResource movment = AppCatalogThriftConversion.getLocalDataMovement(localDataMovement);
-            movment.setDataMovementInterfaceId(jobSubmissionInterfaceId);
+            movment.setDataMovementInterfaceId(dataMovementInterfaceId);
             movment.save();
+            logger.info("Airavata updated local data movement with data movement id: " + dataMovementInterfaceId);
             return true;
         } catch (Exception e) {
-            logger.error(jobSubmissionInterfaceId, "Error while adding job submission interface to resource compute resource...", e);
+            logger.error(dataMovementInterfaceId, "Error while updating local data movement interface..", e);
             AiravataSystemException exception = new AiravataSystemException();
             exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
-            exception.setMessage("Error while adding job submission interface to resource compute resource. More info : " + e.getMessage());
+            exception.setMessage("Error while updating local data movement interface. More info : " + e.getMessage());
             throw exception;
         }
     }
@@ -3158,7 +3199,9 @@ public class AiravataServerHandler implements Airavata.Iface {
             AiravataClientException, AiravataSystemException, AuthorizationException, TException {
         try {
             appCatalog = RegistryFactory.getAppCatalog();
-            return appCatalog.getComputeResource().getLocalDataMovement(dataMovementId);
+            LOCALDataMovement localDataMovement = appCatalog.getComputeResource().getLocalDataMovement(dataMovementId);
+            logger.info("Airavata retrieved local data movement with data movement id: " + dataMovementId);
+            return localDataMovement;
         } catch (AppCatalogException e) {
             String errorMsg = "Error while retrieving local data movement interface to resource compute resource...";
             logger.error(dataMovementId, errorMsg, e);
@@ -3197,8 +3240,10 @@ public class AiravataServerHandler implements Airavata.Iface {
     	try {
             appCatalog = RegistryFactory.getAppCatalog();
             ComputeResource computeResource = appCatalog.getComputeResource();
-            return addDataMovementInterface(computeResource, resourceId,dmType,
-            		computeResource.addScpDataMovement(scpDataMovement), DataMovementProtocol.SCP, priorityOrder);
+            String movementInterface = addDataMovementInterface(computeResource, resourceId, dmType,
+                    computeResource.addScpDataMovement(scpDataMovement), DataMovementProtocol.SCP, priorityOrder);
+            logger.info("Airavata registered SCP data movement for resource Id: " + resourceId);
+            return movementInterface;
         } catch (AppCatalogException e) {
             logger.error(resourceId, "Error while adding data movement interface to resource compute resource...", e);
             AiravataSystemException exception = new AiravataSystemException();
@@ -3212,22 +3257,23 @@ public class AiravataServerHandler implements Airavata.Iface {
      * Update the given scp data movement details
      * App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
      *
-     * @param jobSubmissionInterfaceId The identifier of the JobSubmission Interface to be updated.
+     * @param dataMovementInterfaceId The identifier of the JobSubmission Interface to be updated.
      * @param scpDataMovement          The SCPDataMovement object to be updated.
      * @return status
      * Returns a success/failure of the update.
      */
     @Override
     @SecurityCheck
-    public boolean updateSCPDataMovementDetails(AuthzToken authzToken, String jobSubmissionInterfaceId, SCPDataMovement scpDataMovement)
+    public boolean updateSCPDataMovementDetails(AuthzToken authzToken, String dataMovementInterfaceId, SCPDataMovement scpDataMovement)
             throws InvalidRequestException, AiravataClientException, AiravataSystemException, AuthorizationException, TException {
     	try {
             ScpDataMovementResource movment = AppCatalogThriftConversion.getSCPDataMovementDescription(scpDataMovement);
-            movment.setDataMovementInterfaceId(jobSubmissionInterfaceId);
+            movment.setDataMovementInterfaceId(dataMovementInterfaceId);
             movment.save();
+            logger.info("Airavata updated SCP data movement with data movement id: " + dataMovementInterfaceId);
             return true;
         } catch (Exception e) {
-            logger.error(jobSubmissionInterfaceId, "Error while adding job submission interface to resource compute resource...", e);
+            logger.error(dataMovementInterfaceId, "Error while adding job submission interface to resource compute resource...", e);
             AiravataSystemException exception = new AiravataSystemException();
             exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
             exception.setMessage("Error while adding job submission interface to resource compute resource. More info : " + e.getMessage());
@@ -3241,7 +3287,9 @@ public class AiravataServerHandler implements Airavata.Iface {
             AiravataClientException, AiravataSystemException, AuthorizationException, TException {
         try {
             appCatalog = RegistryFactory.getAppCatalog();
-            return appCatalog.getComputeResource().getSCPDataMovement(dataMovementId);
+            SCPDataMovement scpDataMovement = appCatalog.getComputeResource().getSCPDataMovement(dataMovementId);
+            logger.info("Airavata retrieved SCP data movement with data movement id: " + dataMovementId);
+            return scpDataMovement;
         } catch (AppCatalogException e) {
             String errorMsg = "Error while retrieving SCP data movement interface to resource compute resource...";
             logger.error(dataMovementId, errorMsg, e);
@@ -3259,8 +3307,10 @@ public class AiravataServerHandler implements Airavata.Iface {
         try {
             appCatalog = RegistryFactory.getAppCatalog();
             ComputeResource computeResource = appCatalog.getComputeResource();
-            return addDataMovementInterface(computeResource, resourceId,dmType,
+            String movementInterface = addDataMovementInterface(computeResource, resourceId, dmType,
                     computeResource.addUnicoreDataMovement(unicoreDataMovement), DataMovementProtocol.UNICORE_STORAGE_SERVICE, priorityOrder);
+            logger.info("Airavata registered UNICORE data movement for resource Id: " + resourceId);
+            return movementInterface;
         } catch (AppCatalogException e) {
             logger.error(resourceId, "Error while adding data movement interface to resource compute resource...", e);
             AiravataSystemException exception = new AiravataSystemException();
@@ -3278,6 +3328,7 @@ public class AiravataServerHandler implements Airavata.Iface {
             UnicoreDataMovementResource movment = AppCatalogThriftConversion.getUnicoreDMResource(unicoreDataMovement);
             movment.setDataMovementId(dataMovementInterfaceId);
             movment.save();
+            logger.info("Airavata updated UNICORE data movement with data movement id: " + dataMovementInterfaceId);
             return true;
         } catch (Exception e) {
             logger.error(dataMovementInterfaceId, "Error while updating unicore data movement to compute resource...", e);
@@ -3294,7 +3345,9 @@ public class AiravataServerHandler implements Airavata.Iface {
             AiravataClientException, AiravataSystemException, AuthorizationException, TException {
         try {
             appCatalog = RegistryFactory.getAppCatalog();
-            return appCatalog.getComputeResource().getUNICOREDataMovement(dataMovementId);
+            UnicoreDataMovement unicoreDataMovement = appCatalog.getComputeResource().getUNICOREDataMovement(dataMovementId);
+            logger.info("Airavata retrieved UNICORE data movement with data movement id: " + dataMovementId);
+            return unicoreDataMovement;
         } catch (AppCatalogException e) {
             String errorMsg = "Error while retrieving UNICORE data movement interface...";
             logger.error(dataMovementId, errorMsg, e);
@@ -3323,8 +3376,10 @@ public class AiravataServerHandler implements Airavata.Iface {
     	try {
             appCatalog = RegistryFactory.getAppCatalog();
             ComputeResource computeResource = appCatalog.getComputeResource();
-            return addDataMovementInterface(computeResource, computeResourceId,dmType,
-            		computeResource.addGridFTPDataMovement(gridFTPDataMovement), DataMovementProtocol.GridFTP, priorityOrder);
+            String addDataMovementInterface = addDataMovementInterface(computeResource, computeResourceId, dmType,
+                    computeResource.addGridFTPDataMovement(gridFTPDataMovement), DataMovementProtocol.GridFTP, priorityOrder);
+            logger.info("Airavata registered GridFTP data movement for resource Id: " + computeResourceId);
+            return addDataMovementInterface;
         } catch (AppCatalogException e) {
             logger.error(computeResourceId, "Error while adding data movement interface to resource compute resource...", e);
             AiravataSystemException exception = new AiravataSystemException();
@@ -3338,22 +3393,23 @@ public class AiravataServerHandler implements Airavata.Iface {
      * Update the given GridFTP data movement details to a compute resource
      * App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
      *
-     * @param jobSubmissionInterfaceId The identifier of the JobSubmission Interface to be updated.
+     * @param dataMovementInterfaceId The identifier of the JobSubmission Interface to be updated.
      * @param gridFTPDataMovement      The GridFTPDataMovement object to be updated.
      * @return status
      * Returns a success/failure of the updation.
      */
     @Override
     @SecurityCheck
-    public boolean updateGridFTPDataMovementDetails(AuthzToken authzToken, String jobSubmissionInterfaceId, GridFTPDataMovement gridFTPDataMovement)
+    public boolean updateGridFTPDataMovementDetails(AuthzToken authzToken, String dataMovementInterfaceId, GridFTPDataMovement gridFTPDataMovement)
             throws InvalidRequestException, AiravataClientException, AiravataSystemException, AuthorizationException, TException {
     	try {
             GridftpDataMovementResource movment = AppCatalogThriftConversion.getGridFTPDataMovementDescription(gridFTPDataMovement);
-            movment.setDataMovementInterfaceId(jobSubmissionInterfaceId);
+            movment.setDataMovementInterfaceId(dataMovementInterfaceId);
             movment.save();
+            logger.info("Airavata updated GRIDFTP data movement with data movement id: " + dataMovementInterfaceId );
             return true;
         } catch (Exception e) {
-            logger.error(jobSubmissionInterfaceId, "Error while adding job submission interface to resource compute resource...", e);
+            logger.error(dataMovementInterfaceId, "Error while adding job submission interface to resource compute resource...", e);
             AiravataSystemException exception = new AiravataSystemException();
             exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
             exception.setMessage("Error while adding job submission interface to resource compute resource. More info : " + e.getMessage());
@@ -3367,7 +3423,9 @@ public class AiravataServerHandler implements Airavata.Iface {
             AiravataClientException, AiravataSystemException, AuthorizationException, TException {
         try {
             appCatalog = RegistryFactory.getAppCatalog();
-            return appCatalog.getComputeResource().getGridFTPDataMovement(dataMovementId);
+            GridFTPDataMovement gridFTPDataMovement = appCatalog.getComputeResource().getGridFTPDataMovement(dataMovementId);
+            logger.info("Airavata retrieved GRIDFTP data movement with data movement id: " + dataMovementId);
+            return gridFTPDataMovement;
         } catch (AppCatalogException e) {
             String errorMsg = "Error while retrieving GridFTP data movement interface to resource compute resource...";
             logger.error(dataMovementId, errorMsg, e);
@@ -3450,6 +3508,7 @@ public class AiravataServerHandler implements Airavata.Iface {
         try {
             appCatalog = RegistryFactory.getAppCatalog();
             appCatalog.getComputeResource().removeJobSubmissionInterface(computeResourceId, jobSubmissionInterfaceId);
+            logger.info("Airavata deleted job submission interface with interface id : " + jobSubmissionInterfaceId);
             return true;
         } catch (AppCatalogException e) {
             logger.error(jobSubmissionInterfaceId, "Error while deleting job submission interface...", e);
@@ -3474,6 +3533,7 @@ public class AiravataServerHandler implements Airavata.Iface {
         try {
             appCatalog = RegistryFactory.getAppCatalog();
             appCatalog.getComputeResource().removeDataMovementInterface(computeResourceId, dataMovementInterfaceId);
+            logger.info("Airavata deleted data movement interface with interface id : " + dataMovementInterfaceId);
             return true;
         } catch (AppCatalogException e) {
             logger.error(dataMovementInterfaceId, "Error while deleting data movement interface...", e);
@@ -3594,7 +3654,9 @@ public class AiravataServerHandler implements Airavata.Iface {
             }
             appCatalog = RegistryFactory.getAppCatalog();
             GwyResourceProfile gatewayProfile = appCatalog.getGatewayProfile();
-            return gatewayProfile.addGatewayResourceProfile(gatewayResourceProfile);
+            String resourceProfile = gatewayProfile.addGatewayResourceProfile(gatewayResourceProfile);
+            logger.info("Airavata registered gateway profile with gateway id : " + gatewayResourceProfile.getGatewayID());
+            return resourceProfile;
         } catch (AppCatalogException e) {
             logger.error("Error while registering gateway resource profile...", e);
             AiravataSystemException exception = new AiravataSystemException();
@@ -3622,7 +3684,9 @@ public class AiravataServerHandler implements Airavata.Iface {
             }
             appCatalog = RegistryFactory.getAppCatalog();
             GwyResourceProfile gatewayProfile = appCatalog.getGatewayProfile();
-            return gatewayProfile.getGatewayProfile(gatewayID);
+            GatewayResourceProfile gatewayResourceProfile = gatewayProfile.getGatewayProfile(gatewayID);
+            logger.info("Airavata retrieved gateway profile with gateway id : " + gatewayID);
+            return gatewayResourceProfile;
         } catch (AppCatalogException e) {
             logger.error(gatewayID, "Error while retrieving gateway resource profile...", e);
             AiravataSystemException exception = new AiravataSystemException();
@@ -3652,6 +3716,7 @@ public class AiravataServerHandler implements Airavata.Iface {
             appCatalog = RegistryFactory.getAppCatalog();
             GwyResourceProfile gatewayProfile = appCatalog.getGatewayProfile();
             gatewayProfile.updateGatewayResourceProfile(gatewayID, gatewayResourceProfile);
+            logger.info("Airavata updated gateway profile with gateway id : " + gatewayID);
             return true;
         } catch (AppCatalogException e) {
             logger.error(gatewayID, "Error while updating gateway resource profile...", e);
@@ -3681,6 +3746,7 @@ public class AiravataServerHandler implements Airavata.Iface {
             appCatalog = RegistryFactory.getAppCatalog();
             GwyResourceProfile gatewayProfile = appCatalog.getGatewayProfile();
             gatewayProfile.removeGatewayResourceProfile(gatewayID);
+            logger.info("Airavata deleted gateway profile with gateway id : " + gatewayID);
             return true;
         } catch (AppCatalogException e) {
             logger.error(gatewayID, "Error while removing gateway resource profile...", e);
@@ -3720,6 +3786,7 @@ public class AiravataServerHandler implements Airavata.Iface {
 //            gatewayProfile.removeGatewayResourceProfile(gatewayID);
             profile.addToComputeResourcePreferences(computeResourcePreference);
             gatewayProfile.updateGatewayResourceProfile(gatewayID, profile);
+            logger.info("Airavata added gateway compute resource preference with gateway id : " + gatewayID + " and for compute resource id : " + computeResourceId );
             return true;
         } catch (AppCatalogException e) {
             logger.error(gatewayID, "Error while registering gateway resource profile preference...", e);
@@ -3747,6 +3814,7 @@ public class AiravataServerHandler implements Airavata.Iface {
             dataStoragePreference.setStorageResourceId(storageResourceId);
             profile.addToStoragePreferences(dataStoragePreference);
             gatewayProfile.updateGatewayResourceProfile(gatewayID, profile);
+            logger.info("Airavata added storage resource preference with gateway id : " + gatewayID + " and for storage resource id : " + storageResourceId );
             return true;
         } catch (AppCatalogException e) {
             logger.error(gatewayID, "Error while registering gateway resource profile preference...", e);
@@ -3791,7 +3859,9 @@ public class AiravataServerHandler implements Airavata.Iface {
                 exception.setMessage("Given compute resource does not exist in the system. Please provide a valid compute resource id...");
                 throw exception;
             }
-            return gatewayProfile.getComputeResourcePreference(gatewayID, computeResourceId);
+            ComputeResourcePreference computeResourcePreference = gatewayProfile.getComputeResourcePreference(gatewayID, computeResourceId);
+            logger.info("Airavata retrieved gateway compute resource preference with gateway id : " + gatewayID + " and for compute resoruce id : " + computeResourceId );
+            return computeResourcePreference;
         } catch (AppCatalogException e) {
             logger.error(gatewayID, "Error while reading gateway compute resource preference...", e);
             AiravataSystemException exception = new AiravataSystemException();
@@ -3818,7 +3888,9 @@ public class AiravataServerHandler implements Airavata.Iface {
                 throw exception;
             }
 
-            return gatewayProfile.getStoragePreference(gatewayID, storageId);
+            StoragePreference storagePreference = gatewayProfile.getStoragePreference(gatewayID, storageId);
+            logger.info("Airavata retrieved storage resource preference with gateway id : " + gatewayID + " and for storage resource id : " + storageId);
+            return storagePreference;
         } catch (AppCatalogException e) {
             logger.error(gatewayID, "Error while reading gateway data storage preference...", e);
             AiravataSystemException exception = new AiravataSystemException();
@@ -3927,6 +3999,7 @@ public class AiravataServerHandler implements Airavata.Iface {
 			}
             profile.getComputeResourcePreferences().add(computeResourcePreference);
             gatewayProfile.updateGatewayResourceProfile(gatewayID, profile);
+            logger.info("Airavata updated compute resource preference with gateway id : " + gatewayID + " and for compute resource id : " + computeResourceId );
             return true;
         } catch (AppCatalogException e) {
             logger.error(gatewayID, "Error while reading gateway compute resource preference...", e);
@@ -3961,6 +4034,7 @@ public class AiravataServerHandler implements Airavata.Iface {
             }
             profile.getStoragePreferences().add(dataStoragePreference);
             gatewayProfile.updateGatewayResourceProfile(gatewayID, profile);
+            logger.info("Airavata updated storage resource preference with gateway id : " + gatewayID + " and for storage resource id : " + storageId );
             return true;
         } catch (AppCatalogException e) {
             logger.error(gatewayID, "Error while reading gateway data storage preference...", e);


[41/42] airavata git commit: Merge branch 'master' into develop

Posted by sh...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata/blob/4039bf7b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/replica/FileReplicaModel.java
----------------------------------------------------------------------
diff --cc airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/replica/FileReplicaModel.java
index 10309a4,0000000..08cd070
mode 100644,000000..100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/replica/FileReplicaModel.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/data/replica/FileReplicaModel.java
@@@ -1,1272 -1,0 +1,1635 @@@
 +/**
 + * Licensed to the Apache Software Foundation (ASF) under one or more
 + * contributor license agreements.  See the NOTICE file distributed with
 + * this work for additional information regarding copyright ownership.
 + * The ASF licenses this file to You under the Apache License, Version 2.0
 + * (the "License"); you may not use this file except in compliance with
 + * the License.  You may obtain a copy of the License at
 + *
 + *     http://www.apache.org/licenses/LICENSE-2.0
 + *
 + * Unless required by applicable law or agreed to in writing, software
 + * distributed under the License is distributed on an "AS IS" BASIS,
 + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 + * See the License for the specific language governing permissions and
 + * limitations under the License.
 + */
 +
 +/**
 + * Autogenerated by Thrift Compiler (0.9.3)
 + *
 + * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
 + *  @generated
 + */
- package org.apache.airavata.model.data.replica;
++package org.apache.airavata.model.data.resource;
 +
 +import org.apache.thrift.scheme.IScheme;
 +import org.apache.thrift.scheme.SchemeFactory;
 +import org.apache.thrift.scheme.StandardScheme;
 +
 +import org.apache.thrift.scheme.TupleScheme;
 +import org.apache.thrift.protocol.TTupleProtocol;
 +import org.apache.thrift.protocol.TProtocolException;
 +import org.apache.thrift.EncodingUtils;
 +import org.apache.thrift.TException;
 +import org.apache.thrift.async.AsyncMethodCallback;
 +import org.apache.thrift.server.AbstractNonblockingServer.*;
 +import java.util.List;
 +import java.util.ArrayList;
 +import java.util.Map;
 +import java.util.HashMap;
 +import java.util.EnumMap;
 +import java.util.Set;
 +import java.util.HashSet;
 +import java.util.EnumSet;
 +import java.util.Collections;
 +import java.util.BitSet;
 +import java.nio.ByteBuffer;
 +import java.util.Arrays;
 +import javax.annotation.Generated;
 +import org.slf4j.Logger;
 +import org.slf4j.LoggerFactory;
 +
 +@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
- @Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-12")
- public class FileReplicaModel implements org.apache.thrift.TBase<FileReplicaModel, FileReplicaModel._Fields>, java.io.Serializable, Cloneable, Comparable<FileReplicaModel> {
-   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("FileReplicaModel");
- 
-   private static final org.apache.thrift.protocol.TField REPLICA_NAME_FIELD_DESC = new org.apache.thrift.protocol.TField("replicaName", org.apache.thrift.protocol.TType.STRING, (short)1);
-   private static final org.apache.thrift.protocol.TField REPLICA_DESCRIPTION_FIELD_DESC = new org.apache.thrift.protocol.TField("replicaDescription", org.apache.thrift.protocol.TType.STRING, (short)2);
-   private static final org.apache.thrift.protocol.TField STORAGE_HOSTNAME_FIELD_DESC = new org.apache.thrift.protocol.TField("storageHostname", org.apache.thrift.protocol.TType.STRING, (short)3);
-   private static final org.apache.thrift.protocol.TField STORAGE_RESOURCE_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("storageResourceId", org.apache.thrift.protocol.TType.STRING, (short)4);
-   private static final org.apache.thrift.protocol.TField FILE_PATH_FIELD_DESC = new org.apache.thrift.protocol.TField("filePath", org.apache.thrift.protocol.TType.STRING, (short)5);
-   private static final org.apache.thrift.protocol.TField CREATION_TIME_FIELD_DESC = new org.apache.thrift.protocol.TField("creationTime", org.apache.thrift.protocol.TType.I64, (short)6);
++@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-01-06")
++public class DataReplicaLocationModel implements org.apache.thrift.TBase<DataReplicaLocationModel, DataReplicaLocationModel._Fields>, java.io.Serializable, Cloneable, Comparable<DataReplicaLocationModel> {
++  private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("DataReplicaLocationModel");
++
++  private static final org.apache.thrift.protocol.TField REPLICA_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("replicaId", org.apache.thrift.protocol.TType.STRING, (short)1);
++  private static final org.apache.thrift.protocol.TField RESOURCE_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("resourceId", org.apache.thrift.protocol.TType.STRING, (short)2);
++  private static final org.apache.thrift.protocol.TField REPLICA_NAME_FIELD_DESC = new org.apache.thrift.protocol.TField("replicaName", org.apache.thrift.protocol.TType.STRING, (short)3);
++  private static final org.apache.thrift.protocol.TField REPLICA_DESCRIPTION_FIELD_DESC = new org.apache.thrift.protocol.TField("replicaDescription", org.apache.thrift.protocol.TType.STRING, (short)4);
++  private static final org.apache.thrift.protocol.TField CREATION_TIME_FIELD_DESC = new org.apache.thrift.protocol.TField("creationTime", org.apache.thrift.protocol.TType.I64, (short)5);
++  private static final org.apache.thrift.protocol.TField LAST_MODIFIED_TIME_FIELD_DESC = new org.apache.thrift.protocol.TField("lastModifiedTime", org.apache.thrift.protocol.TType.I64, (short)6);
 +  private static final org.apache.thrift.protocol.TField VALID_UNTIL_TIME_FIELD_DESC = new org.apache.thrift.protocol.TField("validUntilTime", org.apache.thrift.protocol.TType.I64, (short)7);
-   private static final org.apache.thrift.protocol.TField STORAGE_RESOURCE_TYPE_FIELD_DESC = new org.apache.thrift.protocol.TField("storageResourceType", org.apache.thrift.protocol.TType.I32, (short)8);
++  private static final org.apache.thrift.protocol.TField REPLICA_LOCATION_CATEGORY_FIELD_DESC = new org.apache.thrift.protocol.TField("replicaLocationCategory", org.apache.thrift.protocol.TType.I32, (short)8);
 +  private static final org.apache.thrift.protocol.TField REPLICA_PERSISTENT_TYPE_FIELD_DESC = new org.apache.thrift.protocol.TField("replicaPersistentType", org.apache.thrift.protocol.TType.I32, (short)9);
++  private static final org.apache.thrift.protocol.TField STORAGE_RESOURCE_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("storageResourceId", org.apache.thrift.protocol.TType.STRING, (short)10);
++  private static final org.apache.thrift.protocol.TField FILE_ABSOLUTE_PATH_FIELD_DESC = new org.apache.thrift.protocol.TField("fileAbsolutePath", org.apache.thrift.protocol.TType.STRING, (short)11);
++  private static final org.apache.thrift.protocol.TField REPLICA_METADATA_FIELD_DESC = new org.apache.thrift.protocol.TField("replicaMetadata", org.apache.thrift.protocol.TType.MAP, (short)12);
 +
 +  private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
 +  static {
-     schemes.put(StandardScheme.class, new FileReplicaModelStandardSchemeFactory());
-     schemes.put(TupleScheme.class, new FileReplicaModelTupleSchemeFactory());
++    schemes.put(StandardScheme.class, new DataReplicaLocationModelStandardSchemeFactory());
++    schemes.put(TupleScheme.class, new DataReplicaLocationModelTupleSchemeFactory());
 +  }
 +
++  private String replicaId; // optional
++  private String resourceId; // optional
 +  private String replicaName; // optional
 +  private String replicaDescription; // optional
-   private String storageHostname; // optional
-   private String storageResourceId; // optional
-   private String filePath; // optional
 +  private long creationTime; // optional
++  private long lastModifiedTime; // optional
 +  private long validUntilTime; // optional
-   private StorageResourceType storageResourceType; // optional
++  private ReplicaLocationCategory replicaLocationCategory; // optional
 +  private ReplicaPersistentType replicaPersistentType; // optional
++  private String storageResourceId; // optional
++  private String fileAbsolutePath; // optional
++  private Map<String,String> replicaMetadata; // optional
 +
 +  /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
 +  public enum _Fields implements org.apache.thrift.TFieldIdEnum {
-     REPLICA_NAME((short)1, "replicaName"),
-     REPLICA_DESCRIPTION((short)2, "replicaDescription"),
-     STORAGE_HOSTNAME((short)3, "storageHostname"),
-     STORAGE_RESOURCE_ID((short)4, "storageResourceId"),
-     FILE_PATH((short)5, "filePath"),
-     CREATION_TIME((short)6, "creationTime"),
++    REPLICA_ID((short)1, "replicaId"),
++    RESOURCE_ID((short)2, "resourceId"),
++    REPLICA_NAME((short)3, "replicaName"),
++    REPLICA_DESCRIPTION((short)4, "replicaDescription"),
++    CREATION_TIME((short)5, "creationTime"),
++    LAST_MODIFIED_TIME((short)6, "lastModifiedTime"),
 +    VALID_UNTIL_TIME((short)7, "validUntilTime"),
 +    /**
 +     * 
-      * @see StorageResourceType
++     * @see ReplicaLocationCategory
 +     */
-     STORAGE_RESOURCE_TYPE((short)8, "storageResourceType"),
++    REPLICA_LOCATION_CATEGORY((short)8, "replicaLocationCategory"),
 +    /**
 +     * 
 +     * @see ReplicaPersistentType
 +     */
-     REPLICA_PERSISTENT_TYPE((short)9, "replicaPersistentType");
++    REPLICA_PERSISTENT_TYPE((short)9, "replicaPersistentType"),
++    STORAGE_RESOURCE_ID((short)10, "storageResourceId"),
++    FILE_ABSOLUTE_PATH((short)11, "fileAbsolutePath"),
++    REPLICA_METADATA((short)12, "replicaMetadata");
 +
 +    private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
 +
 +    static {
 +      for (_Fields field : EnumSet.allOf(_Fields.class)) {
 +        byName.put(field.getFieldName(), field);
 +      }
 +    }
 +
 +    /**
 +     * Find the _Fields constant that matches fieldId, or null if its not found.
 +     */
 +    public static _Fields findByThriftId(int fieldId) {
 +      switch(fieldId) {
-         case 1: // REPLICA_NAME
++        case 1: // REPLICA_ID
++          return REPLICA_ID;
++        case 2: // RESOURCE_ID
++          return RESOURCE_ID;
++        case 3: // REPLICA_NAME
 +          return REPLICA_NAME;
-         case 2: // REPLICA_DESCRIPTION
++        case 4: // REPLICA_DESCRIPTION
 +          return REPLICA_DESCRIPTION;
-         case 3: // STORAGE_HOSTNAME
-           return STORAGE_HOSTNAME;
-         case 4: // STORAGE_RESOURCE_ID
-           return STORAGE_RESOURCE_ID;
-         case 5: // FILE_PATH
-           return FILE_PATH;
-         case 6: // CREATION_TIME
++        case 5: // CREATION_TIME
 +          return CREATION_TIME;
++        case 6: // LAST_MODIFIED_TIME
++          return LAST_MODIFIED_TIME;
 +        case 7: // VALID_UNTIL_TIME
 +          return VALID_UNTIL_TIME;
-         case 8: // STORAGE_RESOURCE_TYPE
-           return STORAGE_RESOURCE_TYPE;
++        case 8: // REPLICA_LOCATION_CATEGORY
++          return REPLICA_LOCATION_CATEGORY;
 +        case 9: // REPLICA_PERSISTENT_TYPE
 +          return REPLICA_PERSISTENT_TYPE;
++        case 10: // STORAGE_RESOURCE_ID
++          return STORAGE_RESOURCE_ID;
++        case 11: // FILE_ABSOLUTE_PATH
++          return FILE_ABSOLUTE_PATH;
++        case 12: // REPLICA_METADATA
++          return REPLICA_METADATA;
 +        default:
 +          return null;
 +      }
 +    }
 +
 +    /**
 +     * Find the _Fields constant that matches fieldId, throwing an exception
 +     * if it is not found.
 +     */
 +    public static _Fields findByThriftIdOrThrow(int fieldId) {
 +      _Fields fields = findByThriftId(fieldId);
 +      if (fields == null) throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!");
 +      return fields;
 +    }
 +
 +    /**
 +     * Find the _Fields constant that matches name, or null if its not found.
 +     */
 +    public static _Fields findByName(String name) {
 +      return byName.get(name);
 +    }
 +
 +    private final short _thriftId;
 +    private final String _fieldName;
 +
 +    _Fields(short thriftId, String fieldName) {
 +      _thriftId = thriftId;
 +      _fieldName = fieldName;
 +    }
 +
 +    public short getThriftFieldId() {
 +      return _thriftId;
 +    }
 +
 +    public String getFieldName() {
 +      return _fieldName;
 +    }
 +  }
 +
 +  // isset id assignments
 +  private static final int __CREATIONTIME_ISSET_ID = 0;
-   private static final int __VALIDUNTILTIME_ISSET_ID = 1;
++  private static final int __LASTMODIFIEDTIME_ISSET_ID = 1;
++  private static final int __VALIDUNTILTIME_ISSET_ID = 2;
 +  private byte __isset_bitfield = 0;
-   private static final _Fields optionals[] = {_Fields.REPLICA_NAME,_Fields.REPLICA_DESCRIPTION,_Fields.STORAGE_HOSTNAME,_Fields.STORAGE_RESOURCE_ID,_Fields.FILE_PATH,_Fields.CREATION_TIME,_Fields.VALID_UNTIL_TIME,_Fields.STORAGE_RESOURCE_TYPE,_Fields.REPLICA_PERSISTENT_TYPE};
++  private static final _Fields optionals[] = {_Fields.REPLICA_ID,_Fields.RESOURCE_ID,_Fields.REPLICA_NAME,_Fields.REPLICA_DESCRIPTION,_Fields.CREATION_TIME,_Fields.LAST_MODIFIED_TIME,_Fields.VALID_UNTIL_TIME,_Fields.REPLICA_LOCATION_CATEGORY,_Fields.REPLICA_PERSISTENT_TYPE,_Fields.STORAGE_RESOURCE_ID,_Fields.FILE_ABSOLUTE_PATH,_Fields.REPLICA_METADATA};
 +  public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
 +  static {
 +    Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
-     tmpMap.put(_Fields.REPLICA_NAME, new org.apache.thrift.meta_data.FieldMetaData("replicaName", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
-         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
-     tmpMap.put(_Fields.REPLICA_DESCRIPTION, new org.apache.thrift.meta_data.FieldMetaData("replicaDescription", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
++    tmpMap.put(_Fields.REPLICA_ID, new org.apache.thrift.meta_data.FieldMetaData("replicaId", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
 +        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
-     tmpMap.put(_Fields.STORAGE_HOSTNAME, new org.apache.thrift.meta_data.FieldMetaData("storageHostname", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
++    tmpMap.put(_Fields.RESOURCE_ID, new org.apache.thrift.meta_data.FieldMetaData("resourceId", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
 +        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
-     tmpMap.put(_Fields.STORAGE_RESOURCE_ID, new org.apache.thrift.meta_data.FieldMetaData("storageResourceId", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
++    tmpMap.put(_Fields.REPLICA_NAME, new org.apache.thrift.meta_data.FieldMetaData("replicaName", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
 +        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
-     tmpMap.put(_Fields.FILE_PATH, new org.apache.thrift.meta_data.FieldMetaData("filePath", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
++    tmpMap.put(_Fields.REPLICA_DESCRIPTION, new org.apache.thrift.meta_data.FieldMetaData("replicaDescription", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
 +        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
 +    tmpMap.put(_Fields.CREATION_TIME, new org.apache.thrift.meta_data.FieldMetaData("creationTime", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
 +        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64)));
++    tmpMap.put(_Fields.LAST_MODIFIED_TIME, new org.apache.thrift.meta_data.FieldMetaData("lastModifiedTime", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
++        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64)));
 +    tmpMap.put(_Fields.VALID_UNTIL_TIME, new org.apache.thrift.meta_data.FieldMetaData("validUntilTime", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
 +        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64)));
-     tmpMap.put(_Fields.STORAGE_RESOURCE_TYPE, new org.apache.thrift.meta_data.FieldMetaData("storageResourceType", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
-         new org.apache.thrift.meta_data.EnumMetaData(org.apache.thrift.protocol.TType.ENUM, StorageResourceType.class)));
++    tmpMap.put(_Fields.REPLICA_LOCATION_CATEGORY, new org.apache.thrift.meta_data.FieldMetaData("replicaLocationCategory", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
++        new org.apache.thrift.meta_data.EnumMetaData(org.apache.thrift.protocol.TType.ENUM, ReplicaLocationCategory.class)));
 +    tmpMap.put(_Fields.REPLICA_PERSISTENT_TYPE, new org.apache.thrift.meta_data.FieldMetaData("replicaPersistentType", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
 +        new org.apache.thrift.meta_data.EnumMetaData(org.apache.thrift.protocol.TType.ENUM, ReplicaPersistentType.class)));
++    tmpMap.put(_Fields.STORAGE_RESOURCE_ID, new org.apache.thrift.meta_data.FieldMetaData("storageResourceId", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
++        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
++    tmpMap.put(_Fields.FILE_ABSOLUTE_PATH, new org.apache.thrift.meta_data.FieldMetaData("fileAbsolutePath", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
++        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
++    tmpMap.put(_Fields.REPLICA_METADATA, new org.apache.thrift.meta_data.FieldMetaData("replicaMetadata", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
++        new org.apache.thrift.meta_data.MapMetaData(org.apache.thrift.protocol.TType.MAP, 
++            new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING), 
++            new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING))));
 +    metaDataMap = Collections.unmodifiableMap(tmpMap);
-     org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(FileReplicaModel.class, metaDataMap);
++    org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(DataReplicaLocationModel.class, metaDataMap);
 +  }
 +
-   public FileReplicaModel() {
++  public DataReplicaLocationModel() {
 +  }
 +
 +  /**
 +   * Performs a deep copy on <i>other</i>.
 +   */
-   public FileReplicaModel(FileReplicaModel other) {
++  public DataReplicaLocationModel(DataReplicaLocationModel other) {
 +    __isset_bitfield = other.__isset_bitfield;
++    if (other.isSetReplicaId()) {
++      this.replicaId = other.replicaId;
++    }
++    if (other.isSetResourceId()) {
++      this.resourceId = other.resourceId;
++    }
 +    if (other.isSetReplicaName()) {
 +      this.replicaName = other.replicaName;
 +    }
 +    if (other.isSetReplicaDescription()) {
 +      this.replicaDescription = other.replicaDescription;
 +    }
-     if (other.isSetStorageHostname()) {
-       this.storageHostname = other.storageHostname;
-     }
-     if (other.isSetStorageResourceId()) {
-       this.storageResourceId = other.storageResourceId;
-     }
-     if (other.isSetFilePath()) {
-       this.filePath = other.filePath;
-     }
 +    this.creationTime = other.creationTime;
++    this.lastModifiedTime = other.lastModifiedTime;
 +    this.validUntilTime = other.validUntilTime;
-     if (other.isSetStorageResourceType()) {
-       this.storageResourceType = other.storageResourceType;
++    if (other.isSetReplicaLocationCategory()) {
++      this.replicaLocationCategory = other.replicaLocationCategory;
 +    }
 +    if (other.isSetReplicaPersistentType()) {
 +      this.replicaPersistentType = other.replicaPersistentType;
 +    }
++    if (other.isSetStorageResourceId()) {
++      this.storageResourceId = other.storageResourceId;
++    }
++    if (other.isSetFileAbsolutePath()) {
++      this.fileAbsolutePath = other.fileAbsolutePath;
++    }
++    if (other.isSetReplicaMetadata()) {
++      Map<String,String> __this__replicaMetadata = new HashMap<String,String>(other.replicaMetadata);
++      this.replicaMetadata = __this__replicaMetadata;
++    }
 +  }
 +
-   public FileReplicaModel deepCopy() {
-     return new FileReplicaModel(this);
++  public DataReplicaLocationModel deepCopy() {
++    return new DataReplicaLocationModel(this);
 +  }
 +
 +  @Override
 +  public void clear() {
++    this.replicaId = null;
++    this.resourceId = null;
 +    this.replicaName = null;
 +    this.replicaDescription = null;
-     this.storageHostname = null;
-     this.storageResourceId = null;
-     this.filePath = null;
 +    setCreationTimeIsSet(false);
 +    this.creationTime = 0;
++    setLastModifiedTimeIsSet(false);
++    this.lastModifiedTime = 0;
 +    setValidUntilTimeIsSet(false);
 +    this.validUntilTime = 0;
-     this.storageResourceType = null;
++    this.replicaLocationCategory = null;
 +    this.replicaPersistentType = null;
++    this.storageResourceId = null;
++    this.fileAbsolutePath = null;
++    this.replicaMetadata = null;
 +  }
 +
-   public String getReplicaName() {
-     return this.replicaName;
++  public String getReplicaId() {
++    return this.replicaId;
 +  }
 +
-   public void setReplicaName(String replicaName) {
-     this.replicaName = replicaName;
++  public void setReplicaId(String replicaId) {
++    this.replicaId = replicaId;
 +  }
 +
-   public void unsetReplicaName() {
-     this.replicaName = null;
++  public void unsetReplicaId() {
++    this.replicaId = null;
 +  }
 +
-   /** Returns true if field replicaName is set (has been assigned a value) and false otherwise */
-   public boolean isSetReplicaName() {
-     return this.replicaName != null;
++  /** Returns true if field replicaId is set (has been assigned a value) and false otherwise */
++  public boolean isSetReplicaId() {
++    return this.replicaId != null;
 +  }
 +
-   public void setReplicaNameIsSet(boolean value) {
++  public void setReplicaIdIsSet(boolean value) {
 +    if (!value) {
-       this.replicaName = null;
++      this.replicaId = null;
 +    }
 +  }
 +
-   public String getReplicaDescription() {
-     return this.replicaDescription;
++  public String getResourceId() {
++    return this.resourceId;
 +  }
 +
-   public void setReplicaDescription(String replicaDescription) {
-     this.replicaDescription = replicaDescription;
++  public void setResourceId(String resourceId) {
++    this.resourceId = resourceId;
 +  }
 +
-   public void unsetReplicaDescription() {
-     this.replicaDescription = null;
++  public void unsetResourceId() {
++    this.resourceId = null;
 +  }
 +
-   /** Returns true if field replicaDescription is set (has been assigned a value) and false otherwise */
-   public boolean isSetReplicaDescription() {
-     return this.replicaDescription != null;
++  /** Returns true if field resourceId is set (has been assigned a value) and false otherwise */
++  public boolean isSetResourceId() {
++    return this.resourceId != null;
 +  }
 +
-   public void setReplicaDescriptionIsSet(boolean value) {
++  public void setResourceIdIsSet(boolean value) {
 +    if (!value) {
-       this.replicaDescription = null;
++      this.resourceId = null;
 +    }
 +  }
 +
-   public String getStorageHostname() {
-     return this.storageHostname;
-   }
- 
-   public void setStorageHostname(String storageHostname) {
-     this.storageHostname = storageHostname;
-   }
- 
-   public void unsetStorageHostname() {
-     this.storageHostname = null;
-   }
- 
-   /** Returns true if field storageHostname is set (has been assigned a value) and false otherwise */
-   public boolean isSetStorageHostname() {
-     return this.storageHostname != null;
-   }
- 
-   public void setStorageHostnameIsSet(boolean value) {
-     if (!value) {
-       this.storageHostname = null;
-     }
-   }
- 
-   public String getStorageResourceId() {
-     return this.storageResourceId;
++  public String getReplicaName() {
++    return this.replicaName;
 +  }
 +
-   public void setStorageResourceId(String storageResourceId) {
-     this.storageResourceId = storageResourceId;
++  public void setReplicaName(String replicaName) {
++    this.replicaName = replicaName;
 +  }
 +
-   public void unsetStorageResourceId() {
-     this.storageResourceId = null;
++  public void unsetReplicaName() {
++    this.replicaName = null;
 +  }
 +
-   /** Returns true if field storageResourceId is set (has been assigned a value) and false otherwise */
-   public boolean isSetStorageResourceId() {
-     return this.storageResourceId != null;
++  /** Returns true if field replicaName is set (has been assigned a value) and false otherwise */
++  public boolean isSetReplicaName() {
++    return this.replicaName != null;
 +  }
 +
-   public void setStorageResourceIdIsSet(boolean value) {
++  public void setReplicaNameIsSet(boolean value) {
 +    if (!value) {
-       this.storageResourceId = null;
++      this.replicaName = null;
 +    }
 +  }
 +
-   public String getFilePath() {
-     return this.filePath;
++  public String getReplicaDescription() {
++    return this.replicaDescription;
 +  }
 +
-   public void setFilePath(String filePath) {
-     this.filePath = filePath;
++  public void setReplicaDescription(String replicaDescription) {
++    this.replicaDescription = replicaDescription;
 +  }
 +
-   public void unsetFilePath() {
-     this.filePath = null;
++  public void unsetReplicaDescription() {
++    this.replicaDescription = null;
 +  }
 +
-   /** Returns true if field filePath is set (has been assigned a value) and false otherwise */
-   public boolean isSetFilePath() {
-     return this.filePath != null;
++  /** Returns true if field replicaDescription is set (has been assigned a value) and false otherwise */
++  public boolean isSetReplicaDescription() {
++    return this.replicaDescription != null;
 +  }
 +
-   public void setFilePathIsSet(boolean value) {
++  public void setReplicaDescriptionIsSet(boolean value) {
 +    if (!value) {
-       this.filePath = null;
++      this.replicaDescription = null;
 +    }
 +  }
 +
 +  public long getCreationTime() {
 +    return this.creationTime;
 +  }
 +
 +  public void setCreationTime(long creationTime) {
 +    this.creationTime = creationTime;
 +    setCreationTimeIsSet(true);
 +  }
 +
 +  public void unsetCreationTime() {
 +    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __CREATIONTIME_ISSET_ID);
 +  }
 +
 +  /** Returns true if field creationTime is set (has been assigned a value) and false otherwise */
 +  public boolean isSetCreationTime() {
 +    return EncodingUtils.testBit(__isset_bitfield, __CREATIONTIME_ISSET_ID);
 +  }
 +
 +  public void setCreationTimeIsSet(boolean value) {
 +    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __CREATIONTIME_ISSET_ID, value);
 +  }
 +
++  public long getLastModifiedTime() {
++    return this.lastModifiedTime;
++  }
++
++  public void setLastModifiedTime(long lastModifiedTime) {
++    this.lastModifiedTime = lastModifiedTime;
++    setLastModifiedTimeIsSet(true);
++  }
++
++  public void unsetLastModifiedTime() {
++    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __LASTMODIFIEDTIME_ISSET_ID);
++  }
++
++  /** Returns true if field lastModifiedTime is set (has been assigned a value) and false otherwise */
++  public boolean isSetLastModifiedTime() {
++    return EncodingUtils.testBit(__isset_bitfield, __LASTMODIFIEDTIME_ISSET_ID);
++  }
++
++  public void setLastModifiedTimeIsSet(boolean value) {
++    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __LASTMODIFIEDTIME_ISSET_ID, value);
++  }
++
 +  public long getValidUntilTime() {
 +    return this.validUntilTime;
 +  }
 +
 +  public void setValidUntilTime(long validUntilTime) {
 +    this.validUntilTime = validUntilTime;
 +    setValidUntilTimeIsSet(true);
 +  }
 +
 +  public void unsetValidUntilTime() {
 +    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __VALIDUNTILTIME_ISSET_ID);
 +  }
 +
 +  /** Returns true if field validUntilTime is set (has been assigned a value) and false otherwise */
 +  public boolean isSetValidUntilTime() {
 +    return EncodingUtils.testBit(__isset_bitfield, __VALIDUNTILTIME_ISSET_ID);
 +  }
 +
 +  public void setValidUntilTimeIsSet(boolean value) {
 +    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __VALIDUNTILTIME_ISSET_ID, value);
 +  }
 +
 +  /**
 +   * 
-    * @see StorageResourceType
++   * @see ReplicaLocationCategory
 +   */
-   public StorageResourceType getStorageResourceType() {
-     return this.storageResourceType;
++  public ReplicaLocationCategory getReplicaLocationCategory() {
++    return this.replicaLocationCategory;
 +  }
 +
 +  /**
 +   * 
-    * @see StorageResourceType
++   * @see ReplicaLocationCategory
 +   */
-   public void setStorageResourceType(StorageResourceType storageResourceType) {
-     this.storageResourceType = storageResourceType;
++  public void setReplicaLocationCategory(ReplicaLocationCategory replicaLocationCategory) {
++    this.replicaLocationCategory = replicaLocationCategory;
 +  }
 +
-   public void unsetStorageResourceType() {
-     this.storageResourceType = null;
++  public void unsetReplicaLocationCategory() {
++    this.replicaLocationCategory = null;
 +  }
 +
-   /** Returns true if field storageResourceType is set (has been assigned a value) and false otherwise */
-   public boolean isSetStorageResourceType() {
-     return this.storageResourceType != null;
++  /** Returns true if field replicaLocationCategory is set (has been assigned a value) and false otherwise */
++  public boolean isSetReplicaLocationCategory() {
++    return this.replicaLocationCategory != null;
 +  }
 +
-   public void setStorageResourceTypeIsSet(boolean value) {
++  public void setReplicaLocationCategoryIsSet(boolean value) {
 +    if (!value) {
-       this.storageResourceType = null;
++      this.replicaLocationCategory = null;
 +    }
 +  }
 +
 +  /**
 +   * 
 +   * @see ReplicaPersistentType
 +   */
 +  public ReplicaPersistentType getReplicaPersistentType() {
 +    return this.replicaPersistentType;
 +  }
 +
 +  /**
 +   * 
 +   * @see ReplicaPersistentType
 +   */
 +  public void setReplicaPersistentType(ReplicaPersistentType replicaPersistentType) {
 +    this.replicaPersistentType = replicaPersistentType;
 +  }
 +
 +  public void unsetReplicaPersistentType() {
 +    this.replicaPersistentType = null;
 +  }
 +
 +  /** Returns true if field replicaPersistentType is set (has been assigned a value) and false otherwise */
 +  public boolean isSetReplicaPersistentType() {
 +    return this.replicaPersistentType != null;
 +  }
 +
 +  public void setReplicaPersistentTypeIsSet(boolean value) {
 +    if (!value) {
 +      this.replicaPersistentType = null;
 +    }
 +  }
 +
++  public String getStorageResourceId() {
++    return this.storageResourceId;
++  }
++
++  public void setStorageResourceId(String storageResourceId) {
++    this.storageResourceId = storageResourceId;
++  }
++
++  public void unsetStorageResourceId() {
++    this.storageResourceId = null;
++  }
++
++  /** Returns true if field storageResourceId is set (has been assigned a value) and false otherwise */
++  public boolean isSetStorageResourceId() {
++    return this.storageResourceId != null;
++  }
++
++  public void setStorageResourceIdIsSet(boolean value) {
++    if (!value) {
++      this.storageResourceId = null;
++    }
++  }
++
++  public String getFileAbsolutePath() {
++    return this.fileAbsolutePath;
++  }
++
++  public void setFileAbsolutePath(String fileAbsolutePath) {
++    this.fileAbsolutePath = fileAbsolutePath;
++  }
++
++  public void unsetFileAbsolutePath() {
++    this.fileAbsolutePath = null;
++  }
++
++  /** Returns true if field fileAbsolutePath is set (has been assigned a value) and false otherwise */
++  public boolean isSetFileAbsolutePath() {
++    return this.fileAbsolutePath != null;
++  }
++
++  public void setFileAbsolutePathIsSet(boolean value) {
++    if (!value) {
++      this.fileAbsolutePath = null;
++    }
++  }
++
++  public int getReplicaMetadataSize() {
++    return (this.replicaMetadata == null) ? 0 : this.replicaMetadata.size();
++  }
++
++  public void putToReplicaMetadata(String key, String val) {
++    if (this.replicaMetadata == null) {
++      this.replicaMetadata = new HashMap<String,String>();
++    }
++    this.replicaMetadata.put(key, val);
++  }
++
++  public Map<String,String> getReplicaMetadata() {
++    return this.replicaMetadata;
++  }
++
++  public void setReplicaMetadata(Map<String,String> replicaMetadata) {
++    this.replicaMetadata = replicaMetadata;
++  }
++
++  public void unsetReplicaMetadata() {
++    this.replicaMetadata = null;
++  }
++
++  /** Returns true if field replicaMetadata is set (has been assigned a value) and false otherwise */
++  public boolean isSetReplicaMetadata() {
++    return this.replicaMetadata != null;
++  }
++
++  public void setReplicaMetadataIsSet(boolean value) {
++    if (!value) {
++      this.replicaMetadata = null;
++    }
++  }
++
 +  public void setFieldValue(_Fields field, Object value) {
 +    switch (field) {
-     case REPLICA_NAME:
++    case REPLICA_ID:
 +      if (value == null) {
-         unsetReplicaName();
++        unsetReplicaId();
 +      } else {
-         setReplicaName((String)value);
++        setReplicaId((String)value);
 +      }
 +      break;
 +
-     case REPLICA_DESCRIPTION:
++    case RESOURCE_ID:
 +      if (value == null) {
-         unsetReplicaDescription();
++        unsetResourceId();
 +      } else {
-         setReplicaDescription((String)value);
++        setResourceId((String)value);
 +      }
 +      break;
 +
-     case STORAGE_HOSTNAME:
++    case REPLICA_NAME:
 +      if (value == null) {
-         unsetStorageHostname();
++        unsetReplicaName();
 +      } else {
-         setStorageHostname((String)value);
++        setReplicaName((String)value);
 +      }
 +      break;
 +
-     case STORAGE_RESOURCE_ID:
++    case REPLICA_DESCRIPTION:
 +      if (value == null) {
-         unsetStorageResourceId();
++        unsetReplicaDescription();
 +      } else {
-         setStorageResourceId((String)value);
++        setReplicaDescription((String)value);
 +      }
 +      break;
 +
-     case FILE_PATH:
++    case CREATION_TIME:
 +      if (value == null) {
-         unsetFilePath();
++        unsetCreationTime();
 +      } else {
-         setFilePath((String)value);
++        setCreationTime((Long)value);
 +      }
 +      break;
 +
-     case CREATION_TIME:
++    case LAST_MODIFIED_TIME:
 +      if (value == null) {
-         unsetCreationTime();
++        unsetLastModifiedTime();
 +      } else {
-         setCreationTime((Long)value);
++        setLastModifiedTime((Long)value);
 +      }
 +      break;
 +
 +    case VALID_UNTIL_TIME:
 +      if (value == null) {
 +        unsetValidUntilTime();
 +      } else {
 +        setValidUntilTime((Long)value);
 +      }
 +      break;
 +
-     case STORAGE_RESOURCE_TYPE:
++    case REPLICA_LOCATION_CATEGORY:
 +      if (value == null) {
-         unsetStorageResourceType();
++        unsetReplicaLocationCategory();
 +      } else {
-         setStorageResourceType((StorageResourceType)value);
++        setReplicaLocationCategory((ReplicaLocationCategory)value);
 +      }
 +      break;
 +
 +    case REPLICA_PERSISTENT_TYPE:
 +      if (value == null) {
 +        unsetReplicaPersistentType();
 +      } else {
 +        setReplicaPersistentType((ReplicaPersistentType)value);
 +      }
 +      break;
 +
++    case STORAGE_RESOURCE_ID:
++      if (value == null) {
++        unsetStorageResourceId();
++      } else {
++        setStorageResourceId((String)value);
++      }
++      break;
++
++    case FILE_ABSOLUTE_PATH:
++      if (value == null) {
++        unsetFileAbsolutePath();
++      } else {
++        setFileAbsolutePath((String)value);
++      }
++      break;
++
++    case REPLICA_METADATA:
++      if (value == null) {
++        unsetReplicaMetadata();
++      } else {
++        setReplicaMetadata((Map<String,String>)value);
++      }
++      break;
++
 +    }
 +  }
 +
 +  public Object getFieldValue(_Fields field) {
 +    switch (field) {
++    case REPLICA_ID:
++      return getReplicaId();
++
++    case RESOURCE_ID:
++      return getResourceId();
++
 +    case REPLICA_NAME:
 +      return getReplicaName();
 +
 +    case REPLICA_DESCRIPTION:
 +      return getReplicaDescription();
 +
-     case STORAGE_HOSTNAME:
-       return getStorageHostname();
- 
-     case STORAGE_RESOURCE_ID:
-       return getStorageResourceId();
- 
-     case FILE_PATH:
-       return getFilePath();
- 
 +    case CREATION_TIME:
 +      return getCreationTime();
 +
++    case LAST_MODIFIED_TIME:
++      return getLastModifiedTime();
++
 +    case VALID_UNTIL_TIME:
 +      return getValidUntilTime();
 +
-     case STORAGE_RESOURCE_TYPE:
-       return getStorageResourceType();
++    case REPLICA_LOCATION_CATEGORY:
++      return getReplicaLocationCategory();
 +
 +    case REPLICA_PERSISTENT_TYPE:
 +      return getReplicaPersistentType();
 +
++    case STORAGE_RESOURCE_ID:
++      return getStorageResourceId();
++
++    case FILE_ABSOLUTE_PATH:
++      return getFileAbsolutePath();
++
++    case REPLICA_METADATA:
++      return getReplicaMetadata();
++
 +    }
 +    throw new IllegalStateException();
 +  }
 +
 +  /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
 +  public boolean isSet(_Fields field) {
 +    if (field == null) {
 +      throw new IllegalArgumentException();
 +    }
 +
 +    switch (field) {
++    case REPLICA_ID:
++      return isSetReplicaId();
++    case RESOURCE_ID:
++      return isSetResourceId();
 +    case REPLICA_NAME:
 +      return isSetReplicaName();
 +    case REPLICA_DESCRIPTION:
 +      return isSetReplicaDescription();
-     case STORAGE_HOSTNAME:
-       return isSetStorageHostname();
-     case STORAGE_RESOURCE_ID:
-       return isSetStorageResourceId();
-     case FILE_PATH:
-       return isSetFilePath();
 +    case CREATION_TIME:
 +      return isSetCreationTime();
++    case LAST_MODIFIED_TIME:
++      return isSetLastModifiedTime();
 +    case VALID_UNTIL_TIME:
 +      return isSetValidUntilTime();
-     case STORAGE_RESOURCE_TYPE:
-       return isSetStorageResourceType();
++    case REPLICA_LOCATION_CATEGORY:
++      return isSetReplicaLocationCategory();
 +    case REPLICA_PERSISTENT_TYPE:
 +      return isSetReplicaPersistentType();
++    case STORAGE_RESOURCE_ID:
++      return isSetStorageResourceId();
++    case FILE_ABSOLUTE_PATH:
++      return isSetFileAbsolutePath();
++    case REPLICA_METADATA:
++      return isSetReplicaMetadata();
 +    }
 +    throw new IllegalStateException();
 +  }
 +
 +  @Override
 +  public boolean equals(Object that) {
 +    if (that == null)
 +      return false;
-     if (that instanceof FileReplicaModel)
-       return this.equals((FileReplicaModel)that);
++    if (that instanceof DataReplicaLocationModel)
++      return this.equals((DataReplicaLocationModel)that);
 +    return false;
 +  }
 +
-   public boolean equals(FileReplicaModel that) {
++  public boolean equals(DataReplicaLocationModel that) {
 +    if (that == null)
 +      return false;
 +
++    boolean this_present_replicaId = true && this.isSetReplicaId();
++    boolean that_present_replicaId = true && that.isSetReplicaId();
++    if (this_present_replicaId || that_present_replicaId) {
++      if (!(this_present_replicaId && that_present_replicaId))
++        return false;
++      if (!this.replicaId.equals(that.replicaId))
++        return false;
++    }
++
++    boolean this_present_resourceId = true && this.isSetResourceId();
++    boolean that_present_resourceId = true && that.isSetResourceId();
++    if (this_present_resourceId || that_present_resourceId) {
++      if (!(this_present_resourceId && that_present_resourceId))
++        return false;
++      if (!this.resourceId.equals(that.resourceId))
++        return false;
++    }
++
 +    boolean this_present_replicaName = true && this.isSetReplicaName();
 +    boolean that_present_replicaName = true && that.isSetReplicaName();
 +    if (this_present_replicaName || that_present_replicaName) {
 +      if (!(this_present_replicaName && that_present_replicaName))
 +        return false;
 +      if (!this.replicaName.equals(that.replicaName))
 +        return false;
 +    }
 +
 +    boolean this_present_replicaDescription = true && this.isSetReplicaDescription();
 +    boolean that_present_replicaDescription = true && that.isSetReplicaDescription();
 +    if (this_present_replicaDescription || that_present_replicaDescription) {
 +      if (!(this_present_replicaDescription && that_present_replicaDescription))
 +        return false;
 +      if (!this.replicaDescription.equals(that.replicaDescription))
 +        return false;
 +    }
 +
-     boolean this_present_storageHostname = true && this.isSetStorageHostname();
-     boolean that_present_storageHostname = true && that.isSetStorageHostname();
-     if (this_present_storageHostname || that_present_storageHostname) {
-       if (!(this_present_storageHostname && that_present_storageHostname))
-         return false;
-       if (!this.storageHostname.equals(that.storageHostname))
-         return false;
-     }
- 
-     boolean this_present_storageResourceId = true && this.isSetStorageResourceId();
-     boolean that_present_storageResourceId = true && that.isSetStorageResourceId();
-     if (this_present_storageResourceId || that_present_storageResourceId) {
-       if (!(this_present_storageResourceId && that_present_storageResourceId))
-         return false;
-       if (!this.storageResourceId.equals(that.storageResourceId))
-         return false;
-     }
- 
-     boolean this_present_filePath = true && this.isSetFilePath();
-     boolean that_present_filePath = true && that.isSetFilePath();
-     if (this_present_filePath || that_present_filePath) {
-       if (!(this_present_filePath && that_present_filePath))
-         return false;
-       if (!this.filePath.equals(that.filePath))
-         return false;
-     }
- 
 +    boolean this_present_creationTime = true && this.isSetCreationTime();
 +    boolean that_present_creationTime = true && that.isSetCreationTime();
 +    if (this_present_creationTime || that_present_creationTime) {
 +      if (!(this_present_creationTime && that_present_creationTime))
 +        return false;
 +      if (this.creationTime != that.creationTime)
 +        return false;
 +    }
 +
++    boolean this_present_lastModifiedTime = true && this.isSetLastModifiedTime();
++    boolean that_present_lastModifiedTime = true && that.isSetLastModifiedTime();
++    if (this_present_lastModifiedTime || that_present_lastModifiedTime) {
++      if (!(this_present_lastModifiedTime && that_present_lastModifiedTime))
++        return false;
++      if (this.lastModifiedTime != that.lastModifiedTime)
++        return false;
++    }
++
 +    boolean this_present_validUntilTime = true && this.isSetValidUntilTime();
 +    boolean that_present_validUntilTime = true && that.isSetValidUntilTime();
 +    if (this_present_validUntilTime || that_present_validUntilTime) {
 +      if (!(this_present_validUntilTime && that_present_validUntilTime))
 +        return false;
 +      if (this.validUntilTime != that.validUntilTime)
 +        return false;
 +    }
 +
-     boolean this_present_storageResourceType = true && this.isSetStorageResourceType();
-     boolean that_present_storageResourceType = true && that.isSetStorageResourceType();
-     if (this_present_storageResourceType || that_present_storageResourceType) {
-       if (!(this_present_storageResourceType && that_present_storageResourceType))
++    boolean this_present_replicaLocationCategory = true && this.isSetReplicaLocationCategory();
++    boolean that_present_replicaLocationCategory = true && that.isSetReplicaLocationCategory();
++    if (this_present_replicaLocationCategory || that_present_replicaLocationCategory) {
++      if (!(this_present_replicaLocationCategory && that_present_replicaLocationCategory))
 +        return false;
-       if (!this.storageResourceType.equals(that.storageResourceType))
++      if (!this.replicaLocationCategory.equals(that.replicaLocationCategory))
 +        return false;
 +    }
 +
 +    boolean this_present_replicaPersistentType = true && this.isSetReplicaPersistentType();
 +    boolean that_present_replicaPersistentType = true && that.isSetReplicaPersistentType();
 +    if (this_present_replicaPersistentType || that_present_replicaPersistentType) {
 +      if (!(this_present_replicaPersistentType && that_present_replicaPersistentType))
 +        return false;
 +      if (!this.replicaPersistentType.equals(that.replicaPersistentType))
 +        return false;
 +    }
 +
++    boolean this_present_storageResourceId = true && this.isSetStorageResourceId();
++    boolean that_present_storageResourceId = true && that.isSetStorageResourceId();
++    if (this_present_storageResourceId || that_present_storageResourceId) {
++      if (!(this_present_storageResourceId && that_present_storageResourceId))
++        return false;
++      if (!this.storageResourceId.equals(that.storageResourceId))
++        return false;
++    }
++
++    boolean this_present_fileAbsolutePath = true && this.isSetFileAbsolutePath();
++    boolean that_present_fileAbsolutePath = true && that.isSetFileAbsolutePath();
++    if (this_present_fileAbsolutePath || that_present_fileAbsolutePath) {
++      if (!(this_present_fileAbsolutePath && that_present_fileAbsolutePath))
++        return false;
++      if (!this.fileAbsolutePath.equals(that.fileAbsolutePath))
++        return false;
++    }
++
++    boolean this_present_replicaMetadata = true && this.isSetReplicaMetadata();
++    boolean that_present_replicaMetadata = true && that.isSetReplicaMetadata();
++    if (this_present_replicaMetadata || that_present_replicaMetadata) {
++      if (!(this_present_replicaMetadata && that_present_replicaMetadata))
++        return false;
++      if (!this.replicaMetadata.equals(that.replicaMetadata))
++        return false;
++    }
++
 +    return true;
 +  }
 +
 +  @Override
 +  public int hashCode() {
 +    List<Object> list = new ArrayList<Object>();
 +
++    boolean present_replicaId = true && (isSetReplicaId());
++    list.add(present_replicaId);
++    if (present_replicaId)
++      list.add(replicaId);
++
++    boolean present_resourceId = true && (isSetResourceId());
++    list.add(present_resourceId);
++    if (present_resourceId)
++      list.add(resourceId);
++
 +    boolean present_replicaName = true && (isSetReplicaName());
 +    list.add(present_replicaName);
 +    if (present_replicaName)
 +      list.add(replicaName);
 +
 +    boolean present_replicaDescription = true && (isSetReplicaDescription());
 +    list.add(present_replicaDescription);
 +    if (present_replicaDescription)
 +      list.add(replicaDescription);
 +
-     boolean present_storageHostname = true && (isSetStorageHostname());
-     list.add(present_storageHostname);
-     if (present_storageHostname)
-       list.add(storageHostname);
- 
-     boolean present_storageResourceId = true && (isSetStorageResourceId());
-     list.add(present_storageResourceId);
-     if (present_storageResourceId)
-       list.add(storageResourceId);
- 
-     boolean present_filePath = true && (isSetFilePath());
-     list.add(present_filePath);
-     if (present_filePath)
-       list.add(filePath);
- 
 +    boolean present_creationTime = true && (isSetCreationTime());
 +    list.add(present_creationTime);
 +    if (present_creationTime)
 +      list.add(creationTime);
 +
++    boolean present_lastModifiedTime = true && (isSetLastModifiedTime());
++    list.add(present_lastModifiedTime);
++    if (present_lastModifiedTime)
++      list.add(lastModifiedTime);
++
 +    boolean present_validUntilTime = true && (isSetValidUntilTime());
 +    list.add(present_validUntilTime);
 +    if (present_validUntilTime)
 +      list.add(validUntilTime);
 +
-     boolean present_storageResourceType = true && (isSetStorageResourceType());
-     list.add(present_storageResourceType);
-     if (present_storageResourceType)
-       list.add(storageResourceType.getValue());
++    boolean present_replicaLocationCategory = true && (isSetReplicaLocationCategory());
++    list.add(present_replicaLocationCategory);
++    if (present_replicaLocationCategory)
++      list.add(replicaLocationCategory.getValue());
 +
 +    boolean present_replicaPersistentType = true && (isSetReplicaPersistentType());
 +    list.add(present_replicaPersistentType);
 +    if (present_replicaPersistentType)
 +      list.add(replicaPersistentType.getValue());
 +
++    boolean present_storageResourceId = true && (isSetStorageResourceId());
++    list.add(present_storageResourceId);
++    if (present_storageResourceId)
++      list.add(storageResourceId);
++
++    boolean present_fileAbsolutePath = true && (isSetFileAbsolutePath());
++    list.add(present_fileAbsolutePath);
++    if (present_fileAbsolutePath)
++      list.add(fileAbsolutePath);
++
++    boolean present_replicaMetadata = true && (isSetReplicaMetadata());
++    list.add(present_replicaMetadata);
++    if (present_replicaMetadata)
++      list.add(replicaMetadata);
++
 +    return list.hashCode();
 +  }
 +
 +  @Override
-   public int compareTo(FileReplicaModel other) {
++  public int compareTo(DataReplicaLocationModel other) {
 +    if (!getClass().equals(other.getClass())) {
 +      return getClass().getName().compareTo(other.getClass().getName());
 +    }
 +
 +    int lastComparison = 0;
 +
-     lastComparison = Boolean.valueOf(isSetReplicaName()).compareTo(other.isSetReplicaName());
++    lastComparison = Boolean.valueOf(isSetReplicaId()).compareTo(other.isSetReplicaId());
 +    if (lastComparison != 0) {
 +      return lastComparison;
 +    }
-     if (isSetReplicaName()) {
-       lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.replicaName, other.replicaName);
++    if (isSetReplicaId()) {
++      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.replicaId, other.replicaId);
 +      if (lastComparison != 0) {
 +        return lastComparison;
 +      }
 +    }
-     lastComparison = Boolean.valueOf(isSetReplicaDescription()).compareTo(other.isSetReplicaDescription());
++    lastComparison = Boolean.valueOf(isSetResourceId()).compareTo(other.isSetResourceId());
 +    if (lastComparison != 0) {
 +      return lastComparison;
 +    }
-     if (isSetReplicaDescription()) {
-       lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.replicaDescription, other.replicaDescription);
++    if (isSetResourceId()) {
++      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.resourceId, other.resourceId);
 +      if (lastComparison != 0) {
 +        return lastComparison;
 +      }
 +    }
-     lastComparison = Boolean.valueOf(isSetStorageHostname()).compareTo(other.isSetStorageHostname());
++    lastComparison = Boolean.valueOf(isSetReplicaName()).compareTo(other.isSetReplicaName());
 +    if (lastComparison != 0) {
 +      return lastComparison;
 +    }
-     if (isSetStorageHostname()) {
-       lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.storageHostname, other.storageHostname);
++    if (isSetReplicaName()) {
++      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.replicaName, other.replicaName);
 +      if (lastComparison != 0) {
 +        return lastComparison;
 +      }
 +    }
-     lastComparison = Boolean.valueOf(isSetStorageResourceId()).compareTo(other.isSetStorageResourceId());
++    lastComparison = Boolean.valueOf(isSetReplicaDescription()).compareTo(other.isSetReplicaDescription());
 +    if (lastComparison != 0) {
 +      return lastComparison;
 +    }
-     if (isSetStorageResourceId()) {
-       lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.storageResourceId, other.storageResourceId);
++    if (isSetReplicaDescription()) {
++      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.replicaDescription, other.replicaDescription);
 +      if (lastComparison != 0) {
 +        return lastComparison;
 +      }
 +    }
-     lastComparison = Boolean.valueOf(isSetFilePath()).compareTo(other.isSetFilePath());
++    lastComparison = Boolean.valueOf(isSetCreationTime()).compareTo(other.isSetCreationTime());
 +    if (lastComparison != 0) {
 +      return lastComparison;
 +    }
-     if (isSetFilePath()) {
-       lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.filePath, other.filePath);
++    if (isSetCreationTime()) {
++      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.creationTime, other.creationTime);
 +      if (lastComparison != 0) {
 +        return lastComparison;
 +      }
 +    }
-     lastComparison = Boolean.valueOf(isSetCreationTime()).compareTo(other.isSetCreationTime());
++    lastComparison = Boolean.valueOf(isSetLastModifiedTime()).compareTo(other.isSetLastModifiedTime());
 +    if (lastComparison != 0) {
 +      return lastComparison;
 +    }
-     if (isSetCreationTime()) {
-       lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.creationTime, other.creationTime);
++    if (isSetLastModifiedTime()) {
++      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.lastModifiedTime, other.lastModifiedTime);
 +      if (lastComparison != 0) {
 +        return lastComparison;
 +      }
 +    }
 +    lastComparison = Boolean.valueOf(isSetValidUntilTime()).compareTo(other.isSetValidUntilTime());
 +    if (lastComparison != 0) {
 +      return lastComparison;
 +    }
 +    if (isSetValidUntilTime()) {
 +      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.validUntilTime, other.validUntilTime);
 +      if (lastComparison != 0) {
 +        return lastComparison;
 +      }
 +    }
-     lastComparison = Boolean.valueOf(isSetStorageResourceType()).compareTo(other.isSetStorageResourceType());
++    lastComparison = Boolean.valueOf(isSetReplicaLocationCategory()).compareTo(other.isSetReplicaLocationCategory());
 +    if (lastComparison != 0) {
 +      return lastComparison;
 +    }
-     if (isSetStorageResourceType()) {
-       lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.storageResourceType, other.storageResourceType);
++    if (isSetReplicaLocationCategory()) {
++      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.replicaLocationCategory, other.replicaLocationCategory);
 +      if (lastComparison != 0) {
 +        return lastComparison;
 +      }
 +    }
 +    lastComparison = Boolean.valueOf(isSetReplicaPersistentType()).compareTo(other.isSetReplicaPersistentType());
 +    if (lastComparison != 0) {
 +      return lastComparison;
 +    }
 +    if (isSetReplicaPersistentType()) {
 +      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.replicaPersistentType, other.replicaPersistentType);
 +      if (lastComparison != 0) {
 +        return lastComparison;
 +      }
 +    }
++    lastComparison = Boolean.valueOf(isSetStorageResourceId()).compareTo(other.isSetStorageResourceId());
++    if (lastComparison != 0) {
++      return lastComparison;
++    }
++    if (isSetStorageResourceId()) {
++      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.storageResourceId, other.storageResourceId);
++      if (lastComparison != 0) {
++        return lastComparison;
++      }
++    }
++    lastComparison = Boolean.valueOf(isSetFileAbsolutePath()).compareTo(other.isSetFileAbsolutePath());
++    if (lastComparison != 0) {
++      return lastComparison;
++    }
++    if (isSetFileAbsolutePath()) {
++      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.fileAbsolutePath, other.fileAbsolutePath);
++      if (lastComparison != 0) {
++        return lastComparison;
++      }
++    }
++    lastComparison = Boolean.valueOf(isSetReplicaMetadata()).compareTo(other.isSetReplicaMetadata());
++    if (lastComparison != 0) {
++      return lastComparison;
++    }
++    if (isSetReplicaMetadata()) {
++      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.replicaMetadata, other.replicaMetadata);
++      if (lastComparison != 0) {
++        return lastComparison;
++      }
++    }
 +    return 0;
 +  }
 +
 +  public _Fields fieldForId(int fieldId) {
 +    return _Fields.findByThriftId(fieldId);
 +  }
 +
 +  public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
 +    schemes.get(iprot.getScheme()).getScheme().read(iprot, this);
 +  }
 +
 +  public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
 +    schemes.get(oprot.getScheme()).getScheme().write(oprot, this);
 +  }
 +
 +  @Override
 +  public String toString() {
-     StringBuilder sb = new StringBuilder("FileReplicaModel(");
++    StringBuilder sb = new StringBuilder("DataReplicaLocationModel(");
 +    boolean first = true;
 +
-     if (isSetReplicaName()) {
-       sb.append("replicaName:");
-       if (this.replicaName == null) {
-         sb.append("null");
-       } else {
-         sb.append(this.replicaName);
-       }
-       first = false;
-     }
-     if (isSetReplicaDescription()) {
-       if (!first) sb.append(", ");
-       sb.append("replicaDescription:");
-       if (this.replicaDescription == null) {
++    if (isSetReplicaId()) {
++      sb.append("replicaId:");
++      if (this.replicaId == null) {
 +        sb.append("null");
 +      } else {
-         sb.append(this.replicaDescription);
++        sb.append(this.replicaId);
 +      }
 +      first = false;
 +    }
-     if (isSetStorageHostname()) {
++    if (isSetResourceId()) {
 +      if (!first) sb.append(", ");
-       sb.append("storageHostname:");
-       if (this.storageHostname == null) {
++      sb.append("resourceId:");
++      if (this.resourceId == null) {
 +        sb.append("null");
 +      } else {
-         sb.append(this.storageHostname);
++        sb.append(this.resourceId);
 +      }
 +      first = false;
 +    }
-     if (isSetStorageResourceId()) {
++    if (isSetReplicaName()) {
 +      if (!first) sb.append(", ");
-       sb.append("storageResourceId:");
-       if (this.storageResourceId == null) {
++      sb.append("replicaName:");
++      if (this.replicaName == null) {
 +        sb.append("null");
 +      } else {
-         sb.append(this.storageResourceId);
++        sb.append(this.replicaName);
 +      }
 +      first = false;
 +    }
-     if (isSetFilePath()) {
++    if (isSetReplicaDescription()) {
 +      if (!first) sb.append(", ");
-       sb.append("filePath:");
-       if (this.filePath == null) {
++      sb.append("replicaDescription:");
++      if (this.replicaDescription == null) {
 +        sb.append("null");
 +      } else {
-         sb.append(this.filePath);
++        sb.append(this.replicaDescription);
 +      }
 +      first = false;
 +    }
 +    if (isSetCreationTime()) {
 +      if (!first) sb.append(", ");
 +      sb.append("creationTime:");
 +      sb.append(this.creationTime);
 +      first = false;
 +    }
++    if (isSetLastModifiedTime()) {
++      if (!first) sb.append(", ");
++      sb.append("lastModifiedTime:");
++      sb.append(this.lastModifiedTime);
++      first = false;
++    }
 +    if (isSetValidUntilTime()) {
 +      if (!first) sb.append(", ");
 +      sb.append("validUntilTime:");
 +      sb.append(this.validUntilTime);
 +      first = false;
 +    }
-     if (isSetStorageResourceType()) {
++    if (isSetReplicaLocationCategory()) {
 +      if (!first) sb.append(", ");
-       sb.append("storageResourceType:");
-       if (this.storageResourceType == null) {
++      sb.append("replicaLocationCategory:");
++      if (this.replicaLocationCategory == null) {
 +        sb.append("null");
 +      } else {
-         sb.append(this.storageResourceType);
++        sb.append(this.replicaLocationCategory);
 +      }
 +      first = false;
 +    }
 +    if (isSetReplicaPersistentType()) {
 +      if (!first) sb.append(", ");
 +      sb.append("replicaPersistentType:");
 +      if (this.replicaPersistentType == null) {
 +        sb.append("null");
 +      } else {
 +        sb.append(this.replicaPersistentType);
 +      }
 +      first = false;
 +    }
++    if (isSetStorageResourceId()) {
++      if (!first) sb.append(", ");
++      sb.append("storageResourceId:");
++      if (this.storageResourceId == null) {
++        sb.append("null");
++      } else {
++        sb.append(this.storageResourceId);
++      }
++      first = false;
++    }
++    if (isSetFileAbsolutePath()) {
++      if (!first) sb.append(", ");
++      sb.append("fileAbsolutePath:");
++      if (this.fileAbsolutePath == null) {
++        sb.append("null");
++      } else {
++        sb.append(this.fileAbsolutePath);
++      }
++      first = false;
++    }
++    if (isSetReplicaMetadata()) {
++      if (!first) sb.append(", ");
++      sb.append("replicaMetadata:");
++      if (this.replicaMetadata == null) {
++        sb.append("null");
++      } else {
++        sb.append(this.replicaMetadata);
++      }
++      first = false;
++    }
 +    sb.append(")");
 +    return sb.toString();
 +  }
 +
 +  public void validate() throws org.apache.thrift.TException {
 +    // check for required fields
 +    // check for sub-struct validity
 +  }
 +
 +  private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
 +    try {
 +      write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
 +    } catch (org.apache.thrift.TException te) {
 +      throw new java.io.IOException(te);
 +    }
 +  }
 +
 +  private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, ClassNotFoundException {
 +    try {
 +      // it doesn't seem like you should have to do this, but java serialization is wacky, and doesn't call the default constructor.
 +      __isset_bitfield = 0;
 +      read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
 +    } catch (org.apache.thrift.TException te) {
 +      throw new java.io.IOException(te);
 +    }
 +  }
 +
-   private static class FileReplicaModelStandardSchemeFactory implements SchemeFactory {
-     public FileReplicaModelStandardScheme getScheme() {
-       return new FileReplicaModelStandardScheme();
++  private static class DataReplicaLocationModelStandardSchemeFactory implements SchemeFactory {
++    public DataReplicaLocationModelStandardScheme getScheme() {
++      return new DataReplicaLocationModelStandardScheme();
 +    }
 +  }
 +
-   private static class FileReplicaModelStandardScheme extends StandardScheme<FileReplicaModel> {
++  private static class DataReplicaLocationModelStandardScheme extends StandardScheme<DataReplicaLocationModel> {
 +
-     public void read(org.apache.thrift.protocol.TProtocol iprot, FileReplicaModel struct) throws org.apache.thrift.TException {
++    public void read(org.apache.thrift.protocol.TProtocol iprot, DataReplicaLocationModel struct) throws org.apache.thrift.TException {
 +      org.apache.thrift.protocol.TField schemeField;
 +      iprot.readStructBegin();
 +      while (true)
 +      {
 +        schemeField = iprot.readFieldBegin();
 +        if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { 
 +          break;
 +        }
 +        switch (schemeField.id) {
-           case 1: // REPLICA_NAME
++          case 1: // REPLICA_ID
 +            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
-               struct.replicaName = iprot.readString();
-               struct.setReplicaNameIsSet(true);
++              struct.replicaId = iprot.readString();
++              struct.setReplicaIdIsSet(true);
 +            } else { 
 +              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
 +            }
 +            break;
-           case 2: // REPLICA_DESCRIPTION
++          case 2: // RESOURCE_ID
 +            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
-               struct.replicaDescription = iprot.readString();
-               struct.setReplicaDescriptionIsSet(true);
++              struct.resourceId = iprot.readString();
++              struct.setResourceIdIsSet(true);
 +            } else { 
 +              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
 +            }
 +            break;
-           case 3: // STORAGE_HOSTNAME
++          case 3: // REPLICA_NAME
 +            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
-               struct.storageHostname = iprot.readString();
-               struct.setStorageHostnameIsSet(true);
++              struct.replicaName = iprot.readString();
++              struct.setReplicaNameIsSet(true);
 +            } else { 
 +              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
 +            }
 +            break;
-           case 4: // STORAGE_RESOURCE_ID
++          case 4: // REPLICA_DESCRIPTION
 +            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
-               struct.storageResourceId = iprot.readString();
-               struct.setStorageResourceIdIsSet(true);
++              struct.replicaDescription = iprot.readString();
++              struct.setReplicaDescriptionIsSet(true);
 +            } else { 
 +              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
 +            }
 +            break;
-           case 5: // FILE_PATH
-             if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
-               struct.filePath = iprot.readString();
-               struct.setFilePathIsSet(true);
++          case 5: // CREATION_TIME
++            if (schemeField.type == org.apache.thrift.protocol.TType.I64) {
++              struct.creationTime = iprot.readI64();
++              struct.setCreationTimeIsSet(true);
 +            } else { 
 +              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
 +            }
 +            break;
-           case 6: // CREATION_TIME
++          case 6: // LAST_MODIFIED_TIME
 +            if (schemeField.type == org.apache.thrift.protocol.TType.I64) {
-               struct.creationTime = iprot.readI64();
-               struct.setCreationTimeIsSet(true);
++              struct.lastModifiedTime = iprot.readI64();
++              struct.setLastModifiedTimeIsSet(true);
 +            } else { 
 +              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
 +            }
 +            break;
 +          case 7: // VALID_UNTIL_TIME
 +            if (schemeField.type == org.apache.thrift.protocol.TType.I64) {
 +              struct.validUntilTime = iprot.readI64();
 +              struct.setValidUntilTimeIsSet(true);
 +            } else { 
 +              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
 +            }
 +            break;
-           case 8: // STORAGE_RESOURCE_TYPE
++          case 8: // REPLICA_LOCATION_CATEGORY
 +            if (schemeField.type == org.apache.thrift.protocol.TType.I32) {
-               struct.storageResourceType = org.apache.airavata.model.data.replica.StorageResourceType.findByValue(iprot.readI32());
-               struct.setStorageResourceTypeIsSet(true);
++              struct.replicaLocationCategory = org.apache.airavata.model.data.resource.ReplicaLocationCategory.findByValue(iprot.readI32());
++              struct.setReplicaLocationCategoryIsSet(true);
 +            } else { 
 +              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
 +            }
 +            break;
 +          case 9: // REPLICA_PERSISTENT_TYPE
 +            if (schemeField.type == org.apache.thrift.protocol.TType.I32) {
-               struct.replicaPersistentType = org.apache.airavata.model.data.replica.ReplicaPersistentType.findByValue(iprot.readI32());
++              struct.replicaPersistentType = org.apache.airavata.model.data.resource.ReplicaPersistentType.findByValue(iprot.readI32());
 +              struct.setReplicaPersistentTypeIsSet(true);
 +            } else { 
 +              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
 +            }
 +            break;
++          case 10: // STORAGE_RESOURCE_ID
++            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
++              struct.storageResourceId = iprot.readString();
++              struct.setStorageResourceIdIsSet(true);
++            } else { 
++              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
++            }
++            break;
++          case 11: // FILE_ABSOLUTE_PATH
++            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
++              struct.fileAbsolutePath = iprot.readString();
++              struct.setFileAbsolutePathIsSet(true);
++            } else { 
++              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
++            }
++            break;
++          case 12: // REPLICA_METADATA
++            if (schemeField.type == org.apache.thrift.protocol.TType.MAP) {
++              {
++                org.apache.thrift.protocol.TMap _map26 = iprot.readMapBegin();
++                struct.replicaMetadata = new HashMap<String,String>(2*_map26.size);
++                String _key27;
++                String _val28;
++                for (int _i29 = 0; _i29 < _map26.size; ++_i29)
++                {
++                  _key27 = iprot.readString();
++                  _val28 = iprot.readString();
++                  struct.replicaMetadata.put(_key27, _val28);
++                }
++                iprot.readMapEnd();
++              }
++              struct.setReplicaMetadataIsSet(true);
++            } else { 
++              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
++            }
++            break;
 +          default:
 +            org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
 +        }
 +        iprot.readFieldEnd();
 +      }
 +      iprot.readStructEnd();
 +      struct.validate();
 +    }
 +
-     public void write(org.apache.thrift.protocol.TProtocol oprot, FileReplicaModel struct) throws org.apache.thrift.TException {
++    public void write(org.apache.thrift.protocol.TProtocol oprot, DataReplicaLocationModel struct) throws org.apache.thrift.TException {
 +      struct.validate();
 +
 +      oprot.writeStructBegin(STRUCT_DESC);
++      if (struct.replicaId != null) {
++        if (struct.isSetReplicaId()) {
++          oprot.writeFieldBegin(REPLICA_ID_FIELD_DESC);
++          oprot.writeString(struct.replicaId);
++          oprot.writeFieldEnd();
++        }
++      }
++      if (struct.resourceId != null) {
++        if (struct.isSetResourceId()) {
++          oprot.writeFieldBegin(RESOURCE_ID_FIELD_DESC);
++          oprot.writeString(struct.resourceId);
++          oprot.writeFieldEnd();
++        }
++      }
 +      if (struct.replicaName != null) {
 +        if (struct.isSetReplicaName()) {
 +          oprot.writeFieldBegin(REPLICA_NAME_FIELD_DESC);
 +          oprot.writeString(struct.replicaName);
 +          oprot.writeFieldEnd();
 +        }
 +      }
 +      if (struct.replicaDescription != null) {
 +        if (struct.isSetReplicaDescription()) {
 +          oprot.writeFieldBegin(REPLICA_DESCRIPTION_FIELD_DESC);
 +          oprot.writeString(struct.replicaDescription);
 +          oprot.writeFieldEnd();
 +        }
 +      }
-       if (struct.storageHostname != null) {
-         if (struct.isSetStorageHostname()) {
-           oprot.writeFieldBegin(STORAGE_HOSTNAME_FIELD_DESC);
-           oprot.writeString(struct.storageHostname);
-           oprot.writeFieldEnd();
-         }
-       }
-       if (struct.storageResourceId != null) {
-         if (struct.isSetStorageResourceId()) {
-           oprot.writeFieldBegin(STORAGE_RESOURCE_ID_FIELD_DESC);
-           oprot.writeString(struct.storageResourceId);
-           oprot.writeFieldEnd();
-         }
-       }
-       if (struct.filePath != null) {
-         if (struct.isSetFilePath()) {
-           oprot.writeFieldBegin(FILE_PATH_FIELD_DESC);
-           oprot.writeString(struct.filePath);
-           oprot.writeFieldEnd();
-         }
-       }
 +      if (struct.isSetCreationTime()) {
 +        oprot.writeFieldBegin(CREATION_TIME_FIELD_DESC);
 +        oprot.writeI64(struct.creationTime);
 +        oprot.writeFieldEnd();
 +      }
++      if (struct.isSetLastModifiedTime()) {
++        oprot.writeFieldBegin(LAST_MODIFIED_TIME_FIELD_DESC);
++        oprot.writeI64(struct.lastModifiedTime);
++        oprot.writeFieldEnd();
++      }
 +      if (struct.isSetValidUntilTime()) {
 +        oprot.writeFieldBegin(VALID_UNTIL_TIME_FIELD_DESC);
 +        oprot.writeI64(struct.validUntilTime);
 +        oprot.writeFieldEnd();
 +      }
-       if (struct.storageResourceType != null) {
-         if (struct.isSetStorageResourceType()) {
-           oprot.writeFieldBegin(STORAGE_RESOURCE_TYPE_FIELD_DESC);
-           oprot.writeI32(struct.storageResourceType.getValue());
++      if (struct.replicaLocationCategory != null) {
++        if (struct.isSetReplicaLocationCategory()) {
++          oprot.writeFieldBegin(REPLICA_LOCATION_CATEGORY_FIELD_DESC);
++          oprot.writeI32(struct.replicaLocationCategory.getValue());
 +          oprot.writeFieldEnd();
 +        }
 +      }
 +      if (struct.replicaPersistentType != null) {
 +        if (struct.isSetReplicaPersistentType()) {
 +          oprot.writeFieldBegin(REPLICA_PERSISTENT_TYPE_FIELD_DESC);
 +          oprot.writeI32(struct.replicaPersistentType.getValue());
 +          oprot.writeFieldEnd();
 +        }
 +      }
++      if (struct.storageResourceId != null) {
++        if (struct.isSetStorageResourceId()) {
++          oprot.writeFieldBegin(STORAGE_RESOURCE_ID_FIELD_DESC);
++          oprot.writeString(struct.storageResourceId);
++          oprot.writeFieldEnd();
++        }
++      }
++      if (struct.fileAbsolutePath != null) {
++        if (struct.isSetFileAbsolutePath()) {
++          oprot.writeFieldBegin(FILE_ABSOLUTE_PATH_FIELD_DESC);
++          oprot.writeString(struct.fileAbsolutePath);
++          oprot.writeFieldEnd();
++        }
++      }
++      if (struct.replicaMetadata != null) {
++        if (struct.isSetReplicaMetadata()) {
++          oprot.writeFieldBegin(REPLICA_METADATA_FIELD_DESC);
++          {
++            oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.STRING, struct.replicaMetadata.size()));
++            for (Map.Entry<String, String> _iter30 : struct.replicaMetadata.entrySet())
++            {
++              oprot.writeString(_iter30.getKey());
++              oprot.writeString(_iter30.getValue());
++            }
++            oprot.writeMapEnd();
++          }
++          oprot.writeFieldEnd();
++        }
++      }
 +      oprot.writeFieldStop();
 +      oprot.writeStructEnd();
 +    }
 +
 +  }
 +
-   private static class FileReplicaModelTupleSchemeFactory implements SchemeFactory {
-     public FileReplicaModelTupleScheme getScheme() {
-       return new FileReplicaModelTupleScheme();
++  private static class DataReplicaLocationModelTupleSchemeFactory implements SchemeFactory {
++    public DataReplicaLocationModelTupleScheme getScheme() {
++      return new DataReplicaLocationModelTupleScheme();
 +    }
 +  }
 +
-   private static class FileReplicaModelTupleScheme extends TupleScheme<FileReplicaModel> {
++  private static class DataReplicaLocationModelTupleScheme extends TupleScheme<DataReplicaLocationModel> {
 +
 +    @Override
-     public void write(org.apache.thrift.protocol.TProtocol prot, FileReplicaModel struct) throws org.apache.thrift.TException {
++    public void write(org.apache.thrift.protocol.TProtocol prot, DataReplicaLocationModel struct) throws org.apache.thrift.TException {
 +      TTupleProtocol oprot = (TTupleProtocol) prot;
 +      BitSet optionals = new BitSet();
-       if (struct.isSetReplicaName()) {
++      if (struct.isSetReplicaId()) {
 +        optionals.set(0);
 +      }
-       if (struct.isSetReplicaDescription()) {
++      if (struct.isSetResourceId()) {
 +        optionals.set(1);
 +      }
-       if (struct.isSetStorageHostname()) {
++      if (struct.isSetReplicaName()) {
 +        optionals.set(2);
 +      }
-       if (struct.isSetStorageResourceId()) {
++      if (struct.isSetReplicaDescription()) {
 +        optionals.set(3);
 +      }
-       if (struct.isSetFilePath()) {
++      if (struct.isSetCreationTime()) {
 +        optionals.set(4);
 +      }
-       if (struct.isSetCreationTime()) {
++      if (struct.isSetLastModifiedTime()) {
 +        optionals.set(5);
 +      }
 +      if (struct.isSetValidUntilTime()) {
 +        optionals.set(6);
 +      }
-       if (struct.isSetStorageResourceType()) {
++      if (struct.isSetReplicaLocationCategory()) {
 +        optionals.set(7);
 +      }
 +      if (struct.isSetReplicaPersistentType()) {
 +        optionals.set(8);
 +      }
-       oprot.writeBitSet(optionals, 9);
++      if (struct.isSetStorageResourceId()) {
++        optionals.set(9);
++      }
++      if (struct.isSetFileAbsolutePath()) {
++        optionals.set(10);
++      }
++      if (struct.isSetReplicaMetadata()) {
++        optionals.set(11);
++      }
++      oprot.writeBitSet(optionals, 12);
++      if (struct.isSetReplicaId()) {
++        oprot.writeString(struct.replicaId);
++      }
++      if (struct.isSetResourceId()) {
++        oprot.writeString(struct.resourceId);
++      }
 +      if (struct.isSetReplicaName()) {
 +        oprot.writeString(struct.replicaName);
 +      }
 +      if (struct.isSetReplicaDescription()) {
 +        oprot.writeString(struct.replicaDescription);
 +      }
-       if (struct.isSetStorageHostname()) {
-         oprot.writeString(struct.storageHostname);
-       }
-       if (struct.isSetStorageResourceId()) {
-         oprot.writeString(struct.storageResourceId);
-       }
-       if (struct.isSetFilePath()) {
-         oprot.writeString(struct.filePath);
-       }
 +      if (struct.isSetCreationTime()) {
 +        oprot.writeI64(struct.creationTime);
 +      }
++      if (struct.isSetLastModifiedTime()) {
++        oprot.writeI64(struct.lastModifiedTime);
++      }
 +      if (struct.isSetValidUntilTime()) {
 +        oprot.writeI64(struct.validUntilTime);
 +      }
-       if (struct.isSetStorageResourceType()) {
-         oprot.writeI32(struct.storageResourceType.getValue());
++      if (struct.isSetReplicaLocationCategory()) {
++        oprot.writeI32(struct.replicaLocationCategory.getValue());
 +      }
 +      if (struct.isSetReplicaPersistentType()) {
 +        oprot.writeI32(struct.replicaPersistentType.getValue());
 +      }
++      if (struct.isSetStorageResourceId()) {
++        oprot.writeString(struct.storageResourceId);
++      }
++      if (struct.isSetFileAbsolutePath()) {
++        oprot.writeString(struct.fileAbsolutePath);
++      }
++      if (struct.isSetReplicaMetadata()) {
++        {
++          oprot.writeI32(struct.replicaMetadata.size());
++          for (Map.Entry<String, String> _iter31 : struct.replicaMetadata.entrySet())
++          {
++            oprot.writeString(_iter31.getKey());
++            oprot.writeString(_iter31.getValue());
++          }
++        }
++      }
 +    }
 +
 +    @Override
-     public void read(org.apache.thrift.protocol.TProtocol prot, FileReplicaModel struct) throws org.apache.thrift.TException {
++    public void read(org.apache.thrift.protocol.TProtocol prot, DataReplicaLocationModel struct) throws org.apache.thrift.TException {
 +      TTupleProtocol iprot = (TTupleProtocol) prot;
-       BitSet incoming = iprot.readBitSet(9);
++      BitSet incoming = iprot.readBitSet(12);
 +      if (incoming.get(0)) {
-         struct.replicaName = iprot.readString();
-         struct.setReplicaNameIsSet(true);
++        struct.replicaId = iprot.readString();
++        struct.setReplicaIdIsSet(true);
 +      }
 +      if (incoming.get(1)) {
-         struct.replicaDescription = iprot.readString();
-         struct.setReplicaDescriptionIsSet(true);
++        struct.resourceId = iprot.readString();
++        struct.setResourceIdIsSet(true);
 +      }
 +      if (incoming.get(2)) {
-         struct.storageHostname = iprot.readString();
-         struct.setStorageHostnameIsSet(true);
++        struct.replicaName = iprot.readString();
++        struct.setReplicaNameIsSet(true);
 +      }
 +      if (incoming.get(3)) {
-         struct.storageResourceId = iprot.readString();
-         struct.setStorageResourceIdIsSet(true);
++        struct.replicaDescription = iprot.readString();
++        struct.setReplicaDescriptionIsSet(true);
 +      }
 +      if (incoming.get(4)) {
-         struct.filePath = iprot.readString();
-         struct.setFilePathIsSet(true);
-       }
-       if (incoming.get(5)) {
 +        struct.creationTime = iprot.readI64();
 +        struct.setCreationTimeIsSet(true);
 +      }
++      if (incoming.get(5)) {
++        struct.lastModifiedTime = iprot.readI64();
++        struct.setLastModifiedTimeIsSet(true);
++      }
 +      if (incoming.get(6)) {
 +        struct.validUntilTime = iprot.readI64();
 +        struct.setValidUntilTimeIsSet(true);
 +      }
 +      if (incoming.get(7)) {
-         struct.storageResourceType = org.apache.airavata.model.data.replica.StorageResourceType.findByValue(iprot.readI32());
-         struct.setStorageResourceTypeIsSet(true);
++        struct.replicaLocationCategory = org.apache.airavata.model.data.resource.ReplicaLocationCategory.findByValue(iprot.readI32());
++        struct.setReplicaLocationCategoryIsSet(true);
 +      }
 +      if (incoming.get(8)) {
-         struct.replicaPersistentType = org.apache.airavata.model.data.replica.ReplicaPersistentType.findByValue(iprot.readI32());
++        struct.replicaPersistentType = org.apache.airavata.model.data.resource.ReplicaPersistentType.findByValue(iprot.readI32());
 +        struct.setReplicaPersistentTypeIsSet(true);
 +      }
++      if (incoming.get(9)) {
++        struct.storageResourceId = iprot.readString();
++        struct.setStorageResourceIdIsSet(true);
++      }
++      if (incoming.get(10)) {
++        struct.fileAbsolutePath = iprot.readString();
++        struct.setFileAbsolutePathIsSet(true);
++      }
++      if (incoming.get(11)) {
++        {
++          org.apache.thrift.protocol.TMap _map32 = new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.STRING, iprot.readI32());
++          struct.replicaMetadata = new HashMap<String,String>(2*_map32.size);
++          String _key33;
++          String _val34;
++          for (int _i35 = 0; _i35 < _map32.size; ++_i35)
++          {
++            _key33 = iprot.readString();
++            _val34 = iprot.readString();
++            struct.replicaMetadata.put(_key33, _val34);
++          }
++        }
++        struct.setReplicaMetadataIsSet(true);
++      }
 +    }
 +  }
 +
 +}
 +

http://git-wip-us.apache.org/repos/asf/airavata/blob/4039bf7b/modules/gfac/gfac-service/src/main/java/org/apache/airavata/gfac/server/GfacServerHandler.java
----------------------------------------------------------------------


[23/42] airavata git commit: using experiment data directory when copying output data

Posted by sh...@apache.org.
using experiment data directory when copying output data


Project: http://git-wip-us.apache.org/repos/asf/airavata/repo
Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/2fe5278f
Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/2fe5278f
Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/2fe5278f

Branch: refs/heads/develop
Commit: 2fe5278f52522c907908d22cc005f411701b9920
Parents: 531cbdf
Author: scnakandala <su...@gmail.com>
Authored: Wed Jan 6 13:10:29 2016 -0500
Committer: scnakandala <su...@gmail.com>
Committed: Wed Jan 6 13:10:29 2016 -0500

----------------------------------------------------------------------
 .../lib/airavata/process_model_types.cpp        |  22 ++++
 .../lib/airavata/process_model_types.h          |  12 +-
 .../lib/Airavata/Model/Process/Types.php        |  23 ++++
 .../lib/apache/airavata/model/process/ttypes.py |  15 ++-
 .../airavata/model/process/ProcessModel.java    | 114 ++++++++++++++++++-
 .../model/util/ExperimentModelUtil.java         |   1 +
 .../gfac/impl/task/SCPDataStageTask.java        |  17 ++-
 .../catalog/impl/ExperimentRegistry.java        |   2 +
 .../core/experiment/catalog/model/Process.java  |  10 ++
 .../catalog/resources/ProcessResource.java      |  10 ++
 .../utils/ThriftDataModelConversion.java        |   1 +
 .../src/main/resources/expcatalog-derby.sql     |   1 +
 .../src/main/resources/expcatalog-mysql.sql     |   1 +
 .../process_model.thrift                        |   3 +-
 14 files changed, 222 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/2fe5278f/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/process_model_types.cpp
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/process_model_types.cpp b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/process_model_types.cpp
index b01eb50..629b78f 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/process_model_types.cpp
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/process_model_types.cpp
@@ -138,6 +138,11 @@ void ProcessModel::__set_generateCert(const bool val) {
 __isset.generateCert = true;
 }
 
+void ProcessModel::__set_experimentDataDir(const std::string& val) {
+  this->experimentDataDir = val;
+__isset.experimentDataDir = true;
+}
+
 uint32_t ProcessModel::read(::apache::thrift::protocol::TProtocol* iprot) {
 
   apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
@@ -377,6 +382,14 @@ uint32_t ProcessModel::read(::apache::thrift::protocol::TProtocol* iprot) {
           xfer += iprot->skip(ftype);
         }
         break;
+      case 22:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->experimentDataDir);
+          this->__isset.experimentDataDir = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
       default:
         xfer += iprot->skip(ftype);
         break;
@@ -533,6 +546,11 @@ uint32_t ProcessModel::write(::apache::thrift::protocol::TProtocol* oprot) const
     xfer += oprot->writeBool(this->generateCert);
     xfer += oprot->writeFieldEnd();
   }
+  if (this->__isset.experimentDataDir) {
+    xfer += oprot->writeFieldBegin("experimentDataDir", ::apache::thrift::protocol::T_STRING, 22);
+    xfer += oprot->writeString(this->experimentDataDir);
+    xfer += oprot->writeFieldEnd();
+  }
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
   return xfer;
@@ -561,6 +579,7 @@ void swap(ProcessModel &a, ProcessModel &b) {
   swap(a.storageResourceId, b.storageResourceId);
   swap(a.userDn, b.userDn);
   swap(a.generateCert, b.generateCert);
+  swap(a.experimentDataDir, b.experimentDataDir);
   swap(a.__isset, b.__isset);
 }
 
@@ -586,6 +605,7 @@ ProcessModel::ProcessModel(const ProcessModel& other24) {
   storageResourceId = other24.storageResourceId;
   userDn = other24.userDn;
   generateCert = other24.generateCert;
+  experimentDataDir = other24.experimentDataDir;
   __isset = other24.__isset;
 }
 ProcessModel& ProcessModel::operator=(const ProcessModel& other25) {
@@ -610,6 +630,7 @@ ProcessModel& ProcessModel::operator=(const ProcessModel& other25) {
   storageResourceId = other25.storageResourceId;
   userDn = other25.userDn;
   generateCert = other25.generateCert;
+  experimentDataDir = other25.experimentDataDir;
   __isset = other25.__isset;
   return *this;
 }
@@ -637,6 +658,7 @@ void ProcessModel::printTo(std::ostream& out) const {
   out << ", " << "storageResourceId="; (__isset.storageResourceId ? (out << to_string(storageResourceId)) : (out << "<null>"));
   out << ", " << "userDn="; (__isset.userDn ? (out << to_string(userDn)) : (out << "<null>"));
   out << ", " << "generateCert="; (__isset.generateCert ? (out << to_string(generateCert)) : (out << "<null>"));
+  out << ", " << "experimentDataDir="; (__isset.experimentDataDir ? (out << to_string(experimentDataDir)) : (out << "<null>"));
   out << ")";
 }
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/2fe5278f/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/process_model_types.h
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/process_model_types.h b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/process_model_types.h
index 10515d0..efa30d1 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/process_model_types.h
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/process_model_types.h
@@ -44,7 +44,7 @@ namespace apache { namespace airavata { namespace model { namespace process {
 class ProcessModel;
 
 typedef struct _ProcessModel__isset {
-  _ProcessModel__isset() : creationTime(false), lastUpdateTime(false), processStatus(false), processDetail(false), applicationInterfaceId(false), applicationDeploymentId(false), computeResourceId(false), processInputs(false), processOutputs(false), resourceSchedule(false), tasks(false), taskDag(false), processError(false), gatewayExecutionId(false), enableEmailNotification(false), emailAddresses(false), storageResourceId(false), userDn(false), generateCert(true) {}
+  _ProcessModel__isset() : creationTime(false), lastUpdateTime(false), processStatus(false), processDetail(false), applicationInterfaceId(false), applicationDeploymentId(false), computeResourceId(false), processInputs(false), processOutputs(false), resourceSchedule(false), tasks(false), taskDag(false), processError(false), gatewayExecutionId(false), enableEmailNotification(false), emailAddresses(false), storageResourceId(false), userDn(false), generateCert(true), experimentDataDir(false) {}
   bool creationTime :1;
   bool lastUpdateTime :1;
   bool processStatus :1;
@@ -64,6 +64,7 @@ typedef struct _ProcessModel__isset {
   bool storageResourceId :1;
   bool userDn :1;
   bool generateCert :1;
+  bool experimentDataDir :1;
 } _ProcessModel__isset;
 
 class ProcessModel {
@@ -71,7 +72,7 @@ class ProcessModel {
 
   ProcessModel(const ProcessModel&);
   ProcessModel& operator=(const ProcessModel&);
-  ProcessModel() : processId("DO_NOT_SET_AT_CLIENTS"), experimentId(), creationTime(0), lastUpdateTime(0), processDetail(), applicationInterfaceId(), applicationDeploymentId(), computeResourceId(), taskDag(), gatewayExecutionId(), enableEmailNotification(0), storageResourceId(), userDn(), generateCert(false) {
+  ProcessModel() : processId("DO_NOT_SET_AT_CLIENTS"), experimentId(), creationTime(0), lastUpdateTime(0), processDetail(), applicationInterfaceId(), applicationDeploymentId(), computeResourceId(), taskDag(), gatewayExecutionId(), enableEmailNotification(0), storageResourceId(), userDn(), generateCert(false), experimentDataDir() {
   }
 
   virtual ~ProcessModel() throw();
@@ -96,6 +97,7 @@ class ProcessModel {
   std::string storageResourceId;
   std::string userDn;
   bool generateCert;
+  std::string experimentDataDir;
 
   _ProcessModel__isset __isset;
 
@@ -141,6 +143,8 @@ class ProcessModel {
 
   void __set_generateCert(const bool val);
 
+  void __set_experimentDataDir(const std::string& val);
+
   bool operator == (const ProcessModel & rhs) const
   {
     if (!(processId == rhs.processId))
@@ -223,6 +227,10 @@ class ProcessModel {
       return false;
     else if (__isset.generateCert && !(generateCert == rhs.generateCert))
       return false;
+    if (__isset.experimentDataDir != rhs.__isset.experimentDataDir)
+      return false;
+    else if (__isset.experimentDataDir && !(experimentDataDir == rhs.experimentDataDir))
+      return false;
     return true;
   }
   bool operator != (const ProcessModel &rhs) const {

http://git-wip-us.apache.org/repos/asf/airavata/blob/2fe5278f/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Process/Types.php
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Process/Types.php b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Process/Types.php
index 120c078..c0000d0 100644
--- a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Process/Types.php
+++ b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Process/Types.php
@@ -113,6 +113,10 @@ class ProcessModel {
    * @var bool
    */
   public $generateCert = false;
+  /**
+   * @var string
+   */
+  public $experimentDataDir = null;
 
   public function __construct($vals=null) {
     if (!isset(self::$_TSPEC)) {
@@ -223,6 +227,10 @@ class ProcessModel {
           'var' => 'generateCert',
           'type' => TType::BOOL,
           ),
+        22 => array(
+          'var' => 'experimentDataDir',
+          'type' => TType::STRING,
+          ),
         );
     }
     if (is_array($vals)) {
@@ -289,6 +297,9 @@ class ProcessModel {
       if (isset($vals['generateCert'])) {
         $this->generateCert = $vals['generateCert'];
       }
+      if (isset($vals['experimentDataDir'])) {
+        $this->experimentDataDir = $vals['experimentDataDir'];
+      }
     }
   }
 
@@ -504,6 +515,13 @@ class ProcessModel {
             $xfer += $input->skip($ftype);
           }
           break;
+        case 22:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->experimentDataDir);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
         default:
           $xfer += $input->skip($ftype);
           break;
@@ -679,6 +697,11 @@ class ProcessModel {
       $xfer += $output->writeBool($this->generateCert);
       $xfer += $output->writeFieldEnd();
     }
+    if ($this->experimentDataDir !== null) {
+      $xfer += $output->writeFieldBegin('experimentDataDir', TType::STRING, 22);
+      $xfer += $output->writeString($this->experimentDataDir);
+      $xfer += $output->writeFieldEnd();
+    }
     $xfer += $output->writeFieldStop();
     $xfer += $output->writeStructEnd();
     return $xfer;

http://git-wip-us.apache.org/repos/asf/airavata/blob/2fe5278f/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/process/ttypes.py
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/process/ttypes.py b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/process/ttypes.py
index 802d6a7..7355759 100644
--- a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/process/ttypes.py
+++ b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/process/ttypes.py
@@ -55,6 +55,7 @@ class ProcessModel:
    - storageResourceId
    - userDn
    - generateCert
+   - experimentDataDir
   """
 
   thrift_spec = (
@@ -80,9 +81,10 @@ class ProcessModel:
     (19, TType.STRING, 'storageResourceId', None, None, ), # 19
     (20, TType.STRING, 'userDn', None, None, ), # 20
     (21, TType.BOOL, 'generateCert', None, False, ), # 21
+    (22, TType.STRING, 'experimentDataDir', None, None, ), # 22
   )
 
-  def __init__(self, processId=thrift_spec[1][4], experimentId=None, creationTime=None, lastUpdateTime=None, processStatus=None, processDetail=None, applicationInterfaceId=None, applicationDeploymentId=None, computeResourceId=None, processInputs=None, processOutputs=None, resourceSchedule=None, tasks=None, taskDag=None, processError=None, gatewayExecutionId=None, enableEmailNotification=None, emailAddresses=None, storageResourceId=None, userDn=None, generateCert=thrift_spec[21][4],):
+  def __init__(self, processId=thrift_spec[1][4], experimentId=None, creationTime=None, lastUpdateTime=None, processStatus=None, processDetail=None, applicationInterfaceId=None, applicationDeploymentId=None, computeResourceId=None, processInputs=None, processOutputs=None, resourceSchedule=None, tasks=None, taskDag=None, processError=None, gatewayExecutionId=None, enableEmailNotification=None, emailAddresses=None, storageResourceId=None, userDn=None, generateCert=thrift_spec[21][4], experimentDataDir=None,):
     self.processId = processId
     self.experimentId = experimentId
     self.creationTime = creationTime
@@ -104,6 +106,7 @@ class ProcessModel:
     self.storageResourceId = storageResourceId
     self.userDn = userDn
     self.generateCert = generateCert
+    self.experimentDataDir = experimentDataDir
 
   def read(self, iprot):
     if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
@@ -245,6 +248,11 @@ class ProcessModel:
           self.generateCert = iprot.readBool()
         else:
           iprot.skip(ftype)
+      elif fid == 22:
+        if ftype == TType.STRING:
+          self.experimentDataDir = iprot.readString()
+        else:
+          iprot.skip(ftype)
       else:
         iprot.skip(ftype)
       iprot.readFieldEnd()
@@ -351,6 +359,10 @@ class ProcessModel:
       oprot.writeFieldBegin('generateCert', TType.BOOL, 21)
       oprot.writeBool(self.generateCert)
       oprot.writeFieldEnd()
+    if self.experimentDataDir is not None:
+      oprot.writeFieldBegin('experimentDataDir', TType.STRING, 22)
+      oprot.writeString(self.experimentDataDir)
+      oprot.writeFieldEnd()
     oprot.writeFieldStop()
     oprot.writeStructEnd()
 
@@ -385,6 +397,7 @@ class ProcessModel:
     value = (value * 31) ^ hash(self.storageResourceId)
     value = (value * 31) ^ hash(self.userDn)
     value = (value * 31) ^ hash(self.generateCert)
+    value = (value * 31) ^ hash(self.experimentDataDir)
     return value
 
   def __repr__(self):

http://git-wip-us.apache.org/repos/asf/airavata/blob/2fe5278f/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/process/ProcessModel.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/process/ProcessModel.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/process/ProcessModel.java
index 232d45c..ebd4158 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/process/ProcessModel.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/process/ProcessModel.java
@@ -85,6 +85,7 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
   private static final org.apache.thrift.protocol.TField STORAGE_RESOURCE_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("storageResourceId", org.apache.thrift.protocol.TType.STRING, (short)19);
   private static final org.apache.thrift.protocol.TField USER_DN_FIELD_DESC = new org.apache.thrift.protocol.TField("userDn", org.apache.thrift.protocol.TType.STRING, (short)20);
   private static final org.apache.thrift.protocol.TField GENERATE_CERT_FIELD_DESC = new org.apache.thrift.protocol.TField("generateCert", org.apache.thrift.protocol.TType.BOOL, (short)21);
+  private static final org.apache.thrift.protocol.TField EXPERIMENT_DATA_DIR_FIELD_DESC = new org.apache.thrift.protocol.TField("experimentDataDir", org.apache.thrift.protocol.TType.STRING, (short)22);
 
   private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
   static {
@@ -113,6 +114,7 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
   private String storageResourceId; // optional
   private String userDn; // optional
   private boolean generateCert; // optional
+  private String experimentDataDir; // optional
 
   /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
   public enum _Fields implements org.apache.thrift.TFieldIdEnum {
@@ -136,7 +138,8 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
     EMAIL_ADDRESSES((short)18, "emailAddresses"),
     STORAGE_RESOURCE_ID((short)19, "storageResourceId"),
     USER_DN((short)20, "userDn"),
-    GENERATE_CERT((short)21, "generateCert");
+    GENERATE_CERT((short)21, "generateCert"),
+    EXPERIMENT_DATA_DIR((short)22, "experimentDataDir");
 
     private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
 
@@ -193,6 +196,8 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
           return USER_DN;
         case 21: // GENERATE_CERT
           return GENERATE_CERT;
+        case 22: // EXPERIMENT_DATA_DIR
+          return EXPERIMENT_DATA_DIR;
         default:
           return null;
       }
@@ -238,7 +243,7 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
   private static final int __ENABLEEMAILNOTIFICATION_ISSET_ID = 2;
   private static final int __GENERATECERT_ISSET_ID = 3;
   private byte __isset_bitfield = 0;
-  private static final _Fields optionals[] = {_Fields.CREATION_TIME,_Fields.LAST_UPDATE_TIME,_Fields.PROCESS_STATUS,_Fields.PROCESS_DETAIL,_Fields.APPLICATION_INTERFACE_ID,_Fields.APPLICATION_DEPLOYMENT_ID,_Fields.COMPUTE_RESOURCE_ID,_Fields.PROCESS_INPUTS,_Fields.PROCESS_OUTPUTS,_Fields.RESOURCE_SCHEDULE,_Fields.TASKS,_Fields.TASK_DAG,_Fields.PROCESS_ERROR,_Fields.GATEWAY_EXECUTION_ID,_Fields.ENABLE_EMAIL_NOTIFICATION,_Fields.EMAIL_ADDRESSES,_Fields.STORAGE_RESOURCE_ID,_Fields.USER_DN,_Fields.GENERATE_CERT};
+  private static final _Fields optionals[] = {_Fields.CREATION_TIME,_Fields.LAST_UPDATE_TIME,_Fields.PROCESS_STATUS,_Fields.PROCESS_DETAIL,_Fields.APPLICATION_INTERFACE_ID,_Fields.APPLICATION_DEPLOYMENT_ID,_Fields.COMPUTE_RESOURCE_ID,_Fields.PROCESS_INPUTS,_Fields.PROCESS_OUTPUTS,_Fields.RESOURCE_SCHEDULE,_Fields.TASKS,_Fields.TASK_DAG,_Fields.PROCESS_ERROR,_Fields.GATEWAY_EXECUTION_ID,_Fields.ENABLE_EMAIL_NOTIFICATION,_Fields.EMAIL_ADDRESSES,_Fields.STORAGE_RESOURCE_ID,_Fields.USER_DN,_Fields.GENERATE_CERT,_Fields.EXPERIMENT_DATA_DIR};
   public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
   static {
     Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
@@ -288,6 +293,8 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
     tmpMap.put(_Fields.GENERATE_CERT, new org.apache.thrift.meta_data.FieldMetaData("generateCert", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.BOOL)));
+    tmpMap.put(_Fields.EXPERIMENT_DATA_DIR, new org.apache.thrift.meta_data.FieldMetaData("experimentDataDir", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
     metaDataMap = Collections.unmodifiableMap(tmpMap);
     org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(ProcessModel.class, metaDataMap);
   }
@@ -381,6 +388,9 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
       this.userDn = other.userDn;
     }
     this.generateCert = other.generateCert;
+    if (other.isSetExperimentDataDir()) {
+      this.experimentDataDir = other.experimentDataDir;
+    }
   }
 
   public ProcessModel deepCopy() {
@@ -415,6 +425,7 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
     this.userDn = null;
     this.generateCert = false;
 
+    this.experimentDataDir = null;
   }
 
   public String getProcessId() {
@@ -956,6 +967,29 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
     __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __GENERATECERT_ISSET_ID, value);
   }
 
+  public String getExperimentDataDir() {
+    return this.experimentDataDir;
+  }
+
+  public void setExperimentDataDir(String experimentDataDir) {
+    this.experimentDataDir = experimentDataDir;
+  }
+
+  public void unsetExperimentDataDir() {
+    this.experimentDataDir = null;
+  }
+
+  /** Returns true if field experimentDataDir is set (has been assigned a value) and false otherwise */
+  public boolean isSetExperimentDataDir() {
+    return this.experimentDataDir != null;
+  }
+
+  public void setExperimentDataDirIsSet(boolean value) {
+    if (!value) {
+      this.experimentDataDir = null;
+    }
+  }
+
   public void setFieldValue(_Fields field, Object value) {
     switch (field) {
     case PROCESS_ID:
@@ -1126,6 +1160,14 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
       }
       break;
 
+    case EXPERIMENT_DATA_DIR:
+      if (value == null) {
+        unsetExperimentDataDir();
+      } else {
+        setExperimentDataDir((String)value);
+      }
+      break;
+
     }
   }
 
@@ -1194,6 +1236,9 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
     case GENERATE_CERT:
       return isGenerateCert();
 
+    case EXPERIMENT_DATA_DIR:
+      return getExperimentDataDir();
+
     }
     throw new IllegalStateException();
   }
@@ -1247,6 +1292,8 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
       return isSetUserDn();
     case GENERATE_CERT:
       return isSetGenerateCert();
+    case EXPERIMENT_DATA_DIR:
+      return isSetExperimentDataDir();
     }
     throw new IllegalStateException();
   }
@@ -1453,6 +1500,15 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
         return false;
     }
 
+    boolean this_present_experimentDataDir = true && this.isSetExperimentDataDir();
+    boolean that_present_experimentDataDir = true && that.isSetExperimentDataDir();
+    if (this_present_experimentDataDir || that_present_experimentDataDir) {
+      if (!(this_present_experimentDataDir && that_present_experimentDataDir))
+        return false;
+      if (!this.experimentDataDir.equals(that.experimentDataDir))
+        return false;
+    }
+
     return true;
   }
 
@@ -1565,6 +1621,11 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
     if (present_generateCert)
       list.add(generateCert);
 
+    boolean present_experimentDataDir = true && (isSetExperimentDataDir());
+    list.add(present_experimentDataDir);
+    if (present_experimentDataDir)
+      list.add(experimentDataDir);
+
     return list.hashCode();
   }
 
@@ -1786,6 +1847,16 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
         return lastComparison;
       }
     }
+    lastComparison = Boolean.valueOf(isSetExperimentDataDir()).compareTo(other.isSetExperimentDataDir());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetExperimentDataDir()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.experimentDataDir, other.experimentDataDir);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
     return 0;
   }
 
@@ -1995,6 +2066,16 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
       sb.append(this.generateCert);
       first = false;
     }
+    if (isSetExperimentDataDir()) {
+      if (!first) sb.append(", ");
+      sb.append("experimentDataDir:");
+      if (this.experimentDataDir == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.experimentDataDir);
+      }
+      first = false;
+    }
     sb.append(")");
     return sb.toString();
   }
@@ -2271,6 +2352,14 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
+          case 22: // EXPERIMENT_DATA_DIR
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.experimentDataDir = iprot.readString();
+              struct.setExperimentDataDirIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
           default:
             org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
         }
@@ -2447,6 +2536,13 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
         oprot.writeBool(struct.generateCert);
         oprot.writeFieldEnd();
       }
+      if (struct.experimentDataDir != null) {
+        if (struct.isSetExperimentDataDir()) {
+          oprot.writeFieldBegin(EXPERIMENT_DATA_DIR_FIELD_DESC);
+          oprot.writeString(struct.experimentDataDir);
+          oprot.writeFieldEnd();
+        }
+      }
       oprot.writeFieldStop();
       oprot.writeStructEnd();
     }
@@ -2524,7 +2620,10 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
       if (struct.isSetGenerateCert()) {
         optionals.set(18);
       }
-      oprot.writeBitSet(optionals, 19);
+      if (struct.isSetExperimentDataDir()) {
+        optionals.set(19);
+      }
+      oprot.writeBitSet(optionals, 20);
       if (struct.isSetCreationTime()) {
         oprot.writeI64(struct.creationTime);
       }
@@ -2606,6 +2705,9 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
       if (struct.isSetGenerateCert()) {
         oprot.writeBool(struct.generateCert);
       }
+      if (struct.isSetExperimentDataDir()) {
+        oprot.writeString(struct.experimentDataDir);
+      }
     }
 
     @Override
@@ -2615,7 +2717,7 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
       struct.setProcessIdIsSet(true);
       struct.experimentId = iprot.readString();
       struct.setExperimentIdIsSet(true);
-      BitSet incoming = iprot.readBitSet(19);
+      BitSet incoming = iprot.readBitSet(20);
       if (incoming.get(0)) {
         struct.creationTime = iprot.readI64();
         struct.setCreationTimeIsSet(true);
@@ -2734,6 +2836,10 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
         struct.generateCert = iprot.readBool();
         struct.setGenerateCertIsSet(true);
       }
+      if (incoming.get(19)) {
+        struct.experimentDataDir = iprot.readString();
+        struct.setExperimentDataDirIsSet(true);
+      }
     }
   }
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/2fe5278f/airavata-api/airavata-model-utils/src/main/java/org/apache/airavata/model/util/ExperimentModelUtil.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-model-utils/src/main/java/org/apache/airavata/model/util/ExperimentModelUtil.java b/airavata-api/airavata-model-utils/src/main/java/org/apache/airavata/model/util/ExperimentModelUtil.java
index a908b99..502c8ce 100644
--- a/airavata-api/airavata-model-utils/src/main/java/org/apache/airavata/model/util/ExperimentModelUtil.java
+++ b/airavata-api/airavata-model-utils/src/main/java/org/apache/airavata/model/util/ExperimentModelUtil.java
@@ -98,6 +98,7 @@ public class ExperimentModelUtil {
         UserConfigurationDataModel configData = experiment.getUserConfigurationData();
         if (configData != null){
             processModel.setStorageResourceId(configData.getStorageId());
+            processModel.setExperimentDataDir(configData.getExperimentDataDir());
             processModel.setGenerateCert(configData.isGenerateCert());
             processModel.setUserDn(configData.getUserDN());
             ComputationalResourceSchedulingModel scheduling = configData.getComputationalResourceScheduling();

http://git-wip-us.apache.org/repos/asf/airavata/blob/2fe5278f/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/SCPDataStageTask.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/SCPDataStageTask.java b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/SCPDataStageTask.java
index 5437717..ac001ca 100644
--- a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/SCPDataStageTask.java
+++ b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/SCPDataStageTask.java
@@ -292,8 +292,21 @@ public class SCPDataStageTask implements Task {
     }
 
     public URI getDestinationURI(TaskContext taskContext, String fileName) throws URISyntaxException {
-        String filePath = (inputPath.endsWith(File.separator) ? inputPath : inputPath + File.separator) +
-                taskContext.getParentProcessContext().getProcessId() + File.separator + fileName;
+        String experimentDataDir = taskContext.getParentProcessContext().getProcessModel().getExperimentDataDir();
+        String filePath;
+        if(experimentDataDir != null && !experimentDataDir.isEmpty()) {
+            if(experimentDataDir.startsWith(File.separator)){
+                experimentDataDir = experimentDataDir.substring(1);
+            }
+            if(!experimentDataDir.endsWith(File.separator)){
+                experimentDataDir += File.separator;
+            }
+           filePath = (inputPath.endsWith(File.separator) ? inputPath : inputPath + File.separator) + experimentDataDir +
+                    taskContext.getParentProcessContext().getProcessId() + File.separator + fileName;
+        } else {
+           filePath =(inputPath.endsWith(File.separator) ? inputPath : inputPath + File.separator) +
+                    taskContext.getParentProcessContext().getProcessId() + File.separator + fileName;
+        }
         return new URI("SCP", hostName, filePath, null);
 
     }

http://git-wip-us.apache.org/repos/asf/airavata/blob/2fe5278f/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentRegistry.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentRegistry.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentRegistry.java
index 24ffa5f..ee0f18a 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentRegistry.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentRegistry.java
@@ -278,6 +278,7 @@ public class ExperimentRegistry {
             processResource.setStorageResourceId(process.getStorageResourceId());
             processResource.setUserDn(process.getUserDn());
             processResource.setGenerateCert(process.isGenerateCert());
+            processResource.setExperimentDataDir(process.getExperimentDataDir());
             if(process.isEnableEmailNotification()){
                 processResource.setEnableEmailNotification(true);
                 if(process.getEmailAddresses() != null){
@@ -730,6 +731,7 @@ public class ExperimentRegistry {
             processResource.setStorageResourceId(process.getStorageResourceId());
             processResource.setUserDn(process.getUserDn());
             processResource.setGenerateCert(process.isGenerateCert());
+            processResource.setExperimentDataDir(process.getExperimentDataDir());
             if(process.isEnableEmailNotification()){
                 processResource.setEnableEmailNotification(true);
                 if(process.getEmailAddresses() != null){

http://git-wip-us.apache.org/repos/asf/airavata/blob/2fe5278f/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/Process.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/Process.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/Process.java
index d6a83b4..222ae03 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/Process.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/Process.java
@@ -44,6 +44,7 @@ public class Process {
     private boolean enableEmailNotification;
     private String emailAddresses;
     private String storageId;
+    private String experimentDataDir;
     private Experiment experiment;
     private Collection<ProcessError> processErrors;
     private Collection<ProcessInput> processInputs;
@@ -193,6 +194,15 @@ public class Process {
         this.generateCert = generateCert;
     }
 
+    @Column(name = "EXPERIMENT_DATA_DIR")
+    public String getExperimentDataDir() {
+        return experimentDataDir;
+    }
+
+    public void setExperimentDataDir(String experimentDataDir) {
+        this.experimentDataDir = experimentDataDir;
+    }
+
 //    @Override
 //    public boolean equals(Object o) {
 //        if (this == o) return true;

http://git-wip-us.apache.org/repos/asf/airavata/blob/2fe5278f/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ProcessResource.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ProcessResource.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ProcessResource.java
index 2934552..e1720de 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ProcessResource.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ProcessResource.java
@@ -55,6 +55,7 @@ public class ProcessResource extends AbstractExpCatResource {
     private String storageResourceId;
     private String userDn;
     private boolean generateCert;
+    private String experimentDataDir;
 
     public String getProcessId() {
         return processId;
@@ -176,6 +177,14 @@ public class ProcessResource extends AbstractExpCatResource {
         this.generateCert = generateCert;
     }
 
+    public String getExperimentDataDir() {
+        return experimentDataDir;
+    }
+
+    public void setExperimentDataDir(String experimentDataDir) {
+        this.experimentDataDir = experimentDataDir;
+    }
+
     public ExperimentCatResource create(ResourceType type) throws RegistryException{
        switch (type){
            case PROCESS_ERROR:
@@ -580,6 +589,7 @@ public class ProcessResource extends AbstractExpCatResource {
             process.setStorageId(storageResourceId);
             process.setUserDn(userDn);
             process.setGenerateCert(generateCert);
+            process.setExperimentDataDir(experimentDataDir);
             if (existingProcess == null){
                 em.persist(process);
             }else {

http://git-wip-us.apache.org/repos/asf/airavata/blob/2fe5278f/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/utils/ThriftDataModelConversion.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/utils/ThriftDataModelConversion.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/utils/ThriftDataModelConversion.java
index dc9bfde..1ecc37b 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/utils/ThriftDataModelConversion.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/utils/ThriftDataModelConversion.java
@@ -349,6 +349,7 @@ public class ThriftDataModelConversion {
             processModel.setApplicationDeploymentId(processResource.getApplicationDeploymentId());
             processModel.setComputeResourceId(processResource.getComputeResourceId());
             processModel.setEnableEmailNotification(processResource.getEnableEmailNotification());
+            processModel.setExperimentDataDir(processResource.getExperimentDataDir());
             if (processModel.isEnableEmailNotification()){
                 String notificationEmails = processResource.getEmailAddresses();
                 processModel.setEmailAddresses(getEmailAddresses(notificationEmails.split(",")));

http://git-wip-us.apache.org/repos/asf/airavata/blob/2fe5278f/modules/registry/registry-core/src/main/resources/expcatalog-derby.sql
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/resources/expcatalog-derby.sql b/modules/registry/registry-core/src/main/resources/expcatalog-derby.sql
index 603c921..c395b94 100644
--- a/modules/registry/registry-core/src/main/resources/expcatalog-derby.sql
+++ b/modules/registry/registry-core/src/main/resources/expcatalog-derby.sql
@@ -192,6 +192,7 @@ CREATE TABLE PROCESS (
   STORAGE_RESOURCE_ID varchar(255),
   USER_DN varchar(255),
   GENERATE_CERT SMALLINT,
+  EXPERIMENT_DATA_DIR VARCHAR (512),
   PRIMARY KEY (PROCESS_ID),
   FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE
 );

http://git-wip-us.apache.org/repos/asf/airavata/blob/2fe5278f/modules/registry/registry-core/src/main/resources/expcatalog-mysql.sql
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/resources/expcatalog-mysql.sql b/modules/registry/registry-core/src/main/resources/expcatalog-mysql.sql
index 1bb170a..b3dcf43 100644
--- a/modules/registry/registry-core/src/main/resources/expcatalog-mysql.sql
+++ b/modules/registry/registry-core/src/main/resources/expcatalog-mysql.sql
@@ -196,6 +196,7 @@ CREATE TABLE PROCESS (
   STORAGE_RESOURCE_ID varchar(255),
   USER_DN varchar(255),
   GENERATE_CERT SMALLINT,
+  EXPERIMENT_DATA_DIR VARCHAR (512),
   PRIMARY KEY (PROCESS_ID),
   FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE
 );

http://git-wip-us.apache.org/repos/asf/airavata/blob/2fe5278f/thrift-interface-descriptions/data-models/experiment-catalog-models/process_model.thrift
----------------------------------------------------------------------
diff --git a/thrift-interface-descriptions/data-models/experiment-catalog-models/process_model.thrift b/thrift-interface-descriptions/data-models/experiment-catalog-models/process_model.thrift
index 66c5f93..d46a7f4 100644
--- a/thrift-interface-descriptions/data-models/experiment-catalog-models/process_model.thrift
+++ b/thrift-interface-descriptions/data-models/experiment-catalog-models/process_model.thrift
@@ -60,5 +60,6 @@ struct ProcessModel {
     18: optional list<string> emailAddresses,
     19: optional string storageResourceId,
     20: optional string userDn,
-    21: optional bool generateCert = 0
+    21: optional bool generateCert = 0,
+    22: optional string experimentDataDir
 }
\ No newline at end of file