Repository: airavata
Updated Branches:
  refs/heads/master 64b7842f0 -> 9534a8104


http://git-wip-us.apache.org/repos/asf/airavata/blob/9534a810/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 6a7507b..92bef4a 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.2)", date = 
"2015-8-25")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = 
"2015-8-27")
 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/9534a810/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 89048a6..a16c84c 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.2)", date = 
"2015-8-25")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = 
"2015-8-27")
 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/9534a810/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 8ab6625..d4c2ab0 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.2)", date = 
"2015-8-25")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = 
"2015-8-27")
 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/9534a810/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 864f11d..0a327de 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.2)", date = 
"2015-8-25")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = 
"2015-8-27")
 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/9534a810/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 1b4c154..0c03d19 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.2)", date = 
"2015-8-25")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = 
"2015-8-27")
 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/9534a810/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 c3a24bd..66d00d2 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.2)", date = 
"2015-8-25")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = 
"2015-8-27")
 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/9534a810/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 2c66fee..c45010d 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.2)", date = 
"2015-8-25")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = 
"2015-8-27")
 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/9534a810/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 19e6f0b..a9a68e7 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.2)", date = 
"2015-8-25")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = 
"2015-8-27")
 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/9534a810/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 8a11c75..ab9dc5f 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.2)", date = 
"2015-8-25")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = 
"2015-8-27")
 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/9534a810/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 b4a9074..3920678 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.2)", date = 
"2015-8-25")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = 
"2015-8-27")
 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/9534a810/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 d8c8e0a..dff8c65 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.2)", date = 
"2015-8-25")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = 
"2015-8-27")
 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/9534a810/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 ff92cdb..a8da74c 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.2)", date = 
"2015-8-25")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = 
"2015-8-27")
 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/9534a810/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 7f597b4..23dcf44 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
@@ -58,7 +58,7 @@ import org.slf4j.LoggerFactory;
  *   A friendly description of the task, usally used to communicate 
information to users.
  * 
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = 
"2015-8-25")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = 
"2015-8-27")
 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/9534a810/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 ddefe37..381c048 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.2)", date = 
"2015-8-25")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = 
"2015-8-27")
 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/9534a810/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 f6907ca..e7af254 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.2)", date = 
"2015-8-25")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = 
"2015-8-27")
 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/9534a810/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 2967b5a..539da77 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.2)", date = 
"2015-8-25")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = 
"2015-8-27")
 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/9534a810/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 d3bc54e..08058bd 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.2)", date = 
"2015-8-25")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = 
"2015-8-27")
 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/9534a810/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 1166269..2bbdc30 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.2)", date = 
"2015-8-25")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = 
"2015-8-27")
 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/9534a810/modules/configuration/server/src/main/resources/gfac-config.yaml
----------------------------------------------------------------------
diff --git a/modules/configuration/server/src/main/resources/gfac-config.yaml 
b/modules/configuration/server/src/main/resources/gfac-config.yaml
index 5a3ebe7..5fd859e 100644
--- a/modules/configuration/server/src/main/resources/gfac-config.yaml
+++ b/modules/configuration/server/src/main/resources/gfac-config.yaml
@@ -28,6 +28,9 @@ jobSubmitters:
 #       publicKeyPath: /path/to/the/publickey
 #       hostName: remote.client.hostName
 
+  - submissionProtocol: SSH_FORK
+    taskClass: org.apache.airavata.gfac.impl.task.SSHForkJobSubmissionTask
+
   - submissionProtocol: LOCAL
     taskClass: org.apache.airavata.gfac.impl.task.LocalJobSubmissionTask
 
@@ -100,4 +103,6 @@ resources:
     resourceEmailAddresses:
       - iu.xsede.edu # test resource mail address
 
