You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by sa...@apache.org on 2013/01/02 20:10:32 UTC
svn commit: r1427915 - in /airavata/trunk/modules:
airavata-client/src/main/java/org/apache/airavata/client/api/
airavata-client/src/main/java/org/apache/airavata/client/impl/
integration-tests/src/test/java/org/apache/airavata/integration/
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);
}