You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by la...@apache.org on 2014/02/25 22:57:43 UTC

[1/2] git commit: integrating orchestrator-core wth orchestrator service - AIRAVATA-1028

Repository: airavata
Updated Branches:
  refs/heads/master db954ff0c -> 2a52bd743


integrating orchestrator-core wth orchestrator service - AIRAVATA-1028


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

Branch: refs/heads/master
Commit: 7849212bcd58af6a0109f4c53a56e0dd6da3541c
Parents: b5d57f8
Author: lahiru <la...@apache.org>
Authored: Tue Feb 25 16:57:22 2014 -0500
Committer: lahiru <la...@apache.org>
Committed: Tue Feb 25 16:57:22 2014 -0500

----------------------------------------------------------------------
 modules/airavata-job-monitor/pom.xml            |  4 +-
 .../job/monitor/AiravataJobStatusUpdator.java   | 24 +++--
 .../monitor/impl/pull/qstat/QstatMonitor.java   |  5 +-
 .../airavata/job/monitor/AMQPMonitorTest.java   | 32 ++-----
 .../airavata/job/monitor/QstatMonitorTest.java  | 43 +++------
 .../apache/airavata/common/utils/Constants.java |  1 +
 .../java/org/apache/airavata/gfac/cpi/GFac.java | 10 ++-
 .../org/apache/airavata/gfac/cpi/GFacImpl.java  | 11 ++-
 .../airavata-orchestrator-service/pom.xml       | 17 +++-
 .../server/OrchestratorServerHandler.java       | 93 +++++++++++++++++++-
 .../core/impl/EmbeddedGFACJobSubmitter.java     | 11 ++-
 .../core/OrchestratorTestWithGRAM.java          |  1 -
 .../core/OrchestratorTestWithGSISSH.java        |  2 -
 .../xbaya/invoker/EmbeddedGFacInvoker.java      | 26 ++++++
 pom.xml                                         |  1 +
 tools/gsissh/src/main/java/SSHDemo.java         |  1 +
 .../apache/airavata/gsi/ssh/GSSContextX509.java |  2 -
 .../airavata/gsi/ssh/impl/PBSCluster.java       |  3 +-
 18 files changed, 195 insertions(+), 92 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/7849212b/modules/airavata-job-monitor/pom.xml
----------------------------------------------------------------------
diff --git a/modules/airavata-job-monitor/pom.xml b/modules/airavata-job-monitor/pom.xml
index 4476a5d..a2afb1d 100644
--- a/modules/airavata-job-monitor/pom.xml
+++ b/modules/airavata-job-monitor/pom.xml
@@ -46,7 +46,7 @@
                 </exclusion>
             </exclusions>
         </dependency>
-        <dependency>
+        <!--dependency>
             <groupId>org.bouncycastle</groupId>
             <artifactId>bcprov-jdk15on</artifactId>
             <version>1.48</version>
@@ -55,7 +55,7 @@
             <groupId>org.bouncycastle</groupId>
             <artifactId>bcpkix-jdk15on</artifactId>
             <version>1.48</version>
-        </dependency>
+        </dependency-->
         <!-- Logging -->
         <dependency>
             <groupId>org.slf4j</groupId>

