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/07/09 23:06:10 UTC

[1/2] airavata git commit: Application deployment id is not get saved with process

Repository: airavata
Updated Branches:
  refs/heads/master 8225ab556 -> 96480424d


Application deployment id is not get saved with process


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

Branch: refs/heads/master
Commit: 1f09dc278ea3c4d98081c047ef0e4a223d36aac7
Parents: 8225ab5
Author: Shameera Rathanyaka <sh...@gmail.com>
Authored: Thu Jul 9 17:02:56 2015 -0400
Committer: Shameera Rathanyaka <sh...@gmail.com>
Committed: Thu Jul 9 17:02:56 2015 -0400

----------------------------------------------------------------------
 .../registry/core/experiment/catalog/impl/ExperimentRegistry.java  | 2 +-
 .../core/experiment/catalog/utils/ThriftDataModelConversion.java   | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/1f09dc27/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 9b07d29..667c42d 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
@@ -677,7 +677,7 @@ public class ExperimentRegistry {
             processResource.setTaskDag(process.getTaskDag());
             processResource.setGatewayExecutionId(process.getGatewayExecutionId());
             processResource.setComputeResourceId(process.getComputeResourceId());
-            processResource.setApplicationInterfaceId(process.getApplicationInterfaceId());
+            processResource.setApplicationDeploymentId(process.getApplicationDeploymentId());
             if(process.isEnableEmailNotification()){
                 processResource.setEnableEmailNotification(true);
                 if(process.getEmailAddresses() != null){

http://git-wip-us.apache.org/repos/asf/airavata/blob/1f09dc27/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/utils/ThriftDataModelConversion.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/utils/ThriftDataModelConversion.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/utils/ThriftDataModelConversion.java
index e3e6a5f..ec9e287 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/utils/ThriftDataModelConversion.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/utils/ThriftDataModelConversion.java
@@ -344,7 +344,7 @@ public class ThriftDataModelConversion {
             processModel.setApplicationInterfaceId(processResource.getApplicationInterfaceId());
             processModel.setTaskDag(processResource.getTaskDag());
             processModel.setGatewayExecutionId(processResource.getGatewayExecutionId());
-            processModel.setApplicationInterfaceId(processResource.getApplicationInterfaceId());
+            processModel.setApplicationDeploymentId(processResource.getApplicationDeploymentId());
             processModel.setComputeResourceId(processResource.getComputeResourceId());
             processModel.setEnableEmailNotification(processResource.getEnableEmailNotification());
             if (processModel.isEnableEmailNotification()){


[2/2] airavata git commit: Completed process context populate function

Posted by sh...@apache.org.
Completed process context populate function


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

Branch: refs/heads/master
Commit: 96480424db6b5ecb95e635a2d03fa9361be096de
Parents: 1f09dc2
Author: Shameera Rathanyaka <sh...@gmail.com>
Authored: Thu Jul 9 17:06:06 2015 -0400
Committer: Shameera Rathanyaka <sh...@gmail.com>
Committed: Thu Jul 9 17:06:06 2015 -0400

----------------------------------------------------------------------
 .../gfac/core/context/ProcessContext.java       | 132 +++++++++++--------
 .../org/apache/airavata/gfac/impl/Factory.java  |  16 +--
 .../airavata/gfac/impl/GFacEngineImpl.java      |  16 ++-
 3 files changed, 92 insertions(+), 72 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/96480424/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 fe76bf5..07c26f8 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
@@ -23,7 +23,6 @@ package org.apache.airavata.gfac.core.context;
 
 import org.apache.airavata.common.utils.LocalEventPublisher;
 import org.apache.airavata.gfac.core.cluster.RemoteCluster;
-import org.apache.airavata.gfac.core.task.Task;
 import org.apache.airavata.model.appcatalog.appdeployment.ApplicationDeploymentDescription;
 import org.apache.airavata.model.appcatalog.appinterface.ApplicationInterfaceDescription;
 import org.apache.airavata.model.appcatalog.computeresource.ComputeResourceDescription;
@@ -44,7 +43,7 @@ import java.util.Map;
 
 public class ProcessContext {
 	// process model
-    private ExperimentCatalog experimentCatalog;
+	private ExperimentCatalog experimentCatalog;
 	private AppCatalog appCatalog;
 	private CuratorFramework curatorClient;
 	private LocalEventPublisher localEventPublisher;
@@ -54,21 +53,25 @@ public class ProcessContext {
 	private ProcessModel processModel;
 	private String workingDir;
 	private String inputDir;
-    private String outputDir;
+	private String outputDir;
 	private List<TaskContext> taskChain;
 	private GatewayResourceProfile gatewayResourceProfile;
-    private ComputeResourceDescription computeResourceDescription;
-    private ApplicationDeploymentDescription applicationDeploymentDescription;
-    private ApplicationInterfaceDescription applicationInterfaceDescription;
+	private ComputeResourceDescription computeResourceDescription;
+	private ApplicationDeploymentDescription applicationDeploymentDescription;
+	private ApplicationInterfaceDescription applicationInterfaceDescription;
 	private RemoteCluster remoteCluster;
 	private Map<String, String> sshProperties;
-    private String stdoutLocation;
-    private String stderrLocation;
+	private String stdoutLocation;
+	private String stderrLocation;
 	private JobSubmissionProtocol jobSubmissionProtocol;
 	private DataMovementProtocol dataMovementProtocol;
-    private JobModel jobModel;
+	private JobModel jobModel;
 	private ComputeResourcePreference computeResourcePreference;
 
+	/**
+	 * Note: process context property use lazy loading approach. In runtime you will see some properties as null
+	 * unless you have access it previously. Once that property access using the api,it will be set to correct value.
+	 */
 	public ProcessContext(String processId, String gatewayId, String tokenId) {
 		this.processId = processId;
 		this.gatewayId = gatewayId;
@@ -76,7 +79,6 @@ public class ProcessContext {
 	}
 
 
-	// Getters and Setters
 	public ExperimentCatalog getExperimentCatalog() {
 		return experimentCatalog;
 	}
@@ -130,6 +132,9 @@ public class ProcessContext {
 	}
 
 	public String getWorkingDir() {
+		if (workingDir == null) {
+			workingDir = computeResourcePreference.getScratchLocation();
+		}
 		return workingDir;
 	}
 
@@ -169,61 +174,68 @@ public class ProcessContext {
 		this.sshProperties = sshProperties;
 	}
 
-    public ComputeResourceDescription getComputeResourceDescription() {
-        return computeResourceDescription;
-    }
+	public ComputeResourceDescription getComputeResourceDescription() {
+		return computeResourceDescription;
+	}
 
-    public void setComputeResourceDescription(ComputeResourceDescription computeResourceDescription) {
-        this.computeResourceDescription = computeResourceDescription;
-    }
+	public void setComputeResourceDescription(ComputeResourceDescription computeResourceDescription) {
+		this.computeResourceDescription = computeResourceDescription;
+	}
 
-    public ApplicationDeploymentDescription getApplicationDeploymentDescription() {
-        return applicationDeploymentDescription;
-    }
+	public ApplicationDeploymentDescription getApplicationDeploymentDescription() {
+		return applicationDeploymentDescription;
+	}
 
-    public void setApplicationDeploymentDescription(ApplicationDeploymentDescription applicationDeploymentDescription) {
-        this.applicationDeploymentDescription = applicationDeploymentDescription;
-    }
+	public void setApplicationDeploymentDescription(ApplicationDeploymentDescription
+			                                                applicationDeploymentDescription) {
+		this.applicationDeploymentDescription = applicationDeploymentDescription;
+	}
 
-    public ApplicationInterfaceDescription getApplicationInterfaceDescription() {
-        return applicationInterfaceDescription;
-    }
+	public ApplicationInterfaceDescription getApplicationInterfaceDescription() {
+		return applicationInterfaceDescription;
+	}
 
-    public void setApplicationInterfaceDescription(ApplicationInterfaceDescription applicationInterfaceDescription) {
-        this.applicationInterfaceDescription = applicationInterfaceDescription;
-    }
+	public void setApplicationInterfaceDescription(ApplicationInterfaceDescription applicationInterfaceDescription) {
+		this.applicationInterfaceDescription = applicationInterfaceDescription;
+	}
 
-    public String getStdoutLocation() {
-        return stdoutLocation;
-    }
+	public String getStdoutLocation() {
+		return stdoutLocation;
+	}
 
-    public void setStdoutLocation(String stdoutLocation) {
-        this.stdoutLocation = stdoutLocation;
-    }
+	public void setStdoutLocation(String stdoutLocation) {
+		this.stdoutLocation = stdoutLocation;
+	}
 
-    public String getStderrLocation() {
-        return stderrLocation;
-    }
+	public String getStderrLocation() {
+		return stderrLocation;
+	}
 
-    public void setStderrLocation(String stderrLocation) {
-        this.stderrLocation = stderrLocation;
-    }
+	public void setStderrLocation(String stderrLocation) {
+		this.stderrLocation = stderrLocation;
+	}
 
-    public void setOutputDir(String outputDir) {
-        this.outputDir = outputDir;
-    }
+	public void setOutputDir(String outputDir) {
+		this.outputDir = outputDir;
+	}
 
-    public String getOutputDir() {
-        return outputDir;
-    }
+	public String getOutputDir() {
+		if (outputDir == null) {
+			outputDir = getWorkingDir();
+		}
+		return outputDir;
+	}
 
-    public String getInputDir() {
-        return inputDir;
-    }
+	public String getInputDir() {
+		if (inputDir == null) {
+			inputDir = getWorkingDir();
+		}
+		return inputDir;
+	}
 
-    public void setInputDir(String inputDir) {
-        this.inputDir = inputDir;
-    }
+	public void setInputDir(String inputDir) {
+		this.inputDir = inputDir;
+	}
 
 	public JobSubmissionProtocol getJobSubmissionProtocol() {
 		if (jobSubmissionProtocol == null) {
@@ -247,13 +259,13 @@ public class ProcessContext {
 		this.dataMovementProtocol = dataMovementProtocol;
 	}
 
-    public JobModel getJobModel() {
-        return jobModel;
-    }
+	public JobModel getJobModel() {
+		return jobModel;
+	}
 
-    public void setJobModel(JobModel jobModel) {
-        this.jobModel = jobModel;
-    }
+	public void setJobModel(JobModel jobModel) {
+		this.jobModel = jobModel;
+	}
 
 	public ComputeResourcePreference getComputeResourcePreference() {
 		return computeResourcePreference;
@@ -273,4 +285,8 @@ public class ProcessContext {
 			// TODO publish process status change.
 		}
 	}
+
+	public String getComputeResourceId() {
+		return getComputeResourceDescription().getComputeResourceId();
+	}
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/96480424/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 fc68bb1..8d2dfe1 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
@@ -36,12 +36,11 @@ 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.TaskContext;
+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.task.TaskException;
 import org.apache.airavata.gfac.impl.job.LSFJobConfiguration;
 import org.apache.airavata.gfac.impl.job.LSFOutputParser;
 import org.apache.airavata.gfac.impl.job.PBSJobConfiguration;
@@ -58,7 +57,6 @@ import org.apache.airavata.model.appcatalog.computeresource.LOCALSubmission;
 import org.apache.airavata.model.appcatalog.computeresource.ResourceJobManager;
 import org.apache.airavata.model.appcatalog.computeresource.ResourceJobManagerType;
 import org.apache.airavata.model.appcatalog.computeresource.SSHJobSubmission;
-import org.apache.airavata.model.appcatalog.gatewayprofile.ComputeResourcePreference;
 import org.apache.airavata.registry.core.experiment.catalog.impl.RegistryFactory;
 import org.apache.airavata.registry.cpi.AppCatalog;
 import org.apache.airavata.registry.cpi.AppCatalogException;
@@ -70,7 +68,6 @@ import org.apache.curator.framework.CuratorFrameworkFactory;
 import org.apache.curator.retry.ExponentialBackoffRetry;
 
 import java.lang.reflect.Constructor;
-import java.lang.reflect.InvocationTargetException;
 import java.util.Calendar;
 import java.util.Date;
 import java.util.HashMap;
@@ -175,24 +172,23 @@ public abstract class Factory {
 	}
 
 
-	public static RemoteCluster getRemoteCluster(ComputeResourcePreference cRP) throws GFacException,
+	public static RemoteCluster getRemoteCluster(ProcessContext processCtx) throws GFacException,
 			AppCatalogException, AiravataException {
 
-		String key = cRP.getPreferredJobSubmissionProtocol().toString() + ":" + cRP.getComputeResourceId();
+		String key = processCtx.getJobSubmissionProtocol().toString() + ":" + processCtx.getComputeResourceId();
 		RemoteCluster remoteCluster = remoteClusterMap.get(key);
 		if (remoteCluster == null) {
-			String hostName = Factory.getDefaultAppCatalog().getComputeResource().getComputeResource(cRP
+			String hostName = Factory.getDefaultAppCatalog().getComputeResource().getComputeResource(processCtx
 					.getComputeResourceId()).getHostName();
 			// fixme - read login user name from computeResourcePreference
 			ServerInfo serverInfo = new ServerInfo(ServerSettings.getSetting("ssh.username"), hostName);
 			List<JobSubmissionInterface> jobSubmissionInterfaces = Factory.getDefaultAppCatalog().getComputeResource()
-					.getComputeResource(cRP.getComputeResourceId())
-					.getJobSubmissionInterfaces();
+					.getComputeResource(processCtx.getComputeResourceId()) .getJobSubmissionInterfaces();
 
 			ResourceJobManager resourceJobManager = null;
 			JobSubmissionInterface jsInterface = null;
 			for (JobSubmissionInterface jobSubmissionInterface : jobSubmissionInterfaces) {
-				if (jobSubmissionInterface.getJobSubmissionProtocol() == cRP.getPreferredJobSubmissionProtocol()) {
+				if (jobSubmissionInterface.getJobSubmissionProtocol() == processCtx.getJobSubmissionProtocol()) {
 					jsInterface = jobSubmissionInterface;
 					break;
 				}

http://git-wip-us.apache.org/repos/asf/airavata/blob/96480424/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 5732ca5..299eb8a 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
@@ -74,13 +74,21 @@ public class GFacEngineImpl implements GFacEngine {
 			ProcessContext processContext = new ProcessContext(processId, gatewayId, tokenId);
 			AppCatalog appCatalog = Factory.getDefaultAppCatalog();
 			ExperimentCatalog expCatalog = Factory.getDefaultExpCatalog();
-			processContext.setProcessModel((ProcessModel) expCatalog.get(ExperimentCatalogModelType.PROCESS,
-					processId));
+			ProcessModel processModel = (ProcessModel) expCatalog.get(ExperimentCatalogModelType.PROCESS,
+					processId);
+			processContext.setProcessModel(processModel);
 			GatewayResourceProfile gatewayProfile = appCatalog.getGatewayProfile().getGatewayProfile(gatewayId);
 			processContext.setGatewayResourceProfile(gatewayProfile);
 			processContext.setComputeResourcePreference(appCatalog.getGatewayProfile().getComputeResourcePreference
-					(gatewayId, processContext.getProcessModel().getComputeResourceId()));
-			processContext.setRemoteCluster(Factory.getRemoteCluster(processContext.getComputeResourcePreference()));
+					(gatewayId, processModel.getComputeResourceId()));
+			processContext.setComputeResourceDescription(appCatalog.getComputeResource().getComputeResource
+					(processContext.getComputeResourcePreference().getComputeResourceId()));
+			processContext.setApplicationDeploymentDescription(appCatalog.getApplicationDeployment()
+					.getApplicationDeployement(processModel.getApplicationDeploymentId()));
+			processContext.setApplicationInterfaceDescription(appCatalog.getApplicationInterface()
+					.getApplicationInterface(processModel.getApplicationInterfaceId()));
+			processContext.setRemoteCluster(Factory.getRemoteCluster(processContext));
+
 			//
 			return processContext;
 		} catch (AppCatalogException e) {