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/06/23 23:32:05 UTC

[1/2] airavata git commit: Added part of Process context population logic

Repository: airavata
Updated Branches:
  refs/heads/master e5d861e70 -> 013e8c090


Added part of Process context population logic


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

Branch: refs/heads/master
Commit: 726370bdee8f67a54f2017c8f8feecabd8ff37ad
Parents: 9f2c086
Author: Shameera Rathanyaka <sh...@gmail.com>
Authored: Tue Jun 23 17:31:30 2015 -0400
Committer: Shameera Rathanyaka <sh...@gmail.com>
Committed: Tue Jun 23 17:31:30 2015 -0400

----------------------------------------------------------------------
 .../core/cluster/AbstractRemoteCluster.java     |  17 ++-
 .../gfac/core/context/ProcessContext.java       |  16 +++
 .../org/apache/airavata/gfac/impl/Factory.java  | 138 ++++++++++++++++---
 .../airavata/gfac/impl/GFacEngineImpl.java      |  69 +++++-----
 .../airavata/gfac/impl/HPCRemoteCluster.java    |  20 ++-
 .../gfac/impl/job/LSFJobConfiguration.java      |  14 +-
 .../gfac/impl/job/PBSJobConfiguration.java      |  35 +++--
 .../gfac/impl/job/SlurmJobConfiguration.java    |  14 +-
 .../gfac/impl/job/UGEJobConfiguration.java      |  15 +-
 .../airavata/gfac/server/GfacServerHandler.java |   2 +-
 10 files changed, 224 insertions(+), 116 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/726370bd/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/cluster/AbstractRemoteCluster.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/cluster/AbstractRemoteCluster.java b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/cluster/AbstractRemoteCluster.java
index 3487224..12711f7 100644
--- a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/cluster/AbstractRemoteCluster.java
+++ b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/cluster/AbstractRemoteCluster.java
@@ -21,19 +21,22 @@
 package org.apache.airavata.gfac.core.cluster;
 
 import org.apache.airavata.gfac.core.JobManagerConfiguration;
+import org.apache.airavata.gfac.core.authentication.AuthenticationInfo;
 
 import java.util.Map;
 