http://git-wip-us.apache.org/repos/asf/airavata/blob/7849212b/modules/airavata-job-monitor/src/main/java/org/apache/airavata/job/monitor/AiravataJobStatusUpdator.java
----------------------------------------------------------------------
diff --git a/modules/airavata-job-monitor/src/main/java/org/apache/airavata/job/monitor/AiravataJobStatusUpdator.java b/modules/airavata-job-monitor/src/main/java/org/apache/airavata/job/monitor/AiravataJobStatusUpdator.java
index 8ce7f34..f7afc4d 100644
--- a/modules/airavata-job-monitor/src/main/java/org/apache/airavata/job/monitor/AiravataJobStatusUpdator.java
+++ b/modules/airavata-job-monitor/src/main/java/org/apache/airavata/job/monitor/AiravataJobStatusUpdator.java
@@ -64,11 +64,6 @@ public class AiravataJobStatusUpdator{
                 the registry accordingly, for now we are just printing to standard Out
                  */
         JobState state = jobStatus.getState();
-        System.out.println("Job ID: " + jobStatus.getMonitorID().getJobID());
-        System.out.println("Username: " + jobStatus.getMonitorID().getUserName());
-        System.out.println("Job Status: " + jobStatus.getState().toString());
-
-
         switch (state) {
             case COMPLETE:
                 logger.info("Job ID:" + jobStatus.getMonitorID().getJobID() + "is DONE");
@@ -76,28 +71,29 @@ public class AiravataJobStatusUpdator{
                 break;
             case UNKNOWN:
                 logger.info("Job ID:" + jobStatus.getMonitorID().getJobID() + "is UNKNOWN");
-                System.out.println("Unknown job status came, if the old job status is RUNNING or something active, we have to make it complete");
+                logger.info("Unknown job status came, if the old job status is RUNNING or something active, we have to make it complete");
                 //todo implement this logic
                 break;
             case QUEUED:
-                logger.info("Job ID:" + jobStatus.getMonitorID().getJobID() + "is QUEUED");
-
+                logger.info("Job ID:" + jobStatus.getMonitorID().getJobID() + " is QUEUED");
+                break;
             case SUBMITTED:
-                logger.info("Job ID:" + jobStatus.getMonitorID().getJobID() + "is SUBMITTED");
+                logger.info("Job ID:" + jobStatus.getMonitorID().getJobID() + " is SUBMITTED");
+                break;
             case ACTIVE:
-                logger.info("Job ID:" + jobStatus.getMonitorID().getJobID() + "is ACTIVE");
+                logger.info("Job ID:" + jobStatus.getMonitorID().getJobID() + " is ACTIVE");
                 break;
             case CANCELED:
-                logger.info("Job ID:" + jobStatus.getMonitorID().getJobID() + "is CANCELED");
+                logger.info("Job ID:" + jobStatus.getMonitorID().getJobID() + " is CANCELED");
                 break;
             case FAILED:
-                logger.info("Job ID:" + jobStatus.getMonitorID().getJobID() + "is FAILED");
+                logger.info("Job ID:" + jobStatus.getMonitorID().getJobID() + " is FAILED");
                 break;
             case HELD:
-                logger.info("Job ID:" + jobStatus.getMonitorID().getJobID() + "is HELD");
+                logger.info("Job ID:" + jobStatus.getMonitorID().getJobID() + " is HELD");
                 break;
             case SUSPENDED:
-                logger.info("Job ID:" + jobStatus.getMonitorID().getJobID() + "is SUSPENDED");
+                logger.info("Job ID:" + jobStatus.getMonitorID().getJobID() + " is SUSPENDED");
                 break;
         }
     }

http://git-wip-us.apache.org/repos/asf/airavata/blob/7849212b/modules/airavata-job-monitor/src/main/java/org/apache/airavata/job/monitor/impl/pull/qstat/QstatMonitor.java
----------------------------------------------------------------------
diff --git a/modules/airavata-job-monitor/src/main/java/org/apache/airavata/job/monitor/impl/pull/qstat/QstatMonitor.java b/modules/airavata-job-monitor/src/main/java/org/apache/airavata/job/monitor/impl/pull/qstat/QstatMonitor.java
index 9568691..85cc29d 100644
--- a/modules/airavata-job-monitor/src/main/java/org/apache/airavata/job/monitor/impl/pull/qstat/QstatMonitor.java
+++ b/modules/airavata-job-monitor/src/main/java/org/apache/airavata/job/monitor/impl/pull/qstat/QstatMonitor.java
@@ -134,7 +134,10 @@ public class QstatMonitor extends PullMonitor implements Runnable {
                     // in this case job is finished or may be the given job ID is wrong
                     jobStatus.setState(JobState.UNKNOWN);
                     publisher.publish(jobStatus);
-                }else if(!this.queue.contains(take)){   // we put the job back to the queue only if its state is not unknown
+                }else if(e.getMessage().contains("illegally formed job identifier")){
+                   logger.error("Wrong job ID is given so dropping the job from monitoring system");
+                }
+                else if(!this.queue.contains(take)){   // we put the job back to the queue only if its state is not unknown
                     try {
                         this.queue.put(take);
                     } catch (InterruptedException e1) {

http://git-wip-us.apache.org/repos/asf/airavata/blob/7849212b/modules/airavata-job-monitor/src/test/java/org/apache/airavata/job/monitor/AMQPMonitorTest.java
----------------------------------------------------------------------
diff --git a/modules/airavata-job-monitor/src/test/java/org/apache/airavata/job/monitor/AMQPMonitorTest.java b/modules/airavata-job-monitor/src/test/java/org/apache/airavata/job/monitor/AMQPMonitorTest.java
index 50b6c38..581c1f9 100644
--- a/modules/airavata-job-monitor/src/test/java/org/apache/airavata/job/monitor/AMQPMonitorTest.java
+++ b/modules/airavata-job-monitor/src/test/java/org/apache/airavata/job/monitor/AMQPMonitorTest.java
@@ -73,7 +73,7 @@ public class AMQPMonitorTest {
             monitorManager.addPushMonitor(amqpMonitor);
             monitorManager.launchMonitor();
         } catch (AiravataMonitorException e) {
-            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
+            e.printStackTrace();
         }
 
         hostDescription = new HostDescription(GsisshHostType.type);
@@ -120,30 +120,16 @@ public class AMQPMonitorTest {
         //finished construction of job object
         System.out.println(jobDescriptor.toXML());
         String jobID = pbsCluster.submitBatchJob(jobDescriptor);
-
-        Thread test = new TestThread(monitorManager);
-        test.start();
+        System.out.println(jobID);
         try {
-            test.join();
-        } catch (InterruptedException e) {
-            e.printStackTrace();
-        }
-    }
-
-    private class TestThread extends Thread {
-        private MonitorManager manager;
-
-        public TestThread(MonitorManager manager) {
-            this.manager = manager;
+            monitorManager.addAJobToMonitor(new MonitorID(hostDescription, jobID, "ogce"));
+        } catch (AiravataMonitorException e) {
+            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
         }
-
-        @Override
-        public void run() {
-            try {
-                monitorManager.addAJobToMonitor(new MonitorID(hostDescription, "gordon.sdsc.xsede.org", "ogce"));
-            } catch (AiravataMonitorException e) {
-                e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
-            }
+        try {
+            Thread.sleep(10000);
+        } catch (InterruptedException e) {
+            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/7849212b/modules/airavata-job-monitor/src/test/java/org/apache/airavata/job/monitor/QstatMonitorTest.java
----------------------------------------------------------------------
diff --git a/modules/airavata-job-monitor/src/test/java/org/apache/airavata/job/monitor/QstatMonitorTest.java b/modules/airavata-job-monitor/src/test/java/org/apache/airavata/job/monitor/QstatMonitorTest.java
index 8985ecd..e3a4873 100644
--- a/modules/airavata-job-monitor/src/test/java/org/apache/airavata/job/monitor/QstatMonitorTest.java
+++ b/modules/airavata-job-monitor/src/test/java/org/apache/airavata/job/monitor/QstatMonitorTest.java
@@ -73,7 +73,7 @@ public class QstatMonitorTest {
             monitorManager.addPullMonitor(qstatMonitor);
             monitorManager.launchMonitor();
         } catch (AiravataMonitorException e) {
-            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
+            e.printStackTrace();
         }
 
         hostDescription = new HostDescription(GsisshHostType.type);
@@ -82,7 +82,7 @@ public class QstatMonitorTest {
     }
 
     @Test
-    public void testAMQPMonitor() throws SSHApiException {
+    public void testQstatMonitor() throws SSHApiException {
         /* now have to submit a job to some machine and add that job to the queue */
         //Create authentication
         GSIAuthenticationInfo authenticationInfo
@@ -119,41 +119,20 @@ public class QstatMonitorTest {
         jobDescriptor.setInputValues(inputs);
         //finished construction of job object
         System.out.println(jobDescriptor.toXML());
-        String jobID = pbsCluster.submitBatchJob(jobDescriptor);
-
-        Thread test = new TestThread(monitorManager,jobID);
-        test.start();
-        try {
-            Thread.sleep(1000000);
-            test.join();
-        } catch (InterruptedException e) {
-            e.printStackTrace();
-        }
-    }
-
-    private class TestThread extends Thread {
-        private MonitorManager manager;
-
-        private String jobID;
-
-        public TestThread(MonitorManager manager,String jobID) {
-            this.manager = manager;
-            this.jobID = jobID;
-        }
-
-        @Override
-        public void run() {
+        for (int i = 0; i < 50; i++) {
+            String jobID = pbsCluster.submitBatchJob(jobDescriptor);
+            MonitorID monitorID = new MonitorID(hostDescription, jobID, "ogce");
+            monitorID.setAuthenticationInfo(authenticationInfo);
             try {
-                MonitorID monitorID = new MonitorID(hostDescription, jobID, "ogce");
-                GSIAuthenticationInfo authenticationInfo
-                = new MyProxyAuthenticationInfo(myProxyUserName, myProxyPassword, "myproxy.teragrid.org",
-                7512, 17280000, certificateLocation);
-                monitorID.setAuthenticationInfo(authenticationInfo);
-
                 monitorManager.addAJobToMonitor(monitorID);
             } catch (AiravataMonitorException e) {
                 e.printStackTrace();
             }
         }
+        try {
+            Thread.sleep(10000000);
+        } catch (InterruptedException e) {
+            e.printStackTrace();
+        }
     }
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/7849212b/modules/commons/utils/src/main/java/org/apache/airavata/common/utils/Constants.java
----------------------------------------------------------------------
diff --git a/modules/commons/utils/src/main/java/org/apache/airavata/common/utils/Constants.java b/modules/commons/utils/src/main/java/org/apache/airavata/common/utils/Constants.java
index effc4bb..1101d9d 100644
--- a/modules/commons/utils/src/main/java/org/apache/airavata/common/utils/Constants.java
+++ b/modules/commons/utils/src/main/java/org/apache/airavata/common/utils/Constants.java
@@ -29,4 +29,5 @@ public final class Constants {
     public static final String USER_IN_SESSION = "userName";
     public static final String GATEWAY_NAME = "gateway_id";
     public static final String GFAC_CONFIG_XML = "gfac-config.xml";
+    public static final String MONITOR_PROPERTIES = "monitor.properties";
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/7849212b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/cpi/GFac.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/cpi/GFac.java b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/cpi/GFac.java
index b9ff2c4..a2a4b1e 100644
--- a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/cpi/GFac.java
+++ b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/cpi/GFac.java
@@ -21,6 +21,7 @@
 package org.apache.airavata.gfac.cpi;
 
 import org.apache.airavata.gfac.GFacException;
+import org.apache.airavata.gfac.context.JobExecutionContext;
 import org.apache.airavata.model.experiment.ConfigurationData;
 import org.apache.airavata.registry.cpi.DataType;
 
@@ -38,6 +39,13 @@ public interface GFac {
      * @return
      * @throws org.apache.airavata.gfac.GFacException
      */
-    public boolean submitJob(String experimentID) throws GFacException;
+    public JobExecutionContext submitJob(String experimentID) throws GFacException;
+
+    /**
+     * This method has to be invoked after submitting the job and have to make sure job is properly finished
+     * @param jobExecutionContext
+     * @throws GFacException
+     */
+    public void invokeOutFlowHandlers(JobExecutionContext jobExecutionContext) throws GFacException;
 
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/7849212b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/cpi/GFacImpl.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/cpi/GFacImpl.java b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/cpi/GFacImpl.java
index d73d1b0..f2befc4 100644
--- a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/cpi/GFacImpl.java
+++ b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/cpi/GFacImpl.java
@@ -109,10 +109,10 @@ public class GFacImpl implements GFac {
      * @return
      * @throws GFacException
      */
-    public boolean submitJob(String experimentID) throws GFacException {
+    public JobExecutionContext submitJob(String experimentID) throws GFacException {
         ConfigurationData configurationData = (ConfigurationData) registry.get(DataType.EXPERIMENT_CONFIGURATION_DATA, experimentID);
         String serviceName = configurationData.getApplicationId();
-
+        JobExecutionContext jobExecutionContext = null;
         if (serviceName == null) {
             throw new GFacException("Error executing the job because there is not Application Name in this Experiment");
         }
@@ -133,7 +133,7 @@ public class GFacImpl implements GFac {
             Properties configurationProperties = ServerSettings.getProperties();
             GFacConfiguration gFacConfiguration = GFacConfiguration.create(new File(resource.getPath()), airavataAPI, configurationProperties);
 
-            JobExecutionContext jobExecutionContext = new JobExecutionContext(gFacConfiguration, serviceName);
+            jobExecutionContext = new JobExecutionContext(gFacConfiguration, serviceName);
 
             ApplicationContext applicationContext = new ApplicationContext();
             applicationContext.setApplicationDeploymentDescription(applicationDescription);
@@ -158,7 +158,7 @@ public class GFacImpl implements GFac {
             log.error("Error inovoking the job with experiment ID: " + experimentID);
             throw new GFacException(e);
         }
-        return true;
+        return jobExecutionContext;
     }
 
     public void submitJob(JobExecutionContext jobExecutionContext) throws GFacException {
@@ -196,7 +196,6 @@ public class GFacImpl implements GFac {
                 executeProvider(provider, jobExecutionContext);
                 disposeProvider(provider, jobExecutionContext);
             }
-            invokeOutFlowHandlers(jobExecutionContext);
 //            if (experimentID != null){
 //                registry2.changeStatus(jobExecutionContext.getExperimentID(),AiravataJobState.State.OUTHANDLERSDONE);
 //            }
@@ -264,7 +263,7 @@ public class GFacImpl implements GFac {
         }
     }
 
-    private void invokeOutFlowHandlers(JobExecutionContext jobExecutionContext) throws GFacException {
+    public void invokeOutFlowHandlers(JobExecutionContext jobExecutionContext) throws GFacException {
         List<GFacHandlerConfig> handlers = jobExecutionContext.getGFacConfiguration().getOutHandlers();
 
         for (GFacHandlerConfig handlerClassName : handlers) {

http://git-wip-us.apache.org/repos/asf/airavata/blob/7849212b/modules/orchestrator/airavata-orchestrator-service/pom.xml
----------------------------------------------------------------------
diff --git a/modules/orchestrator/airavata-orchestrator-service/pom.xml b/modules/orchestrator/airavata-orchestrator-service/pom.xml
index edb37ab..24f4793 100644
--- a/modules/orchestrator/airavata-orchestrator-service/pom.xml
+++ b/modules/orchestrator/airavata-orchestrator-service/pom.xml
@@ -26,7 +26,6 @@
     <url>http://airavata.apache.org/</url>
 
     <dependencies>
-
         <dependency>
             <groupId>org.apache.thrift</groupId>
             <artifactId>libthrift</artifactId>
@@ -37,7 +36,21 @@
             <artifactId>slf4j-log4j12</artifactId>
             <version>${org.slf4j.version}</version>
         </dependency>
-
+        <dependency>
+            <groupId>org.apache.airavata</groupId>
+            <artifactId>airavata-orchestrator-core</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.airavata</groupId>
+            <artifactId>airavata-job-monitor</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.airavata</groupId>
+            <artifactId>airavata-gfac-core</artifactId>
+            <version>${project.version}</version>
+        </dependency>
     </dependencies>
 
     <properties>

http://git-wip-us.apache.org/repos/asf/airavata/blob/7849212b/modules/orchestrator/airavata-orchestrator-service/src/main/java/org/apache/airavata/orchestrator/server/OrchestratorServerHandler.java
----------------------------------------------------------------------
diff --git a/modules/orchestrator/airavata-orchestrator-service/src/main/java/org/apache/airavata/orchestrator/server/OrchestratorServerHandler.java b/modules/orchestrator/airavata-orchestrator-service/src/main/java/org/apache/airavata/orchestrator/server/OrchestratorServerHandler.java
index d965ec9..de5b47d 100644
--- a/modules/orchestrator/airavata-orchestrator-service/src/main/java/org/apache/airavata/orchestrator/server/OrchestratorServerHandler.java
+++ b/modules/orchestrator/airavata-orchestrator-service/src/main/java/org/apache/airavata/orchestrator/server/OrchestratorServerHandler.java
@@ -21,11 +21,35 @@
 
 package org.apache.airavata.orchestrator.server;
 
+import org.apache.airavata.common.utils.Constants;
+import org.apache.airavata.job.monitor.MonitorManager;
+import org.apache.airavata.job.monitor.core.Monitor;
+import org.apache.airavata.job.monitor.core.PullMonitor;
+import org.apache.airavata.job.monitor.core.PushMonitor;
+import org.apache.airavata.job.monitor.exception.AiravataMonitorException;
+import org.apache.airavata.orchestrator.core.exception.OrchestratorException;
 import org.apache.airavata.orchestrator.cpi.OrchestratorService;
+import org.apache.airavata.orchestrator.cpi.impl.SimpleOrchestratorImpl;
 import org.apache.airavata.orchestrator.cpi.orchestrator_cpi_serviceConstants;
+import org.apache.airavata.persistance.registry.jpa.impl.RegistryImpl;
+import org.apache.airavata.registry.cpi.Registry;
 import org.apache.thrift.TException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.net.URL;
+import java.util.Properties;
 
 public class OrchestratorServerHandler implements OrchestratorService.Iface {
+    private static Logger log = LoggerFactory.getLogger(OrchestratorServerHandler.class);
+
+    private MonitorManager monitorManager = null;
+
+    private SimpleOrchestratorImpl orchestrator = null;
+
+    private Registry registry;
 
     /**
      * Query orchestrator server to fetch the CPI version
@@ -37,9 +61,56 @@ public class OrchestratorServerHandler implements OrchestratorService.Iface {
     }
 
 
-
     public OrchestratorServerHandler() {
-        System.out.println("testing the default constructor");
+        URL monitorUrl = OrchestratorServerHandler.class.getClassLoader().getResource(Constants.MONITOR_PROPERTIES);
+        Properties properties = new Properties();
+        try {
+            // first constructing the monitorManager and orchestrator, then fill the required properties
+            monitorManager = new MonitorManager();
+            orchestrator = new SimpleOrchestratorImpl();
+            registry = new RegistryImpl();
+
+            // Filling monitorManager properties
+            properties.load(monitorUrl.openStream());
+            String primaryMonitor = properties.getProperty("primaryMonitor");
+            String secondaryMonitor = properties.getProperty("secondaryMonitor");
+            if (primaryMonitor == null) {
+                log.error("Error loading primaryMonitor and there has to be a primary monitor");
+            } else {
+                Class<? extends Monitor> aClass = Class.forName(primaryMonitor).asSubclass(Monitor.class);
+                Monitor monitor = aClass.newInstance();
+                if (monitor instanceof PullMonitor) {
+                    monitorManager.addPullMonitor((PullMonitor) monitor);
+                } else if (monitor instanceof PushMonitor) {
+                    monitorManager.addPushMonitor((PushMonitor) monitor);
+                } else {
+                    log.error("Wrong class is given to primary Monitor");
+                }
+            }
+            if (secondaryMonitor == null) {
+                log.info("No secondary Monitor has configured !!!!");
+            } else {
+                // todo we do not support a secondary Monitor at this point
+            }
+
+            // Now Monitor Manager is properly configured, now we have to start the monitoring system.
+            // This will initialize all the required threads and required queues
+            monitorManager.launchMonitor();
+        } catch (OrchestratorException e) {
+            e.printStackTrace();
+        } catch (FileNotFoundException e) {
+            e.printStackTrace();
+        } catch (IOException e) {
+            e.printStackTrace();
+        } catch (ClassNotFoundException e) {
+            e.printStackTrace();
+        } catch (InstantiationException e) {
+            e.printStackTrace();
+        } catch (IllegalAccessException e) {
+            e.printStackTrace();
+        } catch (AiravataMonitorException e) {
+            e.printStackTrace();
+        }
     }
 
     /**
@@ -58,7 +129,23 @@ public class OrchestratorServerHandler implements OrchestratorService.Iface {
     public boolean launchExperiment(String experimentId) throws TException {
         //TODO: Write the Orchestrator implementaion
 
-
+        /*
+        Use the registry to take the Experiment Model object
+         check the ExperimentModel object to check airavataAutoSchedule property
+         if its set give an error telling that we do not support it
+         else create a Task and save to the registry
+         This should return the task ID
+         if monitoring is in push mode, add the job to monitor queue, i hope by this time the host has finalized
+         Get the task ID and invoke GFAC
+         GFac will submit the job and return the jobID
+         submit the job to minitor to monitoring queue after the submission if the monitoring is in pull mode
+         RETURN;
+        */
+        try {
+            orchestrator.launchExperiment(experimentId);
+        } catch (OrchestratorException e) {
+            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
+        }
         return false;
     }
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/7849212b/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/impl/EmbeddedGFACJobSubmitter.java
----------------------------------------------------------------------
diff --git a/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/impl/EmbeddedGFACJobSubmitter.java b/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/impl/EmbeddedGFACJobSubmitter.java
index c324e8b..4a101bf 100644
--- a/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/impl/EmbeddedGFACJobSubmitter.java
+++ b/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/impl/EmbeddedGFACJobSubmitter.java
@@ -24,6 +24,7 @@ package org.apache.airavata.orchestrator.core.impl;
 import java.util.*;
 
 import org.apache.airavata.common.utils.AiravataJobState;
+import org.apache.airavata.gfac.context.JobExecutionContext;
 import org.apache.airavata.gfac.cpi.GFac;
 import org.apache.airavata.orchestrator.core.context.OrchestratorContext;
 import org.apache.airavata.orchestrator.core.exception.OrchestratorException;
@@ -44,6 +45,13 @@ public class EmbeddedGFACJobSubmitter implements JobSubmitter {
 
     private OrchestratorContext orchestratorContext;
 
+    private GFac gfac;
+
+    public EmbeddedGFACJobSubmitter(GFac gfac, OrchestratorContext orchestratorContext) {
+        this.gfac = gfac;
+        this.orchestratorContext = orchestratorContext;
+    }
+
     public void initialize(OrchestratorContext orchestratorContext) throws OrchestratorException {
         this.orchestratorContext = orchestratorContext;
     }
@@ -74,8 +82,7 @@ public class EmbeddedGFACJobSubmitter implements JobSubmitter {
         Registry newRegistry = orchestratorContext.getNewRegistry();
         try {
             //todo init this during submitter init
-            GFac gFac = new GFacImpl(newRegistry, orchestratorContext.getOrchestratorConfiguration().getAiravataAPI(), orchestratorContext.getRegistry());
-            gFac.submitJob(experimentID);
+            JobExecutionContext jobExecutionContext = gfac.submitJob(experimentID);
             orchestratorContext.getRegistry().changeStatus(experimentID, AiravataJobState.State.SUBMITTED);
         } catch (Exception e)
         {

http://git-wip-us.apache.org/repos/asf/airavata/blob/7849212b/modules/orchestrator/orchestrator-core/src/test/java/org/apache/airavata/orchestrator/core/OrchestratorTestWithGRAM.java
----------------------------------------------------------------------
diff --git a/modules/orchestrator/orchestrator-core/src/test/java/org/apache/airavata/orchestrator/core/OrchestratorTestWithGRAM.java b/modules/orchestrator/orchestrator-core/src/test/java/org/apache/airavata/orchestrator/core/OrchestratorTestWithGRAM.java
index bd1cf8a..1c62a0d 100644
--- a/modules/orchestrator/orchestrator-core/src/test/java/org/apache/airavata/orchestrator/core/OrchestratorTestWithGRAM.java
+++ b/modules/orchestrator/orchestrator-core/src/test/java/org/apache/airavata/orchestrator/core/OrchestratorTestWithGRAM.java
@@ -85,7 +85,6 @@ public class OrchestratorTestWithGRAM extends BaseOrchestratorTest {
 
         boolean b = orchestrator.launchExperiment(experimentID);
 
-        Thread.sleep(100000);
         if (b) {
             Assert.assertTrue(true);
         } else {

http://git-wip-us.apache.org/repos/asf/airavata/blob/7849212b/modules/orchestrator/orchestrator-core/src/test/java/org/apache/airavata/orchestrator/core/OrchestratorTestWithGSISSH.java
----------------------------------------------------------------------
diff --git a/modules/orchestrator/orchestrator-core/src/test/java/org/apache/airavata/orchestrator/core/OrchestratorTestWithGSISSH.java b/modules/orchestrator/orchestrator-core/src/test/java/org/apache/airavata/orchestrator/core/OrchestratorTestWithGSISSH.java
index 38a6689..6393523 100644
--- a/modules/orchestrator/orchestrator-core/src/test/java/org/apache/airavata/orchestrator/core/OrchestratorTestWithGSISSH.java
+++ b/modules/orchestrator/orchestrator-core/src/test/java/org/apache/airavata/orchestrator/core/OrchestratorTestWithGSISSH.java
@@ -53,8 +53,6 @@ public class OrchestratorTestWithGSISSH extends BaseOrchestratorTest {
      }
 
      private void createJobRequestWithDocuments() {
-
-
          //Using new airavata-api methods to store experiment metadata
          BasicMetadata basicMetadata = new BasicMetadata();
          basicMetadata.setExperimentName("test-trestles-gsissh");

http://git-wip-us.apache.org/repos/asf/airavata/blob/7849212b/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/invoker/EmbeddedGFacInvoker.java
----------------------------------------------------------------------
diff --git a/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/invoker/EmbeddedGFacInvoker.java b/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/invoker/EmbeddedGFacInvoker.java
index 29a32f4..c76ab14 100644
--- a/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/invoker/EmbeddedGFacInvoker.java
+++ b/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/invoker/EmbeddedGFacInvoker.java
@@ -407,6 +407,7 @@ public class EmbeddedGFacInvoker implements Invoker {
         if (registeredHost.getType() instanceof GlobusHostType || registeredHost.getType() instanceof UnicoreHostType
                 || registeredHost.getType() instanceof GsisshHostType) {
 
+            /* todo fix the credential store and uncomment following code block
             SecurityContextDocument.SecurityContext.CredentialManagementService credentialManagementService
                     = getCredentialManagementService(contextHeader);
 
@@ -445,6 +446,31 @@ public class EmbeddedGFacInvoker implements Invoker {
 
                 context.setPbsCluster(pbsCluster);
             }
+            */
+            requestData = new RequestData("default");
+            GSISecurityContext context;
+            try {
+                context = new GSISecurityContext(CredentialReaderFactory.createCredentialStoreReader(), requestData);
+            } catch (Exception e) {
+                throw new WorkflowException("An error occurred while creating GSI security context", e);
+            }
+
+            if (registeredHost.getType() instanceof GsisshHostType) {
+                GSIAuthenticationInfo authenticationInfo
+                        = new MyProxyAuthenticationInfo(requestData.getMyProxyUserName(), requestData.getMyProxyPassword(), requestData.getMyProxyServerUrl(),
+                        requestData.getMyProxyPort(), requestData.getMyProxyLifeTime(), System.getProperty(Constants.TRUSTED_CERTIFICATE_SYSTEM_PROPERTY));
+                ServerInfo serverInfo = new ServerInfo(requestData.getMyProxyUserName(), registeredHost.getType().getHostAddress());
+
+                Cluster pbsCluster = null;
+                try {
+                    pbsCluster = new PBSCluster(serverInfo, authenticationInfo,
+                            (((HpcApplicationDeploymentType) jobExecutionContext.getApplicationContext().getApplicationDeploymentDescription().getType()).getInstalledParentPath()));
+                } catch (SSHApiException e) {
+                    e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
+                }
+
+                context.setPbsCluster(pbsCluster);
+            }
 
             jobExecutionContext.addSecurityContext(GSISecurityContext.GSI_SECURITY_CONTEXT, context);
         } else if (registeredHost.getType() instanceof Ec2HostType) {

http://git-wip-us.apache.org/repos/asf/airavata/blob/7849212b/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 80dedcc..a2c3adb 100644
--- a/pom.xml
+++ b/pom.xml
@@ -460,6 +460,7 @@
                 <module>modules/test-suite</module>
                 <module>modules/distribution</module>
                 <module>modules/integration-tests</module>
+                <module>modules/airavata-job-monitor</module>
             </modules>
         </profile>
         <profile>

http://git-wip-us.apache.org/repos/asf/airavata/blob/7849212b/tools/gsissh/src/main/java/SSHDemo.java
----------------------------------------------------------------------
diff --git a/tools/gsissh/src/main/java/SSHDemo.java b/tools/gsissh/src/main/java/SSHDemo.java
index b33d682..688a150 100644
--- a/tools/gsissh/src/main/java/SSHDemo.java
+++ b/tools/gsissh/src/main/java/SSHDemo.java
@@ -79,6 +79,7 @@ public class SSHDemo {
             }
 
             Session session = jsch.getSession(user, host, port);
+            HostKey hostKey = session.getHostKey();
 
             java.util.Properties config = new java.util.Properties();
             config.put("StrictHostKeyChecking", "no");

http://git-wip-us.apache.org/repos/asf/airavata/blob/7849212b/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/GSSContextX509.java
----------------------------------------------------------------------
diff --git a/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/GSSContextX509.java b/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/GSSContextX509.java
index c03f93d..522acf2 100644
--- a/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/GSSContextX509.java
+++ b/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/GSSContextX509.java
@@ -55,8 +55,6 @@ public class GSSContextX509 implements com.jcraft.jsch.GSSContext {
     private GSSCredential credential;
 
     public void create(String user, String host) throws JSchException {
-        System.out.printf("Attempting GSI authentication for %s on %s\n", user, host);
-
         try {
 //			ExtendedGSSManager manager = (ExtendedGSSManager) ExtendedGSSManager.getInstance();
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/7849212b/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/impl/PBSCluster.java
----------------------------------------------------------------------
diff --git a/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/impl/PBSCluster.java b/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/impl/PBSCluster.java
index e07cdda..7a78b89 100644
--- a/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/impl/PBSCluster.java
+++ b/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/impl/PBSCluster.java
@@ -252,7 +252,8 @@ public class PBSCluster implements Cluster {
         String stdOutputString = jobIDReaderCommandOutput.getStdOutputString();
         String stdErrorString = jobIDReaderCommandOutput.getStdErrorString();
 
-        if(stdOutputString == null && "".equals(stdOutputString) || (stdErrorString != null )){
+        if (stdOutputString == null && "".equals(stdOutputString) ||
+                ((stdErrorString != null) && !("".equals(stdErrorString)))) {
             log.error("Standard Error output : " + stdErrorString);
             throw new SSHApiException(errorMsg + stdErrorString);
         }


[2/2] git commit: Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/airavata

Posted by la...@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/2a52bd74
Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/2a52bd74
Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/2a52bd74

Branch: refs/heads/master
Commit: 2a52bd743d7ca75a354e87bb6df81582d8edadc0
Parents: 7849212 db954ff
Author: lahiru <la...@apache.org>
Authored: Tue Feb 25 16:57:35 2014 -0500
Committer: lahiru <la...@apache.org>
Committed: Tue Feb 25 16:57:35 2014 -0500

----------------------------------------------------------------------
 .../server/handler/AiravataServerHandler.java   |   63 +-
 .../java/org/apache/airavata/api/Airavata.java  | 5389 ++++++++++++------
 .../airavata/model/workspace/Gateway.java       |  496 ++
 .../apache/airavata/model/workspace/Group.java  |  503 ++
 .../airavata/model/workspace/Project.java       | 1099 ++++
 .../apache/airavata/model/workspace/User.java   |  557 ++
 .../workspace/experiment/ActionableGroup.java   |   70 +
 .../experiment/AdvancedInputDataHandling.java   |  706 +++
 .../experiment/AdvancedOutputDataHandling.java  |  609 ++
 .../workspace/experiment/ApplicationStatus.java |  500 ++
 .../ComputationalResourceScheduling.java        | 1184 ++++
 .../workspace/experiment/CorrectiveAction.java  |   64 +
 .../workspace/experiment/DataObjectType.java    |  711 +++
 .../experiment/DataTransferDetails.java         |  706 +++
 .../workspace/experiment/ErrorCategory.java     |   79 +
 .../workspace/experiment/ErrorDetails.java      | 1309 +++++
 .../model/workspace/experiment/Experiment.java  | 2416 ++++++++
 .../workspace/experiment/ExperimentState.java   |   82 +
 .../workspace/experiment/ExperimentStatus.java  |  516 ++
 .../model/workspace/experiment/JobDetails.java  | 1071 ++++
 .../model/workspace/experiment/JobState.java    |   82 +
 .../model/workspace/experiment/JobStatus.java   |  516 ++
 .../experiment/QualityOfServiceParams.java      |  607 ++
 .../model/workspace/experiment/TaskDetails.java | 1921 +++++++
 .../model/workspace/experiment/TaskState.java   |   91 +
 .../model/workspace/experiment/TaskStatus.java  |  516 ++
 .../workspace/experiment/TransferState.java     |   82 +
 .../workspace/experiment/TransferStatus.java    |  516 ++
 .../experiment/UserConfigurationData.java       | 1025 ++++
 .../experiment/WorkflowNodeDetails.java         | 1337 +++++
 .../workspace/experiment/WorkflowNodeState.java |   73 +
 .../experiment/WorkflowNodeStatus.java          |  516 ++
 .../experiment/experimentModelConstants.java    |   59 +
 .../airavataAPI.thrift                          |   83 +-
 .../airavataErrors.thrift                       |    1 +
 .../jpa/resources/AbstractResource.java         |  140 +-
 .../ComputationSchedulingResource.java          |    8 +-
 .../registry/jpa/resources/Utils.java           |   24 +-
 .../jpa/ComputationalSchedulingTest.java        |   84 +
 .../registry/jpa/util/Initialize.java           |    2 +-
 .../src/test/resources/registry-derby.sql       |    1 +
 41 files changed, 23821 insertions(+), 1993 deletions(-)
----------------------------------------------------------------------