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 2015/08/21 17:35:12 UTC

[1/5] airavata git commit: Fixing AIRAVATA-1797 , process redelivery handling

Repository: airavata
Updated Branches:
  refs/heads/master 36922c9fc -> b98f65997


Fixing AIRAVATA-1797 , process redelivery handling


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

Branch: refs/heads/master
Commit: 92243599278db75e56f19da2b4d03d7f029ce17f
Parents: 4f6e8c5
Author: Shameera Rathanyaka <sh...@gmail.com>
Authored: Tue Aug 18 11:35:46 2015 -0400
Committer: Shameera Rathanyaka <sh...@gmail.com>
Committed: Tue Aug 18 11:35:46 2015 -0400

----------------------------------------------------------------------
 .../apache/airavata/gfac/core/GFacUtils.java    | 28 +------
 .../airavata/gfac/core/context/GFacContext.java | 60 ++++++++++++++
 .../gfac/core/context/ProcessContext.java       | 11 ++-
 .../gfac/core/watcher/CancelRequestWatcher.java |  8 +-
 .../core/watcher/RedeliveryRequestWatcher.java  |  8 +-
 .../org/apache/airavata/gfac/impl/Factory.java  | 25 ++++++
 .../airavata/gfac/impl/GFacEngineImpl.java      | 27 +++++++
 .../apache/airavata/gfac/impl/GFacWorker.java   | 35 +++++----
 .../impl/watcher/CancelRequestWatcherImpl.java  | 31 ++++++++
 .../watcher/RedeliveryRequestWatcherImpl.java   | 69 ++++++++++++++++
 .../airavata/gfac/server/GfacServerHandler.java | 82 +++++++++++++++++---
 .../airavata/messaging/core/MessageContext.java |  9 +++
 .../impl/RabbitMQProcessLaunchConsumer.java     |  2 +-
 .../core/impl/RabbitMQStatusConsumer.java       |  2 +
 14 files changed, 333 insertions(+), 64 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/92243599/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 45af599..8461216 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