-public class AbstractRemoteCluster {
+public abstract class AbstractRemoteCluster implements RemoteCluster {
 
-	ServerInfo serverInfo;
-	JobManagerConfiguration jobManagerConfiguration;
-	Map<String,String> authenticationParam;
+	protected final OutputParser outputParser;
+	protected final AuthenticationInfo authenticationInfo;
+	protected final ServerInfo serverInfo;
+	protected final JobManagerConfiguration jobManagerConfiguration;
 
-	public AbstractRemoteCluster(ServerInfo serverInfo, JobManagerConfiguration jobManagerConfiguration, Map<String,
-			String> authenticationParam) {
+	public AbstractRemoteCluster(ServerInfo serverInfo, JobManagerConfiguration jobManagerConfiguration, AuthenticationInfo
+			authenticationInfo) {
 		this.serverInfo = serverInfo;
 		this.jobManagerConfiguration = jobManagerConfiguration;
-		this.authenticationParam = authenticationParam;
+		this.authenticationInfo = authenticationInfo;
+		this.outputParser = jobManagerConfiguration.getParser();
 	}
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/726370bd/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 0ae69b8..3f8cf02 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
@@ -29,6 +29,7 @@ import org.apache.airavata.model.appcatalog.appinterface.ApplicationInterfaceDes
 import org.apache.airavata.model.appcatalog.computeresource.ComputeResourceDescription;
 import org.apache.airavata.model.appcatalog.computeresource.DataMovementProtocol;
 import org.apache.airavata.model.appcatalog.computeresource.JobSubmissionProtocol;
+import org.apache.airavata.model.appcatalog.gatewayprofile.ComputeResourcePreference;
 import org.apache.airavata.model.appcatalog.gatewayprofile.GatewayResourceProfile;
 import org.apache.airavata.model.job.JobModel;
 import org.apache.airavata.model.process.ProcessModel;
@@ -64,6 +65,7 @@ public class ProcessContext {
 	private JobSubmissionProtocol jobSubmissionProtocol;
 	private DataMovementProtocol dataMovementProtocol;
     private JobModel jobModel;
+	private ComputeResourcePreference computeResourcePreference;
 
 	public ProcessContext(String processId, String gatewayId, String tokenId) {
 		this.processId = processId;
@@ -222,6 +224,9 @@ public class ProcessContext {
     }
 
 	public JobSubmissionProtocol getJobSubmissionProtocol() {
+		if (jobSubmissionProtocol == null) {
+			jobSubmissionProtocol = computeResourcePreference.getPreferredJobSubmissionProtocol();
+		}
 		return jobSubmissionProtocol;
 	}
 
@@ -230,6 +235,9 @@ public class ProcessContext {
 	}
 
 	public DataMovementProtocol getDataMovementProtocol() {
+		if (dataMovementProtocol == null) {
+			dataMovementProtocol = computeResourcePreference.getPreferredDataMovementProtocol();
+		}
 		return dataMovementProtocol;
 	}
 
@@ -244,4 +252,12 @@ public class ProcessContext {
     public void setJobModel(JobModel jobModel) {
         this.jobModel = jobModel;
     }
+
+	public ComputeResourcePreference getComputeResourcePreference() {
+		return computeResourcePreference;
+	}
+
+	public void setComputeResourcePreference(ComputeResourcePreference computeResourcePreference) {
+		this.computeResourcePreference = computeResourcePreference;
+	}
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/726370bd/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 93c8de9..a2bebc3 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
@@ -28,10 +28,17 @@ import org.apache.airavata.common.utils.ServerSettings;
 import org.apache.airavata.gfac.core.GFacEngine;
 import org.apache.airavata.gfac.core.GFacException;
 import org.apache.airavata.gfac.core.JobManagerConfiguration;
+import org.apache.airavata.gfac.core.authentication.AuthenticationInfo;
 import org.apache.airavata.gfac.core.cluster.RemoteCluster;
 import org.apache.airavata.gfac.core.cluster.ServerInfo;
+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.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.impl.job.LSFJobConfiguration;
 import org.apache.airavata.gfac.impl.job.LSFOutputParser;
 import org.apache.airavata.gfac.impl.job.PBSJobConfiguration;
@@ -41,7 +48,14 @@ 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.monitor.email.EmailBasedMonitor;
+import org.apache.airavata.model.appcatalog.computeresource.DataMovementProtocol;
+import org.apache.airavata.model.appcatalog.computeresource.JobSubmissionInterface;
+import org.apache.airavata.model.appcatalog.computeresource.JobSubmissionProtocol;
+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;
@@ -52,20 +66,23 @@ import org.apache.curator.framework.CuratorFramework;
 import org.apache.curator.framework.CuratorFrameworkFactory;
 import org.apache.curator.retry.ExponentialBackoffRetry;
 
-import java.util.ArrayList;
 import java.util.Calendar;
 import java.util.Date;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
 public abstract class Factory {
 
 	private static GFacEngine engine;
-	private static Map<String, RemoteCluster> remoteClusterMap;
 	private static LocalEventPublisher localEventPublisher;
 	private static CuratorFramework curatorClient;
 	private static EmailBasedMonitor emailBasedMonitor;
 	private static Date startMonitorDate = Calendar.getInstance().getTime();
+	private static Map<String, RemoteCluster> remoteClusterMap = new HashMap<>();
+	private static Map<JobSubmissionProtocol, JobSubmissionTask> jobSubmissionTask = new HashMap<>();
+	private static Map<DataMovementProtocol, Task> dataMovementTask = new HashMap<>();
+	private static Map<ResourceJobManagerType, ResourceConfig> resources = new HashMap<>();
 
 	public static GFacEngine getGFacEngine() throws GFacException {
 		if (engine == null) {
@@ -78,10 +95,6 @@ public abstract class Factory {
 		return engine;
 	}
 
-	public static RemoteCluster getRemoteCluster(ServerInfo serverInfo) {
-		return remoteClusterMap.get(serverInfo.getHost());
-	}
-
 	public static ExperimentCatalog getDefaultExpCatalog() throws RegistryException {
 		return RegistryFactory.getDefaultExpCatalog();
 	}
@@ -119,7 +132,7 @@ public abstract class Factory {
 			return null; // TODO write a job monitor for this.
 		} else {
 			if (emailBasedMonitor == null) {
-				synchronized (EmailBasedMonitor.class){
+				synchronized (EmailBasedMonitor.class) {
 					if (emailBasedMonitor == null) {
 						emailBasedMonitor = new EmailBasedMonitor(resourceJobManagerType);
 						emailBasedMonitor.setDate(startMonitorDate);
@@ -131,24 +144,115 @@ public abstract class Factory {
 		}
 	}
 
-	public static JobManagerConfiguration getPBSJobManager(String installedPath) {
-		return new PBSJobConfiguration("PBSTemplate.xslt",".pbs", installedPath, new PBSOutputParser());
+	public static JobManagerConfiguration getJobManagerConfiguration(ResourceJobManager resourceJobManager) {
+		switch (resourceJobManager.getResourceJobManagerType()) {
+			case PBS:
+				return new PBSJobConfiguration("PBSTemplate.xslt", ".pbs", resourceJobManager.getJobManagerBinPath(),
+						resourceJobManager.getJobManagerCommands(), new PBSOutputParser());
+			case SLURM:
+				return new SlurmJobConfiguration("SLURMTemplate.xslt", ".slurm", resourceJobManager
+						.getJobManagerBinPath(), resourceJobManager.getJobManagerCommands(), new SlurmOutputParser());
+			case LSF:
+				return new LSFJobConfiguration("LSFTemplate.xslt", ".lsf", resourceJobManager.getJobManagerBinPath(),
+						resourceJobManager.getJobManagerCommands(), new LSFOutputParser());
+			case UGE:
+				return new UGEJobConfiguration("UGETemplate.xslt", ".pbs", resourceJobManager.getJobManagerBinPath(),
+						resourceJobManager.getJobManagerCommands(), new UGEOutputParser());
+
+			default:
+				return null;
+		}
+	}
+
+	public static HostScheduler getHostScheduler() {
+		return new DefaultHostScheduler();
+	}
+
+
+	public static RemoteCluster getRemoteCluster(ComputeResourcePreference cRP) throws GFacException,
+			AppCatalogException, AiravataException {
+
+		String key = cRP.getPreferredJobSubmissionProtocol().toString() + ":" + cRP.getComputeResourceId();
+		RemoteCluster remoteCluster = remoteClusterMap.get(key);
+		if (remoteCluster == null) {
+			String hostName = Factory.getDefaultAppCatalog().getComputeResource().getComputeResource(cRP
+					.getComputeResourceId()).getHostName();
+			ServerInfo serverInfo = new ServerInfo(cRP.getLoginUserName(), hostName);
+
+			List<JobSubmissionInterface> jobSubmissionInterfaces = Factory.getDefaultAppCatalog().getComputeResource()
+					.getComputeResource(cRP.getComputeResourceId())
+					.getJobSubmissionInterfaces();
+
+			ResourceJobManager resourceJobManager = null;
+			JobSubmissionInterface jsInterface = null;
+			for (JobSubmissionInterface jobSubmissionInterface : jobSubmissionInterfaces) {
+				if (jobSubmissionInterface.getJobSubmissionProtocol() == cRP.getPreferredJobSubmissionProtocol()) {
+					jsInterface = jobSubmissionInterface;
+				}
+			}
+			if (jsInterface == null) {
+				// TODO: throw an exception.
+			} else if (jsInterface.getJobSubmissionProtocol() == JobSubmissionProtocol.SSH) {
+				SSHJobSubmission sshJobSubmission = getDefaultAppCatalog().getComputeResource().getSSHJobSubmission
+						(jsInterface.getJobSubmissionInterfaceId());
+				resourceJobManager = sshJobSubmission.getResourceJobManager();
+			} else if (jsInterface.getJobSubmissionProtocol() == JobSubmissionProtocol.LOCAL) {
+				LOCALSubmission localSubmission = getDefaultAppCatalog().getComputeResource().getLocalJobSubmission
+						(jsInterface.getJobSubmissionInterfaceId());
+				resourceJobManager = localSubmission.getResourceJobManager();
+			} else {
+				// TODO : throw an not supported jobsubmission protocol exception. we only support SSH and LOCAL
+			}
+
+			if (resourceJobManager == null) {
+				// TODO throw an exception
+			}
+
+			JobManagerConfiguration jobManagerConfiguration = getJobManagerConfiguration(resourceJobManager);
+			AuthenticationInfo authenticationInfo = null;
+			remoteCluster = new HPCRemoteCluster(serverInfo, jobManagerConfiguration, null);
+			remoteClusterMap.put(key, remoteCluster);
+		}
+		return remoteCluster;
 	}
 
-	public static JobManagerConfiguration getSLURMJobManager(String installedPath) {
-		return new SlurmJobConfiguration("SLURMTemplate.xslt", ".slurm", installedPath, new SlurmOutputParser());
+	public static JobSubmissionTask getJobSubmissionTask(JobSubmissionProtocol jobSubmissionProtocol) throws
+			GFacException {
+		if (jobSubmissionTask == null) {
+			loadConfiguration();
+		}
+		return jobSubmissionTask.get(jobSubmissionProtocol);
 	}
 
-	public static JobManagerConfiguration getUGEJobManager(String installedPath) {
-		return new UGEJobConfiguration("UGETemplate.xslt", ".pbs", installedPath, new UGEOutputParser());
+	public static Task getDataMovementTask(DataMovementProtocol dataMovementProtocol) throws GFacException {
+		if (dataMovementTask == null) {
+			loadConfiguration();
+		}
+		return dataMovementTask.get(dataMovementProtocol);
 	}
 
-	public static JobManagerConfiguration getLSFJobManager(String installedPath) {
-		return new LSFJobConfiguration("LSFTemplate.xslt", ".lsf", installedPath, new LSFOutputParser());
+	public static ResourceConfig getResourceConfig(ResourceJobManagerType resourceJobManagerType) throws
+			GFacException {
+		if (resources == null) {
+			loadConfiguration();
+		}
+		return resources.get(resourceJobManagerType);
 	}
 
-	public static HostScheduler getHostScheduler() {
-		return new DefaultHostScheduler();
+	private static void loadConfiguration() throws GFacException {
+		GFacYamlConfigruation config = new GFacYamlConfigruation();
+		for (JobSubmitterTaskConfig jobSubmitterTaskConfig : config.getJobSbumitters()) {
+			jobSubmissionTask.put(jobSubmitterTaskConfig.getSubmissionProtocol(), null);
+		}
+
+		for (DataTransferTaskConfig dataTransferTaskConfig : config.getFileTransferTasks()) {
+			dataMovementTask.put(dataTransferTaskConfig.getTransferProtocol(), null);
+		}
+
+		for (ResourceConfig resourceConfig : config.getResourceConfiguration()) {
+			resources.put(resourceConfig.getJobManagerType(), resourceConfig);
+		}
 	}
 
+
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/726370bd/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 0819b4f..bcb569d 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
@@ -21,61 +21,55 @@
 
 package org.apache.airavata.gfac.impl;
 
+import org.apache.airavata.common.exception.AiravataException;
 import org.apache.airavata.gfac.core.GFacEngine;
 import org.apache.airavata.gfac.core.GFacException;
-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.ProcessContext;
 import org.apache.airavata.gfac.core.task.Task;
-import org.apache.airavata.model.appcatalog.computeresource.DataMovementProtocol;
-import org.apache.airavata.model.appcatalog.computeresource.JobSubmissionProtocol;
-import org.apache.airavata.model.appcatalog.computeresource.ResourceJobManagerType;
+import org.apache.airavata.model.appcatalog.gatewayprofile.GatewayResourceProfile;
 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.process.ProcessModel;
-import org.apache.airavata.model.task.TaskModel;
+import org.apache.airavata.registry.cpi.AppCatalog;
+import org.apache.airavata.registry.cpi.AppCatalogException;
+import org.apache.airavata.registry.cpi.ExperimentCatalog;
+import org.apache.airavata.registry.cpi.ExperimentCatalogModelType;
+import org.apache.airavata.registry.cpi.RegistryException;
 
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Comparator;
 import java.util.List;
-import java.util.Map;
 
 public class GFacEngineImpl implements GFacEngine {
-	private static GFacEngineImpl engine;
-	Map<JobSubmissionProtocol, Task> jobSubmissionTask;
-	Map<DataMovementProtocol, Task> dataMovementTask;
-	Map<ResourceJobManagerType, ResourceConfig> resources;
-
 
 	public GFacEngineImpl() throws GFacException {
-		GFacYamlConfigruation config = new GFacYamlConfigruation();
-		for (JobSubmitterTaskConfig jobSubmitterTaskConfig : config.getJobSbumitters()) {
-			jobSubmissionTask.put(jobSubmitterTaskConfig.getSubmissionProtocol(), null);
-		}
-
-		for (DataTransferTaskConfig dataTransferTaskConfig : config.getFileTransferTasks()) {
-			dataMovementTask.put(dataTransferTaskConfig.getTransferProtocol(), null);
-		}
 
-		for (ResourceConfig resourceConfig : config.getResourceConfiguration()) {
-			resources.put(resourceConfig.getJobManagerType(), resourceConfig);
-		}
 	}
 
 	@Override
 	public ProcessContext populateProcessContext(String experimentId, String processId, String gatewayId, String
 			tokenId) throws GFacException {
-		ProcessContext processContext = new ProcessContext(processId, gatewayId, tokenId);
-		processContext.setProcessModel(new ProcessModel());
-		// TODO: get process model from app catalog
-		// TODO: set datamovement protocol and jobsubmission protocol
-		// TODO: set up gatewayResourceProfile.
-		// TODO: set RemoteCluster
-		return processContext;
+		try {
+			ProcessContext processContext = new ProcessContext(processId, gatewayId, tokenId);
+			AppCatalog appCatalog = Factory.getDefaultAppCatalog();
+			ExperimentCatalog expCatalog = Factory.getDefaultExpCatalog();
+			processContext.setProcessModel((ProcessModel) expCatalog.get(ExperimentCatalogModelType.PROCESS, processId));
+			GatewayResourceProfile gatewayProfile = appCatalog.getGatewayProfile().getGatewayProfile(gatewayId);
+			processContext.setGatewayResourceProfile(gatewayProfile);
+			processContext.setComputeResourcePreference(appCatalog.getGatewayProfile().getComputeResourcePreference
+					(gatewayId, processContext.getProcessModel().getComputeResourceId()));
+			processContext.setRemoteCluster(Factory.getRemoteCluster(processContext.getComputeResourcePreference()));
+			//
+			return processContext;
+		} catch (AppCatalogException e) {
+			throw new GFacException("App catalog access exception ", e);
+		} catch (RegistryException e) {
+			throw new GFacException("Registry access exception", e);
+		} catch (AiravataException e) {
+			throw new GFacException("Remote cluster initialization error", e);
+		}
 	}
 
 	@Override
@@ -95,7 +89,7 @@ public class GFacEngineImpl implements GFacEngine {
 						break;
 					case URI:
 						// TODO : provide data staging data model
-						taskChain.add(dataMovementTask.get(processContext.getDataMovementProtocol()));
+						taskChain.add(Factory.getDataMovementTask(processContext.getDataMovementProtocol()));
 						break;
 					default:
 						// nothing to do
@@ -103,7 +97,7 @@ public class GFacEngineImpl implements GFacEngine {
 				}
 			}
 		}
-		taskChain.add(jobSubmissionTask.get(processContext.getJobSubmissionProtocol()));
+		taskChain.add(Factory.getJobSubmissionTask(processContext.getJobSubmissionProtocol()));
 		List<OutputDataObjectType> processOutputs = processContext.getProcessModel().getProcessOutputs();
 		for (OutputDataObjectType processOutput : processOutputs) {
 			DataType type = processOutput.getType();
@@ -114,7 +108,7 @@ public class GFacEngineImpl implements GFacEngine {
 					break;
 				case URI:
 					// TODO : Provide data staging data model
-					taskChain.add(dataMovementTask.get(processContext.getDataMovementProtocol()));
+					taskChain.add(Factory.getDataMovementTask(processContext.getDataMovementProtocol()));
 					break;
 			}
 		}
@@ -160,4 +154,9 @@ public class GFacEngineImpl implements GFacEngine {
 			}
 		});
 	}
+
+
+
+
+
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/726370bd/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/HPCRemoteCluster.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/HPCRemoteCluster.java b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/HPCRemoteCluster.java
index 645cb30..d847a4d 100644
--- a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/HPCRemoteCluster.java
+++ b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/HPCRemoteCluster.java
@@ -26,16 +26,16 @@ import com.jcraft.jsch.JSchException;
 import com.jcraft.jsch.Session;
 import com.jcraft.jsch.UserInfo;
 import org.apache.airavata.common.exception.AiravataException;
-import org.apache.airavata.gfac.core.authentication.AuthenticationInfo;
+import org.apache.airavata.gfac.core.JobManagerConfiguration;
 import org.apache.airavata.gfac.core.SSHApiException;
+import org.apache.airavata.gfac.core.authentication.AuthenticationInfo;
 import org.apache.airavata.gfac.core.authentication.SSHKeyAuthentication;
+import org.apache.airavata.gfac.core.cluster.AbstractRemoteCluster;
 import org.apache.airavata.gfac.core.cluster.CommandInfo;
 import org.apache.airavata.gfac.core.cluster.CommandOutput;
 import org.apache.airavata.gfac.core.cluster.OutputParser;
 import org.apache.airavata.gfac.core.cluster.RawCommandInfo;
-import org.apache.airavata.gfac.core.cluster.RemoteCluster;
 import org.apache.airavata.gfac.core.cluster.ServerInfo;
-import org.apache.airavata.gfac.core.JobManagerConfiguration;
 import org.apache.airavata.model.status.JobStatus;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -49,28 +49,24 @@ import java.util.Map;
 /**
  * One Remote cluster instance for each compute resource.
  */
-public class HPCRemoteCluster implements RemoteCluster{
+public class HPCRemoteCluster extends AbstractRemoteCluster{
     private static final Logger log = LoggerFactory.getLogger(HPCRemoteCluster.class);
 	private final SSHKeyAuthentication authentication;
-	private final ServerInfo serverInfo;
-	private final JobManagerConfiguration jobManagerConfiguration;
 	private final JSch jSch;
 	private Session session;
-	private OutputParser outputParser;
 
 	public HPCRemoteCluster(ServerInfo serverInfo, JobManagerConfiguration jobManagerConfiguration, AuthenticationInfo
-			authenticationInfo, OutputParser outputParser) throws AiravataException {
+			authenticationInfo) throws AiravataException {
+		super(serverInfo, jobManagerConfiguration, authenticationInfo);
 		try {
-			this.serverInfo = serverInfo;
-			this.jobManagerConfiguration = jobManagerConfiguration;
 			if (authenticationInfo instanceof SSHKeyAuthentication) {
 				authentication = (SSHKeyAuthentication) authenticationInfo;
 			} else {
 				throw new AiravataException("Support ssh key authentication only");
 			}
-			this.outputParser = outputParser;
 			jSch = new JSch();
-			jSch.addIdentity(authentication.getPrivateKeyFilePath(), authentication.getPublicKeyFilePath(), authentication
+			jSch.addIdentity(authentication.getPrivateKeyFilePath(), authentication.getPublicKeyFilePath(),
+					authentication
 					.getPassphrase().getBytes());
 			session = jSch.getSession(serverInfo.getUserName(), serverInfo.getHost(), serverInfo.getPort());
 			session.setUserInfo(new DefaultUserInfo(serverInfo.getUserName(), null, authentication.getPassphrase()));

http://git-wip-us.apache.org/repos/asf/airavata/blob/726370bd/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/job/LSFJobConfiguration.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/job/LSFJobConfiguration.java b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/job/LSFJobConfiguration.java
index b84b8ff..783fc56 100644
--- a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/job/LSFJobConfiguration.java
+++ b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/job/LSFJobConfiguration.java
@@ -23,28 +23,25 @@ package org.apache.airavata.gfac.impl.job;
 import org.apache.airavata.gfac.core.JobManagerConfiguration;
 import org.apache.airavata.gfac.core.cluster.OutputParser;
 import org.apache.airavata.gfac.core.cluster.RawCommandInfo;
+import org.apache.airavata.model.appcatalog.computeresource.JobManagerCommand;
 import org.apache.commons.io.FilenameUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import java.io.File;
+import java.util.Map;
 
 public class LSFJobConfiguration implements JobManagerConfiguration {
     private final static Logger logger = LoggerFactory.getLogger(LSFJobConfiguration.class);
-
+	private final Map<JobManagerCommand, String> jobMangerCommands;
     private String jobDescriptionTemplateName;
-
     private String scriptExtension;
-
     private String installedPath;
-
     private OutputParser parser;
 
-    public LSFJobConfiguration(){
-        // this can be used to construct and use setter methods to set all the params in order
-    }
     public LSFJobConfiguration(String jobDescriptionTemplateName,
-                                 String scriptExtension,String installedPath,OutputParser parser) {
+                               String scriptExtension, String installedPath, Map<JobManagerCommand, String>
+		                               jobManagerCommands, OutputParser parser) {
         this.jobDescriptionTemplateName = jobDescriptionTemplateName;
         this.scriptExtension = scriptExtension;
         this.parser = parser;
@@ -53,6 +50,7 @@ public class LSFJobConfiguration implements JobManagerConfiguration {
         } else {
             this.installedPath = installedPath + "/";
         }
+	    this.jobMangerCommands = jobManagerCommands;
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/airavata/blob/726370bd/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/job/PBSJobConfiguration.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/job/PBSJobConfiguration.java b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/job/PBSJobConfiguration.java
index d709514..1867095 100644
--- a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/job/PBSJobConfiguration.java
+++ b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/job/PBSJobConfiguration.java
@@ -23,35 +23,32 @@ package org.apache.airavata.gfac.impl.job;
 import org.apache.airavata.gfac.core.JobManagerConfiguration;
 import org.apache.airavata.gfac.core.cluster.OutputParser;
 import org.apache.airavata.gfac.core.cluster.RawCommandInfo;
+import org.apache.airavata.model.appcatalog.computeresource.JobManagerCommand;
 import org.apache.commons.io.FilenameUtils;
 
 import java.io.File;
+import java.util.Map;
 
 public class PBSJobConfiguration implements JobManagerConfiguration {
 
-    private String jobDescriptionTemplateName;
-
+	private final Map<JobManagerCommand, String> jobManagerCommands;
+	private String jobDescriptionTemplateName;
     private String scriptExtension;
-
     private String installedPath;
-
     private OutputParser parser;
 
-    public PBSJobConfiguration() {
-        // this can be used to construct and use setter methods to set all the params in order
-    }
-
-    public PBSJobConfiguration(String jobDescriptionTemplateName,
-                               String scriptExtension, String installedPath, OutputParser parser) {
-        this.jobDescriptionTemplateName = jobDescriptionTemplateName;
-        this.scriptExtension = scriptExtension;
-        this.parser = parser;
-        if (installedPath.endsWith("/")) {
-            this.installedPath = installedPath;
-        } else {
-            this.installedPath = installedPath + "/";
-        }
-    }
+	public PBSJobConfiguration(String jobDescriptionTemplateName, String scriptExtension, String installedPath,
+	                           Map<JobManagerCommand, String> jobManagerCommands, OutputParser parser) {
+		this.jobDescriptionTemplateName = jobDescriptionTemplateName;
+		this.scriptExtension = scriptExtension;
+		this.parser = parser;
+		if (installedPath.endsWith("/")) {
+			this.installedPath = installedPath;
+		} else {
+			this.installedPath = installedPath + "/";
+		}
+		this.jobManagerCommands = jobManagerCommands;
+	}
 
     public RawCommandInfo getCancelCommand(String jobID) {
         return new RawCommandInfo(this.installedPath + "qdel " + jobID);

http://git-wip-us.apache.org/repos/asf/airavata/blob/726370bd/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/job/SlurmJobConfiguration.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/job/SlurmJobConfiguration.java b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/job/SlurmJobConfiguration.java
index 354db8a..157b77c 100644
--- a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/job/SlurmJobConfiguration.java
+++ b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/job/SlurmJobConfiguration.java
@@ -23,25 +23,22 @@ package org.apache.airavata.gfac.impl.job;
 import org.apache.airavata.gfac.core.JobManagerConfiguration;
 import org.apache.airavata.gfac.core.cluster.OutputParser;
 import org.apache.airavata.gfac.core.cluster.RawCommandInfo;
+import org.apache.airavata.model.appcatalog.computeresource.JobManagerCommand;
 import org.apache.commons.io.FilenameUtils;
 
 import java.io.File;
+import java.util.Map;
 
 public class SlurmJobConfiguration implements JobManagerConfiguration {
-
+	private final Map<JobManagerCommand, String> jobManagerCommands;
     private String jobDescriptionTemplateName;
-
     private String scriptExtension;
-
     private String installedPath;
-
     private OutputParser parser;
 
-    public SlurmJobConfiguration(){
-        // this can be used to construct and use setter methods to set all the params in order
-    }
     public SlurmJobConfiguration(String jobDescriptionTemplateName,
-                                   String scriptExtension,String installedPath,OutputParser parser) {
+                                 String scriptExtension, String installedPath, Map<JobManagerCommand, String>
+		                                 jobManagerCommands, OutputParser parser) {
         this.jobDescriptionTemplateName = jobDescriptionTemplateName;
         this.scriptExtension = scriptExtension;
         this.parser = parser;
@@ -50,6 +47,7 @@ public class SlurmJobConfiguration implements JobManagerConfiguration {
         } else {
             this.installedPath = installedPath + "/";
         }
+	    this.jobManagerCommands = jobManagerCommands;
     }
 
     public RawCommandInfo getCancelCommand(String jobID) {

http://git-wip-us.apache.org/repos/asf/airavata/blob/726370bd/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/job/UGEJobConfiguration.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/job/UGEJobConfiguration.java b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/job/UGEJobConfiguration.java
index f9c60cb..aabdffb 100644
--- a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/job/UGEJobConfiguration.java
+++ b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/job/UGEJobConfiguration.java
@@ -23,26 +23,22 @@ package org.apache.airavata.gfac.impl.job;
 import org.apache.airavata.gfac.core.JobManagerConfiguration;
 import org.apache.airavata.gfac.core.cluster.OutputParser;
 import org.apache.airavata.gfac.core.cluster.RawCommandInfo;
+import org.apache.airavata.model.appcatalog.computeresource.JobManagerCommand;
 import org.apache.commons.io.FilenameUtils;
 
 import java.io.File;
+import java.util.Map;
 
 public class UGEJobConfiguration implements JobManagerConfiguration {
-
+	private final Map<JobManagerCommand, String> jobManagerCommands;
     private String jobDescriptionTemplateName;
-
     private String scriptExtension;
-
     private String installedPath;
-
     private OutputParser parser;
 
-    public UGEJobConfiguration() {
-        // this can be used to construct and use setter methods to set all the params in order
-    }
-
     public UGEJobConfiguration(String jobDescriptionTemplateName,
-                               String scriptExtension, String installedPath, OutputParser parser) {
+                               String scriptExtension, String installedPath, Map<JobManagerCommand, String>
+		                               jobManagerCommands, OutputParser parser) {
         this.jobDescriptionTemplateName = jobDescriptionTemplateName;
         this.scriptExtension = scriptExtension;
         this.parser = parser;
@@ -51,6 +47,7 @@ public class UGEJobConfiguration implements JobManagerConfiguration {
         } else {
             this.installedPath = installedPath + "/";
         }
+	    this.jobManagerCommands = jobManagerCommands;
     }
 
     public RawCommandInfo getCancelCommand(String jobID) {

http://git-wip-us.apache.org/repos/asf/airavata/blob/726370bd/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 a4a4874..8583a67 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
@@ -237,7 +237,7 @@ public class GfacServerHandler implements GfacService.Iface {
                     ExperimentStatus status = new ExperimentStatus();
                     status.setState(ExperimentState.EXECUTING);
                     status.setTimeOfStateChange(Calendar.getInstance().getTimeInMillis());
-                    experimentCatalog.update(ExperimentCatalogModelType.EXPERIMENT_STATUS, status, event.getExperimentId());
+                    Factory.getDefaultExpCatalog().update(ExperimentCatalogModelType.EXPERIMENT_STATUS, status, event.getExperimentId());
                     try {
 	                    GFacUtils.createExperimentNode(curatorClient, gfacServerName, event.getExperimentId(), message.getDeliveryTag(),
 			                    event.getTokenId());


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

Branch: refs/heads/master
Commit: 013e8c0905659ecb5170c29b81e698f1b999c1d7
Parents: 726370b e5d861e
Author: Shameera Rathanyaka <sh...@gmail.com>
Authored: Tue Jun 23 17:31:35 2015 -0400
Committer: Shameera Rathanyaka <sh...@gmail.com>
Committed: Tue Jun 23 17:31:35 2015 -0400

----------------------------------------------------------------------
 .../src/main/resources/lib/airavata/Airavata.h  | 152 ++++-----
 .../model/experiment/ExperimentModel.java       | 213 +++++++++----
 .../experiment/ExperimentSummaryModel.java      | 149 +++++++--
 .../event/ProcessStatusChangeRequestEvent.java  |  22 +-
 .../apache/airavata/gfac/core/GFacUtils.java    |  67 +++-
 .../gfac/impl/AiravataJobStatusUpdator.java     | 240 +++++++-------
 .../gfac/impl/AiravataProcessStatusUpdator.java | 254 ++++++++-------
 .../gfac/impl/AiravataTaskStatusUpdator.java    | 318 +++++++++----------
 .../core/impl/RabbitMQStatusConsumer.java       |   2 +-
 .../utils/ThriftDataModelConversion.java        |   6 +-
 .../airavata-api/experiment_model.thrift        |  42 +--
 .../airavata-api/messaging_events.thrift        |   2 +-
 12 files changed, 860 insertions(+), 607 deletions(-)
----------------------------------------------------------------------