Author: samindaw
Date: Wed Jan  2 19:10:32 2013
New Revision: 1427915

URL: http://svn.apache.org/viewvc?rev=1427915&view=rev
Log:
updating the API to use experimentadvanceoptions & updating the integration 
tests

Removed:
    
airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/ExperimentAdavanceOptionsImpl.java
Modified:
    
airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/api/ExecutionManager.java
    
airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/api/ExperimentAdvanceOptions.java
    
airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/api/WorkflowOutputDataSettings.java
    
airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/api/WorkflowSchedulingSettings.java
    
airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/ExecutionManagerImpl.java
    
airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/WorkflowOutputDataSettingsImpl.java
    
airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/WorkflowSchedulingSettingsImpl.java
    
airavata/trunk/modules/integration-tests/src/test/java/org/apache/airavata/integration/BaseCaseIT.java

Modified: 
airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/api/ExecutionManager.java
URL: 
http://svn.apache.org/viewvc/airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/api/ExecutionManager.java?rev=1427915&r1=1427914&r2=1427915&view=diff
==============================================================================
--- 
airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/api/ExecutionManager.java
 (original)
+++ 
airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/api/ExecutionManager.java
 Wed Jan  2 19:10:32 2013
@@ -138,7 +138,21 @@ public interface ExecutionManager {
         */
        public WorkflowContextHeaderBuilder createWorkflowContextHeader() 
throws AiravataAPIInvocationException;
 
-
+       /**
+        * Create a new experiment advance options
+        * @return
+        * @throws AiravataAPIInvocationException
+        */
     public ExperimentAdvanceOptions createExperimentAdvanceOptions() throws 
AiravataAPIInvocationException;
+    
+    /**
+     * Create a new experiment advance options
+     * @param experimentName - Name of the running experiment
+     * @param experimentUser - Experiment submission user
+     * @param experimentMetadata - Experiment metadata 
+     * @return
+     * @throws AiravataAPIInvocationException
+     */
+    public ExperimentAdvanceOptions createExperimentAdvanceOptions(String 
experimentName, String experimentUser, String experimentMetadata) throws 
AiravataAPIInvocationException;
 
 }

Modified: 
airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/api/ExperimentAdvanceOptions.java
URL: 
http://svn.apache.org/viewvc/airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/api/ExperimentAdvanceOptions.java?rev=1427915&r1=1427914&r2=1427915&view=diff
==============================================================================
--- 
airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/api/ExperimentAdvanceOptions.java
 (original)
+++ 
airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/api/ExperimentAdvanceOptions.java
 Wed Jan  2 19:10:32 2013
@@ -21,47 +21,66 @@
 
 package org.apache.airavata.client.api;
 
-import 
org.apache.airavata.common.workflow.execution.context.WorkflowContextHeaderBuilder;
+import java.util.UUID;
 