@@ -1025,7 +1025,8 @@ public class GFacUtils {
         try {
             GwyResourceProfile gatewayProfile = context.getAppCatalog().getGatewayProfile();
             String resourceHostId = context.getComputeResourceDescription().getComputeResourceId();
-            ComputeResourcePreference preference = gatewayProfile.getComputeResourcePreference(context.getGatewayId(), resourceHostId);
+            ComputeResourcePreference preference = gatewayProfile.getComputeResourcePreference(context.getGatewayId()
+		            , resourceHostId);
             return preference.getPreferredJobSubmissionProtocol();
         } catch (AppCatalogException e) {
             log.error("Error occurred while initializing app catalog", e);
@@ -1086,31 +1087,6 @@ public class GFacUtils {
 		return GFacConstants.ZOOKEEPER_EXPERIMENT_NODE + File.separator + experimentId;
 	}
 
-	public static void createProcessZKNode(CuratorFramework curatorClient, String gfacServerName, String
-			processId, long deliveryTag, String token) throws Exception {
-		// TODO - To handle multiple processes per experiment, need to create a /experiment/{expId}/{processId} node
-		// create /experiments/{processId} node and set data - serverName, add redelivery listener
-		String zkProcessNodePath = ZKPaths.makePath(GFacConstants.ZOOKEEPER_EXPERIMENT_NODE, processId);
-		ZKPaths.mkdirs(curatorClient.getZookeeperClient().getZooKeeper(), zkProcessNodePath);
-		curatorClient.setData().withVersion(-1).forPath(zkProcessNodePath, gfacServerName.getBytes());
-		curatorClient.getData().usingWatcher(new RedeliveryRequestWatcher()).forPath(zkProcessNodePath);
-
-		// create /experiments/{processId}/deliveryTag node and set data - deliveryTag
-		String deliveryTagPath = ZKPaths.makePath(zkProcessNodePath, GFacConstants.ZOOKEEPER_DELIVERYTAG_NODE);
-		ZKPaths.mkdirs(curatorClient.getZookeeperClient().getZooKeeper(), deliveryTagPath);
-		curatorClient.setData().withVersion(-1).forPath(deliveryTagPath, GFacUtils.longToBytes(deliveryTag));
-
-		// create /experiments/{processId}/token node and set data - token
-		String tokenNodePath = ZKPaths.makePath(processId, GFacConstants.ZOOKEEPER_TOKEN_NODE);
-		ZKPaths.mkdirs(curatorClient.getZookeeperClient().getZooKeeper(), tokenNodePath);
-		curatorClient.setData().withVersion(-1).forPath(tokenNodePath, token.getBytes());
-
-		// create /experiments/{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(new CancelRequestWatcher()).forPath(cancelListenerNode);
-	}
-
 	public static long getProcessDeliveryTag(CuratorFramework curatorClient, String processId) throws Exception {
 		String deliveryTagPath = GFacConstants.ZOOKEEPER_EXPERIMENT_NODE + "/" + processId + GFacConstants
 				.ZOOKEEPER_DELIVERYTAG_NODE;

http://git-wip-us.apache.org/repos/asf/airavata/blob/92243599/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/context/GFacContext.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/context/GFacContext.java b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/context/GFacContext.java
new file mode 100644
index 0000000..9bca09f
--- /dev/null
+++ b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/context/GFacContext.java
@@ -0,0 +1,60 @@
+/*
+ *
+ * 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.core.context;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * This is a singleton class, which store all required details of running processes.
+ */
+public class GFacContext {
+
+	private Map<String,ProcessContext> processes;
+	private static GFacContext gfacContext;
+
+	private GFacContext() {
+		processes = new HashMap<>();
+	}
+
+	public static GFacContext getInstance() {
+		if (gfacContext == null) {
+			synchronized (GFacContext.class) {
+				if (gfacContext == null) {
+					gfacContext = new GFacContext();
+				}
+			}
+		}
+		return gfacContext;
+	}
+
+	public void addProcess(ProcessContext processContext) {
+		processes.put(processContext.getProcessId(), processContext);
+	}
+
+	public ProcessContext getProcess(String processId) {
+		return processes.get(processId);
+	}
+
+	public void remoteProcess(String processId) {
+		processes.remove(processId);
+	}
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/92243599/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 4004787..37f8b20 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
@@ -22,7 +22,6 @@
 package org.apache.airavata.gfac.core.context;
 
 import org.apache.airavata.common.utils.AiravataUtils;
-import org.apache.airavata.gfac.core.GFacUtils;
 import org.apache.airavata.gfac.core.cluster.RemoteCluster;
 import org.apache.airavata.messaging.core.Publisher;
 import org.apache.airavata.model.appcatalog.appdeployment.ApplicationDeploymentDescription;
@@ -36,7 +35,6 @@ import org.apache.airavata.model.appcatalog.gatewayprofile.ComputeResourcePrefer
 import org.apache.airavata.model.appcatalog.gatewayprofile.GatewayResourceProfile;
 import org.apache.airavata.model.job.JobModel;
 import org.apache.airavata.model.process.ProcessModel;
-import org.apache.airavata.model.status.JobStatus;
 import org.apache.airavata.model.status.ProcessState;
 import org.apache.airavata.model.status.ProcessStatus;
 import org.apache.airavata.registry.cpi.AppCatalog;
@@ -79,6 +77,7 @@ public class ProcessContext {
 	private ComputeResourcePreference computeResourcePreference;
 	private MonitorMode monitorMode;
 	private ResourceJobManager resourceJobManager;
+	private boolean handOver;
 
 	/**
 	 * Note: process context property use lazy loading approach. In runtime you will see some properties as null
@@ -341,4 +340,12 @@ public class ProcessContext {
 	public String getExperimentId() {
 		return processModel.getExperimentId();
 	}
+
+	public boolean isHandOver() {
+		return handOver;
+	}
+
+	public void setHandOver(boolean handOver) {
+		this.handOver = handOver;
+	}
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/92243599/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/watcher/CancelRequestWatcher.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/watcher/CancelRequestWatcher.java b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/watcher/CancelRequestWatcher.java
index 41bb0f0..2bdc770 100644
--- a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/watcher/CancelRequestWatcher.java
+++ b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/watcher/CancelRequestWatcher.java
@@ -21,11 +21,7 @@
 package org.apache.airavata.gfac.core.watcher;
 
 import org.apache.curator.framework.api.CuratorWatcher;
-import org.apache.zookeeper.WatchedEvent;
 
-public class CancelRequestWatcher implements CuratorWatcher {
-	@Override
-	public void process(WatchedEvent watchedEvent) throws Exception {
-		// this watcher change data in cancel listener node in the experiment node
-	}
+public interface CancelRequestWatcher extends CuratorWatcher {
+
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/92243599/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/watcher/RedeliveryRequestWatcher.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/watcher/RedeliveryRequestWatcher.java b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/watcher/RedeliveryRequestWatcher.java
index c9ad139..d200bf5 100644
--- a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/watcher/RedeliveryRequestWatcher.java
+++ b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/watcher/RedeliveryRequestWatcher.java
@@ -21,11 +21,7 @@
 package org.apache.airavata.gfac.core.watcher;
 
 import org.apache.curator.framework.api.CuratorWatcher;
-import org.apache.zookeeper.WatchedEvent;
 
-public class RedeliveryRequestWatcher implements CuratorWatcher {
-	@Override
-	public void process(WatchedEvent watchedEvent) throws Exception {
-		// get the data in experiment node and compare with gfac server name.
-	}
+public interface RedeliveryRequestWatcher extends CuratorWatcher {
+
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/92243599/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 4bfb6cf..e660196 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
@@ -41,11 +41,14 @@ import org.apache.airavata.gfac.core.config.DataTransferTaskConfig;
 import org.apache.airavata.gfac.core.config.GFacYamlConfigruation;
 import org.apache.airavata.gfac.core.config.JobSubmitterTaskConfig;
 import org.apache.airavata.gfac.core.config.ResourceConfig;
+import org.apache.airavata.gfac.core.context.GFacContext;
 import org.apache.airavata.gfac.core.context.ProcessContext;
 import org.apache.airavata.gfac.core.monitor.JobMonitor;
 import org.apache.airavata.gfac.core.scheduler.HostScheduler;
 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.LSFOutputParser;
 import org.apache.airavata.gfac.impl.job.PBSJobConfiguration;
@@ -54,6 +57,8 @@ import org.apache.airavata.gfac.impl.job.SlurmJobConfiguration;
 import org.apache.airavata.gfac.impl.job.SlurmOutputParser;
 import org.apache.airavata.gfac.impl.job.UGEJobConfiguration;
 import org.apache.airavata.gfac.impl.job.UGEOutputParser;
+import org.apache.airavata.gfac.impl.watcher.CancelRequestWatcherImpl;
+import org.apache.airavata.gfac.impl.watcher.RedeliveryRequestWatcherImpl;
 import org.apache.airavata.gfac.monitor.email.EmailBasedMonitor;
 import org.apache.airavata.messaging.core.Publisher;
 import org.apache.airavata.messaging.core.impl.RabbitMQProcessLaunchConsumer;
@@ -98,6 +103,7 @@ public abstract class Factory {
 	}*/
 
 	private static GFacEngine engine;
+	private static GFacContext gfacContext;
 	private static Publisher statusPublisher;
 	private static CuratorFramework curatorClient;
 	private static EmailBasedMonitor emailBasedMonitor;
@@ -120,6 +126,13 @@ public abstract class Factory {
 		return engine;
 	}
 
+	public static GFacContext getGfacContext() {
+		if (gfacContext == null) {
+			gfacContext = GFacContext.getInstance();
+		}
+		return gfacContext;
+	}
+
 	public static ExperimentCatalog getDefaultExpCatalog() throws RegistryException {
 		return RegistryFactory.getDefaultExpCatalog();
 	}
@@ -304,6 +317,18 @@ public abstract class Factory {
 		return jobMonitor;
 	}
 
+	public static JobMonitor getDefaultMonitorService() throws AiravataException {
+		return getMonitorService(MonitorMode.JOB_EMAIL_NOTIFICATION_MONITOR);
+	}
+
+	public static RedeliveryRequestWatcher getRedeliveryReqeustWatcher() {
+		return new RedeliveryRequestWatcherImpl();
+	}
+
+	public static CancelRequestWatcher getCancelRequestWatcher() {
+		return new CancelRequestWatcherImpl();
+	}
+
 	public static Session getSSHSession(AuthenticationInfo authenticationInfo, ServerInfo serverInfo) throws AiravataException {
 		SSHKeyAuthentication authentication = null;
 		String key = serverInfo.getUserName() + "_" + serverInfo.getHost() + "_" + serverInfo.getPort();

http://git-wip-us.apache.org/repos/asf/airavata/blob/92243599/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 a4c8381..33e354b 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
@@ -121,6 +121,9 @@ public class GFacEngineImpl implements GFacEngine {
 
 	@Override
 	public void executeProcess(ProcessContext processContext) throws GFacException {
+		if (processContext.isHandOver()) {
+			return;
+		}
 		TaskContext taskCtx = null;
 		List<TaskContext> taskChain = new ArrayList<>();
 		processContext.setProcessStatus(new ProcessStatus(ProcessState.CONFIGURING_WORKSPACE));
@@ -138,6 +141,9 @@ public class GFacEngineImpl implements GFacEngine {
 					().name(), taskStatus.getReason());
 			throw new GFacException("Error while environment setup");
 		}
+		if (processContext.isHandOver()) {
+			return;
+		}
 		// execute process inputs
 		processContext.setProcessStatus(new ProcessStatus(ProcessState.INPUT_DATA_STAGING));
 		GFacUtils.saveAndPublishProcessStatus(processContext);
@@ -145,6 +151,9 @@ public class GFacEngineImpl implements GFacEngine {
 		sortByInputOrder(processInputs);
 		if (processInputs != null) {
 			for (InputDataObjectType processInput : processInputs) {
+				if (processContext.isHandOver()) {
+					return;
+				}
 				DataType type = processInput.getType();
 				switch (type) {
 					case STDERR:
@@ -175,17 +184,26 @@ public class GFacEngineImpl implements GFacEngine {
 				}
 			}
 		}
+		if (processContext.isHandOver()) {
+			return;
+		}
 		processContext.setProcessStatus(new ProcessStatus(ProcessState.EXECUTING));
 		GFacUtils.saveAndPublishProcessStatus(processContext);
 		taskCtx = getJobSubmissionTaskContext(processContext);
 		saveTaskModel(taskCtx);
 		GFacUtils.saveAndPublishTaskStatus(taskCtx);
 		JobSubmissionTask jobSubmissionTask = Factory.getJobSubmissionTask(processContext.getJobSubmissionProtocol());
+		if (processContext.isHandOver()) {
+			return;
+		}
 		taskStatus = executeTask(taskCtx, jobSubmissionTask);
 		if (taskStatus.getState() == TaskState.FAILED) {
 			throw new GFacException("Job submission task failed");
 		}
 		processContext.setTaskChain(taskChain);
+		if (processContext.isHandOver()) {
+			return;
+		}
 	}
 
 
@@ -196,11 +214,17 @@ public class GFacEngineImpl implements GFacEngine {
 
 	@Override
 	public void runProcessOutflow(ProcessContext processContext) throws GFacException {
+		if (processContext.isHandOver()) {
+			return;
+		}
 		TaskContext taskCtx = null;
 		processContext.setProcessStatus(new ProcessStatus(ProcessState.OUTPUT_DATA_STAGING));
 		GFacUtils.saveAndPublishProcessStatus(processContext);
 		List<OutputDataObjectType> processOutputs = processContext.getProcessModel().getProcessOutputs();
 		for (OutputDataObjectType processOutput : processOutputs) {
+			if (processContext.isHandOver()) {
+				return;
+			}
 			DataType type = processOutput.getType();
 			switch (type) {
 				case STDERR:
@@ -232,6 +256,9 @@ public class GFacEngineImpl implements GFacEngine {
 					break;
 			}
 		}
+		if (processContext.isHandOver()) {
+			return;
+		}
 		processContext.setProcessStatus(new ProcessStatus(ProcessState.POST_PROCESSING));
 		GFacUtils.saveAndPublishProcessStatus(processContext);
 //		taskCtx = getEnvCleanupTaskContext(processContext);

http://git-wip-us.apache.org/repos/asf/airavata/blob/92243599/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 a759f90..6bbf159 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
@@ -22,7 +22,6 @@
 package org.apache.airavata.gfac.impl;
 
 import org.apache.airavata.common.exception.AiravataException;
-import org.apache.airavata.gfac.core.GFac;
 import org.apache.airavata.gfac.core.GFacEngine;
 import org.apache.airavata.gfac.core.GFacException;
 import org.apache.airavata.gfac.core.GFacUtils;
@@ -38,11 +37,12 @@ import java.text.MessageFormat;
 public class GFacWorker implements Runnable {
 
 	private static final Logger log = LoggerFactory.getLogger(GFacWorker.class);
+	private GFacEngine engine;
 	private ProcessContext processContext;
 	private String processId;
 	private String gatewayId;
 	private String tokenId;
-	private boolean isProcessContextPopulated = false;
+	private boolean runOutflow = false;
 
 
 	/**
@@ -55,7 +55,9 @@ public class GFacWorker implements Runnable {
 		this.processId = processContext.getProcessId();
 		this.gatewayId = processContext.getGatewayId();
 		this.tokenId = processContext.getTokenId();
+		engine = Factory.getGFacEngine();
 		this.processContext = processContext;
+		runOutflow = true;
 	}
 
 	/**
@@ -65,16 +67,17 @@ public class GFacWorker implements Runnable {
 		this.processId = processId;
 		this.gatewayId = gatewayId;
 		this.tokenId = tokenId;
+		engine = Factory.getGFacEngine();
+		this.processContext = engine.populateProcessContext(processId, gatewayId, tokenId);
+		Factory.getGfacContext().addProcess(this.processContext);
 	}
 
 	@Override
 	public void run() {
+		if (processContext.isHandOver()) {
+			return;
+		}
 		try {
-			GFacEngine engine = Factory.getGFacEngine();
-			if (processContext == null) {
-				processContext = engine.populateProcessContext(processId, gatewayId, tokenId);
-				isProcessContextPopulated = true;
-			}
 			ProcessType type = getProcessType(processContext);
 			try {
 				switch (type) {
@@ -84,7 +87,9 @@ public class GFacWorker implements Runnable {
 					case RECOVER:
 						recoverProcess(engine);
 						break;
-					case OUTFLOW:
+//					case RECOVER_MONITORING:
+						// TODO get monitor mode from process and get correct monitor service instead default service.
+					case RUN_OUTFLOW:
 						// run the outflow task
 						engine.runProcessOutflow(processContext);
 						processContext.setProcessStatus(new ProcessStatus(ProcessState.COMPLETED));
@@ -109,7 +114,7 @@ public class GFacWorker implements Runnable {
 					case RECOVER:
 						log.error("Process recover error ", e);
 						break;
-					case OUTFLOW:
+					case RUN_OUTFLOW:
 						log.error("Process outflow execution error", e);
 						break;
 					case RECOVER_OUTFLOW:
@@ -138,6 +143,9 @@ public class GFacWorker implements Runnable {
 	}
 
 	private void exectuteProcess(GFacEngine engine) throws GFacException {
+		if (processContext.isHandOver()) {
+			return;
+		}
 		engine.executeProcess(processContext);
 		if (processContext.getMonitorMode() == null) {
 			engine.runProcessOutflow(processContext);
@@ -182,10 +190,10 @@ public class GFacWorker implements Runnable {
 			case EXECUTING:
 				return ProcessType.RECOVER;
 			case MONITORING:
-				if (isProcessContextPopulated) {
-					return ProcessType.RECOVER; // hand over to monitor task
+				if (runOutflow) {
+					return ProcessType.RUN_OUTFLOW; // execute outflow
 				} else {
-					return ProcessType.OUTFLOW; // execute outflow
+					return ProcessType.RECOVER_MONITORING; // hand over to monitor task
 				}
 			case OUTPUT_DATA_STAGING:
 			case POST_PROCESSING:
@@ -205,7 +213,8 @@ public class GFacWorker implements Runnable {
 	private enum ProcessType {
 		NEW,
 		RECOVER,
-		OUTFLOW,
+		RECOVER_MONITORING,
+		RUN_OUTFLOW,
 		RECOVER_OUTFLOW,
 		COMPLETED
 	}

http://git-wip-us.apache.org/repos/asf/airavata/blob/92243599/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/watcher/CancelRequestWatcherImpl.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/watcher/CancelRequestWatcherImpl.java b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/watcher/CancelRequestWatcherImpl.java
new file mode 100644
index 0000000..bc49316
--- /dev/null
+++ b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/watcher/CancelRequestWatcherImpl.java
@@ -0,0 +1,31 @@
+/*
+ *
+ * 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.watcher;
+
+import org.apache.airavata.gfac.core.watcher.CancelRequestWatcher;
+import org.apache.zookeeper.WatchedEvent;
+
+public class CancelRequestWatcherImpl implements CancelRequestWatcher {
+	@Override
+	public void process(WatchedEvent watchedEvent) throws Exception {
+		// this watcher change data in cancel listener node in the experiment node
+	}
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/92243599/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/watcher/RedeliveryRequestWatcherImpl.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/watcher/RedeliveryRequestWatcherImpl.java b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/watcher/RedeliveryRequestWatcherImpl.java
new file mode 100644
index 0000000..c459f0c
--- /dev/null
+++ b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/watcher/RedeliveryRequestWatcherImpl.java
@@ -0,0 +1,69 @@
+/*
+ *
+ * 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.watcher;
+
+import org.apache.airavata.common.utils.ServerSettings;
+import org.apache.airavata.gfac.core.context.ProcessContext;
+import org.apache.airavata.gfac.core.watcher.RedeliveryRequestWatcher;
+import org.apache.airavata.gfac.impl.Factory;
+import org.apache.curator.framework.CuratorFramework;
+import org.apache.zookeeper.WatchedEvent;
+import org.apache.zookeeper.Watcher;
+import org.slf4j.Logger;
+
+public class RedeliveryRequestWatcherImpl implements RedeliveryRequestWatcher {
+
+	private static final Logger log = org.slf4j.LoggerFactory.getLogger(RedeliveryRequestWatcherImpl.class);
+
+	@Override
+	public void process(WatchedEvent watchedEvent) throws Exception {
+		String path = watchedEvent.getPath();
+		Watcher.Event.EventType eventType = watchedEvent.getType();
+		log.info("Redelivery request came for zk path {} event type {} ", path, eventType.name());
+		switch (eventType) {
+			case NodeDataChanged:
+				CuratorFramework curatorClient = Factory.getCuratorClient();
+				byte[] bytes = curatorClient.getData().forPath(path);
+				String serverName = new String(bytes);
+				String processId = path.substring(path.lastIndexOf("/") + 1);
+				if (ServerSettings.getGFacServerName().trim().equals(serverName)) {
+					curatorClient.getData().usingWatcher(this).forPath(path);
+					log.info("processId: {}, change data with same server name : {}" , processId, serverName);
+				} else {
+					ProcessContext processContext = Factory.getGfacContext().getProcess(processId);
+					if (processContext != null) {
+						processContext.setHandOver(true);
+						log.info("procesId : {}, handing over to new server instance : {}", processId, serverName);
+					} else {
+						log.info("Redelivery request came for processId {} but couldn't find process context");
+					}
+				}
+				break;
+			case NodeDeleted:
+			case NodeCreated:
+			case NodeChildrenChanged:
+			case None:
+				// not yet implemented
+			default:
+				break;
+		}
+	}
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/92243599/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 3fbe245..9ebfa05 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
@@ -30,6 +30,7 @@ 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_cpi_serviceConstants;
 import org.apache.airavata.gfac.impl.Factory;
@@ -211,25 +212,51 @@ public class GfacServerHandler implements GfacService.Iface {
 
         public void onMessage(MessageContext message) {
             log.info(" Message Received with message id '" + message.getMessageId()
-                    + "' and with message type '" + message.getType());
+		            + "' and with message type '" + message.getType());
             if (message.getType().equals(MessageType.LAUNCHPROCESS)) {
+	            ProcessStatus status = new ProcessStatus();
+	            status.setState(ProcessState.EXECUTING);
                 try {
                     ProcessSubmitEvent event = new ProcessSubmitEvent();
                     TBase messageEvent = message.getEvent();
                     byte[] bytes = ThriftUtils.serializeThriftObject(messageEvent);
                     ThriftUtils.createThriftFromBytes(bytes, event);
+	                if (message.isRedeliver()) {
+		                // check the process is already active in this instance.
+		                if (Factory.getGfacContext().getProcess(event.getProcessId()) != null) {
+			                // update deliver tag
+			                try {
+				                updateDeliveryTag(curatorClient, gfacServerName, event.getProcessId(), message
+						                .getDeliveryTag());
+				                return;
+			                } catch (Exception e) {
+				                log.error("Error while updating delivery tag for redelivery message , messageId : " +
+						                message.getMessageId(), e);
+				                rabbitMQProcessLaunchConsumer.sendAck(message.getDeliveryTag());
+			                }
+		                } else {
+			                // give time to complete handover logic in previous instance.
+			                try {
+				                Thread.sleep(60000);
+			                } catch (InterruptedException e) {
+				                // ignore
+			                }
+			                // read process status from registry
+			                ProcessStatus processStatus = ((ProcessStatus) Factory.getDefaultExpCatalog().get(ExperimentCatalogModelType
+							                .PROCESS_STATUS,
+					                event.getProcessId()));
+			                status.setState(processStatus.getState());
+		                }
+	                }
                     // update process status to executing
-                    ProcessStatus status = new ProcessStatus();
-                    status.setState(ProcessState.EXECUTING);
-                    status.setTimeOfStateChange(Calendar.getInstance().getTimeInMillis());
-                    Factory.getDefaultExpCatalog().update(ExperimentCatalogModelType.PROCESS_STATUS, status, event
-		                    .getProcessId());
+	                status.setTimeOfStateChange(Calendar.getInstance().getTimeInMillis());
+	                Factory.getDefaultExpCatalog().update(ExperimentCatalogModelType.PROCESS_STATUS, status, event
+			                .getProcessId());
 	                publishProcessStatus(event, status);
                     try {
-	                    GFacUtils.createProcessZKNode(curatorClient, gfacServerName, event.getProcessId(), message
-					                    .getDeliveryTag(),
-			                    event.getTokenId());
-                        submitProcess(event.getProcessId(), event.getGatewayId(), event.getTokenId());
+	                    createProcessZKNode(curatorClient, gfacServerName, event.getProcessId(), message
+			                    .getDeliveryTag(), event.getTokenId());
+	                    submitProcess(event.getProcessId(), event.getGatewayId(), event.getTokenId());
                     } catch (Exception e) {
                         log.error(e.getMessage(), e);
                         rabbitMQProcessLaunchConsumer.sendAck(message.getDeliveryTag());
@@ -278,4 +305,39 @@ public class GfacServerHandler implements GfacService.Iface {
 		msgCtx.setUpdatedTime(AiravataUtils.getCurrentTimestamp());
 		statusPublisher.publish(msgCtx);
 	}
+
+	private void createProcessZKNode(CuratorFramework curatorClient, String gfacServerName, String
+			processId, long deliveryTag, String token) throws Exception {
+		// TODO - To handle multiple processes per experiment, need to create a /experiments/{expId}/{processId} node
+		// create /experiments/{processId} node and set data - serverName, add redelivery listener
+		String zkProcessNodePath = ZKPaths.makePath(GFacConstants.ZOOKEEPER_EXPERIMENT_NODE, processId);
+		ZKPaths.mkdirs(curatorClient.getZookeeperClient().getZooKeeper(), zkProcessNodePath);
+		curatorClient.setData().withVersion(-1).forPath(zkProcessNodePath, gfacServerName.getBytes());
+		curatorClient.getData().usingWatcher(Factory.getRedeliveryReqeustWatcher()).forPath(zkProcessNodePath);
+
+		// create /experiments/{processId}/deliveryTag node and set data - deliveryTag
+		String deliveryTagPath = ZKPaths.makePath(zkProcessNodePath, GFacConstants.ZOOKEEPER_DELIVERYTAG_NODE);
+		ZKPaths.mkdirs(curatorClient.getZookeeperClient().getZooKeeper(), deliveryTagPath);
+		curatorClient.setData().withVersion(-1).forPath(deliveryTagPath, GFacUtils.longToBytes(deliveryTag));
+
+		// create /experiments/{processId}/token node and set data - token
+		String tokenNodePath = ZKPaths.makePath(processId, GFacConstants.ZOOKEEPER_TOKEN_NODE);
+		ZKPaths.mkdirs(curatorClient.getZookeeperClient().getZooKeeper(), tokenNodePath);
+		curatorClient.setData().withVersion(-1).forPath(tokenNodePath, token.getBytes());
+
+		// create /experiments/{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);
+	}
+
+	private void updateDeliveryTag(CuratorFramework curatorClient, String gfacServerName, String processId, long
+			deliveryTag) throws Exception {
+		// create /experiments/{processId} node and set data - serverName, add redelivery listener
+		String zkProcessNodePath = ZKPaths.makePath(GFacConstants.ZOOKEEPER_EXPERIMENT_NODE, processId);
+		// create /experiments/{processId}/deliveryTag node and set data - deliveryTag
+		String deliveryTagPath = ZKPaths.makePath(zkProcessNodePath, GFacConstants.ZOOKEEPER_DELIVERYTAG_NODE);
+		curatorClient.setData().withVersion(-1).forPath(deliveryTagPath, GFacUtils.longToBytes(deliveryTag));
+	}
+
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/92243599/modules/messaging/core/src/main/java/org/apache/airavata/messaging/core/MessageContext.java
----------------------------------------------------------------------
diff --git a/modules/messaging/core/src/main/java/org/apache/airavata/messaging/core/MessageContext.java b/modules/messaging/core/src/main/java/org/apache/airavata/messaging/core/MessageContext.java
index b53de0d..a161e2a 100644
--- a/modules/messaging/core/src/main/java/org/apache/airavata/messaging/core/MessageContext.java
+++ b/modules/messaging/core/src/main/java/org/apache/airavata/messaging/core/MessageContext.java
@@ -33,6 +33,7 @@ public class MessageContext {
     private final String gatewayId;
     private Timestamp updatedTime;
     private long deliveryTag;
+	private boolean isRedeliver;
 
 
     public MessageContext(TBase event, MessageType type, String messageId, String gatewayId) {
@@ -81,4 +82,12 @@ public class MessageContext {
     public void setDeliveryTag(long deliveryTag) {
         this.deliveryTag = deliveryTag;
     }
+
+	public void setIsRedeliver(boolean isRedeliver) {
+		this.isRedeliver = isRedeliver;
+	}
+
+	public boolean isRedeliver() {
+		return isRedeliver;
+	}
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/92243599/modules/messaging/core/src/main/java/org/apache/airavata/messaging/core/impl/RabbitMQProcessLaunchConsumer.java
----------------------------------------------------------------------
diff --git a/modules/messaging/core/src/main/java/org/apache/airavata/messaging/core/impl/RabbitMQProcessLaunchConsumer.java b/modules/messaging/core/src/main/java/org/apache/airavata/messaging/core/impl/RabbitMQProcessLaunchConsumer.java
index 850128e..ce697da 100644
--- a/modules/messaging/core/src/main/java/org/apache/airavata/messaging/core/impl/RabbitMQProcessLaunchConsumer.java
+++ b/modules/messaging/core/src/main/java/org/apache/airavata/messaging/core/impl/RabbitMQProcessLaunchConsumer.java
@@ -275,7 +275,7 @@ public class RabbitMQProcessLaunchConsumer {
 
     public void sendAck(long deliveryTag){
         try {
-            channel.basicAck(deliveryTag,false); //todo move this logic to monitoring component to ack when the job is done
+            channel.basicAck(deliveryTag,false);
         } catch (IOException e) {
             logger.error(e.getMessage(), e);
         }

http://git-wip-us.apache.org/repos/asf/airavata/blob/92243599/modules/messaging/core/src/main/java/org/apache/airavata/messaging/core/impl/RabbitMQStatusConsumer.java
----------------------------------------------------------------------
diff --git a/modules/messaging/core/src/main/java/org/apache/airavata/messaging/core/impl/RabbitMQStatusConsumer.java b/modules/messaging/core/src/main/java/org/apache/airavata/messaging/core/impl/RabbitMQStatusConsumer.java
index 46784bf..561cde2 100644
--- a/modules/messaging/core/src/main/java/org/apache/airavata/messaging/core/impl/RabbitMQStatusConsumer.java
+++ b/modules/messaging/core/src/main/java/org/apache/airavata/messaging/core/impl/RabbitMQStatusConsumer.java
@@ -154,6 +154,7 @@ public class RabbitMQStatusConsumer implements Consumer {
                         ThriftUtils.createThriftFromBytes(body, message);
                         TBase event = null;
                         String gatewayId = null;
+
                         if (message.getMessageType().equals(MessageType.EXPERIMENT)) {
                             ExperimentStatusChangeEvent experimentStatusChangeEvent = new ExperimentStatusChangeEvent();
                             ThriftUtils.createThriftFromBytes(message.getEvent(), experimentStatusChangeEvent);
@@ -211,6 +212,7 @@ public class RabbitMQStatusConsumer implements Consumer {
                         }
                         MessageContext messageContext = new MessageContext(event, message.getMessageType(), message.getMessageId(), gatewayId);
                         messageContext.setUpdatedTime(AiravataUtils.getTime(message.getUpdatedTime()));
+	                    messageContext.setIsRedeliver(envelope.isRedeliver());
                         handler.onMessage(messageContext);
                     } catch (TException e) {
                         String msg = "Failed to de-serialize the thrift message, from routing keys and queueName " + id;


[5/5] airavata git commit: Save jobModel with processId and recovery in monitoring state

Posted by sh...@apache.org.
Save jobModel with processId and recovery in monitoring state


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

Branch: refs/heads/master
Commit: b98f65997304eded6ee59f82dd236efc6b2fe091
Parents: bf56b43
Author: Shameera Rathanyaka <sh...@gmail.com>
Authored: Fri Aug 21 11:34:45 2015 -0400
Committer: Shameera Rathanyaka <sh...@gmail.com>
Committed: Fri Aug 21 11:34:45 2015 -0400

----------------------------------------------------------------------
 .../apache/airavata/gfac/core/GFacUtils.java    | 14 ++-
 .../gfac/core/context/ProcessContext.java       |  1 +
 .../airavata/gfac/impl/GFacEngineImpl.java      | 11 ++-
 .../apache/airavata/gfac/impl/GFacWorker.java   | 94 ++++++++++++++------
 .../gfac/impl/task/SSHJobSubmissionTask.java    |  2 +
 .../catalog/impl/ExperimentRegistry.java        | 84 +++++++++--------
 .../core/experiment/catalog/model/Job.java      | 31 ++++---
 .../core/experiment/catalog/model/JobPK.java    | 16 ++--
 .../experiment/catalog/model/JobStatus.java     | 12 +--
 .../experiment/catalog/model/JobStatusPK.java   | 16 ++--
 .../resources/AbstractExpCatResource.java       |  4 +-
 .../catalog/resources/JobResource.java          | 18 +++-
 .../catalog/resources/JobStatusResource.java    | 16 ++--
 .../catalog/resources/ProcessResource.java      | 51 ++++++++++-
 .../catalog/resources/TaskResource.java         | 50 +----------
 .../src/main/resources/expcatalog-derby.sql     | 11 +--
 .../src/main/resources/expcatalog-mysql.sql     | 11 +--
 .../airavata/registry/cpi/utils/Constants.java  |  2 +-
 18 files changed, 262 insertions(+), 182 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/b98f6599/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 8461216..d313ac0 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
@@ -241,7 +241,7 @@ public class GFacUtils {
             ExperimentCatalog experimentCatalog = processContext.getExperimentCatalog();
             jobModel.setJobStatus(jobStatus);
             jobStatus.setTimeOfStateChange(AiravataUtils.getCurrentTimestamp().getTime());
-            CompositeIdentifier ids = new CompositeIdentifier(jobModel.getTaskId(), jobModel.getJobId());
+            CompositeIdentifier ids = new CompositeIdentifier(jobModel.getProcessId(), jobModel.getJobId());
 			experimentCatalog.add(ExpCatChildDataType.JOB_STATUS, jobStatus, ids);
             JobIdentifier identifier = new JobIdentifier(jobModel.getJobId(), jobModel.getTaskId(),
                     processContext.getProcessId(), processContext.getProcessModel().getExperimentId(),
@@ -1093,4 +1093,16 @@ public class GFacUtils {
 		byte[] bytes = curatorClient.getData().forPath(deliveryTagPath);
 		return GFacUtils.bytesToLong(bytes);
 	}
+
+	public static void saveJobModel(ProcessContext processContext, JobModel jobModel) throws GFacException {
+		try {
+			ExperimentCatalog experimentCatalog = processContext.getExperimentCatalog();
+			experimentCatalog.add(ExpCatChildDataType.JOB, jobModel, processContext.getProcessId());
+		} catch (RegistryException e) {
+			String msg = "expId: " + processContext.getExperimentId() + " processId: " + processContext.getProcessId()
+					+ " jobId: " + jobModel.getJobId() + " : - Error while saving Job Model";
+			throw new GFacException(msg, e);
+		}
+	}
+
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/b98f6599/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 37f8b20..553a388 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
@@ -275,6 +275,7 @@ public class ProcessContext {
 	public JobModel getJobModel() {
 		if (jobModel == null) {
 			jobModel = new JobModel();
+			jobModel.setProcessId(processId);
 			jobModel.setWorkingDir(getWorkingDir());
 			jobModel.setCreationTime(AiravataUtils.getCurrentTimestamp().getTime());
 		}

http://git-wip-us.apache.org/repos/asf/airavata/blob/b98f6599/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 33e354b..1f5526a 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
@@ -43,6 +43,7 @@ import org.apache.airavata.model.appcatalog.gatewayprofile.GatewayResourceProfil
 import org.apache.airavata.model.application.io.DataType;
 import org.apache.airavata.model.application.io.InputDataObjectType;
 import org.apache.airavata.model.application.io.OutputDataObjectType;
+import org.apache.airavata.model.job.JobModel;
 import org.apache.airavata.model.process.ProcessModel;
 import org.apache.airavata.model.status.ProcessState;
 import org.apache.airavata.model.status.ProcessStatus;
@@ -109,6 +110,14 @@ public class GFacEngineImpl implements GFacEngine {
 				processContext.setLocalWorkingDir((inputPath.endsWith("/") ? inputPath : inputPath + "/") +
 						processContext.getProcessId());
 			}
+
+			List<Object> jobModels = expCatalog.get(ExperimentCatalogModelType.JOB, "processId", processId);
+			if (jobModels != null && !jobModels.isEmpty()) {
+				if (jobModels.size() > 1) {
+					log.warn("Process has more than one job model, take first one");
+				}
+				processContext.setJobModel(((JobModel) jobModels.get(0)));
+			}
 			return processContext;
 		} catch (AppCatalogException e) {
 			throw new GFacException("App catalog access exception ", e);
@@ -267,7 +276,7 @@ public class GFacEngineImpl implements GFacEngine {
 
 	@Override
 	public void recoverProcessOutflow(ProcessContext processContext) throws GFacException {
-
+		runProcessOutflow(processContext); // TODO implement recover steps
 	}
 
 	@Override

http://git-wip-us.apache.org/repos/asf/airavata/blob/b98f6599/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 6bbf159..35b0ed6 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
@@ -82,26 +82,31 @@ public class GFacWorker implements Runnable {
 			try {
 				switch (type) {
 					case NEW:
-						exectuteProcess(engine);
+						executeProcess();
 						break;
 					case RECOVER:
-						recoverProcess(engine);
+						recoverProcess();
 						break;
-//					case RECOVER_MONITORING:
+					case RECOVER_MONITORING:
+						monitorProcess();
 						// TODO get monitor mode from process and get correct monitor service instead default service.
+						break;
 					case RUN_OUTFLOW:
 						// run the outflow task
-						engine.runProcessOutflow(processContext);
-						processContext.setProcessStatus(new ProcessStatus(ProcessState.COMPLETED));
-						GFacUtils.saveAndPublishProcessStatus(processContext);
-						sendAck();
+						runProcessOutflow();
 						break;
 					case RECOVER_OUTFLOW:
 						// recover  outflow task;
-						engine.recoverProcessOutflow(processContext);
-						processContext.setProcessStatus(new ProcessStatus(ProcessState.COMPLETED));
-						GFacUtils.saveAndPublishProcessStatus(processContext);
-						sendAck();
+						recoverProcessOutflow();
+						break;
+					case COMPLETED:
+						completeProcess();
+						break;
+					case CANCELED:
+						// TODO - implement cancel scenario
+						break;
+					case FAILED:
+						// TODO - implement failed scenario
 						break;
 					default:
 						throw new GFacException("process Id : " + processId + " Couldn't identify process type");
@@ -114,12 +119,21 @@ public class GFacWorker implements Runnable {
 					case RECOVER:
 						log.error("Process recover error ", e);
 						break;
+					case RECOVER_MONITORING:
+						log.error("Process monitoring recovery error", e);
+						break;
 					case RUN_OUTFLOW:
 						log.error("Process outflow execution error", e);
 						break;
 					case RECOVER_OUTFLOW:
 						log.error("Process outflow recover error", e);
 						break;
+					case COMPLETED:
+						log.error("Process completion error", e);
+						break;
+					case CANCELED: // TODO - implement cancel scenario
+					case FAILED: // TODO - implement failed scenario
+						break;
 				}
 				throw e;
 			}
@@ -136,32 +150,50 @@ public class GFacWorker implements Runnable {
 		}
 	}
 
-	private void recoverProcess(GFacEngine engine) throws GFacException {
+	private void completeProcess() throws GFacException {
+		processContext.setProcessStatus(new ProcessStatus(ProcessState.COMPLETED));
+		GFacUtils.saveAndPublishProcessStatus(processContext);
+		sendAck();
+		Factory.getGfacContext().remoteProcess(processContext.getProcessId());
+	}
+
+	private void recoverProcessOutflow() throws GFacException {
+		engine.recoverProcessOutflow(processContext);
+		completeProcess();
+	}
+
+	private void runProcessOutflow() throws GFacException {
+		engine.runProcessOutflow(processContext);
+		completeProcess();
+	}
+
+	private void recoverProcess() throws GFacException {
 		// recover the process
 		//	engine.recoverProcess(processContext);
-		exectuteProcess(engine); // TODO - implement recover process.
+		executeProcess(); // TODO - implement recover process.
 	}
 
-	private void exectuteProcess(GFacEngine engine) throws GFacException {
+	private void executeProcess() throws GFacException {
 		if (processContext.isHandOver()) {
 			return;
 		}
 		engine.executeProcess(processContext);
-		if (processContext.getMonitorMode() == null) {
-			engine.runProcessOutflow(processContext);
-		} else {
-			try {
-				JobMonitor monitorService = Factory.getMonitorService(processContext.getMonitorMode());
-				if (monitorService != null) {
-					monitorService.monitor(processContext.getJobModel().getJobId(), processContext);
-					processContext.setProcessStatus(new ProcessStatus(ProcessState.MONITORING));
-				} else {
-					// we directly invoke outflow
-					engine.runProcessOutflow(processContext);
-				}
-			} catch (AiravataException e) {
-				throw new GFacException("Error while retrieving moniot service", e);
+		monitorProcess();
+	}
+
+	private void monitorProcess() throws GFacException {
+		try {
+			JobMonitor monitorService = Factory.getMonitorService(processContext.getMonitorMode());
+			if (monitorService != null) {
+				monitorService.monitor(processContext.getJobModel().getJobId(), processContext);
+				processContext.setProcessStatus(new ProcessStatus(ProcessState.MONITORING));
+				GFacUtils.saveAndPublishProcessStatus(processContext);
+			} else {
+				// we directly invoke outflow
+				runProcessOutflow();
 			}
+		} catch (AiravataException e) {
+			throw new GFacException("Error while retrieving moniot service", e);
 		}
 	}
 
@@ -199,9 +231,11 @@ public class GFacWorker implements Runnable {
 			case POST_PROCESSING:
 				return ProcessType.RECOVER_OUTFLOW;
 			case COMPLETED:
+				return ProcessType.COMPLETED;
 			case CANCELED:
+				return ProcessType.CANCELED;
 			case FAILED:
-				return ProcessType.COMPLETED;
+				return ProcessType.FAILED;
 			//case CANCELLING: // TODO: handle this
 			default:
 				// this will never hit as we have handle all states in cases.
@@ -216,6 +250,8 @@ public class GFacWorker implements Runnable {
 		RECOVER_MONITORING,
 		RUN_OUTFLOW,
 		RECOVER_OUTFLOW,
+		CANCELED,
+		FAILED,
 		COMPLETED
 	}
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/b98f6599/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 b47e5d2..e69cfa5 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
@@ -76,6 +76,7 @@ public class SSHJobSubmissionTask implements JobSubmissionTask {
 			    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());
@@ -97,6 +98,7 @@ public class SSHJobSubmissionTask implements JobSubmissionTask {
 						    // 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");
 						    jobModel.setJobStatus(jobStatus);

http://git-wip-us.apache.org/repos/asf/airavata/blob/b98f6599/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 1f9e7f0..ae3d73b 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
@@ -476,29 +476,27 @@ public class ExperimentRegistry {
         return taskId;
     }
 
-    public String addJob(JobModel job, String taskId) throws RegistryException {
+    public String addJob(JobModel job, String processId) throws RegistryException {
         try {
             JobResource jobResource = new JobResource();
             jobResource.setJobId(job.getJobId());
-            jobResource.setTaskId(taskId);
+            jobResource.setProcessId(processId);
+	        jobResource.setTaskId(job.getTaskId());
             jobResource.setJobDescription(job.getJobDescription());
             jobResource.setCreationTime(AiravataUtils.getTime(job.getCreationTime()));
             jobResource.setComputeResourceConsumed(job.getComputeResourceConsumed());
             jobResource.setJobName(job.getJobName());
             jobResource.setWorkingDir(job.getWorkingDir());
-
-            TaskStatus taskStatus = new TaskStatus();
-            taskStatus.setState(TaskState.CREATED);
-            addTaskStatus(taskStatus, job.getJobId());
+			jobResource.save();
         } catch (Exception e) {
-            logger.error(taskId, "Error while adding task...", e);
+            logger.error(processId, "Error while adding task...", e);
             throw new RegistryException(e);
         }
-        return taskId;
+        return processId;
     }
 
     public String addJobStatus(JobStatus jobStatus, CompositeIdentifier cis) throws RegistryException {
-        String taskID = (String)cis.getTopLevelIdentifier();
+        String processId = (String)cis.getTopLevelIdentifier();
         String jobID = (String)cis.getSecondLevelIdentifier();
         try {
             JobResource jobResource = new JobResource();
@@ -509,7 +507,7 @@ public class ExperimentRegistry {
             }
 	        status.setStatusId(getStatusID(jobID));
 	        status.setJobId(jobID);
-	        status.setTaskId(taskID);
+	        status.setProcessId(processId);
 	        status.setTimeOfStateChange(AiravataUtils.getTime(jobStatus.getTimeOfStateChange()));
 	        status.setState(jobStatus.getJobState().toString());
 	        status.setReason(jobStatus.getReason());
@@ -838,23 +836,21 @@ public class ExperimentRegistry {
     }
 
     public String updateJob(JobModel job, CompositeIdentifier cis) throws RegistryException {
-        String taskId = (String) cis.getTopLevelIdentifier();
+        String processId = (String) cis.getTopLevelIdentifier();
         String jobId = (String) cis.getSecondLevelIdentifier();
         try {
-            TaskResource taskResource = new TaskResource();
-            taskResource.setTaskId(taskId);
-            JobResource jobResource = taskResource.getJob(jobId);
-            jobResource.setJobId(jobId);
-            jobResource.setTaskId(job.getTaskId());
-            jobResource.setJobDescription(job.getJobDescription());
-            jobResource.setCreationTime(AiravataUtils.getTime(job.getCreationTime()));
-            jobResource.setComputeResourceConsumed(job.getComputeResourceConsumed());
-            jobResource.setJobName(job.getJobName());
-            jobResource.setWorkingDir(job.getWorkingDir());
-
-            TaskStatus taskStatus = new TaskStatus();
-            taskStatus.setState(TaskState.CREATED);
-            addTaskStatus(taskStatus, job.getJobId());
+	        ProcessResource processResource = new ProcessResource();
+	        processResource.setProcessId(processId);
+	        JobResource jobResource = processResource.getJob(jobId);
+	        jobResource.setJobId(jobId);
+	        jobResource.setTaskId(job.getTaskId());
+	        jobResource.setProcessId(processId);
+	        jobResource.setJobDescription(job.getJobDescription());
+	        jobResource.setCreationTime(AiravataUtils.getTime(job.getCreationTime()));
+	        jobResource.setComputeResourceConsumed(job.getComputeResourceConsumed());
+	        jobResource.setJobName(job.getJobName());
+	        jobResource.setWorkingDir(job.getWorkingDir());
+	        jobResource.save();
         } catch (Exception e) {
             logger.error(jobId, "Error while adding job...", e);
             throw new RegistryException(e);
@@ -1064,19 +1060,19 @@ public class ExperimentRegistry {
     }
 
     public Object getJob(CompositeIdentifier cis, String fieldName) throws RegistryException {
-        String taskID = (String) cis.getTopLevelIdentifier();
+        String processId = (String) cis.getTopLevelIdentifier();
         String jobId = (String) cis.getSecondLevelIdentifier();
         try {
-            TaskResource taskResource = new TaskResource();
-            taskResource.setTaskId(taskID);
-            JobResource resource = taskResource.getJob(jobId);
-            if (fieldName == null) {
-                return ThriftDataModelConversion.getJobModel(resource);
-            } else if (fieldName.equals(Constants.FieldConstants.JobConstants.JOB_STATUS)) {
-                return ThriftDataModelConversion.getJobStatus(resource.getJobStatus());
-            } else {
-                logger.error("Unsupported field name for job basic data..");
-            }
+	        ProcessResource processResource = new ProcessResource();
+	        processResource.setProcessId(processId);
+	        JobResource resource = processResource.getJob(jobId);
+	        if (fieldName == null) {
+		        return ThriftDataModelConversion.getJobModel(resource);
+	        } else if (fieldName.equals(Constants.FieldConstants.JobConstants.JOB_STATUS)) {
+		        return ThriftDataModelConversion.getJobStatus(resource.getJobStatus());
+	        } else {
+		        logger.error("Unsupported field name for job basic data..");
+	        }
         }catch (Exception e) {
             logger.error("Error while getting job data..", e);
             throw new RegistryException(e);
@@ -1173,10 +1169,10 @@ public class ExperimentRegistry {
     public List<JobModel> getJobList(String fieldName, Object value) throws RegistryException {
         List<JobModel> jobs = new ArrayList<JobModel>();
         try {
-            if (fieldName.equals(Constants.FieldConstants.JobConstants.TASK_ID)) {
-                TaskResource taskResource = new TaskResource();
-                taskResource.setTaskId((String) value);
-                List<JobResource> resources = taskResource.getJobList();
+            if (fieldName.equals(Constants.FieldConstants.JobConstants.PROCESS_ID)) {
+                ProcessResource processResource = new ProcessResource();
+                processResource.setProcessId((String) value);
+                List<JobResource> resources = processResource.getJobList();
                 for (JobResource jobResource : resources) {
                     JobModel jobModel = ThriftDataModelConversion.getJobModel(jobResource);
                     jobs.add(jobModel);
@@ -1438,11 +1434,11 @@ public class ExperimentRegistry {
 
     public void removeJob(CompositeIdentifier cis) throws RegistryException {
         try {
-            String taskId = (String) cis.getTopLevelIdentifier();
+            String processId = (String) cis.getTopLevelIdentifier();
             String jobId = (String) cis.getSecondLevelIdentifier();
-            TaskResource taskResource = new TaskResource();
-            taskResource.setTaskId(taskId);
-            taskResource.remove(ResourceType.JOB, jobId);
+	        ProcessResource process = new ProcessResource();
+	        process.setProcessId(processId);
+	        process.remove(ResourceType.JOB, jobId);
         } catch (Exception e) {
             logger.error("Error while removing task details..", e);
             throw new RegistryException(e);

http://git-wip-us.apache.org/repos/asf/airavata/blob/b98f6599/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/Job.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/Job.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/Job.java
index 3347263..4943c3a 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/Job.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/Job.java
@@ -33,12 +33,13 @@ public class Job {
     private final static Logger logger = LoggerFactory.getLogger(Job.class);
     private String jobId;
     private String taskId;
+	private String processId;
     private String jobDescription;
     private Timestamp creationTime;
     private String computeResourceConsumed;
     private String jobName;
     private String workingDir;
-    private Task task;
+	private Process process;
     private Collection<JobStatus> jobStatuses;
 
     @Id
@@ -51,7 +52,17 @@ public class Job {
         this.jobId = jobId;
     }
 
-    @Id
+	@Id
+	@Column(name = "PROCESS_ID")
+	public String getProcessId() {
+		return processId;
+	}
+
+	public void setProcessId(String processId) {
+		this.processId = processId;
+	}
+
+    @Basic
     @Column(name = "TASK_ID")
     public String getTaskId() {
         return taskId;
@@ -143,15 +154,15 @@ public class Job {
 //        return result;
 //    }
 
-    @ManyToOne
-    @JoinColumn(name = "TASK_ID", referencedColumnName = "TASK_ID")
-    public Task getTask() {
-        return task;
-    }
+	@OneToOne
+	@JoinColumn(name = "PROCESS_ID", referencedColumnName = "PROCESS_ID")
+	public Process getProcess() {
+		return process;
+	}
 
-    public void setTask(Task taskByTaskId) {
-        this.task = taskByTaskId;
-    }
+	public void setProcess(Process processByProcessId) {
+		this.process = processByProcessId;
+	}
 
     @OneToMany(mappedBy = "job")
     public Collection<JobStatus> getJobStatuses() {

http://git-wip-us.apache.org/repos/asf/airavata/blob/b98f6599/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/JobPK.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/JobPK.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/JobPK.java
index eb704d5..e1f8da2 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/JobPK.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/JobPK.java
@@ -30,7 +30,7 @@ import java.io.Serializable;
 public class JobPK implements Serializable {
     private final static Logger logger = LoggerFactory.getLogger(JobPK.class);
     private String jobId;
-    private String taskId;
+    private String processId;
 
     @Id
     @Column(name = "JOB_ID")
@@ -43,13 +43,13 @@ public class JobPK implements Serializable {
     }
 
     @Id
-    @Column(name = "TASK_ID")
-    public String getTaskId() {
-        return taskId;
+    @Column(name = "PROCESS_ID")
+    public String getProcessId() {
+        return processId;
     }
 
-    public void setTaskId(String taskId) {
-        this.taskId = taskId;
+    public void setProcessId(String processId) {
+        this.processId = processId;
     }
 
     @Override
@@ -60,7 +60,7 @@ public class JobPK implements Serializable {
         JobPK that = (JobPK) o;
 
         if (getJobId() != null ? !getJobId().equals(that.getJobId()) : that.getJobId() != null) return false;
-        if (getTaskId() != null ? !getTaskId().equals(that.getTaskId()) : that.getTaskId() != null) return false;
+        if (getProcessId() != null ? !getProcessId().equals(that.getProcessId()) : that.getProcessId() != null) return false;
 
         return true;
     }
@@ -68,7 +68,7 @@ public class JobPK implements Serializable {
     @Override
     public int hashCode() {
         int result = getJobId() != null ? getJobId().hashCode() : 0;
-        result = 31 * result + (getTaskId() != null ? getTaskId().hashCode() : 0);
+        result = 31 * result + (getProcessId() != null ? getProcessId().hashCode() : 0);
         return result;
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/b98f6599/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/JobStatus.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/JobStatus.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/JobStatus.java
index c93d1cb..b4a4905 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/JobStatus.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/JobStatus.java
@@ -33,7 +33,7 @@ public class JobStatus {
     private final static Logger logger = LoggerFactory.getLogger(JobStatus.class);
     private String statusId;
     private String jobId;
-    private String taskId;
+    private String processId;
     private String state;
     private Timestamp timeOfStateChange;
     private String reason;
@@ -60,13 +60,13 @@ public class JobStatus {
     }
 
     @Id
-    @Column(name = "TASK_ID")
-    public String getTaskId() {
-        return taskId;
+    @Column(name = "PROCESS_ID")
+    public String getProcessId() {
+        return processId;
     }
 
-    public void setTaskId(String taskId) {
-        this.taskId = taskId;
+    public void setProcessId(String processId) {
+        this.processId = processId;
     }
 
     @Basic

http://git-wip-us.apache.org/repos/asf/airavata/blob/b98f6599/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/JobStatusPK.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/JobStatusPK.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/JobStatusPK.java
index cac3c52..f63cbfa 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/JobStatusPK.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/JobStatusPK.java
@@ -31,7 +31,7 @@ public class JobStatusPK implements Serializable {
     private final static Logger logger = LoggerFactory.getLogger(JobStatusPK.class);
     private String statusId;
     private String jobId;
-    private String taskId;
+    private String processId;
 
     @Id
     @Column(name = "STATUS_ID")
@@ -54,13 +54,13 @@ public class JobStatusPK implements Serializable {
     }
 
     @Id
-    @Column(name = "TASK_ID")
-    public String getTaskId() {
-        return taskId;
+    @Column(name = "PROCESS_ID")
+    public String getProcessId() {
+        return processId;
     }
 
-    public void setTaskId(String taskId) {
-        this.taskId = taskId;
+    public void setProcessId(String processId) {
+        this.processId = processId;
     }
 
     @Override
@@ -72,7 +72,7 @@ public class JobStatusPK implements Serializable {
 
         if (getStatusId() != null ? !getStatusId().equals(that.getStatusId()) : that.getStatusId() != null) return false;
         if (getJobId() != null ? !getJobId().equals(that.getJobId()) : that.getJobId() != null) return false;
-        if (getTaskId() != null ? !getTaskId().equals(that.getTaskId()) : that.getTaskId() != null) return false;
+        if (getProcessId() != null ? !getProcessId().equals(that.getProcessId()) : that.getProcessId() != null) return false;
 
         return true;
     }
@@ -81,7 +81,7 @@ public class JobStatusPK implements Serializable {
     public int hashCode() {
         int result = getStatusId() != null ? getStatusId().hashCode() : 0;
         result = 31 * result + (getJobId() != null ? getJobId().hashCode() : 0);
-        result = 31 * result + (getTaskId() != null ? getTaskId().hashCode() : 0);
+        result = 31 * result + (getProcessId() != null ? getProcessId().hashCode() : 0);
         return result;
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/b98f6599/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/AbstractExpCatResource.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/AbstractExpCatResource.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/AbstractExpCatResource.java
index 2c12f03..b9bdf4b 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/AbstractExpCatResource.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/AbstractExpCatResource.java
@@ -220,14 +220,14 @@ public abstract class AbstractExpCatResource implements ExperimentCatResource {
     //Job Table
     public final class JobConstants {
         public static final String JOB_ID = "jobId";
-        public static final String TASK_ID = "taskId";
+        public static final String PROCESS_ID = "processId";
     }
 
     // Job Status table
     public final class JobStatusConstants {
         public static final String STATUS_ID = "statusId";
         public static final String JOB_ID = "jobId";
-        public static final String TASK_ID = "taskId";
+        public static final String PROCESS_ID = "processId";
         public static final String STATE = "state";
         public static final String TIME_OF_STATE_CHANGE = "timeOfStateChange";
         public static final String REASON = "reason";

http://git-wip-us.apache.org/repos/asf/airavata/blob/b98f6599/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/JobResource.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/JobResource.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/JobResource.java
index 6ed5a54..99a152d 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/JobResource.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/JobResource.java
@@ -42,6 +42,7 @@ public class JobResource extends AbstractExpCatResource {
     private static final Logger logger = LoggerFactory.getLogger(JobResource.class);
     private String jobId;
     private String taskId;
+	private String processId;
     private String jobDescription;
     private Timestamp creationTime;
     private String computeResourceConsumed;
@@ -64,7 +65,15 @@ public class JobResource extends AbstractExpCatResource {
         this.taskId = taskId;
     }
 
-    public String getJobDescription() {
+	public String getProcessId() {
+		return processId;
+	}
+
+	public void setProcessId(String processId) {
+		this.processId = processId;
+	}
+
+	public String getJobDescription() {
         return jobDescription;
     }
 
@@ -201,7 +210,7 @@ public class JobResource extends AbstractExpCatResource {
                 case JOB_STATUS:
                     generator = new QueryGenerator(JOB_STATUS);
                     generator.setParameter(JobStatusConstants.JOB_ID, jobId);
-                    generator.setParameter(JobStatusConstants.TASK_ID, taskId);
+                    generator.setParameter(JobStatusConstants.PROCESS_ID, processId);
                     q = generator.selectQuery(em);
                     results = q.getResultList();
                     if (results.size() != 0) {
@@ -243,14 +252,15 @@ public class JobResource extends AbstractExpCatResource {
             em.getTransaction().begin();
             JobPK jobPK = new JobPK();
             jobPK.setJobId(jobId);
-            jobPK.setTaskId(taskId);
+            jobPK.setProcessId(processId);
             Job job = em.find(Job.class, jobPK);
             if(job == null){
                 job = new Job();
             }
             job.setJobId(jobId);
             job.setTaskId(taskId);
-            job.setJobDescription(jobDescription);
+	        job.setProcessId(processId);
+//            job.setJobDescription(jobDescription); // fixme - Data too long for column 'JOB_DESCRIPTION'
             job.setCreationTime(creationTime);
             job.setComputeResourceConsumed(computeResourceConsumed);
             job.setJobName(jobName);

http://git-wip-us.apache.org/repos/asf/airavata/blob/b98f6599/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/JobStatusResource.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/JobStatusResource.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/JobStatusResource.java
index 4085a3b..b41a071 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/JobStatusResource.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/JobStatusResource.java
@@ -38,7 +38,7 @@ public class JobStatusResource extends AbstractExpCatResource {
     private static final Logger logger = LoggerFactory.getLogger(JobStatusResource.class);
     private String statusId;
     private String jobId;
-    private String taskId;
+    private String processId;
     private String state;
     private Timestamp timeOfStateChange;
     private String reason;
@@ -59,12 +59,12 @@ public class JobStatusResource extends AbstractExpCatResource {
         this.jobId = jobId;
     }
 
-    public String getTaskId() {
-        return taskId;
+    public String getProcessId() {
+        return processId;
     }
 
-    public void setTaskId(String taskId) {
-        this.taskId = taskId;
+    public void setProcessId(String processId) {
+        this.processId = processId;
     }
 
     public String getState() {
@@ -121,20 +121,20 @@ public class JobStatusResource extends AbstractExpCatResource {
             em = ExpCatResourceUtils.getEntityManager();
             em.getTransaction().begin();
             JobStatus jobStatus;
-            if(jobId == null || statusId == null || taskId == null){
+            if(jobId == null || statusId == null || processId == null){
                 throw new RegistryException("Does not have the job id or status id or task id");
             }
             JobStatusPK jobStatusPK = new JobStatusPK();
             jobStatusPK.setJobId(jobId);
             jobStatusPK.setStatusId(statusId);
-            jobStatusPK.setTaskId(taskId);
+            jobStatusPK.setProcessId(processId);
             jobStatus = em.find(JobStatus.class, jobStatusPK);
             if(jobStatus == null){
                 jobStatus = new JobStatus();
             }
             jobStatus.setStatusId(statusId);
             jobStatus.setJobId(jobId);
-            jobStatus.setTaskId(taskId);
+            jobStatus.setProcessId(processId);
             jobStatus.setState(state);
             jobStatus.setReason(reason);
             em.persist(jobStatus);

http://git-wip-us.apache.org/repos/asf/airavata/blob/b98f6599/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 00cf8c7..58b286a 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
@@ -174,6 +174,10 @@ public class ProcessResource extends AbstractExpCatResource {
                TaskResource taskResource = new TaskResource();
                taskResource.setParentProcessId(processId);
                return taskResource;
+	       case JOB:
+		       JobResource jobResource = new JobResource();
+		       jobResource.setProcessId(processId);
+		       return jobResource;
            default:
                logger.error("Unsupported resource type for process resource.", new IllegalArgumentException());
                throw new IllegalArgumentException("Unsupported resource type for process resource.");
@@ -227,6 +231,13 @@ public class ProcessResource extends AbstractExpCatResource {
                     q = generator.deleteQuery(em);
                     q.executeUpdate();
                     break;
+	            case JOB:
+		            generator = new QueryGenerator(JOB);
+		            generator.setParameter(JobConstants.JOB_ID, name);
+		            generator.setParameter(JobConstants.PROCESS_ID, processId);
+		            q = generator.deleteQuery(em);
+		            q.executeUpdate();
+		            break;
                 default:
                     logger.error("Unsupported resource type for process detail resource.", new IllegalArgumentException());
                     break;
@@ -312,7 +323,17 @@ public class ProcessResource extends AbstractExpCatResource {
                     em.getTransaction().commit();
                     em.close();
                     return taskResource;
-                default:
+	            case JOB:
+		            generator = new QueryGenerator(JOB);
+		            generator.setParameter(JobConstants.JOB_ID, name);
+		            generator.setParameter(JobConstants.PROCESS_ID, processId);
+		            q = generator.selectQuery(em);
+		            Job job = (Job) q.getSingleResult();
+		            JobResource jobResource = (JobResource) Utils.getResource(ResourceType.JOB, job);
+		            em.getTransaction().commit();
+		            em.close();
+		            return jobResource;
+	            default:
                     em.getTransaction().commit();
                     em.close();
                     logger.error("Unsupported resource type for process resource.", new IllegalArgumentException());
@@ -411,6 +432,20 @@ public class ProcessResource extends AbstractExpCatResource {
                         }
                     }
                     break;
+	            case JOB:
+		            generator = new QueryGenerator(JOB);
+		            generator.setParameter(JobConstants.PROCESS_ID, processId);
+		            q = generator.selectQuery(em);
+		            results = q.getResultList();
+		            if (results.size() != 0) {
+			            for (Object result : results) {
+				            Job job = (Job) result;
+				            JobResource jobResource =
+						            (JobResource) Utils.getResource(ResourceType.JOB, job);
+				            resourceList.add(jobResource);
+			            }
+		            }
+		            break;
                 default:
                     em.getTransaction().commit();
                     em.close();
@@ -562,4 +597,18 @@ public class ProcessResource extends AbstractExpCatResource {
         ExperimentCatResource resource = get(ResourceType.TASK, taskId);
         return (TaskResource)resource;
     }
+
+	public JobResource getJob(String jobId) throws RegistryException {
+		return (JobResource) get(ResourceType.JOB, jobId);
+	}
+
+	public List<JobResource> getJobList() throws RegistryException {
+		List<JobResource> jobResources = new ArrayList();
+		List<ExperimentCatResource> resources = get(ResourceType.JOB);
+		for (ExperimentCatResource resource : resources) {
+			JobResource jobResource = (JobResource) resource;
+			jobResources.add(jobResource);
+		}
+		return jobResources;
+	}
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/b98f6599/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/TaskResource.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/TaskResource.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/TaskResource.java
index f0bc5fe..962f0d0 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/TaskResource.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/TaskResource.java
@@ -115,10 +115,7 @@ public class TaskResource extends AbstractExpCatResource {
                 TaskErrorResource taskErrorResource = new TaskErrorResource();
                 taskErrorResource.setTaskId(taskId);
                 return taskErrorResource;
-            case JOB:
-                JobResource jobResource = new JobResource();
-                jobResource.setTaskId(taskId);
-                return jobResource;
+
             default:
                 logger.error("Unsupported resource type for task data resource.", new UnsupportedOperationException());
                 throw new UnsupportedOperationException();
@@ -146,13 +143,6 @@ public class TaskResource extends AbstractExpCatResource {
                     q = generator.deleteQuery(em);
                     q.executeUpdate();
                     break;
-                case JOB:
-                    generator = new QueryGenerator(JOB);
-                    generator.setParameter(JobConstants.JOB_ID, name);
-                    generator.setParameter(JobConstants.TASK_ID, taskId);
-                    q = generator.deleteQuery(em);
-                    q.executeUpdate();
-                    break;
                 default:
                     logger.error("Unsupported resource type for job details resource.", new IllegalArgumentException());
                     break;
@@ -201,16 +191,6 @@ public class TaskResource extends AbstractExpCatResource {
                     em.getTransaction().commit();
                     em.close();
                     return errorResource;
-                case JOB:
-                    generator = new QueryGenerator(JOB);
-                    generator.setParameter(JobConstants.JOB_ID, name);
-                    generator.setParameter(JobConstants.TASK_ID, taskId);
-                    q = generator.selectQuery(em);
-                    Job job = (Job) q.getSingleResult();
-                    JobResource jobResource = (JobResource) Utils.getResource(ResourceType.JOB, job);
-                    em.getTransaction().commit();
-                    em.close();
-                    return jobResource;
                 default:
                     em.getTransaction().commit();
                     em.close();
@@ -269,20 +249,6 @@ public class TaskResource extends AbstractExpCatResource {
                         }
                     }
                     break;
-                case JOB:
-                    generator = new QueryGenerator(JOB);
-                    generator.setParameter(JobConstants.TASK_ID, taskId);
-                    q = generator.selectQuery(em);
-                    results = q.getResultList();
-                    if (results.size() != 0) {
-                        for (Object result : results) {
-                            Job job = (Job) result;
-                            JobResource jobResource =
-                                    (JobResource) Utils.getResource(ResourceType.JOB, job);
-                            resourceList.add(jobResource);
-                        }
-                    }
-                    break;
                 default:
                     em.getTransaction().commit();
                     em.close();
@@ -387,18 +353,4 @@ public class TaskResource extends AbstractExpCatResource {
             return max;
         }
     }
-
-    public JobResource getJob(String jobId) throws RegistryException {
-        return (JobResource) get(ResourceType.JOB, jobId);
-    }
-
-    public List<JobResource> getJobList() throws RegistryException {
-        List<JobResource> jobResources = new ArrayList();
-        List<ExperimentCatResource> resources = get(ResourceType.JOB);
-        for (ExperimentCatResource resource : resources) {
-            JobResource jobResource = (JobResource) resource;
-            jobResources.add(jobResource);
-        }
-        return jobResources;
-    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/b98f6599/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 80334e5..480b595 100644
--- a/modules/registry/registry-core/src/main/resources/expcatalog-derby.sql
+++ b/modules/registry/registry-core/src/main/resources/expcatalog-derby.sql
@@ -300,24 +300,25 @@ CREATE TABLE TASK_ERROR (
 CREATE TABLE JOB (
   JOB_ID varchar(255),
   TASK_ID varchar(255),
+  PROCESS_ID varchar(255),
   JOB_DESCRIPTION varchar(255),
   CREATION_TIME  timestamp DEFAULT '0000-00-00 00:00:00',
   COMPUTE_RESOURCE_CONSUMED varchar(255),
   JOB_NAME varchar(255),
   WORKING_DIR varchar(255),
-  PRIMARY KEY (JOB_ID, TASK_ID),
-  FOREIGN KEY (TASK_ID) REFERENCES TASK(TASK_ID) ON DELETE CASCADE
+  PRIMARY KEY (JOB_ID, PROCESS_ID),
+  FOREIGN KEY (PROCESS_ID) REFERENCES PROCESS(PROCESS_ID) ON DELETE CASCADE
 );
 
 CREATE TABLE JOB_STATUS (
   STATUS_ID varchar(255),
   JOB_ID varchar(255),
-  TASK_ID varchar(255),
+  PROCESS_ID varchar(255),
   STATE varchar(255),
   TIME_OF_STATE_CHANGE  timestamp DEFAULT '0000-00-00 00:00:00',
   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
+  PRIMARY KEY (STATUS_ID, JOB_ID, PROCESS_ID),
+  FOREIGN KEY (JOB_ID, PROCESS_ID) REFERENCES JOB(JOB_ID, PROCESS_ID) ON DELETE CASCADE
 );
 
 CREATE TABLE CONFIGURATION

http://git-wip-us.apache.org/repos/asf/airavata/blob/b98f6599/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 1c8dc48..724e8a7 100644
--- a/modules/registry/registry-core/src/main/resources/expcatalog-mysql.sql
+++ b/modules/registry/registry-core/src/main/resources/expcatalog-mysql.sql
@@ -302,24 +302,25 @@ CREATE TABLE TASK_ERROR (
 CREATE TABLE JOB (
   JOB_ID varchar(255),
   TASK_ID varchar(255),
+  PROCESS_ID varchar(255),
   JOB_DESCRIPTION varchar(255),
   CREATION_TIME timestamp DEFAULT NOW(),
   COMPUTE_RESOURCE_CONSUMED varchar(255),
   JOB_NAME varchar(255),
   WORKING_DIR varchar(255),
-  PRIMARY KEY (JOB_ID, TASK_ID),
-  FOREIGN KEY (TASK_ID) REFERENCES TASK(TASK_ID) ON DELETE CASCADE
+  PRIMARY KEY (JOB_ID, PROCESS_ID),
+  FOREIGN KEY (PROCESS_ID) REFERENCES PROCESS(PROCESS_ID) ON DELETE CASCADE
 );
 
 CREATE TABLE JOB_STATUS (
   STATUS_ID varchar(255),
   JOB_ID varchar(255),
-  TASK_ID varchar(255),
+  PROCESS_ID varchar(255),
   STATE varchar(255),
   TIME_OF_STATE_CHANGE timestamp DEFAULT '0000-00-00 00:00:00',
   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
+  PRIMARY KEY (STATUS_ID, JOB_ID, PROCESS_ID),
+  FOREIGN KEY (JOB_ID, PROCESS_ID) REFERENCES JOB(JOB_ID, PROCESS_ID) ON DELETE CASCADE
 );
 
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/b98f6599/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/utils/Constants.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/utils/Constants.java b/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/utils/Constants.java
index ab56285..c4f4d15 100644
--- a/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/utils/Constants.java
+++ b/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/utils/Constants.java
@@ -81,7 +81,7 @@ public class Constants {
 
         public final class JobConstants {
             public static final String JOB_ID = "jobId";
-            public static final String TASK_ID = "taskId";
+            public static final String PROCESS_ID = "processId";
             public static final String JOB_STATUS = "taskStatus";
         }
     }


[3/5] airavata git commit: Added processId to job model

Posted by sh...@apache.org.
Added processId to job model


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

Branch: refs/heads/master
Commit: decad8c49ea6c1f0f94da1fa904762da24c8336b
Parents: 9224359
Author: Shameera Rathanyaka <sh...@gmail.com>
Authored: Thu Aug 20 10:20:41 2015 -0400
Committer: Shameera Rathanyaka <sh...@gmail.com>
Committed: Thu Aug 20 10:20:41 2015 -0400

----------------------------------------------------------------------
 .../java/org/apache/airavata/api/Airavata.java  |   2 +-
 .../src/main/resources/lib/airavata/Airavata.h  |   8 +-
 .../resources/lib/airavata/job_model_types.cpp  |  49 ++++--
 .../resources/lib/airavata/job_model_types.h    |  11 +-
 .../resources/lib/Airavata/Model/job/Types.php  |  55 +++++--
 .../lib/apache/airavata/model/job/ttypes.py     |  51 ++++---
 .../org/apache/airavata/model/Workflow.java     |   2 +-
 .../ApplicationDeploymentDescription.java       |   2 +-
 .../appdeployment/ApplicationModule.java        |   2 +-
 .../appcatalog/appdeployment/SetEnvPaths.java   |   2 +-
 .../ApplicationInterfaceDescription.java        |   2 +-
 .../appcatalog/computeresource/BatchQueue.java  |   2 +-
 .../computeresource/CloudJobSubmission.java     |   2 +-
 .../ComputeResourceDescription.java             |   2 +-
 .../computeresource/DataMovementInterface.java  |   2 +-
 .../computeresource/GlobusJobSubmission.java    |   2 +-
 .../computeresource/GridFTPDataMovement.java    |   2 +-
 .../computeresource/JobSubmissionInterface.java |   2 +-
 .../computeresource/LOCALDataMovement.java      |   2 +-
 .../computeresource/LOCALSubmission.java        |   2 +-
 .../computeresource/ResourceJobManager.java     |   2 +-
 .../computeresource/SCPDataMovement.java        |   2 +-
 .../computeresource/SSHJobSubmission.java       |   2 +-
 .../computeresource/UnicoreDataMovement.java    |   2 +-
 .../computeresource/UnicoreJobSubmission.java   |   2 +-
 .../ComputeResourcePreference.java              |   2 +-
 .../gatewayprofile/GatewayResourceProfile.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 +-
 .../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  |   2 +-
 .../org/apache/airavata/model/job/JobModel.java | 151 ++++++++++++++++---
 .../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 +-
 .../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 +-
 .../airavata-api/job_model.thrift               |  13 +-
 76 files changed, 322 insertions(+), 154 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/decad8c4/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 4a19fdb..b5c7e56 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.2)", date = "2015-8-3")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2015-8-20")
 public class Airavata {
 
   public interface Iface {

http://git-wip-us.apache.org/repos/asf/airavata/blob/decad8c4/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/Airavata.h
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/Airavata.h b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/Airavata.h
index 88a9de4..5aaa69f 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/Airavata.h
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/Airavata.h
@@ -8081,8 +8081,8 @@ typedef struct _Airavata_getJobDetails_result__isset {
 class Airavata_getJobDetails_result {
  public:
 
-  static const char* ascii_fingerprint; // = "16139AD29C6F63C7091087027DC2FE6D";
-  static const uint8_t binary_fingerprint[16]; // = {0x16,0x13,0x9A,0xD2,0x9C,0x6F,0x63,0xC7,0x09,0x10,0x87,0x02,0x7D,0xC2,0xFE,0x6D};
+  static const char* ascii_fingerprint; // = "85D8CE6F76E396F1CD5A41458FB135E7";
+  static const uint8_t binary_fingerprint[16]; // = {0x85,0xD8,0xCE,0x6F,0x76,0xE3,0x96,0xF1,0xCD,0x5A,0x41,0x45,0x8F,0xB1,0x35,0xE7};
 
   Airavata_getJobDetails_result(const Airavata_getJobDetails_result&);
   Airavata_getJobDetails_result& operator=(const Airavata_getJobDetails_result&);
@@ -8152,8 +8152,8 @@ typedef struct _Airavata_getJobDetails_presult__isset {
 class Airavata_getJobDetails_presult {
  public:
 
-  static const char* ascii_fingerprint; // = "16139AD29C6F63C7091087027DC2FE6D";
-  static const uint8_t binary_fingerprint[16]; // = {0x16,0x13,0x9A,0xD2,0x9C,0x6F,0x63,0xC7,0x09,0x10,0x87,0x02,0x7D,0xC2,0xFE,0x6D};
+  static const char* ascii_fingerprint; // = "85D8CE6F76E396F1CD5A41458FB135E7";
+  static const uint8_t binary_fingerprint[16]; // = {0x85,0xD8,0xCE,0x6F,0x76,0xE3,0x96,0xF1,0xCD,0x5A,0x41,0x45,0x8F,0xB1,0x35,0xE7};
 
 
   virtual ~Airavata_getJobDetails_presult() throw();

http://git-wip-us.apache.org/repos/asf/airavata/blob/decad8c4/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/job_model_types.cpp
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/job_model_types.cpp b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/job_model_types.cpp
index 7f6486c..006b5a9 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/job_model_types.cpp
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/job_model_types.cpp
@@ -43,6 +43,10 @@ void JobModel::__set_taskId(const std::string& val) {
   this->taskId = val;
 }
 
+void JobModel::__set_processId(const std::string& val) {
+  this->processId = val;
+}
+
 void JobModel::__set_jobDescription(const std::string& val) {
   this->jobDescription = val;
 }
@@ -72,8 +76,8 @@ void JobModel::__set_workingDir(const std::string& val) {
 __isset.workingDir = true;
 }
 
-const char* JobModel::ascii_fingerprint = "41CA915161D6C0FFEE6B97FACBDE9259";
-const uint8_t JobModel::binary_fingerprint[16] = {0x41,0xCA,0x91,0x51,0x61,0xD6,0xC0,0xFF,0xEE,0x6B,0x97,0xFA,0xCB,0xDE,0x92,0x59};
+const char* JobModel::ascii_fingerprint = "05A24C8A362DCCB6B6A7257CB37E424B";
+const uint8_t JobModel::binary_fingerprint[16] = {0x05,0xA2,0x4C,0x8A,0x36,0x2D,0xCC,0xB6,0xB6,0xA7,0x25,0x7C,0xB3,0x7E,0x42,0x4B};
 
 uint32_t JobModel::read(::apache::thrift::protocol::TProtocol* iprot) {
 
@@ -88,6 +92,7 @@ uint32_t JobModel::read(::apache::thrift::protocol::TProtocol* iprot) {
 
   bool isset_jobId = false;
   bool isset_taskId = false;
+  bool isset_processId = false;
   bool isset_jobDescription = false;
 
   while (true)
@@ -116,13 +121,21 @@ uint32_t JobModel::read(::apache::thrift::protocol::TProtocol* iprot) {
         break;
       case 3:
         if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->processId);
+          isset_processId = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 4:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
           xfer += iprot->readString(this->jobDescription);
           isset_jobDescription = true;
         } else {
           xfer += iprot->skip(ftype);
         }
         break;
-      case 4:
+      case 5:
         if (ftype == ::apache::thrift::protocol::T_I64) {
           xfer += iprot->readI64(this->creationTime);
           this->__isset.creationTime = true;
@@ -130,7 +143,7 @@ uint32_t JobModel::read(::apache::thrift::protocol::TProtocol* iprot) {
           xfer += iprot->skip(ftype);
         }
         break;
-      case 5:
+      case 6:
         if (ftype == ::apache::thrift::protocol::T_STRUCT) {
           xfer += this->jobStatus.read(iprot);
           this->__isset.jobStatus = true;
@@ -138,7 +151,7 @@ uint32_t JobModel::read(::apache::thrift::protocol::TProtocol* iprot) {
           xfer += iprot->skip(ftype);
         }
         break;
-      case 6:
+      case 7:
         if (ftype == ::apache::thrift::protocol::T_STRING) {
           xfer += iprot->readString(this->computeResourceConsumed);
           this->__isset.computeResourceConsumed = true;
@@ -146,7 +159,7 @@ uint32_t JobModel::read(::apache::thrift::protocol::TProtocol* iprot) {
           xfer += iprot->skip(ftype);
         }
         break;
-      case 7:
+      case 8:
         if (ftype == ::apache::thrift::protocol::T_STRING) {
           xfer += iprot->readString(this->jobName);
           this->__isset.jobName = true;
@@ -154,7 +167,7 @@ uint32_t JobModel::read(::apache::thrift::protocol::TProtocol* iprot) {
           xfer += iprot->skip(ftype);
         }
         break;
-      case 8:
+      case 9:
         if (ftype == ::apache::thrift::protocol::T_STRING) {
           xfer += iprot->readString(this->workingDir);
           this->__isset.workingDir = true;
@@ -175,6 +188,8 @@ uint32_t JobModel::read(::apache::thrift::protocol::TProtocol* iprot) {
     throw TProtocolException(TProtocolException::INVALID_DATA);
   if (!isset_taskId)
     throw TProtocolException(TProtocolException::INVALID_DATA);
+  if (!isset_processId)
+    throw TProtocolException(TProtocolException::INVALID_DATA);
   if (!isset_jobDescription)
     throw TProtocolException(TProtocolException::INVALID_DATA);
   return xfer;
@@ -193,32 +208,36 @@ uint32_t JobModel::write(::apache::thrift::protocol::TProtocol* oprot) const {
   xfer += oprot->writeString(this->taskId);
   xfer += oprot->writeFieldEnd();
 
-  xfer += oprot->writeFieldBegin("jobDescription", ::apache::thrift::protocol::T_STRING, 3);
+  xfer += oprot->writeFieldBegin("processId", ::apache::thrift::protocol::T_STRING, 3);
+  xfer += oprot->writeString(this->processId);
+  xfer += oprot->writeFieldEnd();
+
+  xfer += oprot->writeFieldBegin("jobDescription", ::apache::thrift::protocol::T_STRING, 4);
   xfer += oprot->writeString(this->jobDescription);
   xfer += oprot->writeFieldEnd();
 
   if (this->__isset.creationTime) {
-    xfer += oprot->writeFieldBegin("creationTime", ::apache::thrift::protocol::T_I64, 4);
+    xfer += oprot->writeFieldBegin("creationTime", ::apache::thrift::protocol::T_I64, 5);
     xfer += oprot->writeI64(this->creationTime);
     xfer += oprot->writeFieldEnd();
   }
   if (this->__isset.jobStatus) {
-    xfer += oprot->writeFieldBegin("jobStatus", ::apache::thrift::protocol::T_STRUCT, 5);
+    xfer += oprot->writeFieldBegin("jobStatus", ::apache::thrift::protocol::T_STRUCT, 6);
     xfer += this->jobStatus.write(oprot);
     xfer += oprot->writeFieldEnd();
   }
   if (this->__isset.computeResourceConsumed) {
-    xfer += oprot->writeFieldBegin("computeResourceConsumed", ::apache::thrift::protocol::T_STRING, 6);
+    xfer += oprot->writeFieldBegin("computeResourceConsumed", ::apache::thrift::protocol::T_STRING, 7);
     xfer += oprot->writeString(this->computeResourceConsumed);
     xfer += oprot->writeFieldEnd();
   }
   if (this->__isset.jobName) {
-    xfer += oprot->writeFieldBegin("jobName", ::apache::thrift::protocol::T_STRING, 7);
+    xfer += oprot->writeFieldBegin("jobName", ::apache::thrift::protocol::T_STRING, 8);
     xfer += oprot->writeString(this->jobName);
     xfer += oprot->writeFieldEnd();
   }
   if (this->__isset.workingDir) {
-    xfer += oprot->writeFieldBegin("workingDir", ::apache::thrift::protocol::T_STRING, 8);
+    xfer += oprot->writeFieldBegin("workingDir", ::apache::thrift::protocol::T_STRING, 9);
     xfer += oprot->writeString(this->workingDir);
     xfer += oprot->writeFieldEnd();
   }
@@ -232,6 +251,7 @@ void swap(JobModel &a, JobModel &b) {
   using ::std::swap;
   swap(a.jobId, b.jobId);
   swap(a.taskId, b.taskId);
+  swap(a.processId, b.processId);
   swap(a.jobDescription, b.jobDescription);
   swap(a.creationTime, b.creationTime);
   swap(a.jobStatus, b.jobStatus);
@@ -244,6 +264,7 @@ void swap(JobModel &a, JobModel &b) {
 JobModel::JobModel(const JobModel& other0) {
   jobId = other0.jobId;
   taskId = other0.taskId;
+  processId = other0.processId;
   jobDescription = other0.jobDescription;
   creationTime = other0.creationTime;
   jobStatus = other0.jobStatus;
@@ -255,6 +276,7 @@ JobModel::JobModel(const JobModel& other0) {
 JobModel& JobModel::operator=(const JobModel& other1) {
   jobId = other1.jobId;
   taskId = other1.taskId;
+  processId = other1.processId;
   jobDescription = other1.jobDescription;
   creationTime = other1.creationTime;
   jobStatus = other1.jobStatus;
@@ -269,6 +291,7 @@ std::ostream& operator<<(std::ostream& out, const JobModel& obj) {
   out << "JobModel(";
   out << "jobId=" << to_string(obj.jobId);
   out << ", " << "taskId=" << to_string(obj.taskId);
+  out << ", " << "processId=" << to_string(obj.processId);
   out << ", " << "jobDescription=" << to_string(obj.jobDescription);
   out << ", " << "creationTime="; (obj.__isset.creationTime ? (out << to_string(obj.creationTime)) : (out << "<null>"));
   out << ", " << "jobStatus="; (obj.__isset.jobStatus ? (out << to_string(obj.jobStatus)) : (out << "<null>"));

http://git-wip-us.apache.org/repos/asf/airavata/blob/decad8c4/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/job_model_types.h
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/job_model_types.h b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/job_model_types.h
index 2b4b00f..85db732 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/job_model_types.h
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/job_model_types.h
@@ -51,17 +51,18 @@ typedef struct _JobModel__isset {
 class JobModel {
  public:
 
-  static const char* ascii_fingerprint; // = "41CA915161D6C0FFEE6B97FACBDE9259";
-  static const uint8_t binary_fingerprint[16]; // = {0x41,0xCA,0x91,0x51,0x61,0xD6,0xC0,0xFF,0xEE,0x6B,0x97,0xFA,0xCB,0xDE,0x92,0x59};
+  static const char* ascii_fingerprint; // = "05A24C8A362DCCB6B6A7257CB37E424B";
+  static const uint8_t binary_fingerprint[16]; // = {0x05,0xA2,0x4C,0x8A,0x36,0x2D,0xCC,0xB6,0xB6,0xA7,0x25,0x7C,0xB3,0x7E,0x42,0x4B};
 
   JobModel(const JobModel&);
   JobModel& operator=(const JobModel&);
-  JobModel() : jobId(), taskId(), jobDescription(), creationTime(0), computeResourceConsumed(), jobName(), workingDir() {
+  JobModel() : jobId(), taskId(), processId(), jobDescription(), creationTime(0), computeResourceConsumed(), jobName(), workingDir() {
   }
 
   virtual ~JobModel() throw();
   std::string jobId;
   std::string taskId;
+  std::string processId;
   std::string jobDescription;
   int64_t creationTime;
    ::apache::airavata::model::status::JobStatus jobStatus;
@@ -75,6 +76,8 @@ class JobModel {
 
   void __set_taskId(const std::string& val);
 
+  void __set_processId(const std::string& val);
+
   void __set_jobDescription(const std::string& val);
 
   void __set_creationTime(const int64_t val);
@@ -93,6 +96,8 @@ class JobModel {
       return false;
     if (!(taskId == rhs.taskId))
       return false;
+    if (!(processId == rhs.processId))
+      return false;
     if (!(jobDescription == rhs.jobDescription))
       return false;
     if (__isset.creationTime != rhs.__isset.creationTime)

http://git-wip-us.apache.org/repos/asf/airavata/blob/decad8c4/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/job/Types.php
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/job/Types.php b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/job/Types.php
index 8869cdb..791a4b3 100644
--- a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/job/Types.php
+++ b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/job/Types.php
@@ -31,6 +31,10 @@ class JobModel {
   /**
    * @var string
    */
+  public $processId = null;
+  /**
+   * @var string
+   */
   public $jobDescription = null;
   /**
    * @var int
@@ -65,27 +69,31 @@ class JobModel {
           'type' => TType::STRING,
           ),
         3 => array(
-          'var' => 'jobDescription',
+          'var' => 'processId',
           'type' => TType::STRING,
           ),
         4 => array(
+          'var' => 'jobDescription',
+          'type' => TType::STRING,
+          ),
+        5 => array(
           'var' => 'creationTime',
           'type' => TType::I64,
           ),
-        5 => array(
+        6 => array(
           'var' => 'jobStatus',
           'type' => TType::STRUCT,
           'class' => '\Airavata\Model\Status\JobStatus',
           ),
-        6 => array(
+        7 => array(
           'var' => 'computeResourceConsumed',
           'type' => TType::STRING,
           ),
-        7 => array(
+        8 => array(
           'var' => 'jobName',
           'type' => TType::STRING,
           ),
-        8 => array(
+        9 => array(
           'var' => 'workingDir',
           'type' => TType::STRING,
           ),
@@ -98,6 +106,9 @@ class JobModel {
       if (isset($vals['taskId'])) {
         $this->taskId = $vals['taskId'];
       }
+      if (isset($vals['processId'])) {
+        $this->processId = $vals['processId'];
+      }
       if (isset($vals['jobDescription'])) {
         $this->jobDescription = $vals['jobDescription'];
       }
@@ -154,19 +165,26 @@ class JobModel {
           break;
         case 3:
           if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->jobDescription);
+            $xfer += $input->readString($this->processId);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
         case 4:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->jobDescription);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 5:
           if ($ftype == TType::I64) {
             $xfer += $input->readI64($this->creationTime);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
-        case 5:
+        case 6:
           if ($ftype == TType::STRUCT) {
             $this->jobStatus = new \Airavata\Model\Status\JobStatus();
             $xfer += $this->jobStatus->read($input);
@@ -174,21 +192,21 @@ class JobModel {
             $xfer += $input->skip($ftype);
           }
           break;
-        case 6:
+        case 7:
           if ($ftype == TType::STRING) {
             $xfer += $input->readString($this->computeResourceConsumed);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
-        case 7:
+        case 8:
           if ($ftype == TType::STRING) {
             $xfer += $input->readString($this->jobName);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
-        case 8:
+        case 9:
           if ($ftype == TType::STRING) {
             $xfer += $input->readString($this->workingDir);
           } else {
@@ -218,13 +236,18 @@ class JobModel {
       $xfer += $output->writeString($this->taskId);
       $xfer += $output->writeFieldEnd();
     }
+    if ($this->processId !== null) {
+      $xfer += $output->writeFieldBegin('processId', TType::STRING, 3);
+      $xfer += $output->writeString($this->processId);
+      $xfer += $output->writeFieldEnd();
+    }
     if ($this->jobDescription !== null) {
-      $xfer += $output->writeFieldBegin('jobDescription', TType::STRING, 3);
+      $xfer += $output->writeFieldBegin('jobDescription', TType::STRING, 4);
       $xfer += $output->writeString($this->jobDescription);
       $xfer += $output->writeFieldEnd();
     }
     if ($this->creationTime !== null) {
-      $xfer += $output->writeFieldBegin('creationTime', TType::I64, 4);
+      $xfer += $output->writeFieldBegin('creationTime', TType::I64, 5);
       $xfer += $output->writeI64($this->creationTime);
       $xfer += $output->writeFieldEnd();
     }
@@ -232,22 +255,22 @@ class JobModel {
       if (!is_object($this->jobStatus)) {
         throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
       }
-      $xfer += $output->writeFieldBegin('jobStatus', TType::STRUCT, 5);
+      $xfer += $output->writeFieldBegin('jobStatus', TType::STRUCT, 6);
       $xfer += $this->jobStatus->write($output);
       $xfer += $output->writeFieldEnd();
     }
     if ($this->computeResourceConsumed !== null) {
-      $xfer += $output->writeFieldBegin('computeResourceConsumed', TType::STRING, 6);
+      $xfer += $output->writeFieldBegin('computeResourceConsumed', TType::STRING, 7);
       $xfer += $output->writeString($this->computeResourceConsumed);
       $xfer += $output->writeFieldEnd();
     }
     if ($this->jobName !== null) {
-      $xfer += $output->writeFieldBegin('jobName', TType::STRING, 7);
+      $xfer += $output->writeFieldBegin('jobName', TType::STRING, 8);
       $xfer += $output->writeString($this->jobName);
       $xfer += $output->writeFieldEnd();
     }
     if ($this->workingDir !== null) {
-      $xfer += $output->writeFieldBegin('workingDir', TType::STRING, 8);
+      $xfer += $output->writeFieldBegin('workingDir', TType::STRING, 9);
       $xfer += $output->writeString($this->workingDir);
       $xfer += $output->writeFieldEnd();
     }

http://git-wip-us.apache.org/repos/asf/airavata/blob/decad8c4/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/job/ttypes.py
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/job/ttypes.py b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/job/ttypes.py
index cdf406b..61046b1 100644
--- a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/job/ttypes.py
+++ b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/job/ttypes.py
@@ -24,6 +24,7 @@ class JobModel:
   Attributes:
    - jobId
    - taskId
+   - processId
    - jobDescription
    - creationTime
    - jobStatus
@@ -36,17 +37,19 @@ class JobModel:
     None, # 0
     (1, TType.STRING, 'jobId', None, None, ), # 1
     (2, TType.STRING, 'taskId', None, None, ), # 2
-    (3, TType.STRING, 'jobDescription', None, None, ), # 3
-    (4, TType.I64, 'creationTime', None, None, ), # 4
-    (5, TType.STRUCT, 'jobStatus', (apache.airavata.model.status.ttypes.JobStatus, apache.airavata.model.status.ttypes.JobStatus.thrift_spec), None, ), # 5
-    (6, TType.STRING, 'computeResourceConsumed', None, None, ), # 6
-    (7, TType.STRING, 'jobName', None, None, ), # 7
-    (8, TType.STRING, 'workingDir', None, None, ), # 8
+    (3, TType.STRING, 'processId', None, None, ), # 3
+    (4, TType.STRING, 'jobDescription', None, None, ), # 4
+    (5, TType.I64, 'creationTime', None, None, ), # 5
+    (6, TType.STRUCT, 'jobStatus', (apache.airavata.model.status.ttypes.JobStatus, apache.airavata.model.status.ttypes.JobStatus.thrift_spec), None, ), # 6
+    (7, TType.STRING, 'computeResourceConsumed', None, None, ), # 7
+    (8, TType.STRING, 'jobName', None, None, ), # 8
+    (9, TType.STRING, 'workingDir', None, None, ), # 9
   )
 
-  def __init__(self, jobId=None, taskId=None, jobDescription=None, creationTime=None, jobStatus=None, computeResourceConsumed=None, jobName=None, workingDir=None,):
+  def __init__(self, jobId=None, taskId=None, processId=None, jobDescription=None, creationTime=None, jobStatus=None, computeResourceConsumed=None, jobName=None, workingDir=None,):
     self.jobId = jobId
     self.taskId = taskId
+    self.processId = processId
     self.jobDescription = jobDescription
     self.creationTime = creationTime
     self.jobStatus = jobStatus
@@ -75,31 +78,36 @@ class JobModel:
           iprot.skip(ftype)
       elif fid == 3:
         if ftype == TType.STRING:
-          self.jobDescription = iprot.readString();
+          self.processId = iprot.readString();
         else:
           iprot.skip(ftype)
       elif fid == 4:
+        if ftype == TType.STRING:
+          self.jobDescription = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
         if ftype == TType.I64:
           self.creationTime = iprot.readI64();
         else:
           iprot.skip(ftype)
-      elif fid == 5:
+      elif fid == 6:
         if ftype == TType.STRUCT:
           self.jobStatus = apache.airavata.model.status.ttypes.JobStatus()
           self.jobStatus.read(iprot)
         else:
           iprot.skip(ftype)
-      elif fid == 6:
+      elif fid == 7:
         if ftype == TType.STRING:
           self.computeResourceConsumed = iprot.readString();
         else:
           iprot.skip(ftype)
-      elif fid == 7:
+      elif fid == 8:
         if ftype == TType.STRING:
           self.jobName = iprot.readString();
         else:
           iprot.skip(ftype)
-      elif fid == 8:
+      elif fid == 9:
         if ftype == TType.STRING:
           self.workingDir = iprot.readString();
         else:
@@ -122,28 +130,32 @@ class JobModel:
       oprot.writeFieldBegin('taskId', TType.STRING, 2)
       oprot.writeString(self.taskId)
       oprot.writeFieldEnd()
+    if self.processId is not None:
+      oprot.writeFieldBegin('processId', TType.STRING, 3)
+      oprot.writeString(self.processId)
+      oprot.writeFieldEnd()
     if self.jobDescription is not None:
-      oprot.writeFieldBegin('jobDescription', TType.STRING, 3)
+      oprot.writeFieldBegin('jobDescription', TType.STRING, 4)
       oprot.writeString(self.jobDescription)
       oprot.writeFieldEnd()
     if self.creationTime is not None:
-      oprot.writeFieldBegin('creationTime', TType.I64, 4)
+      oprot.writeFieldBegin('creationTime', TType.I64, 5)
       oprot.writeI64(self.creationTime)
       oprot.writeFieldEnd()
     if self.jobStatus is not None:
-      oprot.writeFieldBegin('jobStatus', TType.STRUCT, 5)
+      oprot.writeFieldBegin('jobStatus', TType.STRUCT, 6)
       self.jobStatus.write(oprot)
       oprot.writeFieldEnd()
     if self.computeResourceConsumed is not None:
-      oprot.writeFieldBegin('computeResourceConsumed', TType.STRING, 6)
+      oprot.writeFieldBegin('computeResourceConsumed', TType.STRING, 7)
       oprot.writeString(self.computeResourceConsumed)
       oprot.writeFieldEnd()
     if self.jobName is not None:
-      oprot.writeFieldBegin('jobName', TType.STRING, 7)
+      oprot.writeFieldBegin('jobName', TType.STRING, 8)
       oprot.writeString(self.jobName)
       oprot.writeFieldEnd()
     if self.workingDir is not None:
-      oprot.writeFieldBegin('workingDir', TType.STRING, 8)
+      oprot.writeFieldBegin('workingDir', TType.STRING, 9)
       oprot.writeString(self.workingDir)
       oprot.writeFieldEnd()
     oprot.writeFieldStop()
@@ -154,6 +166,8 @@ class JobModel:
       raise TProtocol.TProtocolException(message='Required field jobId is unset!')
     if self.taskId is None:
       raise TProtocol.TProtocolException(message='Required field taskId is unset!')
+    if self.processId is None:
+      raise TProtocol.TProtocolException(message='Required field processId is unset!')
     if self.jobDescription is None:
       raise TProtocol.TProtocolException(message='Required field jobDescription is unset!')
     return
@@ -163,6 +177,7 @@ class JobModel:
     value = 17
     value = (value * 31) ^ hash(self.jobId)
     value = (value * 31) ^ hash(self.taskId)
+    value = (value * 31) ^ hash(self.processId)
     value = (value * 31) ^ hash(self.jobDescription)
     value = (value * 31) ^ hash(self.creationTime)
     value = (value * 31) ^ hash(self.jobStatus)

http://git-wip-us.apache.org/repos/asf/airavata/blob/decad8c4/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 683090c..bf7f535 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.2)", date = "2015-8-3")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2015-8-20")
 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/decad8c4/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 50af806..c60eb02 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.2)", date = "2015-8-3")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2015-8-20")
 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/decad8c4/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 bee403b..7f70018 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.2)", date = "2015-8-3")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2015-8-20")
 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/decad8c4/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 7c815bc..cc045eb 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
@@ -60,7 +60,7 @@ import org.slf4j.LoggerFactory;
  * value:
  *   Value of the environment variable to set
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2015-8-3")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2015-8-20")
 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/decad8c4/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 8a7e4af..6495232 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.2)", date = "2015-8-3")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2015-8-20")
 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/decad8c4/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 83e51ce..a137de9 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.2)", date = "2015-8-3")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2015-8-20")
 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/decad8c4/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 4fb0364..93009c9 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.2)", date = "2015-8-3")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2015-8-20")
 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/decad8c4/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 845633e..67306f0 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.2)", date = "2015-8-3")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2015-8-20")
 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/decad8c4/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/DataMovementInterface.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/DataMovementInterface.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/DataMovementInterface.java
index 80e18bd..57108e8 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/DataMovementInterface.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/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.2)", date = "2015-8-3")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2015-8-20")
 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/decad8c4/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 c8522a1..178f4a7 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.2)", date = "2015-8-3")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2015-8-20")
 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/decad8c4/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/GridFTPDataMovement.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/GridFTPDataMovement.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/GridFTPDataMovement.java
index e67289b..1248a0f 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/GridFTPDataMovement.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/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.2)", date = "2015-8-3")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2015-8-20")
 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/decad8c4/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 eb3a8d0..d1a45f3 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.2)", date = "2015-8-3")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2015-8-20")
 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/decad8c4/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/LOCALDataMovement.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/LOCALDataMovement.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/LOCALDataMovement.java
index 46bdfe7..fb8b280 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/LOCALDataMovement.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/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.2)", date = "2015-8-3")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2015-8-20")
 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/decad8c4/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 0cfe509..379f73f 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.2)", date = "2015-8-3")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2015-8-20")
 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/decad8c4/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 c863803..cfad29a 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.2)", date = "2015-8-3")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2015-8-20")
 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/decad8c4/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/SCPDataMovement.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/SCPDataMovement.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/SCPDataMovement.java
index d341ea7..cf79ef2 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/SCPDataMovement.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/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.2)", date = "2015-8-3")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2015-8-20")
 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/decad8c4/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 4763ac9..ba1ab3c 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
@@ -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.2)", date = "2015-8-3")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2015-8-20")
 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/decad8c4/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/UnicoreDataMovement.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/UnicoreDataMovement.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/UnicoreDataMovement.java
index bb47669..96b689c 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/UnicoreDataMovement.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/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.2)", date = "2015-8-3")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2015-8-20")
 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/decad8c4/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 2b3cb3f..9e0cdf6 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.2)", date = "2015-8-3")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2015-8-20")
 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/decad8c4/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 f830898..4fb9b52 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
@@ -81,7 +81,7 @@ import org.slf4j.LoggerFactory;
  *    account to be used has to be added to the allocation.
  * 
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2015-8-3")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2015-8-20")
 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/decad8c4/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 3c36791..6d1603b 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
@@ -62,7 +62,7 @@ import org.slf4j.LoggerFactory;
  * 
  * 
  */
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2015-8-3")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2015-8-20")
 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/decad8c4/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 773c99a..0c9fa77 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.2)", date = "2015-8-3")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2015-8-20")
 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/decad8c4/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 6869b4f..8a64601 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.2)", date = "2015-8-3")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2015-8-20")
 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/decad8c4/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 7bce8de..9cfac2b 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.2)", date = "2015-8-3")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2015-8-20")
 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/decad8c4/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 20c16d7..21be7a8 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.2)", date = "2015-8-3")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2015-8-20")
 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/decad8c4/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 7e4ee5c..da28d74 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.2)", date = "2015-8-3")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2015-8-20")
 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/decad8c4/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 7706e6f..634903c 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.2)", date = "2015-8-3")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2015-8-20")
 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/decad8c4/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 d455fe6..f371c0d 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.2)", date = "2015-8-3")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2015-8-20")
 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/decad8c4/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 76103d5..d355c34 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.2)", date = "2015-8-3")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2015-8-20")
 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/decad8c4/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 875a0d2..c968c47 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.2)", date = "2015-8-3")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2015-8-20")
 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/decad8c4/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 7414d74..33c4008 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.2)", date = "2015-8-3")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2015-8-20")
 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/decad8c4/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 4ab1e48..87125e0 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.2)", date = "2015-8-3")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2015-8-20")
 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/decad8c4/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 ba51235..d035a9e 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.2)", date = "2015-8-3")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2015-8-20")
 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/decad8c4/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 798188f..2c4bd2c 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.2)", date = "2015-8-3")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2015-8-20")
 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/decad8c4/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 929e2a6..db703e2 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.2)", date = "2015-8-3")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2015-8-20")
 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/decad8c4/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 1c9633e..077c784 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.2)", date = "2015-8-3")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2015-8-20")
 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/decad8c4/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 0edbe43..5b66e30 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.2)", date = "2015-8-3")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2015-8-20")
 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/decad8c4/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 c36294c..42b81d4 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.2)", date = "2015-8-3")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2015-8-20")
 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/decad8c4/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 0d16761..3734b46 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.2)", date = "2015-8-3")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2015-8-20")
 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/decad8c4/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 0b60ed0..1dc47e4 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.2)", date = "2015-8-3")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2015-8-20")
 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");
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/decad8c4/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 3fb384b..0ef4ae2 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.2)", date = "2015-8-3")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2015-8-20")
 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");
 


