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());
