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/01/13 18:23:52 UTC

svn commit: r1557777 - in /airavata/trunk/modules: commons/utils/src/main/java/org/apache/airavata/common/utils/ orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/ orchestrator/orchestrator-core/src/main/java/org/apache...

Author: lahiru
Date: Mon Jan 13 17:23:51 2014
New Revision: 1557777

URL: http://svn.apache.org/r1557777
Log:
more design level changes to orchestrator.

Modified:
    airavata/trunk/modules/commons/utils/src/main/java/org/apache/airavata/common/utils/AiravataJobState.java
    airavata/trunk/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/HangedJobWorker.java
    airavata/trunk/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/NewJobWorker.java
    airavata/trunk/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/Orchestrator.java
    airavata/trunk/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/OrchestratorConfiguration.java
    airavata/trunk/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/PullBasedOrchestrator.java
    airavata/trunk/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/context/OrchestratorContext.java
    airavata/trunk/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/impl/EmbeddedGFACJobSubmitter.java
    airavata/trunk/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/job/JobSubmitter.java
    airavata/trunk/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/utils/OrchestratorConstants.java
    airavata/trunk/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/utils/OrchestratorUtils.java
    airavata/trunk/modules/orchestrator/orchestrator-core/src/main/resources/orchestrator.properties
    airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/AiravataJPARegistry.java
    airavata/trunk/modules/registry/registry-api/src/main/java/org/apache/airavata/registry/api/OrchestratorRegistry.java
    airavata/trunk/modules/rest/client/src/main/java/org/apache/airavata/rest/client/RegistryClient.java