[4/5] 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/bf56b43e
Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/bf56b43e
Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/bf56b43e

Branch: refs/heads/master
Commit: bf56b43e1e6472be5ea99158ca4e429a7062311e
Parents: decad8c 36922c9
Author: Shameera Rathanyaka <sh...@gmail.com>
Authored: Thu Aug 20 10:20:55 2015 -0400
Committer: Shameera Rathanyaka <sh...@gmail.com>
Committed: Thu Aug 20 10:20:55 2015 -0400

----------------------------------------------------------------------
 airavata-api/airavata-api-server/pom.xml        |  13 +-
 .../airavata/api/server/AiravataAPIServer.java  |  15 +-
 .../server/handler/AiravataServerHandler.java   |   2 +-
 .../security/AiravataSecurityManager.java       |  17 +-
 .../DefaultAiravataSecurityManager.java         | 149 ++++++++++++++++-
 .../api/server/security/DefaultOAuthClient.java | 133 ---------------
 .../api/server/security/IdentityContext.java    |  44 +++++
 .../api/server/security/SecurityCheck.java      |  36 ----
 .../server/security/SecurityInterceptor.java    |  65 --------
 .../server/security/SecurityManagerFactory.java |   7 +-
 .../api/server/security/SecurityModule.java     |  39 -----
 .../server/security/authzcache/AuthzCache.java  |  63 +++++++
 .../security/authzcache/AuthzCacheEntry.java    |  63 +++++++
 .../security/authzcache/AuthzCacheIndex.java    |  78 +++++++++
 .../security/authzcache/AuthzCacheManager.java  |  80 +++++++++
 .../authzcache/AuthzCacheManagerFactory.java    |  60 +++++++
 .../security/authzcache/AuthzCachedStatus.java  |  34 ++++
 .../authzcache/DefaultAuthzCacheManager.java    | 108 ++++++++++++
 .../security/interceptor/SecurityCheck.java     |  36 ++++
 .../interceptor/SecurityInterceptor.java        |  83 ++++++++++
 .../security/interceptor/SecurityModule.java    |  41 +++++
 .../security/oauth/DefaultOAuthClient.java      |  94 +++++++++++
 .../server/security/xacml/DefaultPAPClient.java | 125 ++++++++++++++
 .../server/security/xacml/DefaultXACMLPEP.java  | 129 +++++++++++++++
 distribution/src/main/assembly/bin-assembly.xml |   1 +
 .../apache/airavata/common/utils/Constants.java |  21 +++
 .../airavata/common/utils/ServerSettings.java   |  86 ++++++----
 .../resources/airavata-default-xacml-policy.xml | 165 +++++++++++++++++++
 .../main/resources/airavata-server.properties   |  11 ++
 .../airavata/secure/sample/SecureClient.java    |  60 ++++++-
 30 files changed, 1527 insertions(+), 331 deletions(-)
