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) {