Modified: airavata/trunk/modules/commons/utils/src/main/java/org/apache/airavata/common/utils/AiravataJobState.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/commons/utils/src/main/java/org/apache/airavata/common/utils/AiravataJobState.java?rev=1557777&r1=1557776&r2=1557777&view=diff
==============================================================================
--- airavata/trunk/modules/commons/utils/src/main/java/org/apache/airavata/common/utils/AiravataJobState.java (original)
+++ airavata/trunk/modules/commons/utils/src/main/java/org/apache/airavata/common/utils/AiravataJobState.java Mon Jan 13 17:23:51 2014
@@ -25,6 +25,18 @@ These are the job statuses shared in dat
 gfac instances
  */
 public class AiravataJobState {
+
+    private State jobState;
+
+    public State getJobState() {
+        return jobState;
+    }
+
+    public void setJobState(State jobState) {
+        this.jobState = jobState;
+    }
+
+
     public enum State {
         CREATED {
             public String toString() {
@@ -71,11 +83,6 @@ public class AiravataJobState {
                 return "PAUSED";
             }
         },
-        FINISHED {
-            public String toString() {
-                return "FINISHED";
-            }
-        },
         PENDING {
             public String toString() {
                 return "PENDING";
@@ -91,6 +98,11 @@ public class AiravataJobState {
                 return "DONE";
             }
         },
+        CANCELLED {
+            public String toString() {
+                return "CANCELLED";
+            }
+        },
         UNKNOWN {
             public String toString() {
                 return "UNKNOWN";

Modified: airavata/trunk/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/HangedJobWorker.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/HangedJobWorker.java?rev=1557777&r1=1557776&r2=1557777&view=diff
==============================================================================
--- airavata/trunk/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/HangedJobWorker.java (original)
+++ airavata/trunk/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/HangedJobWorker.java Mon Jan 13 17:23:51 2014
@@ -30,6 +30,10 @@ import org.slf4j.LoggerFactory;
 
 import java.util.List;
 
+/**
+ * this worker is handling hanged jobs and invoke the submitter
+ * after finding hanged jobs
+ */
 public class HangedJobWorker implements Runnable{
      private final static Logger logger = LoggerFactory.getLogger(HangedJobWorker.class);
 
@@ -48,6 +52,7 @@ public class HangedJobWorker implements 
             submitInterval = this.orchestratorContext.getOrchestratorConfiguration().getSubmitterInterval();
             Class<? extends JobSubmitter> aClass = Class.forName(submitterClass.trim()).asSubclass(JobSubmitter.class);
             jobSubmitter = aClass.newInstance();
+            jobSubmitter.initialize(this.orchestratorContext.getRegistry());
         } catch (ClassNotFoundException e) {
             logger.error("Error while loading Job Submitter");
         } catch (InstantiationException e) {
@@ -73,7 +78,7 @@ public class HangedJobWorker implements 
             /* Here the worker pick bunch of jobs available to submit and submit that to a single
               GFAC instance, we do not handle job by job submission to each gfac instance
             */
-            GFACInstance gfacInstance = jobSubmitter.selectGFACInstance(orchestratorContext);
+            GFACInstance gfacInstance = jobSubmitter.selectGFACInstance();
 
             // Now we have picked a gfac instance to submit set of jobs at this time, now its time to
             // select what are the jobs available to submit
@@ -98,7 +103,7 @@ public class HangedJobWorker implements 
                 jobSubmitter.submitJob(gfacInstance,allHangedJobs);
 
                 /* After submitting available jobs try to schedule again and then submit*/
-                jobSubmitter.submitJob(jobSubmitter.selectGFACInstance(orchestratorContext),allHangedJobs);
+                jobSubmitter.submitJob(jobSubmitter.selectGFACInstance(),allHangedJobs);
             } catch (RegistryException e) {
                 logger.error("Error while trying to retrieve available ");
             }

Modified: airavata/trunk/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/NewJobWorker.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/NewJobWorker.java?rev=1557777&r1=1557776&r2=1557777&view=diff
==============================================================================
--- airavata/trunk/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/NewJobWorker.java (original)
+++ airavata/trunk/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/NewJobWorker.java Mon Jan 13 17:23:51 2014
@@ -30,6 +30,10 @@ import org.slf4j.LoggerFactory;
 
 import java.util.List;
 
+/*
+This is the worker class to handle the jobs stored in to registry as
+fresh and this will pick those jobs and invoke the defined submitter
+ */
 public class NewJobWorker implements Runnable {
     private final static Logger logger = LoggerFactory.getLogger(NewJobWorker.class);
 
@@ -48,6 +52,7 @@ public class NewJobWorker implements Run
             submitInterval = this.orchestratorContext.getOrchestratorConfiguration().getSubmitterInterval();
             Class<? extends JobSubmitter> aClass = Class.forName(submitterClass.trim()).asSubclass(JobSubmitter.class);
             jobSubmitter = aClass.newInstance();
+            jobSubmitter.initialize(this.orchestratorContext.getRegistry());
         } catch (ClassNotFoundException e) {
             logger.error("Error while loading Job Submitter");
         } catch (InstantiationException e) {
@@ -73,7 +78,7 @@ public class NewJobWorker implements Run
             /* Here the worker pick bunch of jobs available to submit and submit that to a single
               GFAC instance, we do not handle job by job submission to each gfac instance
             */
-            GFACInstance gfacInstance = jobSubmitter.selectGFACInstance(orchestratorContext);
+            GFACInstance gfacInstance = jobSubmitter.selectGFACInstance();
 
             // Now we have picked a gfac instance to submit set of jobs at this time, now its time to
             // select what are the jobs available to submit

Modified: airavata/trunk/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/Orchestrator.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/Orchestrator.java?rev=1557777&r1=1557776&r2=1557777&view=diff
==============================================================================
--- airavata/trunk/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/Orchestrator.java (original)
+++ airavata/trunk/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/Orchestrator.java Mon Jan 13 17:23:51 2014
@@ -59,6 +59,16 @@ public interface Orchestrator {
     boolean launchExperiment(JobRequest request) throws OrchestratorException;
 
     /**
+     * This method can be used to cancel a running experiment, if job is already finished it
+     * throws an exception. If job is not yet submitted it will just change the status to cancelled,
+     * if Job is running it will be killed from the resource and make the status to cancelled
+     * @param experimentID
+     * @return
+     * @throws OrchestratorException
+     */
+    boolean cancelExperiment(String experimentID)throws OrchestratorException;
+
+    /**
      * This is like a cron job which runs continuously and take available jobs to
      * submit to GFAC and submit them to GFAC
      * @throws OrchestratorException

Modified: airavata/trunk/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/OrchestratorConfiguration.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/OrchestratorConfiguration.java?rev=1557777&r1=1557776&r2=1557777&view=diff
==============================================================================
--- airavata/trunk/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/OrchestratorConfiguration.java (original)
+++ airavata/trunk/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/OrchestratorConfiguration.java Mon Jan 13 17:23:51 2014
@@ -42,6 +42,16 @@ public class OrchestratorConfiguration {
 
     private URL brokerURL;
 
+    private boolean embeddedMode;
+
+
+    public boolean isEmbeddedMode() {
+        return embeddedMode;
+    }
+
+    public void setEmbeddedMode(boolean embeddedMode) {
+        this.embeddedMode = embeddedMode;
+    }
 
     public URL getBrokerURL() {
         return brokerURL;

Modified: airavata/trunk/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/PullBasedOrchestrator.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/PullBasedOrchestrator.java?rev=1557777&r1=1557776&r2=1557777&view=diff
==============================================================================
--- airavata/trunk/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/PullBasedOrchestrator.java (original)
+++ airavata/trunk/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/PullBasedOrchestrator.java Mon Jan 13 17:23:51 2014
@@ -59,22 +59,25 @@ public class PullBasedOrchestrator imple
 
             /* initializing the Orchestratorcontext object */
             airavataRegistry = AiravataRegistryFactory.getRegistry(new Gateway("default"), new AiravataUser("admin"));
-            Map<String, Integer> gfacNodeList = airavataRegistry.getGFACNodeList();
-            if (gfacNodeList.size() == 0) {
-                String error = "No GFAC instances available in the system, Can't initialize Orchestrator";
-                logger.error(error);
-                throw new OrchestratorException(error);
-            }
-            Set<String> uriList = gfacNodeList.keySet();
-            Iterator<String> iterator = uriList.iterator();
-            List<GFACInstance> gfacInstanceList = new ArrayList<GFACInstance>();
-            while (iterator.hasNext()) {
-                String uri = iterator.next();
-                Integer integer = gfacNodeList.get(uri);
-                gfacInstanceList.add(new GFACInstance(uri, integer));
+            // todo move this code to gfac service mode Jobsubmitter,
+            // todo this is ugly, SHOULD fix these isEmbedded mode code from Orchestrator
+            if (!orchestratorConfiguration.isEmbeddedMode()) {
+                Map<String, Integer> gfacNodeList = airavataRegistry.getGFACNodeList();
+                if (gfacNodeList.size() == 0) {
+                    String error = "No GFAC instances available in the system, Can't initialize Orchestrator";
+                    logger.error(error);
+                    throw new OrchestratorException(error);
+                }
+                Set<String> uriList = gfacNodeList.keySet();
+                Iterator<String> iterator = uriList.iterator();
+                List<GFACInstance> gfacInstanceList = new ArrayList<GFACInstance>();
+                while (iterator.hasNext()) {
+                    String uri = iterator.next();
+                    Integer integer = gfacNodeList.get(uri);
+                    gfacInstanceList.add(new GFACInstance(uri, integer));
+                }
             }
-
-            orchestratorContext = new OrchestratorContext(gfacInstanceList);
+            orchestratorContext = new OrchestratorContext();
             orchestratorContext.setOrchestratorConfiguration(orchestratorConfiguration);
             orchestratorConfiguration.setAiravataAPI(getAiravataAPI());
             /* Starting submitter thread pool */
@@ -127,7 +130,16 @@ public class PullBasedOrchestrator imple
             logger.error("Invalid Job request sent, Experiment creation failed");
             return false;
         }
-        String experimentID = request.getExperimentID();
+        String experimentID = null;
+        // we give higher priority to userExperimentID
+        if (request.getUserExperimentID() != null) {
+            experimentID = request.getUserExperimentID();
+        } else if (request.getSystemExperimentID() != null) {
+            experimentID = request.getSystemExperimentID();
+        } else {
+            logger.error("Invalid Experiment ID given: " + request.getUserName());
+            return false;
+        }
         //todo use a more concrete user type in to this
         String username = request.getUserName();
         try {
@@ -145,12 +157,38 @@ public class PullBasedOrchestrator imple
         NewJobWorker jobSubmitterWorker = new NewJobWorker(orchestratorContext);
         executor.execute(jobSubmitterWorker);
 
-        for (int i = 0; i < orchestratorContext.getOrchestratorConfiguration().getThreadPoolSize()-1; i++) {
+        for (int i = 0; i < orchestratorContext.getOrchestratorConfiguration().getThreadPoolSize() - 1; i++) {
             HangedJobWorker hangedJobWorker = new HangedJobWorker(orchestratorContext);
             executor.execute(hangedJobWorker);
         }
     }
 
+    public boolean cancelExperiment(String experimentID) throws OrchestratorException {
+        try {
+            AiravataJobState state = orchestratorContext.getRegistry().getState(experimentID);
+            if (state.getJobState().equals(AiravataJobState.State.RUNNING) || state.getJobState().equals(AiravataJobState.State.PENDING) ||
+                    state.getJobState().equals(AiravataJobState.State.ACTIVE) || state.getJobState().equals(AiravataJobState.State.SUBMITTED)) {
+
+                //todo perform cancelling and last peform the database update
+
+                orchestratorContext.getRegistry().changeStatus(experimentID, AiravataJobState.State.CANCELLED);
+            } else if (state.getJobState().equals(AiravataJobState.State.DONE)) {
+                String error = "Job is already Finished so cannot cancel the job " + experimentID;
+                logger.error(error);
+                new OrchestratorException(error);
+            }else{
+                // do nothing but simply change the job state to cancelled because job is not yet submitted to the resource
+                orchestratorContext.getRegistry().changeStatus(experimentID, AiravataJobState.State.CANCELLED);
+            }
+
+        } catch (RegistryException e) {
+            String error = "Error reading the job state for the given Experiment ID: " + experimentID;
+            logger.error(error);
+            throw new OrchestratorException(error, e);
+        }
+        return true;
+    }
+
     private AiravataAPI getAiravataAPI() {
         if (airavataAPI == null) {
             try {

Modified: airavata/trunk/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/context/OrchestratorContext.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/context/OrchestratorContext.java?rev=1557777&r1=1557776&r2=1557777&view=diff
==============================================================================
--- airavata/trunk/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/context/OrchestratorContext.java (original)
+++ airavata/trunk/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/context/OrchestratorContext.java Mon Jan 13 17:23:51 2014
@@ -42,6 +42,9 @@ public class OrchestratorContext {
         this.gfacInstanceList = new ArrayList<GFACInstance>();
     }
 
+    public OrchestratorContext() {
+    }
+
     public List<GFACInstance> getGfacInstanceList() {
         return gfacInstanceList;
     }
@@ -58,7 +61,7 @@ public class OrchestratorContext {
         this.orchestratorConfiguration = orchestratorConfiguration;
     }
 
-    public OrchestratorRegistry getRegistry() {
+    public AiravataRegistry2 getRegistry() {
         return registry;
     }
 

Modified: airavata/trunk/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/impl/EmbeddedGFACJobSubmitter.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/impl/EmbeddedGFACJobSubmitter.java?rev=1557777&r1=1557776&r2=1557777&view=diff
==============================================================================
--- airavata/trunk/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/impl/EmbeddedGFACJobSubmitter.java (original)
+++ airavata/trunk/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/impl/EmbeddedGFACJobSubmitter.java Mon Jan 13 17:23:51 2014
@@ -41,6 +41,7 @@ import org.apache.airavata.gfac.schedule
 import org.apache.airavata.orchestrator.core.context.OrchestratorContext;
 import org.apache.airavata.orchestrator.core.gfac.GFACInstance;
 import org.apache.airavata.orchestrator.core.job.JobSubmitter;
+import org.apache.airavata.registry.api.AiravataRegistry2;
 import org.apache.airavata.registry.api.JobRequest;
 import org.apache.airavata.registry.api.exception.RegistryException;
 import org.apache.axiom.om.OMElement;
@@ -75,8 +76,12 @@ public class EmbeddedGFACJobSubmitter im
         this.orchestratorContext = orchestratorContext;
     }
 
-    public GFACInstance selectGFACInstance(OrchestratorContext context) {
-        return null;
+    public void initialize(AiravataRegistry2 registry2) {
+        // since this is embedded mode we do not use gfacinstance information
+    }
+
+    public GFACInstance selectGFACInstance() {
+        return null;  //To change body of implemented methods use File | Settings | File Templates.
     }
 
 

Modified: airavata/trunk/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/job/JobSubmitter.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/job/JobSubmitter.java?rev=1557777&r1=1557776&r2=1557777&view=diff
==============================================================================
--- airavata/trunk/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/job/JobSubmitter.java (original)
+++ airavata/trunk/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/job/JobSubmitter.java Mon Jan 13 17:23:51 2014
@@ -22,6 +22,7 @@ package org.apache.airavata.orchestrator
 
 import org.apache.airavata.orchestrator.core.context.OrchestratorContext;
 import org.apache.airavata.orchestrator.core.gfac.GFACInstance;
+import org.apache.airavata.registry.api.AiravataRegistry2;
 
 import java.util.List;
 
@@ -34,11 +35,14 @@ import java.util.List;
  */
 public interface JobSubmitter {
 
+
+    void initialize(AiravataRegistry2 registry2);
+
     /**
-     * @param context
+     * This will return a single GFACInstance among multiple if available
      * @return
      */
-    GFACInstance selectGFACInstance(OrchestratorContext context);
+    GFACInstance selectGFACInstance();
 
     /**
      * @param gfac

Modified: airavata/trunk/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/utils/OrchestratorConstants.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/utils/OrchestratorConstants.java?rev=1557777&r1=1557776&r2=1557777&view=diff
==============================================================================
--- airavata/trunk/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/utils/OrchestratorConstants.java (original)
+++ airavata/trunk/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/utils/OrchestratorConstants.java Mon Jan 13 17:23:51 2014
@@ -32,4 +32,5 @@ public class OrchestratorConstants {
     public static final String SUBMIT_INTERVAL = "submitter.interval";
     public static final String THREAD_POOL_SIZE = "threadpool.size";
     public static final String START_SUBMITTER = "start.submitter";
+    public static final String EMBEDDED_MODE = "embedded.mode";
 }

Modified: airavata/trunk/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/utils/OrchestratorUtils.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/utils/OrchestratorUtils.java?rev=1557777&r1=1557776&r2=1557777&view=diff
==============================================================================
--- airavata/trunk/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/utils/OrchestratorUtils.java (original)
+++ airavata/trunk/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/utils/OrchestratorUtils.java Mon Jan 13 17:23:51 2014
@@ -52,6 +52,7 @@ public class OrchestratorUtils {
         orchestratorConfiguration.setSubmitterInterval((Integer) orchestratorProps.get(OrchestratorConstants.SUBMIT_INTERVAL));
         orchestratorConfiguration.setThreadPoolSize((Integer) orchestratorProps.get(OrchestratorConstants.THREAD_POOL_SIZE));
         orchestratorConfiguration.setStartSubmitter(Boolean.valueOf(orchestratorProps.getProperty(OrchestratorConstants.START_SUBMITTER)));
+        orchestratorConfiguration.setEmbeddedMode(Boolean.valueOf(orchestratorProps.getProperty(OrchestratorConstants.EMBEDDED_MODE)));
         return orchestratorConfiguration;
     }
 

Modified: airavata/trunk/modules/orchestrator/orchestrator-core/src/main/resources/orchestrator.properties
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/orchestrator/orchestrator-core/src/main/resources/orchestrator.properties?rev=1557777&r1=1557776&r2=1557777&view=diff
==============================================================================
--- airavata/trunk/modules/orchestrator/orchestrator-core/src/main/resources/orchestrator.properties (original)
+++ airavata/trunk/modules/orchestrator/orchestrator-core/src/main/resources/orchestrator.properties Mon Jan 13 17:23:51 2014
@@ -1,4 +1,5 @@
 job.submitter=org.apache.airavata.orchestrator.core.impl.EmbeddedGFACJobSubmitter
 submitter.interval=10000
 threadpool.size=10
-start.submitter=true
\ No newline at end of file
+start.submitter=true
+embedded.mode=true
\ No newline at end of file

Modified: airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/AiravataJPARegistry.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/AiravataJPARegistry.java?rev=1557777&r1=1557776&r2=1557777&view=diff
==============================================================================
--- airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/AiravataJPARegistry.java (original)
+++ airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/AiravataJPARegistry.java Mon Jan 13 17:23:51 2014
@@ -2562,19 +2562,24 @@ public class AiravataJPARegistry extends
 		}
     }
 
-    public Map<String, Integer> getGFACNodeList() throws RegistryException {
-        return null;  //To change body of implemented methods use File | Settings | File Templates.
-    }
-
     /**
      *These are the methods inherited from Orchestrator Registry
      */
 
 
+
     public List<URI> getLiveGFacURIs() throws RegistryException {
         return null;  //To change body of implemented methods use File | Settings | File Templates.
     }
 
+    public Map<String, Integer> getGFACNodeList() throws RegistryException {
+        return null;  //To change body of implemented methods use File | Settings | File Templates.
+    }
+
+    public boolean addGFACNode(String uri, int nodeID) throws RegistryException {
+        return false;  //To change body of implemented methods use File | Settings | File Templates.
+    }
+
     public boolean storeExperiment(String userName, String experimentID) throws RegistryException {
         return false;  //To change body of implemented methods use File | Settings | File Templates.
     }

Modified: airavata/trunk/modules/registry/registry-api/src/main/java/org/apache/airavata/registry/api/OrchestratorRegistry.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/registry/registry-api/src/main/java/org/apache/airavata/registry/api/OrchestratorRegistry.java?rev=1557777&r1=1557776&r2=1557777&view=diff
==============================================================================
--- airavata/trunk/modules/registry/registry-api/src/main/java/org/apache/airavata/registry/api/OrchestratorRegistry.java (original)
+++ airavata/trunk/modules/registry/registry-api/src/main/java/org/apache/airavata/registry/api/OrchestratorRegistry.java Mon Jan 13 17:23:51 2014
@@ -36,6 +36,15 @@ public interface OrchestratorRegistry ex
      */
     Map<String, Integer> getGFACNodeList() throws RegistryException;
 
+    /**
+     * This is the method to use to add a GFAC Node to registry,
+     * during embedded mode it should add a single gfac node
+     * @param uri
+     * @param nodeID
+     * @return
+     * @throws RegistryException
+     */
+    boolean addGFACNode(String uri, int nodeID)throws RegistryException;
 
     /**
      * This method will add an entry to job management table in database

Modified: airavata/trunk/modules/rest/client/src/main/java/org/apache/airavata/rest/client/RegistryClient.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/rest/client/src/main/java/org/apache/airavata/rest/client/RegistryClient.java?rev=1557777&r1=1557776&r2=1557777&view=diff
==============================================================================
--- airavata/trunk/modules/rest/client/src/main/java/org/apache/airavata/rest/client/RegistryClient.java (original)
+++ airavata/trunk/modules/rest/client/src/main/java/org/apache/airavata/rest/client/RegistryClient.java Mon Jan 13 17:23:51 2014
@@ -1022,6 +1022,12 @@ public class RegistryClient extends Aira
 
 
     //todo implement these methods properly
+
+
+    public boolean addGFACNode(String uri, int nodeID) throws RegistryException {
+        return false;  //To change body of implemented methods use File | Settings | File Templates.
+    }
+
     public Map<String, Integer> getGFACNodeList() throws RegistryException {
         return null;  //To change body of implemented methods use File | Settings | File Templates.
     }