----------------------------------------------------------------------



[2/5] airavata git commit: Added processId to job model

Posted by sh...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata/blob/decad8c4/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 7bd252f..e138a21 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,18 +51,19 @@ 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-3")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2015-8-20")
 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");
 
   private static final org.apache.thrift.protocol.TField JOB_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("jobId", org.apache.thrift.protocol.TType.STRING, (short)1);
   private static final org.apache.thrift.protocol.TField TASK_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("taskId", org.apache.thrift.protocol.TType.STRING, (short)2);
-  private static final org.apache.thrift.protocol.TField JOB_DESCRIPTION_FIELD_DESC = new org.apache.thrift.protocol.TField("jobDescription", org.apache.thrift.protocol.TType.STRING, (short)3);
-  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)4);
-  private static final org.apache.thrift.protocol.TField JOB_STATUS_FIELD_DESC = new org.apache.thrift.protocol.TField("jobStatus", org.apache.thrift.protocol.TType.STRUCT, (short)5);
-  private static final org.apache.thrift.protocol.TField COMPUTE_RESOURCE_CONSUMED_FIELD_DESC = new org.apache.thrift.protocol.TField("computeResourceConsumed", org.apache.thrift.protocol.TType.STRING, (short)6);
-  private static final org.apache.thrift.protocol.TField JOB_NAME_FIELD_DESC = new org.apache.thrift.protocol.TField("jobName", org.apache.thrift.protocol.TType.STRING, (short)7);
-  private static final org.apache.thrift.protocol.TField WORKING_DIR_FIELD_DESC = new org.apache.thrift.protocol.TField("workingDir", org.apache.thrift.protocol.TType.STRING, (short)8);
+  private static final org.apache.thrift.protocol.TField PROCESS_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("processId", org.apache.thrift.protocol.TType.STRING, (short)3);
+  private static final org.apache.thrift.protocol.TField JOB_DESCRIPTION_FIELD_DESC = new org.apache.thrift.protocol.TField("jobDescription", 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 JOB_STATUS_FIELD_DESC = new org.apache.thrift.protocol.TField("jobStatus", org.apache.thrift.protocol.TType.STRUCT, (short)6);
+  private static final org.apache.thrift.protocol.TField COMPUTE_RESOURCE_CONSUMED_FIELD_DESC = new org.apache.thrift.protocol.TField("computeResourceConsumed", org.apache.thrift.protocol.TType.STRING, (short)7);
+  private static final org.apache.thrift.protocol.TField JOB_NAME_FIELD_DESC = new org.apache.thrift.protocol.TField("jobName", org.apache.thrift.protocol.TType.STRING, (short)8);
+  private static final org.apache.thrift.protocol.TField WORKING_DIR_FIELD_DESC = new org.apache.thrift.protocol.TField("workingDir", org.apache.thrift.protocol.TType.STRING, (short)9);
 
   private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
   static {
@@ -72,6 +73,7 @@ public class JobModel implements org.apache.thrift.TBase<JobModel, JobModel._Fie
 
   private String jobId; // required
   private String taskId; // required
+  private String processId; // required
   private String jobDescription; // required
   private long creationTime; // optional
   private org.apache.airavata.model.status.JobStatus jobStatus; // optional
@@ -83,12 +85,13 @@ public class JobModel implements org.apache.thrift.TBase<JobModel, JobModel._Fie
   public enum _Fields implements org.apache.thrift.TFieldIdEnum {
     JOB_ID((short)1, "jobId"),
     TASK_ID((short)2, "taskId"),
-    JOB_DESCRIPTION((short)3, "jobDescription"),
-    CREATION_TIME((short)4, "creationTime"),
-    JOB_STATUS((short)5, "jobStatus"),
-    COMPUTE_RESOURCE_CONSUMED((short)6, "computeResourceConsumed"),
-    JOB_NAME((short)7, "jobName"),
-    WORKING_DIR((short)8, "workingDir");
+    PROCESS_ID((short)3, "processId"),
+    JOB_DESCRIPTION((short)4, "jobDescription"),
+    CREATION_TIME((short)5, "creationTime"),
+    JOB_STATUS((short)6, "jobStatus"),
+    COMPUTE_RESOURCE_CONSUMED((short)7, "computeResourceConsumed"),
+    JOB_NAME((short)8, "jobName"),
+    WORKING_DIR((short)9, "workingDir");
 
     private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
 
@@ -107,17 +110,19 @@ public class JobModel implements org.apache.thrift.TBase<JobModel, JobModel._Fie
           return JOB_ID;
         case 2: // TASK_ID
           return TASK_ID;
-        case 3: // JOB_DESCRIPTION
+        case 3: // PROCESS_ID
+          return PROCESS_ID;
+        case 4: // JOB_DESCRIPTION
           return JOB_DESCRIPTION;
-        case 4: // CREATION_TIME
+        case 5: // CREATION_TIME
           return CREATION_TIME;
-        case 5: // JOB_STATUS
+        case 6: // JOB_STATUS
           return JOB_STATUS;
-        case 6: // COMPUTE_RESOURCE_CONSUMED
+        case 7: // COMPUTE_RESOURCE_CONSUMED
           return COMPUTE_RESOURCE_CONSUMED;
-        case 7: // JOB_NAME
+        case 8: // JOB_NAME
           return JOB_NAME;
-        case 8: // WORKING_DIR
+        case 9: // WORKING_DIR
           return WORKING_DIR;
         default:
           return null;
@@ -169,6 +174,8 @@ public class JobModel implements org.apache.thrift.TBase<JobModel, JobModel._Fie
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
     tmpMap.put(_Fields.TASK_ID, new org.apache.thrift.meta_data.FieldMetaData("taskId", org.apache.thrift.TFieldRequirementType.REQUIRED, 
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    tmpMap.put(_Fields.PROCESS_ID, new org.apache.thrift.meta_data.FieldMetaData("processId", org.apache.thrift.TFieldRequirementType.REQUIRED, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
     tmpMap.put(_Fields.JOB_DESCRIPTION, new org.apache.thrift.meta_data.FieldMetaData("jobDescription", org.apache.thrift.TFieldRequirementType.REQUIRED, 
         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, 
@@ -191,11 +198,13 @@ public class JobModel implements org.apache.thrift.TBase<JobModel, JobModel._Fie
   public JobModel(
     String jobId,
     String taskId,
+    String processId,
     String jobDescription)
   {
     this();
     this.jobId = jobId;
     this.taskId = taskId;
+    this.processId = processId;
     this.jobDescription = jobDescription;
   }
 
@@ -210,6 +219,9 @@ public class JobModel implements org.apache.thrift.TBase<JobModel, JobModel._Fie
     if (other.isSetTaskId()) {
       this.taskId = other.taskId;
     }
+    if (other.isSetProcessId()) {
+      this.processId = other.processId;
+    }
     if (other.isSetJobDescription()) {
       this.jobDescription = other.jobDescription;
     }
@@ -236,6 +248,7 @@ public class JobModel implements org.apache.thrift.TBase<JobModel, JobModel._Fie
   public void clear() {
     this.jobId = null;
     this.taskId = null;
+    this.processId = null;
     this.jobDescription = null;
     setCreationTimeIsSet(false);
     this.creationTime = 0;
@@ -291,6 +304,29 @@ public class JobModel implements org.apache.thrift.TBase<JobModel, JobModel._Fie
     }
   }
 
+  public String getProcessId() {
+    return this.processId;
+  }
+
+  public void setProcessId(String processId) {
+    this.processId = processId;
+  }
+
+  public void unsetProcessId() {
+    this.processId = null;
+  }
+
+  /** Returns true if field processId is set (has been assigned a value) and false otherwise */
+  public boolean isSetProcessId() {
+    return this.processId != null;
+  }
+
+  public void setProcessIdIsSet(boolean value) {
+    if (!value) {
+      this.processId = null;
+    }
+  }
+
   public String getJobDescription() {
     return this.jobDescription;
   }
@@ -446,6 +482,14 @@ public class JobModel implements org.apache.thrift.TBase<JobModel, JobModel._Fie
       }
       break;
 
+    case PROCESS_ID:
+      if (value == null) {
+        unsetProcessId();
+      } else {
+        setProcessId((String)value);
+      }
+      break;
+
     case JOB_DESCRIPTION:
       if (value == null) {
         unsetJobDescription();
@@ -505,6 +549,9 @@ public class JobModel implements org.apache.thrift.TBase<JobModel, JobModel._Fie
     case TASK_ID:
       return getTaskId();
 
+    case PROCESS_ID:
+      return getProcessId();
+
     case JOB_DESCRIPTION:
       return getJobDescription();
 
@@ -538,6 +585,8 @@ public class JobModel implements org.apache.thrift.TBase<JobModel, JobModel._Fie
       return isSetJobId();
     case TASK_ID:
       return isSetTaskId();
+    case PROCESS_ID:
+      return isSetProcessId();
     case JOB_DESCRIPTION:
       return isSetJobDescription();
     case CREATION_TIME:
@@ -585,6 +634,15 @@ public class JobModel implements org.apache.thrift.TBase<JobModel, JobModel._Fie
         return false;
     }
 
+    boolean this_present_processId = true && this.isSetProcessId();
+    boolean that_present_processId = true && that.isSetProcessId();
+    if (this_present_processId || that_present_processId) {
+      if (!(this_present_processId && that_present_processId))
+        return false;
+      if (!this.processId.equals(that.processId))
+        return false;
+    }
+
     boolean this_present_jobDescription = true && this.isSetJobDescription();
     boolean that_present_jobDescription = true && that.isSetJobDescription();
     if (this_present_jobDescription || that_present_jobDescription) {
@@ -656,6 +714,11 @@ public class JobModel implements org.apache.thrift.TBase<JobModel, JobModel._Fie
     if (present_taskId)
       list.add(taskId);
 
+    boolean present_processId = true && (isSetProcessId());
+    list.add(present_processId);
+    if (present_processId)
+      list.add(processId);
+
     boolean present_jobDescription = true && (isSetJobDescription());
     list.add(present_jobDescription);
     if (present_jobDescription)
@@ -717,6 +780,16 @@ public class JobModel implements org.apache.thrift.TBase<JobModel, JobModel._Fie
         return lastComparison;
       }
     }
+    lastComparison = Boolean.valueOf(isSetProcessId()).compareTo(other.isSetProcessId());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetProcessId()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.processId, other.processId);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
     lastComparison = Boolean.valueOf(isSetJobDescription()).compareTo(other.isSetJobDescription());
     if (lastComparison != 0) {
       return lastComparison;
@@ -813,6 +886,14 @@ public class JobModel implements org.apache.thrift.TBase<JobModel, JobModel._Fie
     }
     first = false;
     if (!first) sb.append(", ");
+    sb.append("processId:");
+    if (this.processId == null) {
+      sb.append("null");
+    } else {
+      sb.append(this.processId);
+    }
+    first = false;
+    if (!first) sb.append(", ");
     sb.append("jobDescription:");
     if (this.jobDescription == null) {
       sb.append("null");
@@ -880,6 +961,10 @@ public class JobModel implements org.apache.thrift.TBase<JobModel, JobModel._Fie
       throw new org.apache.thrift.protocol.TProtocolException("Required field 'taskId' is unset! Struct:" + toString());
     }
 
+    if (!isSetProcessId()) {
+      throw new org.apache.thrift.protocol.TProtocolException("Required field 'processId' is unset! Struct:" + toString());
+    }
+
     if (!isSetJobDescription()) {
       throw new org.apache.thrift.protocol.TProtocolException("Required field 'jobDescription' is unset! Struct:" + toString());
     }
@@ -942,7 +1027,15 @@ public class JobModel implements org.apache.thrift.TBase<JobModel, JobModel._Fie
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
-          case 3: // JOB_DESCRIPTION
+          case 3: // PROCESS_ID
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.processId = iprot.readString();
+              struct.setProcessIdIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 4: // JOB_DESCRIPTION
             if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
               struct.jobDescription = iprot.readString();
               struct.setJobDescriptionIsSet(true);
@@ -950,7 +1043,7 @@ public class JobModel implements org.apache.thrift.TBase<JobModel, JobModel._Fie
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
-          case 4: // CREATION_TIME
+          case 5: // CREATION_TIME
             if (schemeField.type == org.apache.thrift.protocol.TType.I64) {
               struct.creationTime = iprot.readI64();
               struct.setCreationTimeIsSet(true);
@@ -958,7 +1051,7 @@ public class JobModel implements org.apache.thrift.TBase<JobModel, JobModel._Fie
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
-          case 5: // JOB_STATUS
+          case 6: // JOB_STATUS
             if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
               struct.jobStatus = new org.apache.airavata.model.status.JobStatus();
               struct.jobStatus.read(iprot);
@@ -967,7 +1060,7 @@ public class JobModel implements org.apache.thrift.TBase<JobModel, JobModel._Fie
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
-          case 6: // COMPUTE_RESOURCE_CONSUMED
+          case 7: // COMPUTE_RESOURCE_CONSUMED
             if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
               struct.computeResourceConsumed = iprot.readString();
               struct.setComputeResourceConsumedIsSet(true);
@@ -975,7 +1068,7 @@ public class JobModel implements org.apache.thrift.TBase<JobModel, JobModel._Fie
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
-          case 7: // JOB_NAME
+          case 8: // JOB_NAME
             if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
               struct.jobName = iprot.readString();
               struct.setJobNameIsSet(true);
@@ -983,7 +1076,7 @@ public class JobModel implements org.apache.thrift.TBase<JobModel, JobModel._Fie
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
-          case 8: // WORKING_DIR
+          case 9: // WORKING_DIR
             if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
               struct.workingDir = iprot.readString();
               struct.setWorkingDirIsSet(true);
@@ -1014,6 +1107,11 @@ public class JobModel implements org.apache.thrift.TBase<JobModel, JobModel._Fie
         oprot.writeString(struct.taskId);
         oprot.writeFieldEnd();
       }
+      if (struct.processId != null) {
+        oprot.writeFieldBegin(PROCESS_ID_FIELD_DESC);
+        oprot.writeString(struct.processId);
+        oprot.writeFieldEnd();
+      }
       if (struct.jobDescription != null) {
         oprot.writeFieldBegin(JOB_DESCRIPTION_FIELD_DESC);
         oprot.writeString(struct.jobDescription);
@@ -1071,6 +1169,7 @@ public class JobModel implements org.apache.thrift.TBase<JobModel, JobModel._Fie
       TTupleProtocol oprot = (TTupleProtocol) prot;
       oprot.writeString(struct.jobId);
       oprot.writeString(struct.taskId);
+      oprot.writeString(struct.processId);
       oprot.writeString(struct.jobDescription);
       BitSet optionals = new BitSet();
       if (struct.isSetCreationTime()) {
@@ -1113,6 +1212,8 @@ public class JobModel implements org.apache.thrift.TBase<JobModel, JobModel._Fie
       struct.setJobIdIsSet(true);
       struct.taskId = iprot.readString();
       struct.setTaskIdIsSet(true);
+      struct.processId = iprot.readString();
+      struct.setProcessIdIsSet(true);
       struct.jobDescription = iprot.readString();
       struct.setJobDescriptionIsSet(true);
       BitSet incoming = iprot.readBitSet(5);

http://git-wip-us.apache.org/repos/asf/airavata/blob/decad8c4/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 d4f9538..2880349 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.2)", date = "2015-8-3")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2015-8-20")
 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/decad8c4/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 e7ceeaf..3d22685 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.2)", date = "2015-8-3")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2015-8-20")
 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/decad8c4/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 ff4d5a4..7ea26ba 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.2)", date = "2015-8-3")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2015-8-20")
 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/decad8c4/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 3a302c0..c382341 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.2)", date = "2015-8-3")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2015-8-20")
 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/decad8c4/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 0ab05c7..897d594 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.2)", date = "2015-8-3")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2015-8-20")
 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/decad8c4/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 6c29b24..32fbef0 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.2)", date = "2015-8-3")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2015-8-20")
 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/decad8c4/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 92d4c04..784555f 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.2)", date = "2015-8-3")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2015-8-20")
 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/decad8c4/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 c8de5ed..814623b 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.2)", date = "2015-8-3")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2015-8-20")
 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/decad8c4/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 0e92f52..5ea0610 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.2)", date = "2015-8-3")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2015-8-20")
 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/decad8c4/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 7e3b54a..afad612 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-3")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2015-8-20")
 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/decad8c4/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 1f16b56..c7dbde4 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-3")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2015-8-20")
 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/decad8c4/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 5658f55..5042bca 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-3")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2015-8-20")
 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/decad8c4/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 fef4808..442029c 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-3")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2015-8-20")
 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/decad8c4/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 30bf5f3..dc277f0 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-3")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2015-8-20")
 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/decad8c4/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 dbf6111..b5ec245 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-3")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2015-8-20")
 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/decad8c4/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 b863e8c..4b9e119 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-3")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2015-8-20")
 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/decad8c4/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 02ee084..e27cc94 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-3")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2015-8-20")
 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/decad8c4/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 1fd7d0b..1b30cd6 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-3")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2015-8-20")
 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/decad8c4/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 ef54285..e946dc2 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-3")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2015-8-20")
 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/decad8c4/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 e338b4f..0a2e9a8 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-3")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2015-8-20")
 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/decad8c4/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 2dc9600..e03dd98 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-3")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2015-8-20")
 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/decad8c4/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 dcb6c85..929cf27 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-3")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2015-8-20")
 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/decad8c4/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 1355124..5c0c27b 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-3")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2015-8-20")
 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/decad8c4/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 4ba6f30..46b1c06 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-3")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2015-8-20")
 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/decad8c4/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 65b4506..9813aae 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-3")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2015-8-20")
 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/decad8c4/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 007afcc..88e40ce 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-3")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2015-8-20")
 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/decad8c4/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 058b656..ac5b85d 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-3")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2015-8-20")
 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/decad8c4/thrift-interface-descriptions/airavata-api/job_model.thrift
----------------------------------------------------------------------
diff --git a/thrift-interface-descriptions/airavata-api/job_model.thrift b/thrift-interface-descriptions/airavata-api/job_model.thrift
index 09abcac..f1943a2 100644
--- a/thrift-interface-descriptions/airavata-api/job_model.thrift
+++ b/thrift-interface-descriptions/airavata-api/job_model.thrift
@@ -28,11 +28,12 @@
 struct JobModel {
     1: required string jobId,
     2: required string taskId,
-    3: required string jobDescription,
-    4: optional i64 creationTime,
-    5: optional status_models.JobStatus jobStatus,
-    6: optional string computeResourceConsumed,
-    7: optional string jobName,
-    8: optional string workingDir
+    3: required string processId,
+    4: required string jobDescription,
+    5: optional i64 creationTime,
+    6: optional status_models.JobStatus jobStatus,
+    7: optional string computeResourceConsumed,
+    8: optional string jobName,
+    9: optional string workingDir
 }