-public interface ExperimentAdvanceOptions {
+import org.apache.airavata.client.impl.WorkflowOutputDataSettingsImpl;
+import org.apache.airavata.client.impl.WorkflowSchedulingSettingsImpl;
+
+
+public class ExperimentAdvanceOptions {
+       private String executionUser;
+       private String metadata;
+       private String experimentName;
+       private String customExperimentId;
+       private WorkflowSchedulingSettings schedulingSettings;
+       private WorkflowOutputDataSettings outputDataSettings;
+//     private AiravataAPI api;
+//
+//     public ExperimentAdvanceOptions(AiravataAPI api) {
+//             this.api=api;
+//     }
        
        /**
         * Get the user who will be running the experiment if different from 
the experiment
         * submitting user.
         * @return String representing the execution user
         */
-       public String getExperimentExecutionUser();
+       public String getExperimentExecutionUser(){
+               return executionUser;
+       }
        
        /**
         * Get the metadata for the experiment.
         * @return String representing the custom metadata.
         */
-       public String getExperimentMetadata();
+       public String getExperimentMetadata(){
+               return metadata;
+       }
        
        /**
         * Get the name of the experiment
         * @return String representing the experiment name.
         */
-       public String getExperimentName();
+       public String getExperimentName(){
+               return experimentName;
+       }
        
        /**
         * Get the custom Id that will be used as the experiment Id.
         * @return String representing the custom experiment Id.
         */
-       public String getCustomExperimentId();
-       
-       /**
-        * Get the custom workflow context settings.
-        * @return WorkflowContextHeaderBuilder object.
-        */
-       public WorkflowContextHeaderBuilder getCustomWorkflowContext();
+       public String getCustomExperimentId(){
+               return customExperimentId;
+       }
        
        /**
         * Set a 3rd party user identity as the user who performed this 
experiment. If not specified 
         * the experiment submission user will be used as the execution user.
         * @param experimentExecutionUser - String representing the user.
         */
-       public void setExperimentExecutioUser(String experimentExecutionUser);
+       public void setExperimentExecutionUser(String experimentExecutionUser){
+               this.executionUser=experimentExecutionUser;
+       }
        
        /**
         * Set custom metadata for the experiment.<br />
@@ -69,40 +88,27 @@ public interface ExperimentAdvanceOption
         * retrieve them later on.</i> 
         * @param experimentMetadata - String representing the metadata.
         */
-       public void setExperimentCustomMetadata(String experimentMetadata);
+       public void setExperimentCustomMetadata(String experimentMetadata){
+               this.metadata=experimentMetadata;
+       }
        
        /**
         * Set the name of the experiment. Must be unique. If not defined the 
name will be 
         * auto-generated using the worklfow template Id & & time of experiment 
submission .
         * @param experimentName - String representing experiment name.
         */
-       public void setExperimentName(String experimentName);
+       public void setExperimentName(String experimentName){
+               this.experimentName=experimentName;
+       }
        
        /**
         * Set a custom id as an experiment Id. If not specified the system 
will autogenerate an 
         * experiment id.
         * @param customExperimentId - String representing the experiment Id.
         */
-       public void setCustomExperimentId(String customExperimentId);
-       
-       /**
-        * Set a custom workflow context to the experiment. From this users can 
specify scheduling,
-        * output handling & security related custom settings. If not specified 
a default empty workflow
-        * context will be used.
-        * @param workflowContext - WorkflowContextHeaderBuilder object which 
contains the custom 
-        * settings for the workflow context.
-        */
-       public void setCustomWorkflowContext(WorkflowContextHeaderBuilder 
workflowContext);
-       
-       /**
-        * Create a new Workflow Context object. <br />
-        * <i><b>Note:</b> This will not be set as the Custom Workflow Context 
in the ExperimentAdanceOptions. 
-        * Users should use the function 
</i><code><b>setCustomWorkflowContext(...)</b></code><i> to do 
-        * so</i>.
-        * @return A WorkflowContextHeaderBuilder object.
-        * @throws AiravataAPIInvocationException 
-        */
-       public WorkflowContextHeaderBuilder newCustomWorkflowContext() throws 
AiravataAPIInvocationException;
+       public void setCustomExperimentId(String customExperimentId){
+               this.customExperimentId=customExperimentId;
+       }
        
        /**
         * Create a unique experiment Id.<br />
@@ -110,5 +116,31 @@ public interface ExperimentAdvanceOption
         * function </i><code><b>setCustomExperimentId(...)</b></code><i> to do 
so.
         * @return A string representing a unique id.
         */
-       public String generatExperimentId();
+       public String generatExperimentId(){
+               return UUID.randomUUID().toString();
+       }
+       
+       /**
+        * Get custom workflow scheduling settings 
+        * @return
+        * @throws AiravataAPIInvocationException
+        */
+       public WorkflowSchedulingSettings getCustomWorkflowSchedulingSettings() 
throws AiravataAPIInvocationException{
+               if (schedulingSettings==null){
+                       schedulingSettings=new WorkflowSchedulingSettingsImpl();
+               }
+               return schedulingSettings;
+       }
+       
+       /**
+        * Get workflow intermediate output data settings for application 
executions
+        * @return
+        * @throws AiravataAPIInvocationException
+        */
+       public WorkflowOutputDataSettings getCustomWorkflowOutputDataSettings() 
throws AiravataAPIInvocationException{
+               if (outputDataSettings==null){
+                       outputDataSettings=new WorkflowOutputDataSettingsImpl();
+               }
+               return outputDataSettings;
+       }
 }

Modified: 
airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/api/WorkflowOutputDataSettings.java
URL: 
http://svn.apache.org/viewvc/airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/api/WorkflowOutputDataSettings.java?rev=1427915&r1=1427914&r2=1427915&view=diff
==============================================================================
--- 
airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/api/WorkflowOutputDataSettings.java
 (original)
+++ 
airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/api/WorkflowOutputDataSettings.java
 Wed Jan  2 19:10:32 2013
@@ -27,7 +27,7 @@ public interface WorkflowOutputDataSetti
         * Retrive the list of application output data settings 
         * @return
         */
-       public OutputDataSettings[] getOutputDataSettings();
+       public OutputDataSettings[] getOutputDataSettingsList();
        
        /**
         * Add a new appliation output data settings

Modified: 
airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/api/WorkflowSchedulingSettings.java
URL: 
http://svn.apache.org/viewvc/airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/api/WorkflowSchedulingSettings.java?rev=1427915&r1=1427914&r2=1427915&view=diff
==============================================================================
--- 
airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/api/WorkflowSchedulingSettings.java
 (original)
+++ 
airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/api/WorkflowSchedulingSettings.java
 Wed Jan  2 19:10:32 2013
@@ -27,7 +27,7 @@ public interface WorkflowSchedulingSetti
         * Get all currently defined scheduling settings for the workflow node
         * @return
         */
-       public NodeSettings[] getNodeSettings();
+       public NodeSettings[] getNodeSettingsList();
        
        /**
         * Add and return a new Node scheduling settings  

Modified: 
airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/ExecutionManagerImpl.java
URL: 
http://svn.apache.org/viewvc/airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/ExecutionManagerImpl.java?rev=1427915&r1=1427914&r2=1427915&view=diff
==============================================================================
--- 
airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/ExecutionManagerImpl.java
 (original)
+++ 
airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/ExecutionManagerImpl.java
 Wed Jan  2 19:10:32 2013
@@ -34,6 +34,8 @@ import org.apache.airavata.client.Airava
 import org.apache.airavata.client.api.AiravataAPIInvocationException;
 import org.apache.airavata.client.api.ExecutionManager;
 import org.apache.airavata.client.api.ExperimentAdvanceOptions;
+import org.apache.airavata.client.api.NodeSettings;
+import org.apache.airavata.client.api.OutputDataSettings;
 import org.apache.airavata.client.stub.interpretor.NameValue;
 import org.apache.airavata.client.stub.interpretor.WorkflowInterpretorStub;
 import org.apache.airavata.common.utils.XMLUtil;
@@ -126,9 +128,9 @@ public class ExecutionManagerImpl implem
                        throws AiravataAPIInvocationException {
                AiravataClientConfiguration config = 
getClient().getClientConfiguration();
                try {
-                       return new 
WorkflowContextHeaderBuilder(config.getMessagebrokerURL().toString(),
-                                       
config.getGfacURL().toString(),config.getRegistryURL().toString(),null,null,
-                                       config.getMessageboxURL().toString());
+                       return new WorkflowContextHeaderBuilder(null,
+                                       null,null,null,null,
+                                       null);
                } catch (Exception e) {
                        throw new AiravataAPIInvocationException(e);
                }
@@ -188,10 +190,7 @@ public class ExecutionManagerImpl implem
                        }
                
getClient().getProvenanceManager().setWorkflowInstanceTemplateName(experimentID,workflowTemplateName);
                
-                       WorkflowContextHeaderBuilder 
builder=options.getCustomWorkflowContext();
-                       if (builder==null){
-                               builder=options.newCustomWorkflowContext();
-                       }
+                       WorkflowContextHeaderBuilder 
builder=createWorkflowContextHeader();
                        
                        //TODO - fix user passing
                String submissionUser = 
getClient().getUserManager().getAiravataUser();
@@ -200,6 +199,14 @@ public class ExecutionManagerImpl implem
                        if (executionUser==null){
                                executionUser=submissionUser;
                        }
+                       NodeSettings[] nodeSettingsList = 
options.getCustomWorkflowSchedulingSettings().getNodeSettingsList();
+                       for (NodeSettings nodeSettings : nodeSettingsList) {
+                               
builder.addApplicationSchedulingContext(nodeSettings.getNodeId(), 
nodeSettings.getServiceId(), nodeSettings.getHostSettings().getHostId(), 
nodeSettings.getHostSettings().isWSGRAMPreffered(), 
nodeSettings.getHostSettings().getGatekeeperEPR(), 
nodeSettings.getHPCSettings().getJobManager(), 
nodeSettings.getHPCSettings().getCPUCount(), 
nodeSettings.getHPCSettings().getNodeCount(), 
nodeSettings.getHPCSettings().getQueueName(), 
nodeSettings.getHPCSettings().getMaxWallTime());
+                       }
+                       OutputDataSettings[] outputDataSettingsList = 
options.getCustomWorkflowOutputDataSettings().getOutputDataSettingsList();
+                       for (OutputDataSettings outputDataSettings : 
outputDataSettingsList) {
+                               
builder.addApplicationOutputDataHandling(outputDataSettings.getOutputDataDirectory(),
 outputDataSettings.getDataRegistryUrl(), 
outputDataSettings.isDataPersistent());
+                       }
                        runPreWorkflowExecutionTasks(experimentID, 
executionUser, options.getExperimentMetadata(), options.getExperimentName());
                        NameValue[] inputVals = inputValues.toArray(new 
NameValue[] {});
                        launchWorkflow(experimentID, workflowString, inputVals, 
builder);
@@ -280,7 +287,18 @@ public class ExecutionManagerImpl implem
        @Override
        public ExperimentAdvanceOptions createExperimentAdvanceOptions()
                        throws AiravataAPIInvocationException {
-               return new ExperimentAdavanceOptionsImpl(getClient());
+               return new ExperimentAdvanceOptions();
+       }
+
+       @Override
+       public ExperimentAdvanceOptions createExperimentAdvanceOptions(
+                       String experimentName, String experimentUser,
+                       String experimentMetadata) throws 
AiravataAPIInvocationException {
+               ExperimentAdvanceOptions options = 
createExperimentAdvanceOptions();
+               options.setExperimentName(experimentName);
+               options.setExperimentCustomMetadata(experimentMetadata);
+               options.setExperimentExecutionUser(experimentUser);
+               return options;
        }
 
 }

Modified: 
airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/WorkflowOutputDataSettingsImpl.java
URL: 
http://svn.apache.org/viewvc/airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/WorkflowOutputDataSettingsImpl.java?rev=1427915&r1=1427914&r2=1427915&view=diff
==============================================================================
--- 
airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/WorkflowOutputDataSettingsImpl.java
 (original)
+++ 
airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/WorkflowOutputDataSettingsImpl.java
 Wed Jan  2 19:10:32 2013
@@ -32,7 +32,7 @@ public class WorkflowOutputDataSettingsI
                WorkflowOutputDataSettings {
        private List<OutputDataSettings> outputDataSettingsList;
        
-       private List<OutputDataSettings> getOutputDataSettingsList(){
+       private List<OutputDataSettings> getOutputDataSettingsListArray(){
                if (outputDataSettingsList==null){
                        outputDataSettingsList=new 
ArrayList<OutputDataSettings>();
                }
@@ -40,35 +40,35 @@ public class WorkflowOutputDataSettingsI
        }
        
        @Override
-       public OutputDataSettings[] getOutputDataSettings() {
-               return getOutputDataSettingsList().toArray(new 
OutputDataSettings[]{});
+       public OutputDataSettings[] getOutputDataSettingsList() {
+               return getOutputDataSettingsListArray().toArray(new 
OutputDataSettings[]{});
        }
 
        @Override
        public OutputDataSettings addNewOutputDataSettings(
                        String outputDataDirectory, String dataRegistryURL,
                        boolean isDataPersistent) {
-               getOutputDataSettingsList().add(new 
ApplicationOutputDataSettingsImpl(outputDataDirectory, dataRegistryURL, 
isDataPersistent));
-               return 
getOutputDataSettingsList().get(getOutputDataSettingsList().size()-1);
+               getOutputDataSettingsListArray().add(new 
ApplicationOutputDataSettingsImpl(outputDataDirectory, dataRegistryURL, 
isDataPersistent));
+               return 
getOutputDataSettingsListArray().get(getOutputDataSettingsListArray().size()-1);
        }
 
        @Override
        public void addNewOutputDataSettings(
                        OutputDataSettings... outputDataSettings) {
-               
getOutputDataSettingsList().addAll(Arrays.asList(outputDataSettings));
+               
getOutputDataSettingsListArray().addAll(Arrays.asList(outputDataSettings));
 
        }
 
        @Override
        public void removeOutputDataSettings(OutputDataSettings 
outputDataSettings) {
-               if (getOutputDataSettingsList().contains(outputDataSettings)){
-                       getOutputDataSettingsList().remove(outputDataSettings);
+               if 
(getOutputDataSettingsListArray().contains(outputDataSettings)){
+                       
getOutputDataSettingsListArray().remove(outputDataSettings);
                }
        }
 
        @Override
        public void removeAllOutputDataSettings() {
-               getOutputDataSettingsList().clear();
+               getOutputDataSettingsListArray().clear();
        }
 
 }

Modified: 
airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/WorkflowSchedulingSettingsImpl.java
URL: 
http://svn.apache.org/viewvc/airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/WorkflowSchedulingSettingsImpl.java?rev=1427915&r1=1427914&r2=1427915&view=diff
==============================================================================
--- 
airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/WorkflowSchedulingSettingsImpl.java
 (original)
+++ 
airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/WorkflowSchedulingSettingsImpl.java
 Wed Jan  2 19:10:32 2013
@@ -33,7 +33,7 @@ public class WorkflowSchedulingSettingsI
 
        private List<NodeSettings> nodeSettingsList;
        
-       private List<NodeSettings> getNodeSettingsList(){
+       private List<NodeSettings> getNodeSettingsListArray(){
                if (nodeSettingsList==null){
                        nodeSettingsList=new ArrayList<NodeSettings>();
                }
@@ -41,14 +41,14 @@ public class WorkflowSchedulingSettingsI
        }
        
        @Override
-       public NodeSettings[] getNodeSettings() {
-               return getNodeSettingsList().toArray(new NodeSettings[]{});
+       public NodeSettings[] getNodeSettingsList() {
+               return getNodeSettingsListArray().toArray(new NodeSettings[]{});
        }
 
        @Override
        public NodeSettings addNewNodeSettings(String nodeId) {
-               getNodeSettingsList().add(new NodeSettingsImpl(nodeId));
-               return 
getNodeSettingsList().get(getNodeSettingsList().size()-1);
+               getNodeSettingsListArray().add(new NodeSettingsImpl(nodeId));
+               return 
getNodeSettingsListArray().get(getNodeSettingsListArray().size()-1);
        }
 
        @Override
@@ -62,7 +62,7 @@ public class WorkflowSchedulingSettingsI
 
        @Override
        public void addNewNodeSettings(NodeSettings... newNodeSettingsList) {
-               
getNodeSettingsList().addAll(Arrays.asList(newNodeSettingsList));
+               
getNodeSettingsListArray().addAll(Arrays.asList(newNodeSettingsList));
        }
 
        @Override
@@ -83,14 +83,14 @@ public class WorkflowSchedulingSettingsI
        @Override
        public void removeNodeSettings(String nodeId) {
                if (hasNodeSettings(nodeId)){
-                       getNodeSettingsList().remove(getNodeSettings(nodeId));
+                       
getNodeSettingsListArray().remove(getNodeSettings(nodeId));
                }
 
        }
 
        @Override
        public void removeAllNodeSettings() {
-               getNodeSettingsList().clear();
+               getNodeSettingsListArray().clear();
        }
 
 }

Modified: 
airavata/trunk/modules/integration-tests/src/test/java/org/apache/airavata/integration/BaseCaseIT.java
URL: 
http://svn.apache.org/viewvc/airavata/trunk/modules/integration-tests/src/test/java/org/apache/airavata/integration/BaseCaseIT.java?rev=1427915&r1=1427914&r2=1427915&view=diff
==============================================================================
--- 
airavata/trunk/modules/integration-tests/src/test/java/org/apache/airavata/integration/BaseCaseIT.java
 (original)
+++ 
airavata/trunk/modules/integration-tests/src/test/java/org/apache/airavata/integration/BaseCaseIT.java
 Wed Jan  2 19:10:32 2013
@@ -14,6 +14,7 @@ import junit.framework.Assert;
 import org.apache.airavata.client.AiravataAPIFactory;
 import org.apache.airavata.client.api.AiravataAPI;
 import org.apache.airavata.client.api.AiravataAPIInvocationException;
+import org.apache.airavata.client.api.ExperimentAdvanceOptions;
 import org.apache.airavata.client.api.builder.DescriptorBuilder;
 import org.apache.airavata.common.utils.Version;
 import org.apache.airavata.commons.gfac.type.ApplicationDescription;
@@ -279,17 +280,19 @@ public class BaseCaseIT {
             workflowInputs.get(i).setValue(valueString);
             ++i;
         }
+        ExperimentAdvanceOptions options = 
airavataAPI.getExecutionManager().createExperimentAdvanceOptions(workflowName,getUserName(),null);
+        String experimentId = 
airavataAPI.getExecutionManager().runExperiment(workflowName, workflowInputs, 
options);
+        
+//        String result
+//                = 
airavataAPI.getExecutionManager().runExperiment(workflowName, workflowInputs, 
getUserName(), "",
+//                workflowName);
 
-        String result
-                = 
airavataAPI.getExecutionManager().runExperiment(workflowName, workflowInputs, 
getUserName(), "",
-                workflowName);
-
-        Assert.assertNotNull(result);
+        Assert.assertNotNull(experimentId);
 
         log.info("Run workflow completed ....");
         log.info("Starting monitoring ....");
 
-        monitor(result);
+        monitor(experimentId);
 
     }
 


Reply via email to