Repository: airavata
Updated Branches:
  refs/heads/master fc2da5532 -> 4a86387c2


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/master
Commit: c916087a9c48b983b8183fec0bde7f2da9608c7c
Parents: 1ec5380
Author: raminder <[email protected]>
Authored: Wed Feb 4 16:29:32 2015 -0500
Committer: raminder <[email protected]>
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://[email protected]:/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://[email protected]:/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://[email protected]:/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("[email protected]");
             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());

Reply via email to