You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by la...@apache.org on 2015/02/06 17:05:58 UTC
[45/53] [abbrv] airavata git commit: Added email notification in PBS
scripts. AIRAVATA-1553
Added email notification in PBS scripts. AIRAVATA-1553
Project: http://git-wip-us.apache.org/repos/asf/airavata/repo
Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/c916087a
Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/c916087a
Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/c916087a
Branch: refs/heads/gfac-storm
Commit: c916087a9c48b983b8183fec0bde7f2da9608c7c
Parents: 1ec5380
Author: raminder <ra...@apache.org>
Authored: Wed Feb 4 16:29:32 2015 -0500
Committer: raminder <ra...@apache.org>
Committed: Wed Feb 4 16:29:32 2015 -0500
----------------------------------------------------------------------
.../client/samples/CreateLaunchExperiment.java | 57 +++++++++++---------
.../tools/RegisterSampleApplications.java | 4 +-
.../airavata/common/utils/ServerSettings.java | 3 ++
.../server/src/main/resources/PBSTemplate.xslt | 5 ++
.../server/src/main/resources/SGETemplate.xslt | 5 ++
.../main/resources/airavata-server.properties | 5 +-
.../server/src/main/resources/gfac-config.xml | 4 +-
.../airavata/gfac/core/cpi/BetterGfacImpl.java | 3 +-
.../gfac/core/handler/AbstractHandler.java | 1 -
.../airavata/gfac/core/utils/GFacUtils.java | 23 ++++++++
.../gfac/gsissh/util/GFACGSISSHUtils.java | 23 +++++++-
.../airavata/gfac/ssh/util/GFACSSHUtils.java | 25 ++++++++-
.../airavata/gsi/ssh/api/job/JobDescriptor.java | 15 ++++++
.../apache/airavata/gsi/ssh/util/SSHUtils.java | 51 ++++--------------
14 files changed, 149 insertions(+), 75 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/airavata/blob/c916087a/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/CreateLaunchExperiment.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/CreateLaunchExperiment.java b/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/CreateLaunchExperiment.java
index d7f2831..b90e0ff 100644
--- a/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/CreateLaunchExperiment.java
+++ b/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/CreateLaunchExperiment.java
@@ -52,15 +52,18 @@ public class CreateLaunchExperiment {
//FIXME: Read from a config file
public static final String THRIFT_SERVER_HOST = "localhost";
public static final int THRIFT_SERVER_PORT = 8930;
+// public static final String THRIFT_SERVER_HOST = "gw127.iu.xsede.org";
+// public static final int THRIFT_SERVER_PORT = 9930;
+
private final static Logger logger = LoggerFactory.getLogger(CreateLaunchExperiment.class);
private static final String DEFAULT_USER = "default.registry.user";
private static final String DEFAULT_GATEWAY = "default.registry.gateway";
private static Airavata.Client airavataClient;
- private static String echoAppId = "Echo_New_65e3939d-3d0e-4308-af8d-d33e629395d3";
- private static String mpiAppId = "HelloMPI_da45305f-5d90-4a18-8716-8dd54c3b2376";
+ private static String echoAppId = "Echo_2e539083-665d-40fd-aaa2-4a751028326b";
+ private static String mpiAppId = "HelloMPI_720e159f-198f-4daa-96ca-9f5eafee92c9";
private static String wrfAppId = "WRF_7ad5da38-c08b-417c-a9ea-da9298839762";
- private static String amberAppId = "Amber_Sander_a43db05d-1d38-4c3b-930f-723f84acd67a";
+ private static String amberAppId = "Amber_eda074ea-223d-49d7-a942-6c8742249f36";
private static String gromacsAppId = "GROMACS_05622038-9edd-4cb1-824e-0b7cb993364b";
private static String espressoAppId = "ESPRESSO_10cc2820-5d0b-4c63-9546-8a8b595593c1";
private static String lammpsAppId = "LAMMPS_10893eb5-3840-438c-8446-d26c7ecb001f";
@@ -96,7 +99,7 @@ public class CreateLaunchExperiment {
// final String expId = createExperimentForSSHHost(airavata);
// final String expId = createEchoExperimentForFSD(airavataClient);
// final String expId = createMPIExperimentForFSD(airavataClient);
-// final String expId = createEchoExperimentForStampede(airavataClient);
+// final String expId = createEchoExperimentForStampede(airavataClient);
// final String expId = createEchoExperimentForTrestles(airavataClient);
// final String expId = createExperimentEchoForLocalHost(airavataClient);
// final String expId = createExperimentWRFTrestles(airavataClient);
@@ -111,6 +114,7 @@ public class CreateLaunchExperiment {
// final String expId = createExperimentNWCHEMStampede(airavataClient);
// final String expId = createExperimentTRINITYStampede(airavataClient);
// final String expId = createExperimentAUTODOCKStampede(airavataClient); // this is not working , we need to register AutoDock app on stampede
+// final String expId = "Ultrascan_ln_eb029947-391a-4ccf-8ace-9bafebe07cc0";
System.out.println("Experiment ID : " + expId);
// updateExperiment(airavata, expId);
@@ -1131,19 +1135,13 @@ public class CreateLaunchExperiment {
public static String createEchoExperimentForStampede(Airavata.Client client) throws TException {
try {
- List<InputDataObjectType> exInputs = new ArrayList<InputDataObjectType>();
- InputDataObjectType input = new InputDataObjectType();
- input.setName("Input_to_Echo");
- input.setType(DataType.STRING);
- input.setValue("Echoed_Output=Hello World");
- exInputs.add(input);
-
- List<OutputDataObjectType> exOut = new ArrayList<OutputDataObjectType>();
- OutputDataObjectType output = new OutputDataObjectType();
- output.setName("Echoed_Output");
- output.setType(DataType.STRING);
- output.setValue("");
- exOut.add(output);
+ List<InputDataObjectType> exInputs = client.getApplicationInputs(echoAppId);
+ for (InputDataObjectType inputDataObjectType : exInputs) {
+ if (inputDataObjectType.getName().equalsIgnoreCase("Input_to_Echo")) {
+ inputDataObjectType.setValue("Hello World");
+ }
+ }
+ List<OutputDataObjectType> exOut = client.getApplicationOutputs(echoAppId);
Project project = ProjectModelUtil.createProject("default", "admin", "test project");
String projectId = client.createProject(project);
@@ -1476,13 +1474,23 @@ public class CreateLaunchExperiment {
try {
List<InputDataObjectType> exInputs = client.getApplicationInputs(amberAppId);
+// for (InputDataObjectType inputDataObjectType : exInputs) {
+// if (inputDataObjectType.getName().equalsIgnoreCase("Heat_Restart_File")) {
+// inputDataObjectType.setValue("/Users/raminder/Documents/Sample/Amber/02_Heat.rst");
+// } else if (inputDataObjectType.getName().equalsIgnoreCase("Production_Control_File")) {
+// inputDataObjectType.setValue("/Users/raminder/Documents/Sample/Amber/03_Prod.in");
+// } else if (inputDataObjectType.getName().equalsIgnoreCase("Parameter_Topology_File")) {
+// inputDataObjectType.setValue("/Users/raminder/Documents/Sample/Amber/prmtop");
+// }
+//
+// }
for (InputDataObjectType inputDataObjectType : exInputs) {
if (inputDataObjectType.getName().equalsIgnoreCase("Heat_Restart_File")) {
- inputDataObjectType.setValue("/Users/raminder/Documents/Sample/Amber/02_Heat.rst");
+ inputDataObjectType.setValue("file://root@test-drive.airavata.org:/var/www/experimentData/admin101a290e6330f15a91349159553ae8b6bb1/02_Heat.rst");
} else if (inputDataObjectType.getName().equalsIgnoreCase("Production_Control_File")) {
- inputDataObjectType.setValue("/Users/raminder/Documents/Sample/Amber/03_Prod.in");
+ inputDataObjectType.setValue("file://root@test-drive.airavata.org:/var/www/experimentData/admin101a290e6330f15a91349159553ae8b6bb1/03_Prod.in");
} else if (inputDataObjectType.getName().equalsIgnoreCase("Parameter_Topology_File")) {
- inputDataObjectType.setValue("/Users/raminder/Documents/Sample/Amber/prmtop");
+ inputDataObjectType.setValue("file://root@test-drive.airavata.org:/var/www/experimentData/admin101a290e6330f15a91349159553ae8b6bb1/prmtop");
}
}
@@ -1547,7 +1555,8 @@ public class CreateLaunchExperiment {
Experiment simpleExperiment =
ExperimentModelUtil.createSimpleExperiment(projectId, "admin", "sshEchoExperiment", "SimpleEchoBR", amberAppId, exInputs);
simpleExperiment.setExperimentOutputs(exOut);
-
+ simpleExperiment.setEnableEmailNotification(true);
+ simpleExperiment.addToEmailAddresses("raman@ogce.org");
Map<String, String> computeResources = airavataClient.getAvailableAppInterfaceComputeResources(amberAppId);
if (computeResources != null && computeResources.size() != 0) {
for (String id : computeResources.keySet()) {
@@ -1582,9 +1591,9 @@ public class CreateLaunchExperiment {
public static void launchExperiment(Airavata.Client client, String expId)
throws TException {
try {
- String sshTokenId = "2c308fa9-99f8-4baa-92e4-d062e311483c";
- String gsisshTokenId = "61abd2ff-f92b-4901-a077-07b51abe2c5d";
- client.launchExperiment(expId, sshTokenId);
+ String tokenId = "5f116091-0ad3-4ab6-9df7-6ac909f21f8b";
+// String tokenId ="aaaaaa";
+ client.launchExperiment(expId, tokenId);
} catch (ExperimentNotFoundException e) {
logger.error("Error occured while launching the experiment...", e.getMessage());
throw new ExperimentNotFoundException(e);
http://git-wip-us.apache.org/repos/asf/airavata/blob/c916087a/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/tools/RegisterSampleApplications.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/tools/RegisterSampleApplications.java b/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/tools/RegisterSampleApplications.java
index 13603d5..3111347 100644
--- a/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/tools/RegisterSampleApplications.java
+++ b/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/tools/RegisterSampleApplications.java
@@ -134,11 +134,11 @@ public class RegisterSampleApplications {
registerLocalHost();
//Register all compute hosts
-// registerSampleApplications.registerXSEDEHosts();
+ registerSampleApplications.registerXSEDEHosts();
//Register Gateway Resource Preferences
-// registerSampleApplications.registerGatewayResourceProfile();
+ registerSampleApplications.registerGatewayResourceProfile();
//Register all application modules
registerSampleApplications.registerAppModules();
http://git-wip-us.apache.org/repos/asf/airavata/blob/c916087a/modules/commons/utils/src/main/java/org/apache/airavata/common/utils/ServerSettings.java
----------------------------------------------------------------------
diff --git a/modules/commons/utils/src/main/java/org/apache/airavata/common/utils/ServerSettings.java b/modules/commons/utils/src/main/java/org/apache/airavata/common/utils/ServerSettings.java
index 39261e2..988ad3d 100644
--- a/modules/commons/utils/src/main/java/org/apache/airavata/common/utils/ServerSettings.java
+++ b/modules/commons/utils/src/main/java/org/apache/airavata/common/utils/ServerSettings.java
@@ -54,6 +54,9 @@ public class ServerSettings extends ApplicationSettings {
private static final String ACTIVITY_PUBLISHER = "activity.publisher";
private static final String ACTIVITY_LISTENERS = "activity.listeners";
public static final String PUBLISH_RABBITMQ = "publish.rabbitmq";
+ public static final String JOB_NOTIFICATION_ENABLE = "job.notification.enable";
+ public static final String JOB_NOTIFICATION_EMAILIDS = "job.notification.emailids";
+ public static final String JOB_NOTIFICATION_FLAGS = "job.notification.flags";
private static boolean stopAllThreads = false;
http://git-wip-us.apache.org/repos/asf/airavata/blob/c916087a/modules/configuration/server/src/main/resources/PBSTemplate.xslt
----------------------------------------------------------------------
diff --git a/modules/configuration/server/src/main/resources/PBSTemplate.xslt b/modules/configuration/server/src/main/resources/PBSTemplate.xslt
index b82b249..aa3cccc 100644
--- a/modules/configuration/server/src/main/resources/PBSTemplate.xslt
+++ b/modules/configuration/server/src/main/resources/PBSTemplate.xslt
@@ -31,6 +31,11 @@
</xsl:when>
</xsl:choose>
<xsl:choose>
+ <xsl:when test="ns:mailAddress">
+#PBS -M <xsl:value-of select="ns:mailAddress"/>
+ </xsl:when>
+ </xsl:choose>
+ <xsl:choose>
<xsl:when test="ns:acountString">
#PBS -A <xsl:value-of select="ns:acountString"/>
</xsl:when>
http://git-wip-us.apache.org/repos/asf/airavata/blob/c916087a/modules/configuration/server/src/main/resources/SGETemplate.xslt
----------------------------------------------------------------------
diff --git a/modules/configuration/server/src/main/resources/SGETemplate.xslt b/modules/configuration/server/src/main/resources/SGETemplate.xslt
index d2bf871..15c6d14 100644
--- a/modules/configuration/server/src/main/resources/SGETemplate.xslt
+++ b/modules/configuration/server/src/main/resources/SGETemplate.xslt
@@ -27,6 +27,11 @@
</xsl:when>
</xsl:choose>
<xsl:choose>
+ <xsl:when test="ns:mailAddress">
+#$ -M <xsl:value-of select="ns:mailAddress"/>
+ </xsl:when>
+ </xsl:choose>
+ <xsl:choose>
<xsl:when test="ns:acountString">
#$ -A <xsl:value-of select="ns:acountString"/>
</xsl:when>
http://git-wip-us.apache.org/repos/asf/airavata/blob/c916087a/modules/configuration/server/src/main/resources/airavata-server.properties
----------------------------------------------------------------------
diff --git a/modules/configuration/server/src/main/resources/airavata-server.properties b/modules/configuration/server/src/main/resources/airavata-server.properties
index 6280acd..3754096 100644
--- a/modules/configuration/server/src/main/resources/airavata-server.properties
+++ b/modules/configuration/server/src/main/resources/airavata-server.properties
@@ -88,8 +88,9 @@ orchestrator.server.min.threads=50
# and "e" (send mail when job terminates). The default is "a" if not specified.
###########################################################################
-job.notification.enable=false
-job.notification.emailid=
+job.notification.enable=true
+#Provide comma separated email ids as a string if more than one
+job.notification.emailids=
job.notification.flags=abe
###########################################################################
http://git-wip-us.apache.org/repos/asf/airavata/blob/c916087a/modules/configuration/server/src/main/resources/gfac-config.xml
----------------------------------------------------------------------
diff --git a/modules/configuration/server/src/main/resources/gfac-config.xml b/modules/configuration/server/src/main/resources/gfac-config.xml
index 4cc1a55..ced84c8 100644
--- a/modules/configuration/server/src/main/resources/gfac-config.xml
+++ b/modules/configuration/server/src/main/resources/gfac-config.xml
@@ -86,7 +86,7 @@
<Handler class="org.apache.airavata.gfac.ssh.handler.SSHInputHandler"/>
</InHandlers>
<OutHandlers>
- <Handler class="org.apache.airavata.gfac.ssh.handler.SSHOutputHandler"/>
+ <Handler class="org.apache.airavata.gfac.ssh.handler.NewSSHOutputHandler"/>
<!--Handler class="org.apache.airavata.gfac.ssh.handler.AdvancedSCPOutputHandler">
<property name="privateKeyPath" value="/Users/lahirugunathilake/.ssh/id_dsa"/>
<property name="publicKeyPath" value="/Users/lahirugunathilake/.ssh/id_dsa.pub"/>
@@ -113,7 +113,7 @@
<Handler class="org.apache.airavata.gfac.gsissh.handler.GSISSHInputHandler"/>
</InHandlers>
<OutHandlers>
- <Handler class="org.apache.airavata.gfac.gsissh.handler.GSISSHOutputHandler"/>
+ <Handler class="org.apache.airavata.gfac.gsissh.handler.NewGSISSHOutputHandler"/>
<!--Handler class="org.apache.airavata.gfac.ssh.handler.AdvancedSCPOutputHandler">
<property name="privateKeyPath" value="/Users/lahirugunathilake/.ssh/id_dsa"/>
<property name="publicKeyPath" value="/Users/lahirugunathilake/.ssh/id_dsa.pub"/>
http://git-wip-us.apache.org/repos/asf/airavata/blob/c916087a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/cpi/BetterGfacImpl.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/cpi/BetterGfacImpl.java b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/cpi/BetterGfacImpl.java
index 9c4decd..00d313c 100644
--- a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/cpi/BetterGfacImpl.java
+++ b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/cpi/BetterGfacImpl.java
@@ -276,7 +276,8 @@ public class BetterGfacImpl implements GFac,Watcher {
jobExecutionContext.setTaskData(taskData);
jobExecutionContext.setGatewayID(gatewayID);
jobExecutionContext.setAppCatalog(appCatalog);
-
+
+
List<JobDetails> jobDetailsList = taskData.getJobDetailsList();
//FIXME: Following for loop only set last jobDetails element to the jobExecutionContext
for(JobDetails jDetails:jobDetailsList){
http://git-wip-us.apache.org/repos/asf/airavata/blob/c916087a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/handler/AbstractHandler.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/handler/AbstractHandler.java b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/handler/AbstractHandler.java
index f4f5d7c..b6cc359 100644
--- a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/handler/AbstractHandler.java
+++ b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/handler/AbstractHandler.java
@@ -46,7 +46,6 @@ public abstract class AbstractHandler implements GFacHandler {
}
}
}
-
public MonitorPublisher getPublisher() {
return publisher;
}
http://git-wip-us.apache.org/repos/asf/airavata/blob/c916087a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/utils/GFacUtils.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/utils/GFacUtils.java b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/utils/GFacUtils.java
index a3db181..cbbce48 100644
--- a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/utils/GFacUtils.java
+++ b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/utils/GFacUtils.java
@@ -55,6 +55,7 @@ import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import javax.xml.xpath.*;
+
import java.io.*;
import java.net.InetAddress;
import java.net.URISyntaxException;
@@ -1316,4 +1317,26 @@ public class GFacUtils {
}
}
+ /**
+ * To convert list to separated value
+ * @param listOfStrings
+ * @param separator
+ * @return
+ */
+ public static String listToCsv(List<String> listOfStrings, char separator) {
+ StringBuilder sb = new StringBuilder();
+
+ // all but last
+ for(int i = 0; i < listOfStrings.size() - 1 ; i++) {
+ sb.append(listOfStrings.get(i));
+ sb.append(separator);
+ }
+
+ // last string, no separator
+ if(listOfStrings.size() > 0){
+ sb.append(listOfStrings.get(listOfStrings.size()-1));
+ }
+
+ return sb.toString();
+ }
}
http://git-wip-us.apache.org/repos/asf/airavata/blob/c916087a/modules/gfac/gfac-gsissh/src/main/java/org/apache/airavata/gfac/gsissh/util/GFACGSISSHUtils.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-gsissh/src/main/java/org/apache/airavata/gfac/gsissh/util/GFACGSISSHUtils.java b/modules/gfac/gfac-gsissh/src/main/java/org/apache/airavata/gfac/gsissh/util/GFACGSISSHUtils.java
index a3c99ba..7a432e8 100644
--- a/modules/gfac/gfac-gsissh/src/main/java/org/apache/airavata/gfac/gsissh/util/GFACGSISSHUtils.java
+++ b/modules/gfac/gfac-gsissh/src/main/java/org/apache/airavata/gfac/gsissh/util/GFACGSISSHUtils.java
@@ -173,6 +173,28 @@ public class GFACGSISSHUtils {
}
}
}
+ try {
+ if(ServerSettings.getSetting(ServerSettings.JOB_NOTIFICATION_ENABLE).equalsIgnoreCase("true")){
+ jobDescriptor.setMailOptions(ServerSettings.getSetting(ServerSettings.JOB_NOTIFICATION_FLAGS));
+ String emailids = ServerSettings.getSetting(ServerSettings.JOB_NOTIFICATION_EMAILIDS);
+
+ if(jobExecutionContext.getTaskData().isSetEmailAddresses()){
+ List<String> emailList = jobExecutionContext.getTaskData().getEmailAddresses();
+ String elist = GFacUtils.listToCsv(emailList, ',');
+ if(emailids != null && !emailids.isEmpty()){
+ emailids = emailids +"," + elist;
+ }else{
+ emailids = elist;
+ }
+ }
+ if(emailids != null && !emailids.isEmpty()){
+ logger.info("Email list: "+ emailids);
+ jobDescriptor.setMailAddress(emailids);
+ }
+ }
+ } catch (ApplicationSettingsException e) {
+ logger.error("ApplicationSettingsException : " +e.getLocalizedMessage());
+ }
// this is common for any application descriptor
jobDescriptor.setCallBackIp(ServerSettings.getIp());
jobDescriptor.setCallBackPort(ServerSettings.getSetting(org.apache.airavata.common.utils.Constants.GFAC_SERVER_PORT, "8950"));
@@ -258,7 +280,6 @@ public class GFACGSISSHUtils {
jobDescriptor.setUserName(((GSISSHAbstractCluster) cluster).getServerInfo().getUserName());
jobDescriptor.setShellName("/bin/bash");
jobDescriptor.setAllEnvExport(true);
- jobDescriptor.setMailOptions("n");
jobDescriptor.setOwner(((PBSCluster) cluster).getServerInfo().getUserName());
ComputationalResourceScheduling taskScheduling = taskData.getTaskScheduling();
http://git-wip-us.apache.org/repos/asf/airavata/blob/c916087a/modules/gfac/gfac-ssh/src/main/java/org/apache/airavata/gfac/ssh/util/GFACSSHUtils.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-ssh/src/main/java/org/apache/airavata/gfac/ssh/util/GFACSSHUtils.java b/modules/gfac/gfac-ssh/src/main/java/org/apache/airavata/gfac/ssh/util/GFACSSHUtils.java
index c9d5f0f..cb73752 100644
--- a/modules/gfac/gfac-ssh/src/main/java/org/apache/airavata/gfac/ssh/util/GFACSSHUtils.java
+++ b/modules/gfac/gfac-ssh/src/main/java/org/apache/airavata/gfac/ssh/util/GFACSSHUtils.java
@@ -229,7 +229,30 @@ public class GFACSSHUtils {
}
}
}
+ try {
+ if(ServerSettings.getSetting(ServerSettings.JOB_NOTIFICATION_ENABLE).equalsIgnoreCase("true")){
+ jobDescriptor.setMailOptions(ServerSettings.getSetting(ServerSettings.JOB_NOTIFICATION_FLAGS));
+ String emailids = ServerSettings.getSetting(ServerSettings.JOB_NOTIFICATION_EMAILIDS);
+
+ if(taskData.isEnableEmailNotification()){
+ List<String> emailList = jobExecutionContext.getTaskData().getEmailAddresses();
+ String elist = GFacUtils.listToCsv(emailList, ',');
+ if(emailids != null && !emailids.isEmpty()){
+ emailids = emailids +"," + elist;
+ }else{
+ emailids = elist;
+ }
+ }
+ if(emailids != null && !emailids.isEmpty()){
+ logger.info("Email list: "+ emailids);
+ jobDescriptor.setMailAddress(emailids);
+ }
+ }
+ } catch (ApplicationSettingsException e) {
+ logger.error("ApplicationSettingsException : " +e.getLocalizedMessage());
+ }
// this is common for any application descriptor
+
jobDescriptor.setCallBackIp(ServerSettings.getIp());
jobDescriptor.setCallBackPort(ServerSettings.getSetting(org.apache.airavata.common.utils.Constants.GFAC_SERVER_PORT, "8950"));
jobDescriptor.setInputDirectory(jobExecutionContext.getInputDir());
@@ -314,7 +337,6 @@ public class GFACSSHUtils {
jobDescriptor.setUserName(((GSISSHAbstractCluster) cluster).getServerInfo().getUserName());
jobDescriptor.setShellName("/bin/bash");
jobDescriptor.setAllEnvExport(true);
- jobDescriptor.setMailOptions("n");
jobDescriptor.setOwner(((PBSCluster) cluster).getServerInfo().getUserName());
ComputationalResourceScheduling taskScheduling = taskData.getTaskScheduling();
@@ -409,5 +431,4 @@ public class GFACSSHUtils {
}
return key;
}
-
}
http://git-wip-us.apache.org/repos/asf/airavata/blob/c916087a/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/api/job/JobDescriptor.java
----------------------------------------------------------------------
diff --git a/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/api/job/JobDescriptor.java b/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/api/job/JobDescriptor.java
index 557702d..23b3efe 100644
--- a/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/api/job/JobDescriptor.java
+++ b/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/api/job/JobDescriptor.java
@@ -439,6 +439,21 @@ public class JobDescriptor {
return this.jobDescriptionDocument.getJobDescriptor().getCallBackPort();
}
+ public void setMailType(String emailType) {
+ this.getJobDescriptorDocument().getJobDescriptor().setMailType(emailType);
+ }
+
+ public String getMailType() {
+ return this.getJobDescriptorDocument().getJobDescriptor().getMailType();
+ }
+ public void setMailAddress(String emailAddress) {
+ this.getJobDescriptorDocument().getJobDescriptor().setMailAddress(emailAddress);
+ }
+
+ public String getMailAddress() {
+ return this.getJobDescriptorDocument().getJobDescriptor().getMailAddress();
+ }
+
}
http://git-wip-us.apache.org/repos/asf/airavata/blob/c916087a/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/util/SSHUtils.java
----------------------------------------------------------------------
diff --git a/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/util/SSHUtils.java b/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/util/SSHUtils.java
index bef2cc7..d4af5d4 100644
--- a/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/util/SSHUtils.java
+++ b/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/util/SSHUtils.java
@@ -633,57 +633,28 @@ public class SSHUtils {
if (buf[0] == ' ') break;
filesize = filesize * 10L + (long) (buf[0] - '0');
}
-
-// String file = null;
-// for (int i = 0; ; i++) {
-// in.read(buf, i, 1);
-// if (buf[i] == (byte) 0x0a) {
-// file = new String(buf, 0, i);
-// break;
-// }
-// }
-
- //System.out.println("filesize="+filesize+", file="+file);
-
- // send '\0'
- buf[0] = 0;
- out.write(buf, 0, 1);
- out.flush();
-
+ int foo;
while (true) {
- int len = in.read(buf, 0, buf.length);
+ if (buf.length < filesize) foo = buf.length;
+ else foo = (int) filesize;
+
+ int len = in.read(buf, 0, foo);
if (len <= 0) break;
out.write(buf, 0, len);
}
-// // read a content of lfile
-// fos = new FileOutputStream(prefix == null ? localFile : prefix + file);
-// int foo;
-// while (true) {
-// if (buf.length < filesize) foo = buf.length;
-// else foo = (int) filesize;
-// foo = in.read(buf, 0, foo);
-// if (foo < 0) {
-// // error
-// break;
-// }
-// fos.write(buf, 0, foo);
-// filesize -= foo;
-// if (filesize == 0L) break;
-// }
-// fos.close();
-// fos = null;
-
+ // send '\0'
+ buf[0] = 0;
+ out.write(buf, 0, 1);
+ out.flush();
if (checkAck(in) != 0) {
String error = "Error transfering the file content";
log.error(error);
throw new SSHApiException(error);
}
- // send '\0'
- buf[0] = 0;
- out.write(buf, 0, 1);
- out.flush();
}
+ out.close();
+
stdOutReader.onOutput(channel);
if (stdOutReader.getStdErrorString().contains("scp:")) {
throw new SSHApiException(stdOutReader.getStdErrorString());