+  - jobManagerType: FORK
+      commandOutputParser: org.apache.airavata.gfac.impl.job.ForkOutputParser
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/9534a810/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 d313ac0..cbc0c0b 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
@@ -970,7 +970,7 @@ public class GFacUtils {
         try {
             JobSubmissionProtocol submissionProtocol = 
getPreferredJobSubmissionProtocol(processContext);
             JobSubmissionInterface jobSubmissionInterface = 
getPreferredJobSubmissionInterface(processContext);
-            if (submissionProtocol == JobSubmissionProtocol.SSH) {
+            if (submissionProtocol == JobSubmissionProtocol.SSH ) {
                 SSHJobSubmission sshJobSubmission = 
GFacUtils.getSSHJobSubmission(jobSubmissionInterface.getJobSubmissionInterfaceId());
                 if (sshJobSubmission != null) {
                     return sshJobSubmission.getResourceJobManager();
@@ -980,6 +980,11 @@ public class GFacUtils {
                 if (localJobSubmission != null) {
                     return localJobSubmission.getResourceJobManager();
                 }
+            } else if (submissionProtocol == JobSubmissionProtocol.SSH_FORK){
+                SSHJobSubmission sshJobSubmission = 
GFacUtils.getSSHJobSubmission(jobSubmissionInterface.getJobSubmissionInterfaceId());
+                if (sshJobSubmission != null) {
+                    return sshJobSubmission.getResourceJobManager();
+                }
             }
         } catch (AppCatalogException e) {
             log.error("Error occured while retrieving resource job manager", 
e);
@@ -1059,7 +1064,7 @@ public class GFacUtils {
             Source xslt = new StreamSource(new File(resource.getPath()));
             Transformer transformer;
             StringWriter results = new StringWriter();
-            File tempPBSFile = null;
+            File tempJobFile = null;
             // generate the pbs script using xslt
             transformer = factory.newTransformer(xslt);
             Source text = new StreamSource(new 
ByteArrayInputStream(jobDescriptor.toXML().getBytes()));
@@ -1071,9 +1076,9 @@ public class GFacUtils {
             // creating a temporary file using pbs script generated above
             int number = new SecureRandom().nextInt();
             number = (number < 0 ? -number : number);
-            tempPBSFile = new File(Integer.toString(number) + 
jobManagerConfiguration.getScriptExtension());
-            FileUtils.writeStringToFile(tempPBSFile, scriptContent);
-            return tempPBSFile;
+            tempJobFile = new File(Integer.toString(number) + 
jobManagerConfiguration.getScriptExtension());
+            FileUtils.writeStringToFile(tempJobFile, scriptContent);
+            return tempJobFile;
         } catch (IOException e) {
             throw new GFacException("Error occurred while creating the temp 
job script file", e);
         } catch (TransformerConfigurationException e) {

http://git-wip-us.apache.org/repos/asf/airavata/blob/9534a810/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/Factory.java
----------------------------------------------------------------------
diff --git 
a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/Factory.java
 
b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/Factory.java
index cec9277..9665d90 100644
--- 
a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/Factory.java
+++ 
b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/Factory.java
@@ -46,10 +46,7 @@ import org.apache.airavata.gfac.core.task.JobSubmissionTask;
 import org.apache.airavata.gfac.core.task.Task;
 import org.apache.airavata.gfac.core.watcher.CancelRequestWatcher;
 import org.apache.airavata.gfac.core.watcher.RedeliveryRequestWatcher;
-import org.apache.airavata.gfac.impl.job.LSFJobConfiguration;
-import org.apache.airavata.gfac.impl.job.PBSJobConfiguration;
-import org.apache.airavata.gfac.impl.job.SlurmJobConfiguration;
-import org.apache.airavata.gfac.impl.job.UGEJobConfiguration;
+import org.apache.airavata.gfac.impl.job.*;
 import org.apache.airavata.gfac.impl.watcher.CancelRequestWatcherImpl;
 import org.apache.airavata.gfac.impl.watcher.RedeliveryRequestWatcherImpl;
 import org.apache.airavata.gfac.monitor.email.EmailBasedMonitor;
@@ -180,6 +177,9 @@ public abstract class Factory {
                        case UGE:
                                return new 
UGEJobConfiguration("UGETemplate.xslt", ".pbs", 
resourceJobManager.getJobManagerBinPath(),
                                                
resourceJobManager.getJobManagerCommands(), outputParser);
+            case FORK:
+                return new ForkJobConfiguration("ForkTemplate.xslt", ".sh", 
resourceJobManager.getJobManagerBinPath(),
+                        resourceJobManager.getJobManagerCommands(), 
outputParser);
                        default:
                                return null;
                }

http://git-wip-us.apache.org/repos/asf/airavata/blob/9534a810/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/job/ForkJobConfiguration.java
----------------------------------------------------------------------
diff --git 
a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/job/ForkJobConfiguration.java
 
b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/job/ForkJobConfiguration.java
new file mode 100644
index 0000000..d53ce45
--- /dev/null
+++ 
b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/job/ForkJobConfiguration.java
@@ -0,0 +1,114 @@
+/*
+ *
+ * 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.gfac.impl.job;
+
+import org.apache.airavata.gfac.core.JobManagerConfiguration;
+import org.apache.airavata.gfac.core.cluster.OutputParser;
+import org.apache.airavata.gfac.core.cluster.RawCommandInfo;
+import org.apache.airavata.model.appcatalog.computeresource.JobManagerCommand;
+import org.apache.commons.io.FilenameUtils;
+
+import java.io.File;
+import java.util.Map;
+
+public class ForkJobConfiguration implements JobManagerConfiguration {
+    private final Map<JobManagerCommand, String> jobManagerCommands;
+    private String jobDescriptionTemplateName;
+    private String scriptExtension;
+    private String installedPath;
+    private OutputParser parser;
+
+    public ForkJobConfiguration (String jobDescriptionTemplateName, String 
scriptExtension, String installedPath,
+                                 Map<JobManagerCommand, String> 
jobManagerCommands, OutputParser parser){
+        this.jobDescriptionTemplateName = jobDescriptionTemplateName;
+        this.scriptExtension = scriptExtension;
+        this.parser = parser;
+        if (installedPath.endsWith("/")) {
+            this.installedPath = installedPath;
+        } else {
+            this.installedPath = installedPath + "/";
+        }
+        this.jobManagerCommands = jobManagerCommands;
+    }
+
+    @Override
+    public RawCommandInfo getCancelCommand(String jobID) {
+        return new RawCommandInfo(this.installedPath + 
jobManagerCommands.get(JobManagerCommand.DELETION) + " " +
+                jobID);
+    }
+
+    @Override
+    public String getJobDescriptionTemplateName() {
+        return jobDescriptionTemplateName;
+    }
+
+    @Override
+    public RawCommandInfo getMonitorCommand(String jobID) {
+        return null;
+    }
+
+    @Override
+    public RawCommandInfo getUserBasedMonitorCommand(String userName) {
+        return null;
+    }
+
+    @Override
+    public RawCommandInfo getJobIdMonitorCommand(String jobName, String 
userName) {
+        return null;
+    }
+
+    @Override
+    public String getScriptExtension() {
+        return scriptExtension;
+    }
+
+    @Override
+    public RawCommandInfo getSubmitCommand(String workingDirectory, String 
forkFilePath) {
+        return new RawCommandInfo(this.installedPath + 
jobManagerCommands.get(JobManagerCommand.SUBMISSION) + " " +
+                workingDirectory + File.separator + 
FilenameUtils.getName(forkFilePath));
+    }
+
+    @Override
+    public OutputParser getParser() {
+        return parser;
+    }
+
+    @Override
+    public String getInstalledPath() {
+        return installedPath;
+    }
+
+    @Override
+    public String getBaseCancelCommand() {
+        return null;
+    }
+
+    @Override
+    public String getBaseMonitorCommand() {
+        return null;
+    }
+
+    @Override
+    public String getBaseSubmitCommand() {
+        return null;
+    }
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/9534a810/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
new file mode 100644
index 0000000..51b8e8a
--- /dev/null
+++ 
b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/job/ForkOutputParser.java
@@ -0,0 +1,61 @@
+/*
+ *
+ * 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.gfac.impl.job;
+
+import org.apache.airavata.common.utils.AiravataUtils;
+import org.apache.airavata.gfac.core.JobDescriptor;
+import org.apache.airavata.gfac.core.SSHApiException;
+import org.apache.airavata.gfac.core.cluster.OutputParser;
+import org.apache.airavata.model.status.JobStatus;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.Map;
+
+public class ForkOutputParser implements OutputParser {
+    private static final Logger log = 
LoggerFactory.getLogger(ForkOutputParser.class);
+    @Override
+    public void parseSingleJob(JobDescriptor descriptor, String rawOutput) 
throws SSHApiException {
+        log.info(rawOutput);
+    }
+
+    @Override
+    public String parseJobSubmission(String rawOutput) throws SSHApiException {
+        return null;
+    }
+
+    @Override
+    public JobStatus parseJobStatus(String jobID, String rawOutput) throws 
SSHApiException {
+        return null;
+    }
+
+    @Override
+    public void parseJobStatuses(String userName, Map<String, JobStatus> 
statusMap, String rawOutput) throws SSHApiException {
+
+    }
+
+    @Override
+    public String parseJobId(String jobName, String rawOutput) throws 
SSHApiException {
+        // For fork jobs there is no job ID, hence airavata generates a job ID
+        return AiravataUtils.getId(jobName);
+    }
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/9534a810/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/AdvancedSCPDataStageTask.java
----------------------------------------------------------------------
diff --git 
a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/AdvancedSCPDataStageTask.java
 
b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/AdvancedSCPDataStageTask.java
index 9210c93..2a0c54c 100644
--- 
a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/AdvancedSCPDataStageTask.java
+++ 
b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/AdvancedSCPDataStageTask.java
@@ -95,6 +95,16 @@ public class AdvancedSCPDataStageTask implements Task{
                 passPhrase = sshCredential.getPassphrase();
 //                userName = sshCredential.getPortalUserName(); // this might 
not same as login user name
                 authenticationInfo = getSSHKeyAuthentication();
+            }else {
+                String msg = "Provided credential store token is not valid. 
Please provide the correct credential store token";
+                log.error(msg);
+                status.setState(TaskState.FAILED);
+                status.setReason(msg);
+                ErrorModel errorModel = new ErrorModel();
+                errorModel.setActualErrorMessage(msg);
+                errorModel.setUserFriendlyMessage(msg);
+                taskContext.getTaskModel().setTaskError(errorModel);
+                return status;
             }
             status = new TaskStatus(TaskState.COMPLETED);
             subTaskModel = (DataStagingTaskModel) ThriftUtils.getSubTaskModel

http://git-wip-us.apache.org/repos/asf/airavata/blob/9534a810/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/ForkJobSubmissionTask.java
----------------------------------------------------------------------
diff --git 
a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/ForkJobSubmissionTask.java
 
b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/ForkJobSubmissionTask.java
deleted file mode 100644
index f8ef0ea..0000000
--- 
a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/ForkJobSubmissionTask.java
+++ /dev/null
@@ -1,53 +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.gfac.impl.task;
-
-import org.apache.airavata.gfac.core.context.TaskContext;
-import org.apache.airavata.gfac.core.task.JobSubmissionTask;
-import org.apache.airavata.gfac.core.task.TaskException;
-import org.apache.airavata.model.status.TaskState;
-import org.apache.airavata.model.status.TaskStatus;
-import org.apache.airavata.model.task.TaskTypes;
-
-import java.util.Map;
-
-public class ForkJobSubmissionTask implements JobSubmissionTask {
-    @Override
-    public void init(Map<String, String> propertyMap) throws TaskException {
-
-    }
-
-    @Override
-    public TaskStatus execute(TaskContext taskContext) {
-        return null;
-    }
-
-    @Override
-    public TaskStatus recover(TaskContext taskContext) {
-        return null;
-    }
-
-       @Override
-       public TaskTypes getType() {
-               return TaskTypes.JOB_SUBMISSION;
-       }
-}

http://git-wip-us.apache.org/repos/asf/airavata/blob/9534a810/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/SSHForkJobSubmissionTask.java
----------------------------------------------------------------------
diff --git 
a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/SSHForkJobSubmissionTask.java
 
b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/SSHForkJobSubmissionTask.java
new file mode 100644
index 0000000..ddd33e1
--- /dev/null
+++ 
b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/SSHForkJobSubmissionTask.java
@@ -0,0 +1,162 @@
+/*
+ *
+ * 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.gfac.impl.task;
+
+import org.apache.airavata.common.exception.ApplicationSettingsException;
+import org.apache.airavata.gfac.core.*;
+import org.apache.airavata.gfac.core.cluster.RemoteCluster;
+import org.apache.airavata.gfac.core.context.ProcessContext;
+import org.apache.airavata.gfac.core.context.TaskContext;
+import org.apache.airavata.gfac.core.task.JobSubmissionTask;
+import org.apache.airavata.gfac.core.task.TaskException;
+import org.apache.airavata.gfac.impl.Factory;
+import org.apache.airavata.model.appcatalog.computeresource.ResourceJobManager;
+import org.apache.airavata.model.commons.ErrorModel;
+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.task.TaskTypes;
+import org.apache.airavata.registry.cpi.AppCatalogException;
+import org.apache.commons.io.FileUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.Map;
+
+public class SSHForkJobSubmissionTask implements JobSubmissionTask {
+    private static final Logger log = 
LoggerFactory.getLogger(SSHForkJobSubmissionTask.class);
+    @Override
+    public void init(Map<String, String> propertyMap) throws TaskException {
+
+    }
+
+    @Override
+    public TaskStatus execute(TaskContext taskContext) {
+        TaskStatus taskStatus = new TaskStatus(TaskState.CREATED);
+        try {
+            ProcessContext processContext = 
taskContext.getParentProcessContext();
+            JobModel jobModel = processContext.getJobModel();
+            jobModel.setTaskId(taskContext.getTaskId());
+            RemoteCluster remoteCluster = processContext.getRemoteCluster();
+            JobDescriptor jobDescriptor = 
GFacUtils.createJobDescriptor(processContext);
+            jobModel.setJobName(jobDescriptor.getJobName());
+            ResourceJobManager resourceJobManager = 
GFacUtils.getResourceJobManager(processContext);
+            JobManagerConfiguration jConfig = null;
+            if (resourceJobManager != null) {
+                jConfig = 
Factory.getJobManagerConfiguration(resourceJobManager);
+            }
+            JobStatus jobStatus = new JobStatus();
+            File jobFile = GFacUtils.createJobFile(jobDescriptor, jConfig);
+            if (jobFile != null && jobFile.exists()) {
+                
jobModel.setJobDescription(FileUtils.readFileToString(jobFile));
+                String jobId = remoteCluster.submitBatchJob(jobFile.getPath(), 
processContext.getWorkingDir());
+                if (jobId != null && !jobId.isEmpty()) {
+                    jobModel.setJobId(jobId);
+                    GFacUtils.saveJobModel(processContext, jobModel);
+                    jobStatus.setJobState(JobState.SUBMITTED);
+                    jobStatus.setReason("Successfully Submitted to " + 
taskContext.getParentProcessContext()
+                            .getComputeResourceDescription().getHostName());
+                    jobModel.setJobStatus(jobStatus);
+                    
GFacUtils.saveJobStatus(taskContext.getParentProcessContext(), jobModel);
+                    taskStatus = new TaskStatus(TaskState.COMPLETED);
+                    taskStatus.setReason("Submitted job to compute resource");
+                }
+                if (jobId == null || jobId.isEmpty()) {
+                    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);
+                    GFacUtils.saveErrorDetails(processContext, msg);
+                    taskStatus.setState(TaskState.FAILED);
+                    taskStatus.setReason("Couldn't find job id in both 
submitted and verified steps");
+                }
+            } else {
+                taskStatus.setState(TaskState.FAILED);
+                if (jobFile == null) {
+                    taskStatus.setReason("JobFile is null");
+                } else {
+                    taskStatus.setReason("Job file doesn't exist");
+                }
+            }
+        } catch (ApplicationSettingsException e) {
+            String msg = "Error occurred while creating job descriptor";
+            log.error(msg, e);
+            taskStatus.setState(TaskState.FAILED);
+            taskStatus.setReason(msg);
+            ErrorModel errorModel = new ErrorModel();
+            errorModel.setActualErrorMessage(e.getMessage());
+            errorModel.setUserFriendlyMessage(msg);
+            taskContext.getTaskModel().setTaskError(errorModel);
+        } catch (AppCatalogException e) {
+            String msg = "Error while instantiating app catalog";
+            log.error(msg, e);
+            taskStatus.setState(TaskState.FAILED);
+            taskStatus.setReason(msg);
+            ErrorModel errorModel = new ErrorModel();
+            errorModel.setActualErrorMessage(e.getMessage());
+            errorModel.setUserFriendlyMessage(msg);
+            taskContext.getTaskModel().setTaskError(errorModel);
+        } catch (GFacException e) {
+            String msg = "Error occurred while creating job descriptor";
+            log.error(msg, e);
+            taskStatus.setState(TaskState.FAILED);
+            taskStatus.setReason(msg);
+            ErrorModel errorModel = new ErrorModel();
+            errorModel.setActualErrorMessage(e.getMessage());
+            errorModel.setUserFriendlyMessage(msg);
+            taskContext.getTaskModel().setTaskError(errorModel);
+        } catch (SSHApiException e) {
+            String msg = "Error occurred while submitting the job";
+            log.error(msg, e);
+            taskStatus.setState(TaskState.FAILED);
+            taskStatus.setReason(msg);
+            ErrorModel errorModel = new ErrorModel();
+            errorModel.setActualErrorMessage(e.getMessage());
+            errorModel.setUserFriendlyMessage(msg);
+            taskContext.getTaskModel().setTaskError(errorModel);
+        } catch (IOException e) {
+            String msg = "Error while reading the content of the job file";
+            log.error(msg, e);
+            taskStatus.setState(TaskState.FAILED);
+            taskStatus.setReason(msg);
+            ErrorModel errorModel = new ErrorModel();
+            errorModel.setActualErrorMessage(e.getMessage());
+            errorModel.setUserFriendlyMessage(msg);
+            taskContext.getTaskModel().setTaskError(errorModel);
+        }
+        return taskStatus;
+    }
+
+    @Override
+    public TaskStatus recover(TaskContext taskContext) {
+        return null;
+    }
+
+       @Override
+       public TaskTypes getType() {
+               return TaskTypes.JOB_SUBMISSION;
+       }
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/9534a810/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/SSHJobSubmissionTask.java
----------------------------------------------------------------------
diff --git 
a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/SSHJobSubmissionTask.java
 
b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/SSHJobSubmissionTask.java
index e69cfa5..34d0945 100644
--- 
a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/SSHJobSubmissionTask.java
+++ 
b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/SSHJobSubmissionTask.java
@@ -131,7 +131,7 @@ public class SSHJobSubmissionTask implements 
JobSubmissionTask {
                    }
 
            } catch (AppCatalogException e) {
-                   String msg = "Error while instatiating app catalog";
+                   String msg = "Error while instantiating app catalog";
                    log.error(msg, e);
                    taskStatus.setState(TaskState.FAILED);
                    taskStatus.setReason(msg);

http://git-wip-us.apache.org/repos/asf/airavata/blob/9534a810/modules/gfac/gfac-impl/src/main/resources/ForkTemplate.xslt
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-impl/src/main/resources/ForkTemplate.xslt 
b/modules/gfac/gfac-impl/src/main/resources/ForkTemplate.xslt
new file mode 100644
index 0000000..f04c911
--- /dev/null
+++ b/modules/gfac/gfac-impl/src/main/resources/ForkTemplate.xslt
@@ -0,0 +1,24 @@
+<!--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. -->
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; 
xmlns:ns="http://airavata.apache.org/gsi/ssh/2012/12";>
+<xsl:output method="text" />
+<xsl:template match="/ns:JobDescriptor">
+#! /bin/sh
+cd <xsl:text>   </xsl:text><xsl:value-of 
select="ns:workingDirectory"/><xsl:text>&#xa;</xsl:text>
+    <xsl:choose><xsl:when test="ns:jobSubmitterCommand">
+<xsl:value-of select="ns:jobSubmitterCommand"/><xsl:text>   
</xsl:text></xsl:when></xsl:choose><xsl:value-of 
select="ns:executablePath"/><xsl:text>   </xsl:text>
+<xsl:for-each select="ns:inputs/ns:input">
+      <xsl:value-of select="."/><xsl:text>   </xsl:text>
+    </xsl:for-each>
+<xsl:for-each select="ns:postJobCommands/ns:command">
+      <xsl:value-of select="."/><xsl:text>   </xsl:text>
+</xsl:for-each>
+
+</xsl:template>
+
+</xsl:stylesheet>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/9534a810/thrift-interface-descriptions/airavata-api/compute_resource_model.thrift
----------------------------------------------------------------------
diff --git 
a/thrift-interface-descriptions/airavata-api/compute_resource_model.thrift 
b/thrift-interface-descriptions/airavata-api/compute_resource_model.thrift
index c01a028..75db7ec 100644
--- a/thrift-interface-descriptions/airavata-api/compute_resource_model.thrift
+++ b/thrift-interface-descriptions/airavata-api/compute_resource_model.thrift
@@ -194,7 +194,8 @@ enum JobSubmissionProtocol {
     SSH,
     GLOBUS,
     UNICORE,
-    CLOUD
+    CLOUD,
+    SSH_FORK
 }
 
 /**
@@ -210,7 +211,8 @@ enum JobSubmissionProtocol {
 enum MonitorMode {
    POLL_JOB_MANAGER,
    JOB_EMAIL_NOTIFICATION_MONITOR,
-   XSEDE_AMQP_SUBSCRIBE
+   XSEDE_AMQP_SUBSCRIBE,
+   FORK
 }
 
 /**

Reply via email to