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/04/10 17:50:25 UTC
[1/5] airavata git commit: adding more customizations to test
framework - AIRAVATA-1656
Repository: airavata
Updated Branches:
refs/heads/emailMonitoring 66ac6b928 -> 93d4421b7
adding more customizations to test framework - AIRAVATA-1656
Project: http://git-wip-us.apache.org/repos/asf/airavata/repo
Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/fdb3fc91
Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/fdb3fc91
Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/fdb3fc91
Branch: refs/heads/emailMonitoring
Commit: fdb3fc918c771c1a7735891af2cd0e760039e7ad
Parents: bf0fddb
Author: Chathuri Wimalasena <ka...@gmail.com>
Authored: Wed Apr 8 21:57:01 2015 -0400
Committer: Chathuri Wimalasena <ka...@gmail.com>
Committed: Wed Apr 8 21:57:01 2015 -0400
----------------------------------------------------------------------
.../test-suite/multi-tenanted-airavata/README | 2 +-
.../test-suite/multi-tenanted-airavata/pom.xml | 29 ++++
.../ApplicationRegister.java | 147 +++++++++++--------
.../ComputeResourceRegister.java | 2 +-
.../ExperimentExecution.java | 140 ++++++++++--------
.../FrameworkBootstrapping.java | 2 +-
.../multitenantedairavata/GatewayRegister.java | 23 ++-
.../utils/FrameworkUtils.java | 54 +++++++
.../utils/TestFrameworkConstants.java | 3 +
.../main/resources/test-framework.properties | 3 +
10 files changed, 275 insertions(+), 130 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/airavata/blob/fdb3fc91/modules/test-suite/multi-tenanted-airavata/README
----------------------------------------------------------------------
diff --git a/modules/test-suite/multi-tenanted-airavata/README b/modules/test-suite/multi-tenanted-airavata/README
index da5abd2..b1e8398 100644
--- a/modules/test-suite/multi-tenanted-airavata/README
+++ b/modules/test-suite/multi-tenanted-airavata/README
@@ -45,7 +45,7 @@ How to run
* result.file.location
* Amber input file locations (02_Heat.rst_location, 03_Prod.in_location, prmtop_location)
3. To run the jar, in the command line type :
- java -Xmx1024m -jar multi-tenanted-airavata-0.15-SNAPSHOT-jar-with-dependencies.jar -regApps
+ java -cp ./:./resources:multi-tenanted-airavata-0.15-SNAPSHOT-jar-with-dependencies.jar org.apache.airavata.testsuite.multitenantedairavata.FrameworkBootstrapping -regApps
You can provide different parameters.
-regApps = to register gateways, generate SSH keys, register applications
http://git-wip-us.apache.org/repos/asf/airavata/blob/fdb3fc91/modules/test-suite/multi-tenanted-airavata/pom.xml
----------------------------------------------------------------------
diff --git a/modules/test-suite/multi-tenanted-airavata/pom.xml b/modules/test-suite/multi-tenanted-airavata/pom.xml
index 9068996..a853d35 100644
--- a/modules/test-suite/multi-tenanted-airavata/pom.xml
+++ b/modules/test-suite/multi-tenanted-airavata/pom.xml
@@ -98,4 +98,33 @@
<scope>test</scope>
</dependency>
</dependencies>
+ <build>
+ <plugins>
+ <plugin>
+ <artifactId>maven-assembly-plugin</artifactId>
+ <configuration>
+ <archive>
+ <manifest>
+ <mainClass>org.apache.airavata.testsuite.multitenantedairavata.FrameworkBootstrapping</mainClass>
+ </manifest>
+ <manifestEntries>
+ <Class-Path>./resources/</Class-Path>
+ </manifestEntries>
+ </archive>
+ <descriptorRefs>
+ <descriptorRef>jar-with-dependencies</descriptorRef>
+ </descriptorRefs>
+ </configuration>
+ <executions>
+ <execution>
+ <id>make-assembly</id> <!-- this is used for inheritance merges -->
+ <phase>package</phase> <!-- bind to the packaging phase -->
+ <goals>
+ <goal>single</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
</project>
http://git-wip-us.apache.org/repos/asf/airavata/blob/fdb3fc91/modules/test-suite/multi-tenanted-airavata/src/main/java/org/apache/airavata/testsuite/multitenantedairavata/ApplicationRegister.java
----------------------------------------------------------------------
diff --git a/modules/test-suite/multi-tenanted-airavata/src/main/java/org/apache/airavata/testsuite/multitenantedairavata/ApplicationRegister.java b/modules/test-suite/multi-tenanted-airavata/src/main/java/org/apache/airavata/testsuite/multitenantedairavata/ApplicationRegister.java
index fa87d83..0a92f2e 100644
--- a/modules/test-suite/multi-tenanted-airavata/src/main/java/org/apache/airavata/testsuite/multitenantedairavata/ApplicationRegister.java
+++ b/modules/test-suite/multi-tenanted-airavata/src/main/java/org/apache/airavata/testsuite/multitenantedairavata/ApplicationRegister.java
@@ -30,6 +30,7 @@ import org.apache.airavata.model.appcatalog.appinterface.DataType;
import org.apache.airavata.model.appcatalog.appinterface.InputDataObjectType;
import org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType;
import org.apache.airavata.model.workspace.Gateway;
+import org.apache.airavata.testsuite.multitenantedairavata.utils.FrameworkUtils;
import org.apache.airavata.testsuite.multitenantedairavata.utils.TestFrameworkConstants;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -48,6 +49,7 @@ public class ApplicationRegister {
private String stampedeResourceId;
private String trestlesResourceId;
private String br2ResourceId;
+ private List<String> gatewaysToAvoid;
public ApplicationRegister(Airavata.Client airavata) throws Exception {
@@ -55,6 +57,8 @@ public class ApplicationRegister {
allGateways = getAllGateways(airavata);
applicationInterfaceListPerGateway = new HashMap<String, String>();
applicationDeployementListPerGateway = new HashMap<String, String>();
+ FrameworkUtils frameworkUtils = FrameworkUtils.getInstance();
+ gatewaysToAvoid = frameworkUtils.getGatewayListToAvoid();
}
public List<Gateway> getAllGateways(Airavata.Client client) throws Exception{
@@ -84,42 +88,52 @@ public class ApplicationRegister {
}
protected void addAmberApplication () throws Exception{
- for (Gateway gateway : allGateways){
- // add amber module
- String amberModuleId = airavata.registerApplicationModule(gateway.getGatewayId(),
- createApplicationModule(TestFrameworkConstants.AppcatalogConstants.AMBER_APP_NAME, "12.0", TestFrameworkConstants.AppcatalogConstants.AMBER_DESCRIPTION));
- System.out.println("Amber Module Id " + amberModuleId);
-
- // add amber interface
- String amberInterfaceId = registerAmberInterface(gateway, amberModuleId);
- applicationInterfaceListPerGateway.put(amberInterfaceId, gateway.getGatewayId());
-
- // add amber deployment
- List<String> moduleLoadCMDs = new ArrayList<String>();
- moduleLoadCMDs.add("module load amber");
- ApplicationDeploymentDescription amberStampedeDeployment = createApplicationDeployment(amberModuleId, stampedeResourceId,
- "/opt/apps/intel13/mvapich2_1_9/amber/12.0/bin/sander.MPI -O", ApplicationParallelismType.MPI,
- TestFrameworkConstants.AppcatalogConstants.AMBER_DESCRIPTION, moduleLoadCMDs, null, null);
- String amberStampedeAppDeployId = airavata.registerApplicationDeployment(gateway.getGatewayId(),amberStampedeDeployment);
-
- String amberTrestlesAppDeployId = airavata.registerApplicationDeployment(gateway.getGatewayId(),
- createApplicationDeployment(amberModuleId, trestlesResourceId,
- "/opt/amber/bin/sander.MPI -O", ApplicationParallelismType.MPI,
- TestFrameworkConstants.AppcatalogConstants.AMBER_DESCRIPTION, moduleLoadCMDs, null, null));
-
- List<String> amberModuleLoadCMDsBr2 = new ArrayList<String>();
- amberModuleLoadCMDsBr2.add("module load amber/gnu/mpi/12");
- amberModuleLoadCMDsBr2.add("module swap PrgEnv-cray PrgEnv-gnu");
- String amberBr2AppDeployId = airavata.registerApplicationDeployment(gateway.getGatewayId(),
- createApplicationDeployment(amberModuleId, br2ResourceId,
- "/N/soft/cle4/amber/gnu/mpi/12/amber12/bin/sander.MPI -O", ApplicationParallelismType.MPI,
- TestFrameworkConstants.AppcatalogConstants.AMBER_DESCRIPTION, amberModuleLoadCMDsBr2, null, null));
-
- applicationDeployementListPerGateway.put(amberStampedeAppDeployId, gateway.getGatewayId());
- applicationDeployementListPerGateway.put(amberTrestlesAppDeployId, gateway.getGatewayId());
- applicationDeployementListPerGateway.put(amberBr2AppDeployId, gateway.getGatewayId());
+ for (Gateway gateway : allGateways) {
+ boolean isgatewayValid = true;
+ for (String ovoidGateway : gatewaysToAvoid){
+ if (gateway.getGatewayId().equals(ovoidGateway)){
+ isgatewayValid = false;
+ break;
+ }
+ }
+ if (isgatewayValid) {
+ // add amber module
+ String amberModuleId = airavata.registerApplicationModule(gateway.getGatewayId(),
+ createApplicationModule(TestFrameworkConstants.AppcatalogConstants.AMBER_APP_NAME, "12.0", TestFrameworkConstants.AppcatalogConstants.AMBER_DESCRIPTION));
+ System.out.println("Amber Module Id " + amberModuleId);
+
+ // add amber interface
+ String amberInterfaceId = registerAmberInterface(gateway, amberModuleId);
+ applicationInterfaceListPerGateway.put(amberInterfaceId, gateway.getGatewayId());
+
+ // add amber deployment
+ List<String> moduleLoadCMDs = new ArrayList<String>();
+ moduleLoadCMDs.add("module load amber");
+ ApplicationDeploymentDescription amberStampedeDeployment = createApplicationDeployment(amberModuleId, stampedeResourceId,
+ "/opt/apps/intel13/mvapich2_1_9/amber/12.0/bin/sander.MPI -O", ApplicationParallelismType.MPI,
+ TestFrameworkConstants.AppcatalogConstants.AMBER_DESCRIPTION, moduleLoadCMDs, null, null);
+ String amberStampedeAppDeployId = airavata.registerApplicationDeployment(gateway.getGatewayId(), amberStampedeDeployment);
+
+ String amberTrestlesAppDeployId = airavata.registerApplicationDeployment(gateway.getGatewayId(),
+ createApplicationDeployment(amberModuleId, trestlesResourceId,
+ "/opt/amber/bin/sander.MPI -O", ApplicationParallelismType.MPI,
+ TestFrameworkConstants.AppcatalogConstants.AMBER_DESCRIPTION, moduleLoadCMDs, null, null));
+
+ List<String> amberModuleLoadCMDsBr2 = new ArrayList<String>();
+ amberModuleLoadCMDsBr2.add("module load amber/gnu/mpi/12");
+ amberModuleLoadCMDsBr2.add("module swap PrgEnv-cray PrgEnv-gnu");
+ String amberBr2AppDeployId = airavata.registerApplicationDeployment(gateway.getGatewayId(),
+ createApplicationDeployment(amberModuleId, br2ResourceId,
+ "/N/soft/cle4/amber/gnu/mpi/12/amber12/bin/sander.MPI -O", ApplicationParallelismType.MPI,
+ TestFrameworkConstants.AppcatalogConstants.AMBER_DESCRIPTION, amberModuleLoadCMDsBr2, null, null));
+
+ applicationDeployementListPerGateway.put(amberStampedeAppDeployId, gateway.getGatewayId());
+ applicationDeployementListPerGateway.put(amberTrestlesAppDeployId, gateway.getGatewayId());
+ applicationDeployementListPerGateway.put(amberBr2AppDeployId, gateway.getGatewayId());
+ }
}
+
}
private String registerAmberInterface(Gateway gateway, String amberModuleId) throws org.apache.thrift.TException {
@@ -187,34 +201,43 @@ public class ApplicationRegister {
protected void addEchoApplication() throws Exception{
for (Gateway gateway : allGateways){
- // add echo module
- String echoModuleId = airavata.registerApplicationModule(gateway.getGatewayId(),
- createApplicationModule(TestFrameworkConstants.AppcatalogConstants.ECHO_NAME, "1.0", TestFrameworkConstants.AppcatalogConstants.ECHO_DESCRIPTION));
- System.out.println("Echo Module Id " + echoModuleId);
-
- // add amber interface
- String echoInterfaceId = registerEchoInterface(gateway, echoModuleId);
- applicationInterfaceListPerGateway.put(echoInterfaceId, gateway.getGatewayId());
-
- // add amber deployment
- String echoStampedeAppDeployId = airavata.registerApplicationDeployment(gateway.getGatewayId(),
- createApplicationDeployment(echoModuleId, stampedeResourceId,
- "/home1/01437/ogce/production/app_wrappers/echo_wrapper.sh", ApplicationParallelismType.SERIAL,
- TestFrameworkConstants.AppcatalogConstants.ECHO_DESCRIPTION, null, null, null));
-
- String echoTrestlesAppDeployId = airavata.registerApplicationDeployment(gateway.getGatewayId(),
- createApplicationDeployment(echoModuleId, trestlesResourceId,
- "/home/ogce/production/app_wrappers/echo_wrapper.sh", ApplicationParallelismType.SERIAL,
- TestFrameworkConstants.AppcatalogConstants.ECHO_DESCRIPTION, null, null, null));
-
- String echoBr2AppDeployId = airavata.registerApplicationDeployment(gateway.getGatewayId(),
- createApplicationDeployment(echoModuleId, br2ResourceId,
- "/N/u/cgateway/BigRed2/production/app_wrappers/echo_wrapper.sh", ApplicationParallelismType.SERIAL,
- TestFrameworkConstants.AppcatalogConstants.ECHO_DESCRIPTION, null, null, null));
-
- applicationDeployementListPerGateway.put(echoStampedeAppDeployId, gateway.getGatewayId());
- applicationDeployementListPerGateway.put(echoTrestlesAppDeployId, gateway.getGatewayId());
- applicationDeployementListPerGateway.put(echoBr2AppDeployId, gateway.getGatewayId());
+ boolean isgatewayValid = true;
+ for (String ovoidGateway : gatewaysToAvoid){
+ if (gateway.getGatewayId().equals(ovoidGateway)){
+ isgatewayValid = false;
+ break;
+ }
+ }
+ if (isgatewayValid) {
+ // add echo module
+ String echoModuleId = airavata.registerApplicationModule(gateway.getGatewayId(),
+ createApplicationModule(TestFrameworkConstants.AppcatalogConstants.ECHO_NAME, "1.0", TestFrameworkConstants.AppcatalogConstants.ECHO_DESCRIPTION));
+ System.out.println("Echo Module Id " + echoModuleId);
+
+ // add amber interface
+ String echoInterfaceId = registerEchoInterface(gateway, echoModuleId);
+ applicationInterfaceListPerGateway.put(echoInterfaceId, gateway.getGatewayId());
+
+ // add amber deployment
+ String echoStampedeAppDeployId = airavata.registerApplicationDeployment(gateway.getGatewayId(),
+ createApplicationDeployment(echoModuleId, stampedeResourceId,
+ "/home1/01437/ogce/production/app_wrappers/echo_wrapper.sh", ApplicationParallelismType.SERIAL,
+ TestFrameworkConstants.AppcatalogConstants.ECHO_DESCRIPTION, null, null, null));
+
+ String echoTrestlesAppDeployId = airavata.registerApplicationDeployment(gateway.getGatewayId(),
+ createApplicationDeployment(echoModuleId, trestlesResourceId,
+ "/home/ogce/production/app_wrappers/echo_wrapper.sh", ApplicationParallelismType.SERIAL,
+ TestFrameworkConstants.AppcatalogConstants.ECHO_DESCRIPTION, null, null, null));
+
+ String echoBr2AppDeployId = airavata.registerApplicationDeployment(gateway.getGatewayId(),
+ createApplicationDeployment(echoModuleId, br2ResourceId,
+ "/N/u/cgateway/BigRed2/production/app_wrappers/echo_wrapper.sh", ApplicationParallelismType.SERIAL,
+ TestFrameworkConstants.AppcatalogConstants.ECHO_DESCRIPTION, null, null, null));
+
+ applicationDeployementListPerGateway.put(echoStampedeAppDeployId, gateway.getGatewayId());
+ applicationDeployementListPerGateway.put(echoTrestlesAppDeployId, gateway.getGatewayId());
+ applicationDeployementListPerGateway.put(echoBr2AppDeployId, gateway.getGatewayId());
+ }
}
}
http://git-wip-us.apache.org/repos/asf/airavata/blob/fdb3fc91/modules/test-suite/multi-tenanted-airavata/src/main/java/org/apache/airavata/testsuite/multitenantedairavata/ComputeResourceRegister.java
----------------------------------------------------------------------
diff --git a/modules/test-suite/multi-tenanted-airavata/src/main/java/org/apache/airavata/testsuite/multitenantedairavata/ComputeResourceRegister.java b/modules/test-suite/multi-tenanted-airavata/src/main/java/org/apache/airavata/testsuite/multitenantedairavata/ComputeResourceRegister.java
index ebb1451..c6e2513 100644
--- a/modules/test-suite/multi-tenanted-airavata/src/main/java/org/apache/airavata/testsuite/multitenantedairavata/ComputeResourceRegister.java
+++ b/modules/test-suite/multi-tenanted-airavata/src/main/java/org/apache/airavata/testsuite/multitenantedairavata/ComputeResourceRegister.java
@@ -109,7 +109,7 @@ public class ComputeResourceRegister {
} else if (resourceName.contains("bigred2")) {
//Register BigRedII
bigredResourceId = registerComputeHost("bigred2.uits.iu.edu", "IU BigRed II Cluster",
- ResourceJobManagerType.PBS, "push", "/opt/torque/torque-4.2.3.1/bin/", SecurityProtocol.SSH_KEYS, 22, "aprun -n");
+ ResourceJobManagerType.PBS, "push", "/opt/torque/torque-5.0.1/bin/", SecurityProtocol.SSH_KEYS, 22, "aprun -n");
System.out.println("BigredII Resource Id is " + bigredResourceId);
}
}
http://git-wip-us.apache.org/repos/asf/airavata/blob/fdb3fc91/modules/test-suite/multi-tenanted-airavata/src/main/java/org/apache/airavata/testsuite/multitenantedairavata/ExperimentExecution.java
----------------------------------------------------------------------
diff --git a/modules/test-suite/multi-tenanted-airavata/src/main/java/org/apache/airavata/testsuite/multitenantedairavata/ExperimentExecution.java b/modules/test-suite/multi-tenanted-airavata/src/main/java/org/apache/airavata/testsuite/multitenantedairavata/ExperimentExecution.java
index 807dd1d..cc6bca6 100644
--- a/modules/test-suite/multi-tenanted-airavata/src/main/java/org/apache/airavata/testsuite/multitenantedairavata/ExperimentExecution.java
+++ b/modules/test-suite/multi-tenanted-airavata/src/main/java/org/apache/airavata/testsuite/multitenantedairavata/ExperimentExecution.java
@@ -38,6 +38,7 @@ import org.apache.airavata.model.messaging.event.MessageType;
import org.apache.airavata.model.util.ExperimentModelUtil;
import org.apache.airavata.model.workspace.Project;
import org.apache.airavata.model.workspace.experiment.*;
+import org.apache.airavata.testsuite.multitenantedairavata.utils.FrameworkUtils;
import org.apache.airavata.testsuite.multitenantedairavata.utils.PropertyFileType;
import org.apache.airavata.testsuite.multitenantedairavata.utils.PropertyReader;
import org.apache.airavata.testsuite.multitenantedairavata.utils.TestFrameworkConstants;
@@ -62,6 +63,8 @@ public class ExperimentExecution {
private Map<String, List<Project>> projectsMap;
private PropertyReader propertyReader;
private PrintWriter resultWriter;
+ private String testUser;
+ private List<String> gatewaysToAvoid;
public ExperimentExecution(Airavata.Client airavata,
Map<String, String> tokenMap ) throws Exception {
@@ -69,6 +72,9 @@ public class ExperimentExecution {
this.csTokens = tokenMap;
this.appInterfaceMap = getApplicationMap(tokenMap);
this.propertyReader = new PropertyReader();
+ FrameworkUtils frameworkUtils = FrameworkUtils.getInstance();
+ testUser = frameworkUtils.getTestUserName();
+ gatewaysToAvoid = frameworkUtils.getGatewayListToAvoid();
this.projectsMap = getProjects(tokenMap);
this.experimentsWithTokens = new HashMap<String, String>();
this.experimentsWithGateway = new HashMap<String, String>();
@@ -118,9 +124,15 @@ public class ExperimentExecution {
try {
if (tokenMap != null && !tokenMap.isEmpty()){
for (String gatewayId : tokenMap.keySet()){
- if (!gatewayId.equals("php_reference_gateway")){
- String userName = "testUser_" + gatewayId;
- List<Project> allUserProjects = airavata.getAllUserProjects(gatewayId, userName);
+ boolean isgatewayValid = true;
+ for (String ovoidGateway : gatewaysToAvoid){
+ if (gatewayId.equals(ovoidGateway)){
+ isgatewayValid = false;
+ break;
+ }
+ }
+ if (isgatewayValid){
+ List<Project> allUserProjects = airavata.getAllUserProjects(gatewayId, testUser);
projectsMap.put(gatewayId, allUserProjects);
}
}
@@ -287,9 +299,8 @@ public class ExperimentExecution {
if (projectsPerGateway != null && !projectsPerGateway.isEmpty()){
projectID = projectsPerGateway.get(0).getProjectID();
}
- String userName = "testUser_" + gatewayId;
Experiment simpleExperiment =
- ExperimentModelUtil.createSimpleExperiment(projectID, userName, "Amber Experiment", "Amber Experiment run", appId, applicationInputs);
+ ExperimentModelUtil.createSimpleExperiment(projectID, testUser, "Amber Experiment", "Amber Experiment run", appId, applicationInputs);
simpleExperiment.setExperimentOutputs(appOutputs);
String experimentId;
Map<String, String> computeResources = airavata.getAvailableAppInterfaceComputeResources(appId);
@@ -341,69 +352,76 @@ public class ExperimentExecution {
public void createEchoExperiment () throws Exception{
try {
for (String gatewayId : csTokens.keySet()) {
- if (!gatewayId.equals("php_reference_gateway")){
- String token = csTokens.get(gatewayId);
- Map<String, String> appsWithNames = appInterfaceMap.get(gatewayId);
- for (String appId : appsWithNames.keySet()) {
- String appName = appsWithNames.get(appId);
- if (appName.equals(TestFrameworkConstants.AppcatalogConstants.ECHO_NAME)) {
- List<InputDataObjectType> applicationInputs = airavata.getApplicationInputs(appId);
- List<OutputDataObjectType> appOutputs = airavata.getApplicationOutputs(appId);
- for (InputDataObjectType inputDataObjectType : applicationInputs) {
- if (inputDataObjectType.getName().equalsIgnoreCase("input_to_Echo")) {
- inputDataObjectType.setValue("Hello World !!!");
+ boolean isgatewayValid = true;
+ for (String ovoidGateway : gatewaysToAvoid){
+ if (gatewayId.equals(ovoidGateway)){
+ isgatewayValid = false;
+ break;
+ }
+ }
+ if (isgatewayValid) {
+ String token = csTokens.get(gatewayId);
+ Map<String, String> appsWithNames = appInterfaceMap.get(gatewayId);
+ for (String appId : appsWithNames.keySet()) {
+ String appName = appsWithNames.get(appId);
+ if (appName.equals(TestFrameworkConstants.AppcatalogConstants.ECHO_NAME)) {
+ List<InputDataObjectType> applicationInputs = airavata.getApplicationInputs(appId);
+ List<OutputDataObjectType> appOutputs = airavata.getApplicationOutputs(appId);
+ for (InputDataObjectType inputDataObjectType : applicationInputs) {
+ if (inputDataObjectType.getName().equalsIgnoreCase("input_to_Echo")) {
+ inputDataObjectType.setValue("Hello World !!!");
+ }
}
- }
- List<Project> projectsPerGateway = projectsMap.get(gatewayId);
- String projectID = null;
- if (projectsPerGateway != null && !projectsPerGateway.isEmpty()){
- projectID = projectsPerGateway.get(0).getProjectID();
- }
- Experiment simpleExperiment =
- ExperimentModelUtil.createSimpleExperiment(projectID, "admin", "Echo Experiment", "Echo Experiment run", appId, applicationInputs);
- simpleExperiment.setExperimentOutputs(appOutputs);
- String experimentId;
- Map<String, String> computeResources = airavata.getAvailableAppInterfaceComputeResources(appId);
- if (computeResources != null && computeResources.size() != 0) {
- for (String id : computeResources.keySet()) {
- String resourceName = computeResources.get(id);
- if (resourceName.equals(TestFrameworkConstants.AppcatalogConstants.TRESTLES_RESOURCE_NAME)) {
- ComputationalResourceScheduling scheduling = ExperimentModelUtil.createComputationResourceScheduling(id, 4, 1, 1, "normal", 20, 0, 1, null);
- UserConfigurationData userConfigurationData = new UserConfigurationData();
- userConfigurationData.setAiravataAutoSchedule(false);
- userConfigurationData.setOverrideManualScheduledParams(false);
- userConfigurationData.setComputationalResourceScheduling(scheduling);
- simpleExperiment.setUserConfigurationData(userConfigurationData);
- experimentId = airavata.createExperiment(gatewayId, simpleExperiment);
- experimentsWithTokens.put(experimentId, token);
- experimentsWithGateway.put(experimentId, gatewayId);
- } else if (resourceName.equals(TestFrameworkConstants.AppcatalogConstants.STAMPEDE_RESOURCE_NAME)) {
- ComputationalResourceScheduling scheduling = ExperimentModelUtil.createComputationResourceScheduling(id, 4, 1, 1, "normal", 20, 0, 1, null);
- UserConfigurationData userConfigurationData = new UserConfigurationData();
- userConfigurationData.setAiravataAutoSchedule(false);
- userConfigurationData.setOverrideManualScheduledParams(false);
- userConfigurationData.setComputationalResourceScheduling(scheduling);
- simpleExperiment.setUserConfigurationData(userConfigurationData);
- experimentId = airavata.createExperiment(gatewayId, simpleExperiment);
- experimentsWithTokens.put(experimentId, token);
- experimentsWithGateway.put(experimentId, gatewayId);
- }else if (resourceName.equals(TestFrameworkConstants.AppcatalogConstants.BR2_RESOURCE_NAME)) {
- ComputationalResourceScheduling scheduling = ExperimentModelUtil.createComputationResourceScheduling(id, 4, 1, 1, "normal", 20, 0, 1, null);
- UserConfigurationData userConfigurationData = new UserConfigurationData();
- userConfigurationData.setAiravataAutoSchedule(false);
- userConfigurationData.setOverrideManualScheduledParams(false);
- userConfigurationData.setComputationalResourceScheduling(scheduling);
- simpleExperiment.setUserConfigurationData(userConfigurationData);
- experimentId = airavata.createExperiment(gatewayId, simpleExperiment);
- experimentsWithTokens.put(experimentId, token);
- experimentsWithGateway.put(experimentId, gatewayId);
+ List<Project> projectsPerGateway = projectsMap.get(gatewayId);
+ String projectID = null;
+ if (projectsPerGateway != null && !projectsPerGateway.isEmpty()) {
+ projectID = projectsPerGateway.get(0).getProjectID();
+ }
+ Experiment simpleExperiment =
+ ExperimentModelUtil.createSimpleExperiment(projectID, "admin", "Echo Experiment", "Echo Experiment run", appId, applicationInputs);
+ simpleExperiment.setExperimentOutputs(appOutputs);
+ String experimentId;
+ Map<String, String> computeResources = airavata.getAvailableAppInterfaceComputeResources(appId);
+ if (computeResources != null && computeResources.size() != 0) {
+ for (String id : computeResources.keySet()) {
+ String resourceName = computeResources.get(id);
+ if (resourceName.equals(TestFrameworkConstants.AppcatalogConstants.TRESTLES_RESOURCE_NAME)) {
+ ComputationalResourceScheduling scheduling = ExperimentModelUtil.createComputationResourceScheduling(id, 4, 1, 1, "normal", 20, 0, 1, null);
+ UserConfigurationData userConfigurationData = new UserConfigurationData();
+ userConfigurationData.setAiravataAutoSchedule(false);
+ userConfigurationData.setOverrideManualScheduledParams(false);
+ userConfigurationData.setComputationalResourceScheduling(scheduling);
+ simpleExperiment.setUserConfigurationData(userConfigurationData);
+ experimentId = airavata.createExperiment(gatewayId, simpleExperiment);
+ experimentsWithTokens.put(experimentId, token);
+ experimentsWithGateway.put(experimentId, gatewayId);
+ } else if (resourceName.equals(TestFrameworkConstants.AppcatalogConstants.STAMPEDE_RESOURCE_NAME)) {
+ ComputationalResourceScheduling scheduling = ExperimentModelUtil.createComputationResourceScheduling(id, 4, 1, 1, "normal", 20, 0, 1, null);
+ UserConfigurationData userConfigurationData = new UserConfigurationData();
+ userConfigurationData.setAiravataAutoSchedule(false);
+ userConfigurationData.setOverrideManualScheduledParams(false);
+ userConfigurationData.setComputationalResourceScheduling(scheduling);
+ simpleExperiment.setUserConfigurationData(userConfigurationData);
+ experimentId = airavata.createExperiment(gatewayId, simpleExperiment);
+ experimentsWithTokens.put(experimentId, token);
+ experimentsWithGateway.put(experimentId, gatewayId);
+ } else if (resourceName.equals(TestFrameworkConstants.AppcatalogConstants.BR2_RESOURCE_NAME)) {
+ ComputationalResourceScheduling scheduling = ExperimentModelUtil.createComputationResourceScheduling(id, 4, 1, 1, "normal", 20, 0, 1, null);
+ UserConfigurationData userConfigurationData = new UserConfigurationData();
+ userConfigurationData.setAiravataAutoSchedule(false);
+ userConfigurationData.setOverrideManualScheduledParams(false);
+ userConfigurationData.setComputationalResourceScheduling(scheduling);
+ simpleExperiment.setUserConfigurationData(userConfigurationData);
+ experimentId = airavata.createExperiment(gatewayId, simpleExperiment);
+ experimentsWithTokens.put(experimentId, token);
+ experimentsWithGateway.put(experimentId, gatewayId);
+ }
}
}
}
}
}
- }
}
}catch (Exception e){
http://git-wip-us.apache.org/repos/asf/airavata/blob/fdb3fc91/modules/test-suite/multi-tenanted-airavata/src/main/java/org/apache/airavata/testsuite/multitenantedairavata/FrameworkBootstrapping.java
----------------------------------------------------------------------
diff --git a/modules/test-suite/multi-tenanted-airavata/src/main/java/org/apache/airavata/testsuite/multitenantedairavata/FrameworkBootstrapping.java b/modules/test-suite/multi-tenanted-airavata/src/main/java/org/apache/airavata/testsuite/multitenantedairavata/FrameworkBootstrapping.java
index 1c03d8e..a3b3825 100644
--- a/modules/test-suite/multi-tenanted-airavata/src/main/java/org/apache/airavata/testsuite/multitenantedairavata/FrameworkBootstrapping.java
+++ b/modules/test-suite/multi-tenanted-airavata/src/main/java/org/apache/airavata/testsuite/multitenantedairavata/FrameworkBootstrapping.java
@@ -67,7 +67,7 @@ public class FrameworkBootstrapping {
logger.info("Gateways created...");
setup.getGatewayRegister().registerSSHKeys();
logger.info("Registered SSH keys to each gateway...");
- tokens = readTokens();
+// tokens = readTokens();
setup.getComputeResourceRegister().addComputeResources();
setup.getComputeResourceRegister().registerGatewayResourceProfile();
setup.getApplicationRegister().addApplications();
http://git-wip-us.apache.org/repos/asf/airavata/blob/fdb3fc91/modules/test-suite/multi-tenanted-airavata/src/main/java/org/apache/airavata/testsuite/multitenantedairavata/GatewayRegister.java
----------------------------------------------------------------------
diff --git a/modules/test-suite/multi-tenanted-airavata/src/main/java/org/apache/airavata/testsuite/multitenantedairavata/GatewayRegister.java b/modules/test-suite/multi-tenanted-airavata/src/main/java/org/apache/airavata/testsuite/multitenantedairavata/GatewayRegister.java
index 0059e27..7f40976 100644
--- a/modules/test-suite/multi-tenanted-airavata/src/main/java/org/apache/airavata/testsuite/multitenantedairavata/GatewayRegister.java
+++ b/modules/test-suite/multi-tenanted-airavata/src/main/java/org/apache/airavata/testsuite/multitenantedairavata/GatewayRegister.java
@@ -36,6 +36,7 @@ import org.apache.airavata.model.error.AiravataSystemException;
import org.apache.airavata.model.error.InvalidRequestException;
import org.apache.airavata.model.workspace.Gateway;
import org.apache.airavata.model.workspace.Project;
+import org.apache.airavata.testsuite.multitenantedairavata.utils.FrameworkUtils;
import org.apache.airavata.testsuite.multitenantedairavata.utils.PropertyFileType;
import org.apache.airavata.testsuite.multitenantedairavata.utils.PropertyReader;
import org.apache.airavata.testsuite.multitenantedairavata.utils.TestFrameworkConstants;
@@ -55,6 +56,9 @@ public class GatewayRegister {
private int gatewayCount;
private Map<String, String> tokenMap;
private Map<String, String> projectMap;
+ private String testUser;
+ private String testProject;
+ private List<String> gatewaysToAvoid;
public GatewayRegister(Airavata.Client client) throws Exception{
try {
@@ -62,6 +66,10 @@ public class GatewayRegister {
this.tokenMap = new HashMap<String, String>();
this.projectMap = new HashMap<String, String>();
propertyReader = new PropertyReader();
+ testUser = propertyReader.readProperty(TestFrameworkConstants.FrameworkPropertiesConstants.TEST_USER, PropertyFileType.TEST_FRAMEWORK);
+ testProject = propertyReader.readProperty(TestFrameworkConstants.FrameworkPropertiesConstants.TEST_PROJECT, PropertyFileType.TEST_FRAMEWORK);
+ FrameworkUtils frameworkUtils = FrameworkUtils.getInstance();
+ gatewaysToAvoid = frameworkUtils.getGatewayListToAvoid();
}catch (Exception e){
logger.error("Error while initializing setup step", e);
throw new Exception("Error while initializing setup step", e);
@@ -104,8 +112,8 @@ public class GatewayRegister {
public void createProject (String gatewayId) throws Exception{
Project project = new Project();
- project.setName("testProj_" + gatewayId);
- project.setOwner("testUser_" + gatewayId);
+ project.setName(testProject);
+ project.setOwner(testUser);
String projectId = airavata.createProject(gatewayId, project);
projectMap.put(projectId, gatewayId);
}
@@ -130,12 +138,19 @@ public class GatewayRegister {
SSHCredentialWriter writer = new SSHCredentialWriter(dbUtil);
List<Gateway> allGateways = airavata.getAllGateways();
for (Gateway gateway : allGateways){
- if (!gateway.getGatewayId().equals("php_reference_gateway")){
+ boolean isgatewayValid = true;
+ for (String ovoidGateway : gatewaysToAvoid){
+ if (gateway.getGatewayId().equals(ovoidGateway)){
+ isgatewayValid = false;
+ break;
+ }
+ }
+ if (isgatewayValid) {
SSHCredential sshCredential = new SSHCredential();
sshCredential.setGateway(gateway.getGatewayId());
String token = TokenGenerator.generateToken(gateway.getGatewayId(), null);
sshCredential.setToken(token);
- sshCredential.setPortalUserName("testuser");
+ sshCredential.setPortalUserName(testUser);
FileInputStream privateKeyStream = new FileInputStream(privateKeyPath);
File filePri = new File(privateKeyPath);
byte[] bFilePri = new byte[(int) filePri.length()];
http://git-wip-us.apache.org/repos/asf/airavata/blob/fdb3fc91/modules/test-suite/multi-tenanted-airavata/src/main/java/org/apache/airavata/testsuite/multitenantedairavata/utils/FrameworkUtils.java
----------------------------------------------------------------------
diff --git a/modules/test-suite/multi-tenanted-airavata/src/main/java/org/apache/airavata/testsuite/multitenantedairavata/utils/FrameworkUtils.java b/modules/test-suite/multi-tenanted-airavata/src/main/java/org/apache/airavata/testsuite/multitenantedairavata/utils/FrameworkUtils.java
new file mode 100644
index 0000000..cdc1304
--- /dev/null
+++ b/modules/test-suite/multi-tenanted-airavata/src/main/java/org/apache/airavata/testsuite/multitenantedairavata/utils/FrameworkUtils.java
@@ -0,0 +1,54 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+*/
+
+package org.apache.airavata.testsuite.multitenantedairavata.utils;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+public class FrameworkUtils {
+ private static PropertyReader propertyReader;
+
+ private static FrameworkUtils ourInstance = new FrameworkUtils();
+
+ public static FrameworkUtils getInstance() {
+ return ourInstance;
+ }
+
+ public FrameworkUtils() {
+ propertyReader = new PropertyReader();
+ }
+
+ public List<String> getGatewayListToAvoid (){
+ String listOfGateways = propertyReader.readProperty(TestFrameworkConstants.FrameworkPropertiesConstants.GATEWAYS_TOSKIP, PropertyFileType.TEST_FRAMEWORK);
+ String[] gateways = listOfGateways.split(",");
+ return Arrays.asList(gateways);
+ }
+
+ public String getTestUserName (){
+ return propertyReader.readProperty(TestFrameworkConstants.FrameworkPropertiesConstants.TEST_USER, PropertyFileType.TEST_FRAMEWORK);
+ }
+
+ public String getTesProjectName (){
+ return propertyReader.readProperty(TestFrameworkConstants.FrameworkPropertiesConstants.TEST_PROJECT, PropertyFileType.TEST_FRAMEWORK);
+ }
+}
http://git-wip-us.apache.org/repos/asf/airavata/blob/fdb3fc91/modules/test-suite/multi-tenanted-airavata/src/main/java/org/apache/airavata/testsuite/multitenantedairavata/utils/TestFrameworkConstants.java
----------------------------------------------------------------------
diff --git a/modules/test-suite/multi-tenanted-airavata/src/main/java/org/apache/airavata/testsuite/multitenantedairavata/utils/TestFrameworkConstants.java b/modules/test-suite/multi-tenanted-airavata/src/main/java/org/apache/airavata/testsuite/multitenantedairavata/utils/TestFrameworkConstants.java
index 35cc6d1..c0ea2c4 100644
--- a/modules/test-suite/multi-tenanted-airavata/src/main/java/org/apache/airavata/testsuite/multitenantedairavata/utils/TestFrameworkConstants.java
+++ b/modules/test-suite/multi-tenanted-airavata/src/main/java/org/apache/airavata/testsuite/multitenantedairavata/utils/TestFrameworkConstants.java
@@ -48,6 +48,9 @@ public class TestFrameworkConstants {
public static final String SSH_USERNAME = "ssh.username";
public static final String TOKEN_WRITE_LOCATION = "token.file.location";
public static final String RESULT_WRITE_LOCATION = "result.file.location";
+ public static final String GATEWAYS_TOSKIP = "gateways.toskip";
+ public static final String TEST_USER = "test.user";
+ public static final String TEST_PROJECT = "test.project";
}
public static final class GatewayConstants {
http://git-wip-us.apache.org/repos/asf/airavata/blob/fdb3fc91/modules/test-suite/multi-tenanted-airavata/src/main/resources/test-framework.properties
----------------------------------------------------------------------
diff --git a/modules/test-suite/multi-tenanted-airavata/src/main/resources/test-framework.properties b/modules/test-suite/multi-tenanted-airavata/src/main/resources/test-framework.properties
index 3a66eb1..65a6554 100644
--- a/modules/test-suite/multi-tenanted-airavata/src/main/resources/test-framework.properties
+++ b/modules/test-suite/multi-tenanted-airavata/src/main/resources/test-framework.properties
@@ -32,6 +32,9 @@ ssh.password=
ssh.username=ogce
token.file.location=/tmp/
result.file.location=/tmp/test_framework_results/
+gateways.toskip=default,php_reference_gateway,ultrascan,umass
+test.user=testUser
+test.project=testProject
# Application Inputs
# Amber input file locations
[4/5] airavata git commit: Merge branch 'master' into emailMonitoring
Posted by sh...@apache.org.
Merge branch 'master' into emailMonitoring
Project: http://git-wip-us.apache.org/repos/asf/airavata/repo
Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/042e25c7
Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/042e25c7
Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/042e25c7
Branch: refs/heads/emailMonitoring
Commit: 042e25c761d4356df12ff1d65382a9a814026044
Parents: 66ac6b9 fc20882
Author: shamrath <sh...@gmail.com>
Authored: Thu Apr 9 19:45:40 2015 -0400
Committer: shamrath <sh...@gmail.com>
Committed: Thu Apr 9 19:45:40 2015 -0400
----------------------------------------------------------------------
.../gfac/monitor/email/EmailBasedMonitor.java | 27 ++--
.../test-suite/multi-tenanted-airavata/README | 2 +-
.../test-suite/multi-tenanted-airavata/pom.xml | 29 ++++
.../ApplicationRegister.java | 147 +++++++++++--------
.../ComputeResourceRegister.java | 2 +-
.../ExperimentExecution.java | 140 ++++++++++--------
.../FrameworkBootstrapping.java | 2 +-
.../multitenantedairavata/GatewayRegister.java | 23 ++-
.../utils/FrameworkUtils.java | 54 +++++++
.../utils/TestFrameworkConstants.java | 3 +
.../main/resources/test-framework.properties | 3 +
11 files changed, 293 insertions(+), 139 deletions(-)
----------------------------------------------------------------------
[2/5] airavata git commit: Fixed AIRAVATA-1665
Posted by sh...@apache.org.
Fixed AIRAVATA-1665
Project: http://git-wip-us.apache.org/repos/asf/airavata/repo
Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/50672a79
Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/50672a79
Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/50672a79
Branch: refs/heads/emailMonitoring
Commit: 50672a799c7d9c47f23e075f055f090a15c5a013
Parents: bf0fddb
Author: shamrath <sh...@gmail.com>
Authored: Thu Apr 9 16:14:17 2015 -0400
Committer: shamrath <sh...@gmail.com>
Committed: Thu Apr 9 16:14:17 2015 -0400
----------------------------------------------------------------------
.../gfac/monitor/email/EmailBasedMonitor.java | 27 +++++++++++++-------
1 file changed, 18 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/airavata/blob/50672a79/modules/gfac/gfac-monitor/gfac-email-monitor/src/main/java/org/apache/airavata/gfac/monitor/email/EmailBasedMonitor.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-monitor/gfac-email-monitor/src/main/java/org/apache/airavata/gfac/monitor/email/EmailBasedMonitor.java b/modules/gfac/gfac-monitor/gfac-email-monitor/src/main/java/org/apache/airavata/gfac/monitor/email/EmailBasedMonitor.java
index 6e12d83..b6bfa6c 100644
--- a/modules/gfac/gfac-monitor/gfac-email-monitor/src/main/java/org/apache/airavata/gfac/monitor/email/EmailBasedMonitor.java
+++ b/modules/gfac/gfac-monitor/gfac-email-monitor/src/main/java/org/apache/airavata/gfac/monitor/email/EmailBasedMonitor.java
@@ -46,6 +46,8 @@ import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Store;
import javax.mail.search.FlagTerm;
+import java.util.ArrayList;
+import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.concurrent.ConcurrentHashMap;
@@ -142,10 +144,19 @@ public class EmailBasedMonitor implements Runnable{
emailFolder = store.getFolder(folderName);
emailFolder.open(Folder.READ_WRITE);
Message[] searchMessages = emailFolder.search(new FlagTerm(new Flags(Flags.Flag.SEEN), false));
+ List<Message> processedMessages = new ArrayList<>();
for (Message message : searchMessages) {
try {
JobStatusResult jobStatusResult = parse(message);
- process(jobStatusResult);
+ JobExecutionContext jEC = jobMonitorMap.get(jobStatusResult.getJobId());
+ if (jEC != null) {
+ process(jobStatusResult, jEC);
+ processedMessages.add(message);
+ } else {
+ // we can get JobExecutionContext null in multiple Gfac instances environment,
+ // where this job is not submitted by this Gfac instance hence we ignore this message.
+ log.info("JobExecutionContext is not found for job Id " + jobStatusResult.getJobId());
+ }
} catch (AiravataException e) {
log.error("Error parsing email message =====================================>", e);
try {
@@ -153,13 +164,15 @@ public class EmailBasedMonitor implements Runnable{
} catch (MessagingException e1) {
log.error("Error printing envelop of the email");
}
-
}
}
- emailFolder.setFlags(searchMessages, new Flags(Flags.Flag.SEEN), true);
+ if (!processedMessages.isEmpty()) {
+ Message[] prosMessages = new Message[processedMessages.size()];
+ processedMessages.toArray(prosMessages);
+ emailFolder.setFlags(prosMessages, new Flags(Flags.Flag.SEEN), true);
+ }
emailFolder.close(false);
}
-
} catch (MessagingException e) {
log.error("Couldn't connect to the store ", e);
} catch (InterruptedException e) {
@@ -173,11 +186,7 @@ public class EmailBasedMonitor implements Runnable{
}
}
- private void process(JobStatusResult jobStatusResult) throws AiravataException {
- JobExecutionContext jEC = jobMonitorMap.get(jobStatusResult.getJobId());
- if (jEC == null) {
- throw new AiravataException("JobExecutionContext is not found for job Id " + jobStatusResult.getJobId());
- }
+ private void process(JobStatusResult jobStatusResult, JobExecutionContext jEC){
JobState resultState = jobStatusResult.getState();
jEC.getJobDetails().setJobStatus(new JobStatus(resultState));
if (resultState == JobState.COMPLETE) {
[5/5] airavata git commit: AIRAVATA-1666 - Added compute resource
level email based monitoring check.
Posted by sh...@apache.org.
AIRAVATA-1666 - Added compute resource level email based monitoring check.
Project: http://git-wip-us.apache.org/repos/asf/airavata/repo
Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/93d4421b
Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/93d4421b
Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/93d4421b
Branch: refs/heads/emailMonitoring
Commit: 93d4421b7e5c0d32fc62ceae3d0d0c88cdaf7838
Parents: 042e25c
Author: shamrath <sh...@gmail.com>
Authored: Fri Apr 10 11:50:20 2015 -0400
Committer: shamrath <sh...@gmail.com>
Committed: Fri Apr 10 11:50:20 2015 -0400
----------------------------------------------------------------------
.../lib/airavata/computeResourceModel_types.cpp | 12 +-
.../lib/airavata/computeResourceModel_types.h | 16 +--
.../Model/AppCatalog/ComputeResource/Types.php | 20 ++--
.../model/appcatalog/computeresource/ttypes.py | 18 +--
.../client/samples/CreateLaunchExperiment.java | 21 ++--
.../computeresource/SSHJobSubmission.java | 112 +++++++++----------
.../computeResourceModel.thrift | 2 +-
.../gsissh/provider/impl/GSISSHProvider.java | 87 +++++++-------
.../gfac/monitor/email/EmailBasedMonitor.java | 61 ++++++----
.../gfac/monitor/email/EmailMonitorFactory.java | 58 ++++++++++
.../gfac/ssh/provider/impl/SSHProvider.java | 58 ++++++----
11 files changed, 279 insertions(+), 186 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/airavata/blob/93d4421b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/computeResourceModel_types.cpp
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/computeResourceModel_types.cpp b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/computeResourceModel_types.cpp
index 8b83573..2a57b7d 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/computeResourceModel_types.cpp
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/computeResourceModel_types.cpp
@@ -1142,8 +1142,8 @@ uint32_t SSHJobSubmission::read(::apache::thrift::protocol::TProtocol* iprot) {
break;
case 7:
if (ftype == ::apache::thrift::protocol::T_STRUCT) {
- xfer += this->emailMonitor.read(iprot);
- this->__isset.emailMonitor = true;
+ xfer += this->emailMonitorProperty.read(iprot);
+ this->__isset.emailMonitorProperty = true;
} else {
xfer += iprot->skip(ftype);
}
@@ -1197,9 +1197,9 @@ uint32_t SSHJobSubmission::write(::apache::thrift::protocol::TProtocol* oprot) c
xfer += oprot->writeI32((int32_t)this->monitorMode);
xfer += oprot->writeFieldEnd();
}
- if (this->__isset.emailMonitor) {
- xfer += oprot->writeFieldBegin("emailMonitor", ::apache::thrift::protocol::T_STRUCT, 7);
- xfer += this->emailMonitor.write(oprot);
+ if (this->__isset.emailMonitorProperty) {
+ xfer += oprot->writeFieldBegin("emailMonitorProperty", ::apache::thrift::protocol::T_STRUCT, 7);
+ xfer += this->emailMonitorProperty.write(oprot);
xfer += oprot->writeFieldEnd();
}
xfer += oprot->writeFieldStop();
@@ -1215,7 +1215,7 @@ void swap(SSHJobSubmission &a, SSHJobSubmission &b) {
swap(a.alternativeSSHHostName, b.alternativeSSHHostName);
swap(a.sshPort, b.sshPort);
swap(a.monitorMode, b.monitorMode);
- swap(a.emailMonitor, b.emailMonitor);
+ swap(a.emailMonitorProperty, b.emailMonitorProperty);
swap(a.__isset, b.__isset);
}
http://git-wip-us.apache.org/repos/asf/airavata/blob/93d4421b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/computeResourceModel_types.h
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/computeResourceModel_types.h b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/computeResourceModel_types.h
index 05a2dfd..2b72a04 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/computeResourceModel_types.h
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/computeResourceModel_types.h
@@ -647,11 +647,11 @@ class LOCALDataMovement {
void swap(LOCALDataMovement &a, LOCALDataMovement &b);
typedef struct _SSHJobSubmission__isset {
- _SSHJobSubmission__isset() : alternativeSSHHostName(false), sshPort(true), monitorMode(false), emailMonitor(false) {}
+ _SSHJobSubmission__isset() : alternativeSSHHostName(false), sshPort(true), monitorMode(false), emailMonitorProperty(false) {}
bool alternativeSSHHostName;
bool sshPort;
bool monitorMode;
- bool emailMonitor;
+ bool emailMonitorProperty;
} _SSHJobSubmission__isset;
class SSHJobSubmission {
@@ -671,7 +671,7 @@ class SSHJobSubmission {
std::string alternativeSSHHostName;
int32_t sshPort;
MonitorMode::type monitorMode;
- EmailMonitorProperty emailMonitor;
+ EmailMonitorProperty emailMonitorProperty;
_SSHJobSubmission__isset __isset;
@@ -702,9 +702,9 @@ class SSHJobSubmission {
__isset.monitorMode = true;
}
- void __set_emailMonitor(const EmailMonitorProperty& val) {
- emailMonitor = val;
- __isset.emailMonitor = true;
+ void __set_emailMonitorProperty(const EmailMonitorProperty& val) {
+ emailMonitorProperty = val;
+ __isset.emailMonitorProperty = true;
}
bool operator == (const SSHJobSubmission & rhs) const
@@ -727,9 +727,9 @@ class SSHJobSubmission {
return false;
else if (__isset.monitorMode && !(monitorMode == rhs.monitorMode))
return false;
- if (__isset.emailMonitor != rhs.__isset.emailMonitor)
+ if (__isset.emailMonitorProperty != rhs.__isset.emailMonitorProperty)
return false;
- else if (__isset.emailMonitor && !(emailMonitor == rhs.emailMonitor))
+ else if (__isset.emailMonitorProperty && !(emailMonitorProperty == rhs.emailMonitorProperty))
return false;
return true;
}
http://git-wip-us.apache.org/repos/asf/airavata/blob/93d4421b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/AppCatalog/ComputeResource/Types.php
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/AppCatalog/ComputeResource/Types.php b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/AppCatalog/ComputeResource/Types.php
index e488087..22c46a9 100644
--- a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/AppCatalog/ComputeResource/Types.php
+++ b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/AppCatalog/ComputeResource/Types.php
@@ -1232,7 +1232,7 @@ class SSHJobSubmission {
public $alternativeSSHHostName = null;
public $sshPort = 22;
public $monitorMode = null;
- public $emailMonitor = null;
+ public $emailMonitorProperty = null;
public function __construct($vals=null) {
if (!isset(self::$_TSPEC)) {
@@ -1263,7 +1263,7 @@ class SSHJobSubmission {
'type' => TType::I32,
),
7 => array(
- 'var' => 'emailMonitor',
+ 'var' => 'emailMonitorProperty',
'type' => TType::STRUCT,
'class' => '\Airavata\Model\AppCatalog\ComputeResource\EmailMonitorProperty',
),
@@ -1288,8 +1288,8 @@ class SSHJobSubmission {
if (isset($vals['monitorMode'])) {
$this->monitorMode = $vals['monitorMode'];
}
- if (isset($vals['emailMonitor'])) {
- $this->emailMonitor = $vals['emailMonitor'];
+ if (isset($vals['emailMonitorProperty'])) {
+ $this->emailMonitorProperty = $vals['emailMonitorProperty'];
}
}
}
@@ -1358,8 +1358,8 @@ class SSHJobSubmission {
break;
case 7:
if ($ftype == TType::STRUCT) {
- $this->emailMonitor = new \Airavata\Model\AppCatalog\ComputeResource\EmailMonitorProperty();
- $xfer += $this->emailMonitor->read($input);
+ $this->emailMonitorProperty = new \Airavata\Model\AppCatalog\ComputeResource\EmailMonitorProperty();
+ $xfer += $this->emailMonitorProperty->read($input);
} else {
$xfer += $input->skip($ftype);
}
@@ -1410,12 +1410,12 @@ class SSHJobSubmission {
$xfer += $output->writeI32($this->monitorMode);
$xfer += $output->writeFieldEnd();
}
- if ($this->emailMonitor !== null) {
- if (!is_object($this->emailMonitor)) {
+ if ($this->emailMonitorProperty !== null) {
+ if (!is_object($this->emailMonitorProperty)) {
throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
}
- $xfer += $output->writeFieldBegin('emailMonitor', TType::STRUCT, 7);
- $xfer += $this->emailMonitor->write($output);
+ $xfer += $output->writeFieldBegin('emailMonitorProperty', TType::STRUCT, 7);
+ $xfer += $this->emailMonitorProperty->write($output);
$xfer += $output->writeFieldEnd();
}
$xfer += $output->writeFieldStop();
http://git-wip-us.apache.org/repos/asf/airavata/blob/93d4421b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/appcatalog/computeresource/ttypes.py
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/appcatalog/computeresource/ttypes.py b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/appcatalog/computeresource/ttypes.py
index e635472..8b34be1 100644
--- a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/appcatalog/computeresource/ttypes.py
+++ b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/appcatalog/computeresource/ttypes.py
@@ -1216,7 +1216,7 @@ class SSHJobSubmission:
- alternativeSSHHostName
- sshPort
- monitorMode
- - emailMonitor
+ - emailMonitorProperty
"""
thrift_spec = (
@@ -1227,17 +1227,17 @@ class SSHJobSubmission:
(4, TType.STRING, 'alternativeSSHHostName', None, None, ), # 4
(5, TType.I32, 'sshPort', None, 22, ), # 5
(6, TType.I32, 'monitorMode', None, None, ), # 6
- (7, TType.STRUCT, 'emailMonitor', (EmailMonitorProperty, EmailMonitorProperty.thrift_spec), None, ), # 7
+ (7, TType.STRUCT, 'emailMonitorProperty', (EmailMonitorProperty, EmailMonitorProperty.thrift_spec), None, ), # 7
)
- def __init__(self, jobSubmissionInterfaceId=thrift_spec[1][4], securityProtocol=None, resourceJobManager=None, alternativeSSHHostName=None, sshPort=thrift_spec[5][4], monitorMode=None, emailMonitor=None,):
+ def __init__(self, jobSubmissionInterfaceId=thrift_spec[1][4], securityProtocol=None, resourceJobManager=None, alternativeSSHHostName=None, sshPort=thrift_spec[5][4], monitorMode=None, emailMonitorProperty=None,):
self.jobSubmissionInterfaceId = jobSubmissionInterfaceId
self.securityProtocol = securityProtocol
self.resourceJobManager = resourceJobManager
self.alternativeSSHHostName = alternativeSSHHostName
self.sshPort = sshPort
self.monitorMode = monitorMode
- self.emailMonitor = emailMonitor
+ self.emailMonitorProperty = emailMonitorProperty
def read(self, iprot):
if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
@@ -1281,8 +1281,8 @@ class SSHJobSubmission:
iprot.skip(ftype)
elif fid == 7:
if ftype == TType.STRUCT:
- self.emailMonitor = EmailMonitorProperty()
- self.emailMonitor.read(iprot)
+ self.emailMonitorProperty = EmailMonitorProperty()
+ self.emailMonitorProperty.read(iprot)
else:
iprot.skip(ftype)
else:
@@ -1319,9 +1319,9 @@ class SSHJobSubmission:
oprot.writeFieldBegin('monitorMode', TType.I32, 6)
oprot.writeI32(self.monitorMode)
oprot.writeFieldEnd()
- if self.emailMonitor is not None:
- oprot.writeFieldBegin('emailMonitor', TType.STRUCT, 7)
- self.emailMonitor.write(oprot)
+ if self.emailMonitorProperty is not None:
+ oprot.writeFieldBegin('emailMonitorProperty', TType.STRUCT, 7)
+ self.emailMonitorProperty.write(oprot)
oprot.writeFieldEnd()
oprot.writeFieldStop()
oprot.writeStructEnd()
http://git-wip-us.apache.org/repos/asf/airavata/blob/93d4421b/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 d173a0b..9ad71f4 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
@@ -61,7 +61,7 @@ public class CreateLaunchExperiment {
private static String echoAppId = "Echo_fcac7076-e350-4dfb-a6eb-73e2d648fc60";
private static String mpiAppId = "HelloMPI_bfd56d58-6085-4b7f-89fc-646576830518";
private static String wrfAppId = "WRF_7ad5da38-c08b-417c-a9ea-da9298839762";
- private static String amberAppId = "Amber_aa083c86-4680-4002-b3ef-fad93c181926";
+ private static String amberAppId = "Amber_717cba99-1085-45de-861c-952001c5243c";
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_2472685b-8acf-497e-aafe-cc66fe5f4cb6";
@@ -168,13 +168,13 @@ public class CreateLaunchExperiment {
// final String expId = createMPIExperimentForFSD(airavataClient);
// final String expId = createEchoExperimentForStampede(airavataClient);
// final String expId = createEchoExperimentForTrestles(airavataClient);
- final String expId = createExperimentEchoForLocalHost(airavataClient);
- experimentIds.add(expId);
+// final String expId = createExperimentEchoForLocalHost(airavataClient);
// final String expId = createExperimentWRFTrestles(airavataClient);
// final String expId = createExperimentForBR2(airavataClient);
// final String expId = createExperimentForBR2Amber(airavataClient);
// final String expId = createExperimentWRFStampede(airavataClient);
-// final String expId = createExperimentForStampedeAmber(airavataClient);
+ final String expId = createExperimentForStampedeAmber(airavataClient);
+// String expId = createExperimentForTrestlesAmber(airavataClient);
// final String expId = createExperimentGROMACSStampede(airavataClient);
// final String expId = createExperimentESPRESSOStampede(airavataClient);
// final String expId = createExperimentLAMMPSStampede(airavataClient);
@@ -184,6 +184,7 @@ public class CreateLaunchExperiment {
// final String expId = createExperimentForLSF(airavataClient);
// final String expId = createExperimentLAMMPSForLSF(airavataClient);
// final String expId = "Ultrascan_ln_eb029947-391a-4ccf-8ace-9bafebe07cc0";
+ experimentIds.add(expId);
System.out.println("Experiment ID : " + expId);
// updateExperiment(airavata, expId);
@@ -1312,11 +1313,11 @@ public class CreateLaunchExperiment {
// }
for (InputDataObjectType inputDataObjectType : exInputs) {
if (inputDataObjectType.getName().equalsIgnoreCase("Heat_Restart_File")) {
- inputDataObjectType.setValue("file://root@test-drive.airavata.org:/var/www/experimentData/admin101a290e6330f15a91349159553ae8b6bb1/02_Heat.rst");
+ inputDataObjectType.setValue("/Users/shameera/Projects/scigap/apps/AMBER_FILES/02_Heat.rst");
} else if (inputDataObjectType.getName().equalsIgnoreCase("Production_Control_File")) {
- inputDataObjectType.setValue("file://root@test-drive.airavata.org:/var/www/experimentData/admin101a290e6330f15a91349159553ae8b6bb1/03_Prod.in");
+ inputDataObjectType.setValue("/Users/shameera/Projects/scigap/apps/AMBER_FILES/03_Prod.in");
} else if (inputDataObjectType.getName().equalsIgnoreCase("Parameter_Topology_File")) {
- inputDataObjectType.setValue("file://root@test-drive.airavata.org:/var/www/experimentData/admin101a290e6330f15a91349159553ae8b6bb1/prmtop");
+ inputDataObjectType.setValue("/Users/shameera/Projects/scigap/apps/AMBER_FILES/prmtop");
}
}
@@ -1377,11 +1378,11 @@ public class CreateLaunchExperiment {
// }
for (InputDataObjectType inputDataObjectType : exInputs) {
if (inputDataObjectType.getName().equalsIgnoreCase("Heat_Restart_File")) {
- inputDataObjectType.setValue("/Users/chathuri/dev/airavata/source/php/inputs/AMBER_FILES/02_Heat.rst");
+ inputDataObjectType.setValue("/Users/shameera/Projects/scigap/apps/AMBER_FILES/02_Heat.rst");
} else if (inputDataObjectType.getName().equalsIgnoreCase("Production_Control_File")) {
- inputDataObjectType.setValue("/Users/chathuri/dev/airavata/source/php/inputs/AMBER_FILES/03_Prod.in");
+ inputDataObjectType.setValue("/Users/shameera/Projects/scigap/apps/AMBER_FILES/03_Prod.in");
} else if (inputDataObjectType.getName().equalsIgnoreCase("Parameter_Topology_File")) {
- inputDataObjectType.setValue("/Users/chathuri/dev/airavata/source/php/inputs/AMBER_FILES/prmtop");
+ inputDataObjectType.setValue("/Users/shameera/Projects/scigap/apps/AMBER_FILES/prmtop");
}
}
List<OutputDataObjectType> exOut = client.getApplicationOutputs(amberAppId);
http://git-wip-us.apache.org/repos/asf/airavata/blob/93d4421b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/SSHJobSubmission.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/SSHJobSubmission.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/SSHJobSubmission.java
index a9bf275..66f33ab 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/SSHJobSubmission.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/SSHJobSubmission.java
@@ -67,7 +67,7 @@ import org.slf4j.LoggerFactory;
private static final org.apache.thrift.protocol.TField ALTERNATIVE_SSHHOST_NAME_FIELD_DESC = new org.apache.thrift.protocol.TField("alternativeSSHHostName", org.apache.thrift.protocol.TType.STRING, (short)4);
private static final org.apache.thrift.protocol.TField SSH_PORT_FIELD_DESC = new org.apache.thrift.protocol.TField("sshPort", org.apache.thrift.protocol.TType.I32, (short)5);
private static final org.apache.thrift.protocol.TField MONITOR_MODE_FIELD_DESC = new org.apache.thrift.protocol.TField("monitorMode", org.apache.thrift.protocol.TType.I32, (short)6);
- private static final org.apache.thrift.protocol.TField EMAIL_MONITOR_FIELD_DESC = new org.apache.thrift.protocol.TField("emailMonitor", org.apache.thrift.protocol.TType.STRUCT, (short)7);
+ private static final org.apache.thrift.protocol.TField EMAIL_MONITOR_PROPERTY_FIELD_DESC = new org.apache.thrift.protocol.TField("emailMonitorProperty", org.apache.thrift.protocol.TType.STRUCT, (short)7);
private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
static {
@@ -81,7 +81,7 @@ import org.slf4j.LoggerFactory;
private String alternativeSSHHostName; // optional
private int sshPort; // optional
private MonitorMode monitorMode; // optional
- private EmailMonitorProperty emailMonitor; // optional
+ private EmailMonitorProperty emailMonitorProperty; // optional
/** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
@SuppressWarnings("all") public enum _Fields implements org.apache.thrift.TFieldIdEnum {
@@ -99,7 +99,7 @@ import org.slf4j.LoggerFactory;
* @see MonitorMode
*/
MONITOR_MODE((short)6, "monitorMode"),
- EMAIL_MONITOR((short)7, "emailMonitor");
+ EMAIL_MONITOR_PROPERTY((short)7, "emailMonitorProperty");
private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
@@ -126,8 +126,8 @@ import org.slf4j.LoggerFactory;
return SSH_PORT;
case 6: // MONITOR_MODE
return MONITOR_MODE;
- case 7: // EMAIL_MONITOR
- return EMAIL_MONITOR;
+ case 7: // EMAIL_MONITOR_PROPERTY
+ return EMAIL_MONITOR_PROPERTY;
default:
return null;
}
@@ -170,7 +170,7 @@ import org.slf4j.LoggerFactory;
// isset id assignments
private static final int __SSHPORT_ISSET_ID = 0;
private byte __isset_bitfield = 0;
- private _Fields optionals[] = {_Fields.ALTERNATIVE_SSHHOST_NAME,_Fields.SSH_PORT,_Fields.MONITOR_MODE,_Fields.EMAIL_MONITOR};
+ private _Fields optionals[] = {_Fields.ALTERNATIVE_SSHHOST_NAME,_Fields.SSH_PORT,_Fields.MONITOR_MODE,_Fields.EMAIL_MONITOR_PROPERTY};
public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
static {
Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
@@ -186,7 +186,7 @@ import org.slf4j.LoggerFactory;
new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I32)));
tmpMap.put(_Fields.MONITOR_MODE, new org.apache.thrift.meta_data.FieldMetaData("monitorMode", org.apache.thrift.TFieldRequirementType.OPTIONAL,
new org.apache.thrift.meta_data.EnumMetaData(org.apache.thrift.protocol.TType.ENUM, MonitorMode.class)));
- tmpMap.put(_Fields.EMAIL_MONITOR, new org.apache.thrift.meta_data.FieldMetaData("emailMonitor", org.apache.thrift.TFieldRequirementType.OPTIONAL,
+ tmpMap.put(_Fields.EMAIL_MONITOR_PROPERTY, new org.apache.thrift.meta_data.FieldMetaData("emailMonitorProperty", org.apache.thrift.TFieldRequirementType.OPTIONAL,
new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, EmailMonitorProperty.class)));
metaDataMap = Collections.unmodifiableMap(tmpMap);
org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(SSHJobSubmission.class, metaDataMap);
@@ -231,8 +231,8 @@ import org.slf4j.LoggerFactory;
if (other.isSetMonitorMode()) {
this.monitorMode = other.monitorMode;
}
- if (other.isSetEmailMonitor()) {
- this.emailMonitor = new EmailMonitorProperty(other.emailMonitor);
+ if (other.isSetEmailMonitorProperty()) {
+ this.emailMonitorProperty = new EmailMonitorProperty(other.emailMonitorProperty);
}
}
@@ -250,7 +250,7 @@ import org.slf4j.LoggerFactory;
this.sshPort = 22;
this.monitorMode = null;
- this.emailMonitor = null;
+ this.emailMonitorProperty = null;
}
public String getJobSubmissionInterfaceId() {
@@ -406,26 +406,26 @@ import org.slf4j.LoggerFactory;
}
}
- public EmailMonitorProperty getEmailMonitor() {
- return this.emailMonitor;
+ public EmailMonitorProperty getEmailMonitorProperty() {
+ return this.emailMonitorProperty;
}
- public void setEmailMonitor(EmailMonitorProperty emailMonitor) {
- this.emailMonitor = emailMonitor;
+ public void setEmailMonitorProperty(EmailMonitorProperty emailMonitorProperty) {
+ this.emailMonitorProperty = emailMonitorProperty;
}
- public void unsetEmailMonitor() {
- this.emailMonitor = null;
+ public void unsetEmailMonitorProperty() {
+ this.emailMonitorProperty = null;
}
- /** Returns true if field emailMonitor is set (has been assigned a value) and false otherwise */
- public boolean isSetEmailMonitor() {
- return this.emailMonitor != null;
+ /** Returns true if field emailMonitorProperty is set (has been assigned a value) and false otherwise */
+ public boolean isSetEmailMonitorProperty() {
+ return this.emailMonitorProperty != null;
}
- public void setEmailMonitorIsSet(boolean value) {
+ public void setEmailMonitorPropertyIsSet(boolean value) {
if (!value) {
- this.emailMonitor = null;
+ this.emailMonitorProperty = null;
}
}
@@ -479,11 +479,11 @@ import org.slf4j.LoggerFactory;
}
break;
- case EMAIL_MONITOR:
+ case EMAIL_MONITOR_PROPERTY:
if (value == null) {
- unsetEmailMonitor();
+ unsetEmailMonitorProperty();
} else {
- setEmailMonitor((EmailMonitorProperty)value);
+ setEmailMonitorProperty((EmailMonitorProperty)value);
}
break;
@@ -510,8 +510,8 @@ import org.slf4j.LoggerFactory;
case MONITOR_MODE:
return getMonitorMode();
- case EMAIL_MONITOR:
- return getEmailMonitor();
+ case EMAIL_MONITOR_PROPERTY:
+ return getEmailMonitorProperty();
}
throw new IllegalStateException();
@@ -536,8 +536,8 @@ import org.slf4j.LoggerFactory;
return isSetSshPort();
case MONITOR_MODE:
return isSetMonitorMode();
- case EMAIL_MONITOR:
- return isSetEmailMonitor();
+ case EMAIL_MONITOR_PROPERTY:
+ return isSetEmailMonitorProperty();
}
throw new IllegalStateException();
}
@@ -609,12 +609,12 @@ import org.slf4j.LoggerFactory;
return false;
}
- boolean this_present_emailMonitor = true && this.isSetEmailMonitor();
- boolean that_present_emailMonitor = true && that.isSetEmailMonitor();
- if (this_present_emailMonitor || that_present_emailMonitor) {
- if (!(this_present_emailMonitor && that_present_emailMonitor))
+ boolean this_present_emailMonitorProperty = true && this.isSetEmailMonitorProperty();
+ boolean that_present_emailMonitorProperty = true && that.isSetEmailMonitorProperty();
+ if (this_present_emailMonitorProperty || that_present_emailMonitorProperty) {
+ if (!(this_present_emailMonitorProperty && that_present_emailMonitorProperty))
return false;
- if (!this.emailMonitor.equals(that.emailMonitor))
+ if (!this.emailMonitorProperty.equals(that.emailMonitorProperty))
return false;
}
@@ -694,12 +694,12 @@ import org.slf4j.LoggerFactory;
return lastComparison;
}
}
- lastComparison = Boolean.valueOf(isSetEmailMonitor()).compareTo(other.isSetEmailMonitor());
+ lastComparison = Boolean.valueOf(isSetEmailMonitorProperty()).compareTo(other.isSetEmailMonitorProperty());
if (lastComparison != 0) {
return lastComparison;
}
- if (isSetEmailMonitor()) {
- lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.emailMonitor, other.emailMonitor);
+ if (isSetEmailMonitorProperty()) {
+ lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.emailMonitorProperty, other.emailMonitorProperty);
if (lastComparison != 0) {
return lastComparison;
}
@@ -773,13 +773,13 @@ import org.slf4j.LoggerFactory;
}
first = false;
}
- if (isSetEmailMonitor()) {
+ if (isSetEmailMonitorProperty()) {
if (!first) sb.append(", ");
- sb.append("emailMonitor:");
- if (this.emailMonitor == null) {
+ sb.append("emailMonitorProperty:");
+ if (this.emailMonitorProperty == null) {
sb.append("null");
} else {
- sb.append(this.emailMonitor);
+ sb.append(this.emailMonitorProperty);
}
first = false;
}
@@ -805,8 +805,8 @@ import org.slf4j.LoggerFactory;
if (resourceJobManager != null) {
resourceJobManager.validate();
}
- if (emailMonitor != null) {
- emailMonitor.validate();
+ if (emailMonitorProperty != null) {
+ emailMonitorProperty.validate();
}
}
@@ -895,11 +895,11 @@ import org.slf4j.LoggerFactory;
org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
}
break;
- case 7: // EMAIL_MONITOR
+ case 7: // EMAIL_MONITOR_PROPERTY
if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
- struct.emailMonitor = new EmailMonitorProperty();
- struct.emailMonitor.read(iprot);
- struct.setEmailMonitorIsSet(true);
+ struct.emailMonitorProperty = new EmailMonitorProperty();
+ struct.emailMonitorProperty.read(iprot);
+ struct.setEmailMonitorPropertyIsSet(true);
} else {
org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
}
@@ -951,10 +951,10 @@ import org.slf4j.LoggerFactory;
oprot.writeFieldEnd();
}
}
- if (struct.emailMonitor != null) {
- if (struct.isSetEmailMonitor()) {
- oprot.writeFieldBegin(EMAIL_MONITOR_FIELD_DESC);
- struct.emailMonitor.write(oprot);
+ if (struct.emailMonitorProperty != null) {
+ if (struct.isSetEmailMonitorProperty()) {
+ oprot.writeFieldBegin(EMAIL_MONITOR_PROPERTY_FIELD_DESC);
+ struct.emailMonitorProperty.write(oprot);
oprot.writeFieldEnd();
}
}
@@ -988,7 +988,7 @@ import org.slf4j.LoggerFactory;
if (struct.isSetMonitorMode()) {
optionals.set(2);
}
- if (struct.isSetEmailMonitor()) {
+ if (struct.isSetEmailMonitorProperty()) {
optionals.set(3);
}
oprot.writeBitSet(optionals, 4);
@@ -1001,8 +1001,8 @@ import org.slf4j.LoggerFactory;
if (struct.isSetMonitorMode()) {
oprot.writeI32(struct.monitorMode.getValue());
}
- if (struct.isSetEmailMonitor()) {
- struct.emailMonitor.write(oprot);
+ if (struct.isSetEmailMonitorProperty()) {
+ struct.emailMonitorProperty.write(oprot);
}
}
@@ -1030,9 +1030,9 @@ import org.slf4j.LoggerFactory;
struct.setMonitorModeIsSet(true);
}
if (incoming.get(3)) {
- struct.emailMonitor = new EmailMonitorProperty();
- struct.emailMonitor.read(iprot);
- struct.setEmailMonitorIsSet(true);
+ struct.emailMonitorProperty = new EmailMonitorProperty();
+ struct.emailMonitorProperty.read(iprot);
+ struct.setEmailMonitorPropertyIsSet(true);
}
}
}
http://git-wip-us.apache.org/repos/asf/airavata/blob/93d4421b/airavata-api/thrift-interface-descriptions/computeResourceModel.thrift
----------------------------------------------------------------------
diff --git a/airavata-api/thrift-interface-descriptions/computeResourceModel.thrift b/airavata-api/thrift-interface-descriptions/computeResourceModel.thrift
index cf9b06c..b13b2e5 100644
--- a/airavata-api/thrift-interface-descriptions/computeResourceModel.thrift
+++ b/airavata-api/thrift-interface-descriptions/computeResourceModel.thrift
@@ -348,7 +348,7 @@ struct SSHJobSubmission {
4: optional string alternativeSSHHostName,
5: optional i32 sshPort = 22,
6: optional MonitorMode monitorMode,
- 7: optional EmailMonitorProperty emailMonitor
+ 7: optional EmailMonitorProperty emailMonitorProperty
}
struct GlobusJobSubmission {
http://git-wip-us.apache.org/repos/asf/airavata/blob/93d4421b/modules/gfac/gfac-gsissh/src/main/java/org/apache/airavata/gfac/gsissh/provider/impl/GSISSHProvider.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-gsissh/src/main/java/org/apache/airavata/gfac/gsissh/provider/impl/GSISSHProvider.java b/modules/gfac/gfac-gsissh/src/main/java/org/apache/airavata/gfac/gsissh/provider/impl/GSISSHProvider.java
index 2b23596..075f942 100644
--- a/modules/gfac/gfac-gsissh/src/main/java/org/apache/airavata/gfac/gsissh/provider/impl/GSISSHProvider.java
+++ b/modules/gfac/gfac-gsissh/src/main/java/org/apache/airavata/gfac/gsissh/provider/impl/GSISSHProvider.java
@@ -21,6 +21,7 @@
package org.apache.airavata.gfac.gsissh.provider.impl;
import org.airavata.appcatalog.cpi.AppCatalog;
+import org.airavata.appcatalog.cpi.AppCatalogException;
import org.apache.airavata.common.exception.ApplicationSettingsException;
import org.apache.airavata.common.utils.ServerSettings;
import org.apache.airavata.gfac.ExecutionMode;
@@ -36,11 +37,14 @@ import org.apache.airavata.gfac.core.utils.GFacUtils;
import org.apache.airavata.gfac.gsissh.security.GSISecurityContext;
import org.apache.airavata.gfac.gsissh.util.GFACGSISSHUtils;
import org.apache.airavata.gfac.monitor.email.EmailBasedMonitor;
+import org.apache.airavata.gfac.monitor.email.EmailMonitorFactory;
import org.apache.airavata.gsi.ssh.api.Cluster;
import org.apache.airavata.gsi.ssh.api.SSHApiException;
import org.apache.airavata.gsi.ssh.api.job.JobDescriptor;
import org.apache.airavata.model.appcatalog.appdeployment.ApplicationDeploymentDescription;
import org.apache.airavata.model.appcatalog.computeresource.ComputeResourceDescription;
+import org.apache.airavata.model.appcatalog.computeresource.EmailMonitorProperty;
+import org.apache.airavata.model.appcatalog.computeresource.JobSubmissionProtocol;
import org.apache.airavata.model.appcatalog.computeresource.MonitorMode;
import org.apache.airavata.model.appcatalog.computeresource.SSHJobSubmission;
import org.apache.airavata.model.workspace.experiment.CorrectiveAction;
@@ -138,48 +142,53 @@ public class GSISSHProvider extends AbstractRecoverableProvider {
}
- public void delegateToMonitorHandlers(JobExecutionContext jobExecutionContext, SSHJobSubmission sshJobSubmission, String jobID) throws GFacHandlerException {
- if (ServerSettings.isEmailBasedNotificationEnable()) {
- try {
- EmailBasedMonitor emailBasedMonitor = EmailBasedMonitor.getInstant(BetterGfacImpl.getMonitorPublisher());
- emailBasedMonitor.addToJobMonitorMap(jobExecutionContext);
- } catch (ApplicationSettingsException e) {
- throw new GFacHandlerException("Error while delegating job execution context to email based monitor");
- }
- } else {
- List<ThreadedHandler> daemonHandlers = BetterGfacImpl.getDaemonHandlers();
- if (daemonHandlers == null) {
- daemonHandlers = BetterGfacImpl.getDaemonHandlers();
- }
- ThreadedHandler pullMonitorHandler = null;
- ThreadedHandler pushMonitorHandler = null;
- MonitorMode monitorMode = sshJobSubmission.getMonitorMode();
- for (ThreadedHandler threadedHandler : daemonHandlers) {
- if ("org.apache.airavata.gfac.monitor.handlers.GridPullMonitorHandler".equals(threadedHandler.getClass().getName())) {
- pullMonitorHandler = threadedHandler;
- if (monitorMode == null || monitorMode == MonitorMode.POLL_JOB_MANAGER) {
- log.info("Job is launched successfully now parsing it to monitoring in pull mode, JobID Returned: " + jobID);
- pullMonitorHandler.invoke(jobExecutionContext);
- } else {
- log.error("Currently we only support Pull and Push monitoring and monitorMode should be PULL" +
- " to handle by the GridPullMonitorHandler");
- }
- } else if ("org.apache.airavata.gfac.monitor.handlers.GridPushMonitorHandler".equals(threadedHandler.getClass().getName())) {
- pushMonitorHandler = threadedHandler;
- if (monitorMode == null || monitorMode == MonitorMode.XSEDE_AMQP_SUBSCRIBE) {
- log.info("Job is launched successfully now parsing it to monitoring in push mode, JobID Returned: " + jobID);
- pushMonitorHandler.invoke(jobExecutionContext);
- } else {
- log.error("Currently we only support Pull and Push monitoring and monitorMode should be PUSH" +
- " to handle by the GridPushMonitorHandler");
- }
+ public void delegateToMonitorHandlers(JobExecutionContext jobExecutionContext, SSHJobSubmission sshJobSubmission, String jobID) throws GFacHandlerException, AppCatalogException {
+ if (jobExecutionContext.getPreferredJobSubmissionProtocol() == JobSubmissionProtocol.SSH) {
+ if (sshJobSubmission.getMonitorMode() == MonitorMode.JOB_EMAIL_NOTIFICATION_MONITOR) {
+ EmailMonitorProperty emailMonitorProp = sshJobSubmission.getEmailMonitorProperty();
+ if (emailMonitorProp != null) {
+ EmailMonitorFactory emailMonitorFactory = new EmailMonitorFactory();
+ EmailBasedMonitor emailBasedMonitor = emailMonitorFactory.getEmailBasedMonitor(emailMonitorProp);
+ emailBasedMonitor.addToJobMonitorMap(jobExecutionContext);
+ return;
}
- // have to handle the GridPushMonitorHandler logic
}
- if (pullMonitorHandler == null && pushMonitorHandler == null && ExecutionMode.ASYNCHRONOUS.equals(jobExecutionContext.getGFacConfiguration().getExecutionMode())) {
- log.error("No Daemon handler is configured in gfac-config.xml, either pull or push, so monitoring will not invoked" +
- ", execution is configured as asynchronous, so Outhandler will not be invoked");
+ }
+
+ // if email monitor is not activeated or not configure we use pull or push monitor
+ List<ThreadedHandler> daemonHandlers = BetterGfacImpl.getDaemonHandlers();
+ if (daemonHandlers == null) {
+ daemonHandlers = BetterGfacImpl.getDaemonHandlers();
+ }
+ ThreadedHandler pullMonitorHandler = null;
+ ThreadedHandler pushMonitorHandler = null;
+ MonitorMode monitorMode = sshJobSubmission.getMonitorMode();
+ for (ThreadedHandler threadedHandler : daemonHandlers) {
+ if ("org.apache.airavata.gfac.monitor.handlers.GridPullMonitorHandler".equals(threadedHandler.getClass().getName())) {
+ pullMonitorHandler = threadedHandler;
+ if (monitorMode == null || monitorMode == MonitorMode.POLL_JOB_MANAGER) {
+ log.info("Job is launched successfully now parsing it to monitoring in pull mode, JobID Returned: " + jobID);
+ pullMonitorHandler.invoke(jobExecutionContext);
+ } else {
+ log.error("Currently we only support Pull and Push monitoring and monitorMode should be PULL" +
+ " to handle by the GridPullMonitorHandler");
+ }
+ } else if ("org.apache.airavata.gfac.monitor.handlers.GridPushMonitorHandler".equals(threadedHandler.getClass().getName())) {
+ pushMonitorHandler = threadedHandler;
+ if (monitorMode == null || monitorMode == MonitorMode.XSEDE_AMQP_SUBSCRIBE) {
+ log.info("Job is launched successfully now parsing it to monitoring in push mode, JobID Returned: " + jobID);
+ pushMonitorHandler.invoke(jobExecutionContext);
+ } else {
+ log.error("Currently we only support Pull and Push monitoring and monitorMode should be PUSH" +
+ " to handle by the GridPushMonitorHandler");
+ }
}
+ // have to handle the GridPushMonitorHandler logic
+ }
+ if (pullMonitorHandler == null && pushMonitorHandler == null && ExecutionMode.ASYNCHRONOUS.equals(jobExecutionContext.getGFacConfiguration().getExecutionMode())) {
+ log.error("No Daemon handler is configured in gfac-config.xml, either pull or push, so monitoring will not invoked" +
+ ", execution is configured as asynchronous, so Outhandler will not be invoked");
+
}
}
http://git-wip-us.apache.org/repos/asf/airavata/blob/93d4421b/modules/gfac/gfac-monitor/gfac-email-monitor/src/main/java/org/apache/airavata/gfac/monitor/email/EmailBasedMonitor.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-monitor/gfac-email-monitor/src/main/java/org/apache/airavata/gfac/monitor/email/EmailBasedMonitor.java b/modules/gfac/gfac-monitor/gfac-email-monitor/src/main/java/org/apache/airavata/gfac/monitor/email/EmailBasedMonitor.java
index b6bfa6c..affe156 100644
--- a/modules/gfac/gfac-monitor/gfac-email-monitor/src/main/java/org/apache/airavata/gfac/monitor/email/EmailBasedMonitor.java
+++ b/modules/gfac/gfac-monitor/gfac-email-monitor/src/main/java/org/apache/airavata/gfac/monitor/email/EmailBasedMonitor.java
@@ -21,18 +21,19 @@
package org.apache.airavata.gfac.monitor.email;
import org.apache.airavata.common.exception.AiravataException;
-import org.apache.airavata.common.exception.ApplicationSettingsException;
import org.apache.airavata.common.logger.AiravataLogger;
import org.apache.airavata.common.logger.AiravataLoggerFactory;
-import org.apache.airavata.common.utils.MonitorPublisher;
import org.apache.airavata.common.utils.ServerSettings;
import org.apache.airavata.gfac.core.context.JobExecutionContext;
+import org.apache.airavata.gfac.core.cpi.BetterGfacImpl;
import org.apache.airavata.gfac.core.utils.GFacThreadPoolExecutor;
import org.apache.airavata.gfac.core.utils.OutHandlerWorker;
import org.apache.airavata.gfac.monitor.email.parser.EmailParser;
import org.apache.airavata.gfac.monitor.email.parser.LonestarEmailParser;
import org.apache.airavata.gfac.monitor.email.parser.PBSEmailParser;
import org.apache.airavata.gfac.monitor.email.parser.SLURMEmailParser;
+import org.apache.airavata.model.appcatalog.computeresource.EmailMonitorProperty;
+import org.apache.airavata.model.appcatalog.computeresource.EmailProtocol;
import org.apache.airavata.model.messaging.event.JobIdentifier;
import org.apache.airavata.model.messaging.event.JobStatusChangeRequestEvent;
import org.apache.airavata.model.workspace.experiment.JobState;
@@ -59,39 +60,34 @@ public class EmailBasedMonitor implements Runnable{
private static final String PBS_CONSULT_SDSC_EDU = "pbsconsult@sdsc.edu";
private static final String SLURM_BATCH_STAMPEDE = "slurm@batch1.stampede.tacc.utexas.edu";
private static final String LONESTAR_ADDRESS = "root@c312-206.ls4.tacc.utexas.edu";
- private static EmailBasedMonitor emailBasedMonitor;
- private final MonitorPublisher monitorPublisher;
+ private final EmailMonitorProperty emailMonitorProperty;
+ private boolean stopMonitoring = false;
private Session session ;
private Store store;
private Folder emailFolder;
- private String host, emailAddress, password, folderName, mailStoreProtocol;
+// private String host, emailAddress, password, folderName, mailStoreProtocol;
private Properties properties;
private Map<String, JobExecutionContext> jobMonitorMap = new ConcurrentHashMap<String, JobExecutionContext>();
- private EmailBasedMonitor(MonitorPublisher monitorPublisher) throws ApplicationSettingsException {
- this.monitorPublisher = monitorPublisher;
+ public EmailBasedMonitor(EmailMonitorProperty emailMonitorProp) {
+ this.emailMonitorProperty = emailMonitorProp;
init();
}
- private void init() throws ApplicationSettingsException {
- host = ServerSettings.getEmailBasedMonitorHost();
- emailAddress = ServerSettings.getEmailBasedMonitorAddress();
- password = ServerSettings.getEmailBasedMonitorPassword();
- folderName = ServerSettings.getEmailBasedMonitorFolderName();
- mailStoreProtocol = ServerSettings.getEmailBasedMonitorStoreProtocol();
-
+ private void init() {
properties = new Properties();
- properties.put("mail.store.protocol", mailStoreProtocol);
+ properties.put("mail.store.protocol", emailMonitorProperty.getStoreProtocol());
}
- public static EmailBasedMonitor getInstant(MonitorPublisher monitorPublisher) throws ApplicationSettingsException {
+/* public static EmailBasedMonitor getInstant(EmailMonitorProperty emailMonitorProp, MonitorPublisher monitorPublisher)
+ throws ApplicationSettingsException {
if (emailBasedMonitor == null) {
synchronized (EmailBasedMonitor.class) {
if (emailBasedMonitor == null) {
- emailBasedMonitor = new EmailBasedMonitor(monitorPublisher);
+ emailBasedMonitor = new EmailBasedMonitor(emailMonitorProp);
Thread thread = new Thread(emailBasedMonitor);
thread.start();
}
@@ -99,7 +95,7 @@ public class EmailBasedMonitor implements Runnable{
}
return emailBasedMonitor;
- }
+ }*/
public void addToJobMonitorMap(JobExecutionContext jobExecutionContext) {
addToJobMonitorMap(jobExecutionContext.getJobDetails().getJobID(), jobExecutionContext);
@@ -134,14 +130,15 @@ public class EmailBasedMonitor implements Runnable{
public void run() {
try {
session = Session.getDefaultInstance(properties);
- store = session.getStore(mailStoreProtocol);
- store.connect(host, emailAddress, password);
- while (!ServerSettings.isStopAllThreads()) {
+ store = session.getStore(getProtocol(emailMonitorProperty.getStoreProtocol()));
+ store.connect(emailMonitorProperty.getHost(), emailMonitorProperty.getEmailAddress(),
+ emailMonitorProperty.getPassword());
+ while (!(stopMonitoring || ServerSettings.isStopAllThreads())) {
if (!store.isConnected()) {
store.connect();
}
Thread.sleep(2000);
- emailFolder = store.getFolder(folderName);
+ emailFolder = store.getFolder(emailMonitorProperty.getFolderName());
emailFolder.open(Folder.READ_WRITE);
Message[] searchMessages = emailFolder.search(new FlagTerm(new Flags(Flags.Flag.SEEN), false));
List<Message> processedMessages = new ArrayList<>();
@@ -177,6 +174,8 @@ public class EmailBasedMonitor implements Runnable{
log.error("Couldn't connect to the store ", e);
} catch (InterruptedException e) {
log.error("Interrupt exception while sleep ", e);
+ } catch (AiravataException e) {
+ log.error("UnHandled arguments ", e);
} finally {
try {
store.close();
@@ -186,11 +185,21 @@ public class EmailBasedMonitor implements Runnable{
}
}
+ private String getProtocol(EmailProtocol storeProtocol) throws AiravataException {
+ switch (storeProtocol) {
+ case IMAPS:
+ return "imaps";
+ case POP3:
+ return "pop3";
+ default:
+ throw new AiravataException("Unhandled Email store protocol ");
+ }
+ }
private void process(JobStatusResult jobStatusResult, JobExecutionContext jEC){
JobState resultState = jobStatusResult.getState();
jEC.getJobDetails().setJobStatus(new JobStatus(resultState));
if (resultState == JobState.COMPLETE) {
- GFacThreadPoolExecutor.getFixedThreadPool().submit(new OutHandlerWorker(jEC, monitorPublisher));
+ GFacThreadPoolExecutor.getFixedThreadPool().submit(new OutHandlerWorker(jEC, BetterGfacImpl.getMonitorPublisher()));
}else if (resultState == JobState.QUEUED) {
// TODO - publish queued rabbitmq message
}else if (resultState == JobState.FAILED) {
@@ -216,7 +225,7 @@ public class EmailBasedMonitor implements Runnable{
"experiment {} , task {}", jobStatus.getJobIdentity().getExperimentId(),
jobStatus.getJobIdentity().getTaskId());
- monitorPublisher.publish(jobStatus);
+ BetterGfacImpl.getMonitorPublisher().publish(jobStatus);
}
private void writeEnvelopeOnError(Message m) throws MessagingException {
@@ -235,4 +244,8 @@ public class EmailBasedMonitor implements Runnable{
if (m.getSubject() != null)
log.error("SUBJECT: " + m.getSubject());
}
+
+ public void stopMonitoring() {
+ stopMonitoring = true;
+ }
}
http://git-wip-us.apache.org/repos/asf/airavata/blob/93d4421b/modules/gfac/gfac-monitor/gfac-email-monitor/src/main/java/org/apache/airavata/gfac/monitor/email/EmailMonitorFactory.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-monitor/gfac-email-monitor/src/main/java/org/apache/airavata/gfac/monitor/email/EmailMonitorFactory.java b/modules/gfac/gfac-monitor/gfac-email-monitor/src/main/java/org/apache/airavata/gfac/monitor/email/EmailMonitorFactory.java
new file mode 100644
index 0000000..2c24973
--- /dev/null
+++ b/modules/gfac/gfac-monitor/gfac-email-monitor/src/main/java/org/apache/airavata/gfac/monitor/email/EmailMonitorFactory.java
@@ -0,0 +1,58 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+*/
+package org.apache.airavata.gfac.monitor.email;
+
+import org.apache.airavata.model.appcatalog.computeresource.EmailMonitorProperty;
+
+import java.util.HashMap;
+import java.util.Map;
+
+public class EmailMonitorFactory {
+
+ private Map<String, EmailBasedMonitor> emailMonitors = new HashMap<String, EmailBasedMonitor>();
+
+
+ public synchronized EmailBasedMonitor getEmailBasedMonitor(EmailMonitorProperty emailMonitorProp) {
+ String key = getKey(emailMonitorProp);
+ EmailBasedMonitor monitor = emailMonitors.get(key);
+ if (monitor == null) {
+ monitor = new EmailBasedMonitor(emailMonitorProp);
+ emailMonitors.put(key, monitor);
+ new Thread(monitor).start();
+ }
+ return monitor;
+ }
+
+ public void stopAllMonitors() {
+ for (EmailBasedMonitor emailBasedMonitor : emailMonitors.values()) {
+ emailBasedMonitor.stopMonitoring();
+ }
+ }
+
+ private String getKey(EmailMonitorProperty emailMonitorProp) {
+ StringBuffer sb = new StringBuffer(emailMonitorProp.getHost().trim());
+ sb.append("_").append(emailMonitorProp.getStoreProtocol().name());
+ sb.append("_").append(emailMonitorProp.getEmailAddress().trim());
+ sb.append("_").append(emailMonitorProp.getFolderName().trim());
+ return sb.toString();
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/airavata/blob/93d4421b/modules/gfac/gfac-ssh/src/main/java/org/apache/airavata/gfac/ssh/provider/impl/SSHProvider.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-ssh/src/main/java/org/apache/airavata/gfac/ssh/provider/impl/SSHProvider.java b/modules/gfac/gfac-ssh/src/main/java/org/apache/airavata/gfac/ssh/provider/impl/SSHProvider.java
index b201c79..7c29352 100644
--- a/modules/gfac/gfac-ssh/src/main/java/org/apache/airavata/gfac/ssh/provider/impl/SSHProvider.java
+++ b/modules/gfac/gfac-ssh/src/main/java/org/apache/airavata/gfac/ssh/provider/impl/SSHProvider.java
@@ -21,6 +21,7 @@
package org.apache.airavata.gfac.ssh.provider.impl;
+import org.airavata.appcatalog.cpi.AppCatalogException;
import org.apache.airavata.common.exception.ApplicationSettingsException;
import org.apache.airavata.common.utils.ServerSettings;
import org.apache.airavata.gfac.Constants;
@@ -36,6 +37,7 @@ import org.apache.airavata.gfac.core.provider.AbstractProvider;
import org.apache.airavata.gfac.core.provider.GFacProviderException;
import org.apache.airavata.gfac.core.utils.GFacUtils;
import org.apache.airavata.gfac.monitor.email.EmailBasedMonitor;
+import org.apache.airavata.gfac.monitor.email.EmailMonitorFactory;
import org.apache.airavata.gfac.ssh.security.SSHSecurityContext;
import org.apache.airavata.gfac.ssh.util.GFACSSHUtils;
import org.apache.airavata.gsi.ssh.api.Cluster;
@@ -47,9 +49,12 @@ import org.apache.airavata.gsi.ssh.impl.StandardOutReader;
import org.apache.airavata.model.appcatalog.appdeployment.SetEnvPaths;
import org.apache.airavata.model.appcatalog.appinterface.DataType;
import org.apache.airavata.model.appcatalog.appinterface.InputDataObjectType;
+import org.apache.airavata.model.appcatalog.computeresource.EmailMonitorProperty;
import org.apache.airavata.model.appcatalog.computeresource.JobSubmissionProtocol;
+import org.apache.airavata.model.appcatalog.computeresource.MonitorMode;
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.workspace.experiment.CorrectiveAction;
import org.apache.airavata.model.workspace.experiment.ErrorCategory;
import org.apache.airavata.model.workspace.experiment.JobDetails;
@@ -369,33 +374,40 @@ public class SSHProvider extends AbstractProvider {
return stdOutputString;
}
- public void delegateToMonitorHandlers(JobExecutionContext jobExecutionContext) throws GFacHandlerException {
- if (ServerSettings.isEmailBasedNotificationEnable()) {
- try {
- EmailBasedMonitor emailBasedMonitor = EmailBasedMonitor.getInstant(BetterGfacImpl.getMonitorPublisher());
- emailBasedMonitor.addToJobMonitorMap(jobExecutionContext);
- } catch (ApplicationSettingsException e) {
- throw new GFacHandlerException("Error while delegating job execution context to email based monitor");
- }
- } else {
- List<ThreadedHandler> daemonHandlers = BetterGfacImpl.getDaemonHandlers();
- if (daemonHandlers == null) {
- daemonHandlers = BetterGfacImpl.getDaemonHandlers();
- }
- ThreadedHandler pullMonitorHandler = null;
- ThreadedHandler pushMonitorHandler = null;
- for (ThreadedHandler threadedHandler : daemonHandlers) {
- if ("org.apache.airavata.gfac.monitor.handlers.GridPullMonitorHandler".equals(threadedHandler.getClass().getName())) {
- pullMonitorHandler = threadedHandler;
- pullMonitorHandler.invoke(jobExecutionContext);
+ public void delegateToMonitorHandlers(JobExecutionContext jobExecutionContext) throws GFacHandlerException, AppCatalogException {
+ if (jobExecutionContext.getPreferredJobSubmissionProtocol()== JobSubmissionProtocol.SSH) {
+ String jobSubmissionInterfaceId = jobExecutionContext.getPreferredJobSubmissionInterface().getJobSubmissionInterfaceId();
+ SSHJobSubmission sshJobSubmission = jobExecutionContext.getAppCatalog().getComputeResource().getSSHJobSubmission(jobSubmissionInterfaceId);
+ if (sshJobSubmission.getMonitorMode() == MonitorMode.JOB_EMAIL_NOTIFICATION_MONITOR) {
+ EmailMonitorProperty emailMonitorProp = sshJobSubmission.getEmailMonitorProperty();
+ if (emailMonitorProp != null) {
+ EmailMonitorFactory emailMonitorFactory = new EmailMonitorFactory();
+ EmailBasedMonitor emailBasedMonitor = emailMonitorFactory.getEmailBasedMonitor(emailMonitorProp);
+ emailBasedMonitor.addToJobMonitorMap(jobExecutionContext);
+ return;
}
- // have to handle the GridPushMonitorHandler logic
}
- if (pullMonitorHandler == null && pushMonitorHandler == null && ExecutionMode.ASYNCHRONOUS.equals(jobExecutionContext.getGFacConfiguration().getExecutionMode())) {
- log.error("No Daemon handler is configured in gfac-config.xml, either pull or push, so monitoring will not invoked" +
- ", execution is configured as asynchronous, so Outhandler will not be invoked");
+ }
+
+ // if email monitor is not activeated or not configure we use pull or push monitor
+ List<ThreadedHandler> daemonHandlers = BetterGfacImpl.getDaemonHandlers();
+ if (daemonHandlers == null) {
+ daemonHandlers = BetterGfacImpl.getDaemonHandlers();
+ }
+ ThreadedHandler pullMonitorHandler = null;
+ ThreadedHandler pushMonitorHandler = null;
+ for (ThreadedHandler threadedHandler : daemonHandlers) {
+ if ("org.apache.airavata.gfac.monitor.handlers.GridPullMonitorHandler".equals(threadedHandler.getClass().getName())) {
+ pullMonitorHandler = threadedHandler;
+ pullMonitorHandler.invoke(jobExecutionContext);
}
+ // have to handle the GridPushMonitorHandler logic
}
+ if (pullMonitorHandler == null && pushMonitorHandler == null && ExecutionMode.ASYNCHRONOUS.equals(jobExecutionContext.getGFacConfiguration().getExecutionMode())) {
+ log.error("No Daemon handler is configured in gfac-config.xml, either pull or push, so monitoring will not invoked" +
+ ", execution is configured as asynchronous, so Outhandler will not be invoked");
+ }
+
}
}
[3/5] 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/fc208820
Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/fc208820
Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/fc208820
Branch: refs/heads/emailMonitoring
Commit: fc20882025dd1830b85c626522fd64da03080f20
Parents: 50672a7 fdb3fc9
Author: shamrath <sh...@gmail.com>
Authored: Thu Apr 9 16:15:33 2015 -0400
Committer: shamrath <sh...@gmail.com>
Committed: Thu Apr 9 16:15:33 2015 -0400
----------------------------------------------------------------------
.../test-suite/multi-tenanted-airavata/README | 2 +-
.../test-suite/multi-tenanted-airavata/pom.xml | 29 ++++
.../ApplicationRegister.java | 147 +++++++++++--------
.../ComputeResourceRegister.java | 2 +-
.../ExperimentExecution.java | 140 ++++++++++--------
.../FrameworkBootstrapping.java | 2 +-
.../multitenantedairavata/GatewayRegister.java | 23 ++-
.../utils/FrameworkUtils.java | 54 +++++++
.../utils/TestFrameworkConstants.java | 3 +
.../main/resources/test-framework.properties | 3 +
10 files changed, 275 insertions(+), 130 deletions(-)
----------------------------------------------------------------------