You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by ch...@apache.org on 2014/05/15 01:16:25 UTC

git commit: updating clone experiment method

Repository: airavata
Updated Branches:
  refs/heads/master 88e16cf4e -> bf702a5d9


updating clone experiment method


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

Branch: refs/heads/master
Commit: bf702a5d97ce14c46d29fa01cdacf82aa191459d
Parents: 88e16cf
Author: Chathuri Wimalasena <ka...@gmail.com>
Authored: Wed May 14 19:16:15 2014 -0400
Committer: Chathuri Wimalasena <ka...@gmail.com>
Committed: Wed May 14 19:16:15 2014 -0400

----------------------------------------------------------------------
 .../server/handler/AiravataServerHandler.java   |  39 +++--
 .../java/org/apache/airavata/api/Airavata.java  | 146 +++++++++----------
 .../src/main/resources/lib/Airavata.cpp         |  24 +--
 .../src/main/resources/lib/Airavata.h           |  30 ++--
 .../resources/lib/Airavata_server.skeleton.cpp  |   2 +-
 .../resources/lib/Airavata/API/Airavata.php     |  35 ++---
 .../client/samples/CreateLaunchExperiment.java  |   3 +-
 .../airavataAPI.thrift                          |   7 +-
 8 files changed, 147 insertions(+), 139 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/bf702a5d/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java b/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java
index 0fb3e29..653c8c2 100644
--- a/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java
+++ b/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java
@@ -251,6 +251,9 @@ public class AiravataServerHandler implements Airavata.Iface {
     public Experiment getExperiment(String airavataExperimentId) throws InvalidRequestException, ExperimentNotFoundException, AiravataClientException, AiravataSystemException, TException {
         try {
             registry = RegistryFactory.getDefaultRegistry();
+            if (!registry.isExist(RegistryModelType.EXPERIMENT, airavataExperimentId)){
+                throw new ExperimentNotFoundException("Requested experiment id " + airavataExperimentId + " does not exist in the system..");
+            }
             return (Experiment)registry.get(RegistryModelType.EXPERIMENT, airavataExperimentId);
         } catch (Exception e) {
             logger.error("Error while retrieving the experiment", e);
@@ -287,6 +290,9 @@ public class AiravataServerHandler implements Airavata.Iface {
     public void updateExperiment(String airavataExperimentId, Experiment experiment) throws InvalidRequestException, ExperimentNotFoundException, AiravataClientException, AiravataSystemException, TException {
         try {
             registry = RegistryFactory.getDefaultRegistry();
+            if (!registry.isExist(RegistryModelType.EXPERIMENT, airavataExperimentId)){
+                throw new ExperimentNotFoundException("Requested experiment id " + airavataExperimentId + " does not exist in the system..");
+            }
             registry.update(RegistryModelType.EXPERIMENT, experiment, airavataExperimentId);
         } catch (Exception e) {
             logger.error("Error while updating experiment", e);
@@ -298,6 +304,9 @@ public class AiravataServerHandler implements Airavata.Iface {
     public void updateExperimentConfiguration(String airavataExperimentId, UserConfigurationData userConfiguration) throws TException {
         try {
             registry = RegistryFactory.getDefaultRegistry();
+            if (!registry.isExist(RegistryModelType.EXPERIMENT, airavataExperimentId)){
+                throw new ExperimentNotFoundException("Requested experiment id " + airavataExperimentId + " does not exist in the system..");
+            }
             registry.add(ChildDataType.EXPERIMENT_CONFIGURATION_DATA, userConfiguration, airavataExperimentId);
         } catch (Exception e) {
             logger.error("Error while updating user configuration", e);
@@ -309,6 +318,9 @@ public class AiravataServerHandler implements Airavata.Iface {
     public void updateResourceScheduleing(String airavataExperimentId, ComputationalResourceScheduling resourceScheduling) throws TException {
         try {
             registry = RegistryFactory.getDefaultRegistry();
+            if (!registry.isExist(RegistryModelType.EXPERIMENT, airavataExperimentId)){
+                throw new ExperimentNotFoundException("Requested experiment id " + airavataExperimentId + " does not exist in the system..");
+            }
             registry.add(ChildDataType.COMPUTATIONAL_RESOURCE_SCHEDULING, resourceScheduling, airavataExperimentId);
         } catch (Exception e) {
             logger.error("Error while updating scheduling info", e);
@@ -362,6 +374,9 @@ public class AiravataServerHandler implements Airavata.Iface {
     public ExperimentStatus getExperimentStatus(String airavataExperimentId) throws InvalidRequestException, ExperimentNotFoundException, AiravataClientException, AiravataSystemException, TException {
         try {
             registry = RegistryFactory.getDefaultRegistry();
+            if (!registry.isExist(RegistryModelType.EXPERIMENT, airavataExperimentId)){
+                throw new ExperimentNotFoundException("Requested experiment id " + airavataExperimentId + " does not exist in the system..");
+            }
             return (ExperimentStatus)registry.get(RegistryModelType.EXPERIMENT_STATUS, airavataExperimentId);
         } catch (Exception e) {
             logger.error("Error while retrieving the experiment status", e);
@@ -373,6 +388,9 @@ public class AiravataServerHandler implements Airavata.Iface {
     public List<DataObjectType> getExperimentOutputs(String airavataExperimentId) throws TException {
         try {
             registry = RegistryFactory.getDefaultRegistry();
+            if (!registry.isExist(RegistryModelType.EXPERIMENT, airavataExperimentId)){
+                throw new ExperimentNotFoundException("Requested experiment id " + airavataExperimentId + " does not exist in the system..");
+            }
             return (List<DataObjectType>)registry.get(RegistryModelType.EXPERIMENT_OUTPUT, airavataExperimentId);
         } catch (Exception e) {
             logger.error("Error while retrieving the experiment outputs", e);
@@ -384,6 +402,9 @@ public class AiravataServerHandler implements Airavata.Iface {
         Map<String, JobStatus> jobStatus = new HashMap<String, JobStatus>();
         try {
             registry = RegistryFactory.getDefaultRegistry();
+            if (!registry.isExist(RegistryModelType.EXPERIMENT, airavataExperimentId)){
+                throw new ExperimentNotFoundException("Requested experiment id " + airavataExperimentId + " does not exist in the system..");
+            }
             List<Object> workflowNodes = registry.get(RegistryModelType.WORKFLOW_NODE_DETAIL, Constants.FieldConstants.WorkflowNodeConstants.EXPERIMENT_ID, airavataExperimentId);
             if (workflowNodes != null && !workflowNodes.isEmpty()){
                 for (Object wf : workflowNodes){
@@ -478,10 +499,8 @@ public class AiravataServerHandler implements Airavata.Iface {
      *    This is the experiment identifier that already exists in the system. Will use this experimentID to retrieve
      *    user configuration which is used with the clone experiment.
      *
-     * @param updatedExperiment
-     *    Once an experiment is cloned, to disambiguate, the users are suggested to provide new metadata. This will again require
-     *      the basic experiment metadata like the name and description, intended user, the gateway identifier and if the experiment
-     *      should be shared public by default.
+     * @param newExperiementName
+     *   experiment name that should be used in the cloned experiment
      *
      * @return
      *   The server-side generated airavata experiment globally unique identifier for the newly cloned experiment.
@@ -511,18 +530,20 @@ public class AiravataServerHandler implements Airavata.Iface {
      *
      *
      * @param existingExperimentID
-     * @param updatedExperiment
+     * @param newExperiementName
      */
     @Override
-    public String cloneExperiment(String existingExperimentID, Experiment updatedExperiment) throws InvalidRequestException, ExperimentNotFoundException, AiravataClientException, AiravataSystemException, TException {
+    public String cloneExperiment(String existingExperimentID, String newExperiementName) throws InvalidRequestException, ExperimentNotFoundException, AiravataClientException, AiravataSystemException, TException {
         try {
             registry = RegistryFactory.getDefaultRegistry();
             if (!registry.isExist(RegistryModelType.EXPERIMENT, existingExperimentID)){
                 throw new ExperimentNotFoundException("Requested experiment id " + existingExperimentID + " does not exist in the system..");
             }
-            UserConfigurationData previousConfiguration = (UserConfigurationData)registry.get(RegistryModelType.EXPERIMENT_CONFIGURATION_DATA, existingExperimentID);
-            updatedExperiment.setUserConfigurationData(previousConfiguration);
-            return (String)registry.add(ParentDataType.EXPERIMENT, updatedExperiment);
+            Experiment existingExperiment = (Experiment)registry.get(RegistryModelType.EXPERIMENT, existingExperimentID);
+            if (newExperiementName != null && !newExperiementName.equals("")){
+                existingExperiment.setName(newExperiementName);
+            }
+            return (String)registry.add(ParentDataType.EXPERIMENT, existingExperiment);
         } catch (Exception e) {
             logger.error("Error while cloning the experiment with existing configuration...", e);
             throw new AiravataSystemException(AiravataErrorType.INTERNAL_ERROR);

http://git-wip-us.apache.org/repos/asf/airavata/blob/bf702a5d/airavata-api/airavata-api-stubs/src/main/java/org/apache/airavata/api/Airavata.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-api-stubs/src/main/java/org/apache/airavata/api/Airavata.java b/airavata-api/airavata-api-stubs/src/main/java/org/apache/airavata/api/Airavata.java
index f8c9b49..9ef5de9 100644
--- a/airavata-api/airavata-api-stubs/src/main/java/org/apache/airavata/api/Airavata.java
+++ b/airavata-api/airavata-api-stubs/src/main/java/org/apache/airavata/api/Airavata.java
@@ -300,9 +300,8 @@ import org.slf4j.LoggerFactory;
      * Clone an specified experiment with a new name. A copy of the experiment configuration is made and is persisted with new metadata.
      *   The client has to subsequently update this configuration if needed and launch the cloned experiment.
      * 
-     * @param existingExperimentID
-     *    This is the experiment identifier that already exists in the system. Will use this experimentID to retrieve
-     *    user configuration which is used with the clone experiment.
+     * @param newExperiementName
+     *    experiment name that should be used in the cloned experiment
      * 
      * @param updatedExperiment
      *    Once an experiment is cloned, to disambiguate, the users are suggested to provide new metadata. This will again require
@@ -337,9 +336,9 @@ import org.slf4j.LoggerFactory;
      * 
      * 
      * @param existingExperimentID
-     * @param updatedExperiment
+     * @param newExperiementName
      */
-    public String cloneExperiment(String existingExperimentID, org.apache.airavata.model.workspace.experiment.Experiment updatedExperiment) throws org.apache.airavata.api.error.InvalidRequestException, org.apache.airavata.api.error.ExperimentNotFoundException, org.apache.airavata.api.error.AiravataClientException, org.apache.airavata.api.error.AiravataSystemException, org.apache.thrift.TException;
+    public String cloneExperiment(String existingExperimentID, String newExperiementName) throws org.apache.airavata.api.error.InvalidRequestException, org.apache.airavata.api.error.ExperimentNotFoundException, org.apache.airavata.api.error.AiravataClientException, org.apache.airavata.api.error.AiravataSystemException, org.apache.thrift.TException;
 
     /**
      * Terminate a running experiment.
@@ -416,7 +415,7 @@ import org.slf4j.LoggerFactory;
 
     public void getJobStatuses(String airavataExperimentId, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
 
-    public void cloneExperiment(String existingExperimentID, org.apache.airavata.model.workspace.experiment.Experiment updatedExperiment, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
+    public void cloneExperiment(String existingExperimentID, String newExperiementName, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
 
     public void terminateExperiment(String airavataExperimentId, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
 
@@ -944,17 +943,17 @@ import org.slf4j.LoggerFactory;
       throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "getJobStatuses failed: unknown result");
     }
 
-    public String cloneExperiment(String existingExperimentID, org.apache.airavata.model.workspace.experiment.Experiment updatedExperiment) throws org.apache.airavata.api.error.InvalidRequestException, org.apache.airavata.api.error.ExperimentNotFoundException, org.apache.airavata.api.error.AiravataClientException, org.apache.airavata.api.error.AiravataSystemException, org.apache.thrift.TException
+    public String cloneExperiment(String existingExperimentID, String newExperiementName) throws org.apache.airavata.api.error.InvalidRequestException, org.apache.airavata.api.error.ExperimentNotFoundException, org.apache.airavata.api.error.AiravataClientException, org.apache.airavata.api.error.AiravataSystemException, org.apache.thrift.TException
     {
-      send_cloneExperiment(existingExperimentID, updatedExperiment);
+      send_cloneExperiment(existingExperimentID, newExperiementName);
       return recv_cloneExperiment();
     }
 
-    public void send_cloneExperiment(String existingExperimentID, org.apache.airavata.model.workspace.experiment.Experiment updatedExperiment) throws org.apache.thrift.TException
+    public void send_cloneExperiment(String existingExperimentID, String newExperiementName) throws org.apache.thrift.TException
     {
       cloneExperiment_args args = new cloneExperiment_args();
       args.setExistingExperimentID(existingExperimentID);
-      args.setUpdatedExperiment(updatedExperiment);
+      args.setNewExperiementName(newExperiementName);
       sendBase("cloneExperiment", args);
     }
 
@@ -1583,27 +1582,27 @@ import org.slf4j.LoggerFactory;
       }
     }
 
-    public void cloneExperiment(String existingExperimentID, org.apache.airavata.model.workspace.experiment.Experiment updatedExperiment, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
+    public void cloneExperiment(String existingExperimentID, String newExperiementName, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
       checkReady();
-      cloneExperiment_call method_call = new cloneExperiment_call(existingExperimentID, updatedExperiment, resultHandler, this, ___protocolFactory, ___transport);
+      cloneExperiment_call method_call = new cloneExperiment_call(existingExperimentID, newExperiementName, resultHandler, this, ___protocolFactory, ___transport);
       this.___currentMethod = method_call;
       ___manager.call(method_call);
     }
 
     public static class cloneExperiment_call extends org.apache.thrift.async.TAsyncMethodCall {
       private String existingExperimentID;
-      private org.apache.airavata.model.workspace.experiment.Experiment updatedExperiment;
-      public cloneExperiment_call(String existingExperimentID, org.apache.airavata.model.workspace.experiment.Experiment updatedExperiment, org.apache.thrift.async.AsyncMethodCallback resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
+      private String newExperiementName;
+      public cloneExperiment_call(String existingExperimentID, String newExperiementName, org.apache.thrift.async.AsyncMethodCallback resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
         super(client, protocolFactory, transport, resultHandler, false);
         this.existingExperimentID = existingExperimentID;
-        this.updatedExperiment = updatedExperiment;
+        this.newExperiementName = newExperiementName;
       }
 
       public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
         prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("cloneExperiment", org.apache.thrift.protocol.TMessageType.CALL, 0));
         cloneExperiment_args args = new cloneExperiment_args();
         args.setExistingExperimentID(existingExperimentID);
-        args.setUpdatedExperiment(updatedExperiment);
+        args.setNewExperiementName(newExperiementName);
         args.write(prot);
         prot.writeMessageEnd();
       }
@@ -2148,7 +2147,7 @@ import org.slf4j.LoggerFactory;
       public cloneExperiment_result getResult(I iface, cloneExperiment_args args) throws org.apache.thrift.TException {
         cloneExperiment_result result = new cloneExperiment_result();
         try {
-          result.success = iface.cloneExperiment(args.existingExperimentID, args.updatedExperiment);
+          result.success = iface.cloneExperiment(args.existingExperimentID, args.newExperiementName);
         } catch (org.apache.airavata.api.error.InvalidRequestException ire) {
           result.ire = ire;
         } catch (org.apache.airavata.api.error.ExperimentNotFoundException enf) {
@@ -3375,7 +3374,7 @@ import org.slf4j.LoggerFactory;
       }
 
       public void start(I iface, cloneExperiment_args args, org.apache.thrift.async.AsyncMethodCallback<String> resultHandler) throws TException {
-        iface.cloneExperiment(args.existingExperimentID, args.updatedExperiment,resultHandler);
+        iface.cloneExperiment(args.existingExperimentID, args.newExperiementName,resultHandler);
       }
     }
 
@@ -19648,7 +19647,7 @@ import org.slf4j.LoggerFactory;
     private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("cloneExperiment_args");
 
     private static final org.apache.thrift.protocol.TField EXISTING_EXPERIMENT_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("existingExperimentID", org.apache.thrift.protocol.TType.STRING, (short)1);
-    private static final org.apache.thrift.protocol.TField UPDATED_EXPERIMENT_FIELD_DESC = new org.apache.thrift.protocol.TField("updatedExperiment", org.apache.thrift.protocol.TType.STRUCT, (short)2);
+    private static final org.apache.thrift.protocol.TField NEW_EXPERIEMENT_NAME_FIELD_DESC = new org.apache.thrift.protocol.TField("newExperiementName", org.apache.thrift.protocol.TType.STRING, (short)2);
 
     private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
     static {
@@ -19657,12 +19656,12 @@ import org.slf4j.LoggerFactory;
     }
 
     public String existingExperimentID; // required
-    public org.apache.airavata.model.workspace.experiment.Experiment updatedExperiment; // required
+    public String newExperiementName; // required
 
     /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
     @SuppressWarnings("all") public enum _Fields implements org.apache.thrift.TFieldIdEnum {
       EXISTING_EXPERIMENT_ID((short)1, "existingExperimentID"),
-      UPDATED_EXPERIMENT((short)2, "updatedExperiment");
+      NEW_EXPERIEMENT_NAME((short)2, "newExperiementName");
 
       private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
 
@@ -19679,8 +19678,8 @@ import org.slf4j.LoggerFactory;
         switch(fieldId) {
           case 1: // EXISTING_EXPERIMENT_ID
             return EXISTING_EXPERIMENT_ID;
-          case 2: // UPDATED_EXPERIMENT
-            return UPDATED_EXPERIMENT;
+          case 2: // NEW_EXPERIEMENT_NAME
+            return NEW_EXPERIEMENT_NAME;
           default:
             return null;
         }
@@ -19726,8 +19725,8 @@ import org.slf4j.LoggerFactory;
       Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
       tmpMap.put(_Fields.EXISTING_EXPERIMENT_ID, new org.apache.thrift.meta_data.FieldMetaData("existingExperimentID", org.apache.thrift.TFieldRequirementType.DEFAULT, 
           new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
-      tmpMap.put(_Fields.UPDATED_EXPERIMENT, new org.apache.thrift.meta_data.FieldMetaData("updatedExperiment", org.apache.thrift.TFieldRequirementType.DEFAULT, 
-          new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.model.workspace.experiment.Experiment.class)));
+      tmpMap.put(_Fields.NEW_EXPERIEMENT_NAME, new org.apache.thrift.meta_data.FieldMetaData("newExperiementName", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
       metaDataMap = Collections.unmodifiableMap(tmpMap);
       org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(cloneExperiment_args.class, metaDataMap);
     }
@@ -19737,11 +19736,11 @@ import org.slf4j.LoggerFactory;
 
     public cloneExperiment_args(
       String existingExperimentID,
-      org.apache.airavata.model.workspace.experiment.Experiment updatedExperiment)
+      String newExperiementName)
     {
       this();
       this.existingExperimentID = existingExperimentID;
-      this.updatedExperiment = updatedExperiment;
+      this.newExperiementName = newExperiementName;
     }
 
     /**
@@ -19751,8 +19750,8 @@ import org.slf4j.LoggerFactory;
       if (other.isSetExistingExperimentID()) {
         this.existingExperimentID = other.existingExperimentID;
       }
-      if (other.isSetUpdatedExperiment()) {
-        this.updatedExperiment = new org.apache.airavata.model.workspace.experiment.Experiment(other.updatedExperiment);
+      if (other.isSetNewExperiementName()) {
+        this.newExperiementName = other.newExperiementName;
       }
     }
 
@@ -19763,7 +19762,7 @@ import org.slf4j.LoggerFactory;
     @Override
     public void clear() {
       this.existingExperimentID = null;
-      this.updatedExperiment = null;
+      this.newExperiementName = null;
     }
 
     public String getExistingExperimentID() {
@@ -19790,27 +19789,27 @@ import org.slf4j.LoggerFactory;
       }
     }
 
-    public org.apache.airavata.model.workspace.experiment.Experiment getUpdatedExperiment() {
-      return this.updatedExperiment;
+    public String getNewExperiementName() {
+      return this.newExperiementName;
     }
 
-    public cloneExperiment_args setUpdatedExperiment(org.apache.airavata.model.workspace.experiment.Experiment updatedExperiment) {
-      this.updatedExperiment = updatedExperiment;
+    public cloneExperiment_args setNewExperiementName(String newExperiementName) {
+      this.newExperiementName = newExperiementName;
       return this;
     }
 
-    public void unsetUpdatedExperiment() {
-      this.updatedExperiment = null;
+    public void unsetNewExperiementName() {
+      this.newExperiementName = null;
     }
 
-    /** Returns true if field updatedExperiment is set (has been assigned a value) and false otherwise */
-    public boolean isSetUpdatedExperiment() {
-      return this.updatedExperiment != null;
+    /** Returns true if field newExperiementName is set (has been assigned a value) and false otherwise */
+    public boolean isSetNewExperiementName() {
+      return this.newExperiementName != null;
     }
 
-    public void setUpdatedExperimentIsSet(boolean value) {
+    public void setNewExperiementNameIsSet(boolean value) {
       if (!value) {
-        this.updatedExperiment = null;
+        this.newExperiementName = null;
       }
     }
 
@@ -19824,11 +19823,11 @@ import org.slf4j.LoggerFactory;
         }
         break;
 
-      case UPDATED_EXPERIMENT:
+      case NEW_EXPERIEMENT_NAME:
         if (value == null) {
-          unsetUpdatedExperiment();
+          unsetNewExperiementName();
         } else {
-          setUpdatedExperiment((org.apache.airavata.model.workspace.experiment.Experiment)value);
+          setNewExperiementName((String)value);
         }
         break;
 
@@ -19840,8 +19839,8 @@ import org.slf4j.LoggerFactory;
       case EXISTING_EXPERIMENT_ID:
         return getExistingExperimentID();
 
-      case UPDATED_EXPERIMENT:
-        return getUpdatedExperiment();
+      case NEW_EXPERIEMENT_NAME:
+        return getNewExperiementName();
 
       }
       throw new IllegalStateException();
@@ -19856,8 +19855,8 @@ import org.slf4j.LoggerFactory;
       switch (field) {
       case EXISTING_EXPERIMENT_ID:
         return isSetExistingExperimentID();
-      case UPDATED_EXPERIMENT:
-        return isSetUpdatedExperiment();
+      case NEW_EXPERIEMENT_NAME:
+        return isSetNewExperiementName();
       }
       throw new IllegalStateException();
     }
@@ -19884,12 +19883,12 @@ import org.slf4j.LoggerFactory;
           return false;
       }
 
-      boolean this_present_updatedExperiment = true && this.isSetUpdatedExperiment();
-      boolean that_present_updatedExperiment = true && that.isSetUpdatedExperiment();
-      if (this_present_updatedExperiment || that_present_updatedExperiment) {
-        if (!(this_present_updatedExperiment && that_present_updatedExperiment))
+      boolean this_present_newExperiementName = true && this.isSetNewExperiementName();
+      boolean that_present_newExperiementName = true && that.isSetNewExperiementName();
+      if (this_present_newExperiementName || that_present_newExperiementName) {
+        if (!(this_present_newExperiementName && that_present_newExperiementName))
           return false;
-        if (!this.updatedExperiment.equals(that.updatedExperiment))
+        if (!this.newExperiementName.equals(that.newExperiementName))
           return false;
       }
 
@@ -19919,12 +19918,12 @@ import org.slf4j.LoggerFactory;
           return lastComparison;
         }
       }
-      lastComparison = Boolean.valueOf(isSetUpdatedExperiment()).compareTo(other.isSetUpdatedExperiment());
+      lastComparison = Boolean.valueOf(isSetNewExperiementName()).compareTo(other.isSetNewExperiementName());
       if (lastComparison != 0) {
         return lastComparison;
       }
-      if (isSetUpdatedExperiment()) {
-        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.updatedExperiment, other.updatedExperiment);
+      if (isSetNewExperiementName()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.newExperiementName, other.newExperiementName);
         if (lastComparison != 0) {
           return lastComparison;
         }
@@ -19957,11 +19956,11 @@ import org.slf4j.LoggerFactory;
       }
       first = false;
       if (!first) sb.append(", ");
-      sb.append("updatedExperiment:");
-      if (this.updatedExperiment == null) {
+      sb.append("newExperiementName:");
+      if (this.newExperiementName == null) {
         sb.append("null");
       } else {
-        sb.append(this.updatedExperiment);
+        sb.append(this.newExperiementName);
       }
       first = false;
       sb.append(")");
@@ -19971,9 +19970,6 @@ import org.slf4j.LoggerFactory;
     public void validate() throws org.apache.thrift.TException {
       // check for required fields
       // check for sub-struct validity
-      if (updatedExperiment != null) {
-        updatedExperiment.validate();
-      }
     }
 
     private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
@@ -20018,11 +20014,10 @@ import org.slf4j.LoggerFactory;
                 org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
               }
               break;
-            case 2: // UPDATED_EXPERIMENT
-              if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
-                struct.updatedExperiment = new org.apache.airavata.model.workspace.experiment.Experiment();
-                struct.updatedExperiment.read(iprot);
-                struct.setUpdatedExperimentIsSet(true);
+            case 2: // NEW_EXPERIEMENT_NAME
+              if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+                struct.newExperiementName = iprot.readString();
+                struct.setNewExperiementNameIsSet(true);
               } else { 
                 org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
               }
@@ -20047,9 +20042,9 @@ import org.slf4j.LoggerFactory;
           oprot.writeString(struct.existingExperimentID);
           oprot.writeFieldEnd();
         }
-        if (struct.updatedExperiment != null) {
-          oprot.writeFieldBegin(UPDATED_EXPERIMENT_FIELD_DESC);
-          struct.updatedExperiment.write(oprot);
+        if (struct.newExperiementName != null) {
+          oprot.writeFieldBegin(NEW_EXPERIEMENT_NAME_FIELD_DESC);
+          oprot.writeString(struct.newExperiementName);
           oprot.writeFieldEnd();
         }
         oprot.writeFieldStop();
@@ -20073,15 +20068,15 @@ import org.slf4j.LoggerFactory;
         if (struct.isSetExistingExperimentID()) {
           optionals.set(0);
         }
-        if (struct.isSetUpdatedExperiment()) {
+        if (struct.isSetNewExperiementName()) {
           optionals.set(1);
         }
         oprot.writeBitSet(optionals, 2);
         if (struct.isSetExistingExperimentID()) {
           oprot.writeString(struct.existingExperimentID);
         }
-        if (struct.isSetUpdatedExperiment()) {
-          struct.updatedExperiment.write(oprot);
+        if (struct.isSetNewExperiementName()) {
+          oprot.writeString(struct.newExperiementName);
         }
       }
 
@@ -20094,9 +20089,8 @@ import org.slf4j.LoggerFactory;
           struct.setExistingExperimentIDIsSet(true);
         }
         if (incoming.get(1)) {
-          struct.updatedExperiment = new org.apache.airavata.model.workspace.experiment.Experiment();
-          struct.updatedExperiment.read(iprot);
-          struct.setUpdatedExperimentIsSet(true);
+          struct.newExperiementName = iprot.readString();
+          struct.setNewExperiementNameIsSet(true);
         }
       }
     }

http://git-wip-us.apache.org/repos/asf/airavata/blob/bf702a5d/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/Airavata.cpp
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/Airavata.cpp b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/Airavata.cpp
index e7c868d..66aa916 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/Airavata.cpp
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/Airavata.cpp
@@ -3759,9 +3759,9 @@ uint32_t Airavata_cloneExperiment_args::read(::apache::thrift::protocol::TProtoc
         }
         break;
       case 2:
-        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
-          xfer += this->updatedExperiment.read(iprot);
-          this->__isset.updatedExperiment = true;
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->newExperiementName);
+          this->__isset.newExperiementName = true;
         } else {
           xfer += iprot->skip(ftype);
         }
@@ -3786,8 +3786,8 @@ uint32_t Airavata_cloneExperiment_args::write(::apache::thrift::protocol::TProto
   xfer += oprot->writeString(this->existingExperimentID);
   xfer += oprot->writeFieldEnd();
 
-  xfer += oprot->writeFieldBegin("updatedExperiment", ::apache::thrift::protocol::T_STRUCT, 2);
-  xfer += this->updatedExperiment.write(oprot);
+  xfer += oprot->writeFieldBegin("newExperiementName", ::apache::thrift::protocol::T_STRING, 2);
+  xfer += oprot->writeString(this->newExperiementName);
   xfer += oprot->writeFieldEnd();
 
   xfer += oprot->writeFieldStop();
@@ -3803,8 +3803,8 @@ uint32_t Airavata_cloneExperiment_pargs::write(::apache::thrift::protocol::TProt
   xfer += oprot->writeString((*(this->existingExperimentID)));
   xfer += oprot->writeFieldEnd();
 
-  xfer += oprot->writeFieldBegin("updatedExperiment", ::apache::thrift::protocol::T_STRUCT, 2);
-  xfer += (*(this->updatedExperiment)).write(oprot);
+  xfer += oprot->writeFieldBegin("newExperiementName", ::apache::thrift::protocol::T_STRING, 2);
+  xfer += oprot->writeString((*(this->newExperiementName)));
   xfer += oprot->writeFieldEnd();
 
   xfer += oprot->writeFieldStop();
@@ -5297,20 +5297,20 @@ void AiravataClient::recv_getJobStatuses(std::map<std::string,  ::JobStatus> & _
   throw ::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT, "getJobStatuses failed: unknown result");
 }
 
-void AiravataClient::cloneExperiment(std::string& _return, const std::string& existingExperimentID, const  ::Experiment& updatedExperiment)
+void AiravataClient::cloneExperiment(std::string& _return, const std::string& existingExperimentID, const std::string& newExperiementName)
 {
-  send_cloneExperiment(existingExperimentID, updatedExperiment);
+  send_cloneExperiment(existingExperimentID, newExperiementName);
   recv_cloneExperiment(_return);
 }
 
-void AiravataClient::send_cloneExperiment(const std::string& existingExperimentID, const  ::Experiment& updatedExperiment)
+void AiravataClient::send_cloneExperiment(const std::string& existingExperimentID, const std::string& newExperiementName)
 {
   int32_t cseqid = 0;
   oprot_->writeMessageBegin("cloneExperiment", ::apache::thrift::protocol::T_CALL, cseqid);
 
   Airavata_cloneExperiment_pargs args;
   args.existingExperimentID = &existingExperimentID;
-  args.updatedExperiment = &updatedExperiment;
+  args.newExperiementName = &newExperiementName;
   args.write(oprot_);
 
   oprot_->writeMessageEnd();
@@ -6511,7 +6511,7 @@ void AiravataProcessor::process_cloneExperiment(int32_t seqid, ::apache::thrift:
 
   Airavata_cloneExperiment_result result;
   try {
-    iface_->cloneExperiment(result.success, args.existingExperimentID, args.updatedExperiment);
+    iface_->cloneExperiment(result.success, args.existingExperimentID, args.newExperiementName);
     result.__isset.success = true;
   } catch ( ::airavata::api::error::InvalidRequestException &ire) {
     result.ire = ire;

http://git-wip-us.apache.org/repos/asf/airavata/blob/bf702a5d/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/Airavata.h
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/Airavata.h b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/Airavata.h
index 06d5cf0..c12a0dd 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/Airavata.h
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/Airavata.h
@@ -32,7 +32,7 @@ class AiravataIf {
   virtual void getExperimentStatus( ::ExperimentStatus& _return, const std::string& airavataExperimentId) = 0;
   virtual void getExperimentOutputs(std::vector< ::DataObjectType> & _return, const std::string& airavataExperimentId) = 0;
   virtual void getJobStatuses(std::map<std::string,  ::JobStatus> & _return, const std::string& airavataExperimentId) = 0;
-  virtual void cloneExperiment(std::string& _return, const std::string& existingExperimentID, const  ::Experiment& updatedExperiment) = 0;
+  virtual void cloneExperiment(std::string& _return, const std::string& existingExperimentID, const std::string& newExperiementName) = 0;
   virtual void terminateExperiment(const std::string& airavataExperimentId) = 0;
 };
 
@@ -115,7 +115,7 @@ class AiravataNull : virtual public AiravataIf {
   void getJobStatuses(std::map<std::string,  ::JobStatus> & /* _return */, const std::string& /* airavataExperimentId */) {
     return;
   }
-  void cloneExperiment(std::string& /* _return */, const std::string& /* existingExperimentID */, const  ::Experiment& /* updatedExperiment */) {
+  void cloneExperiment(std::string& /* _return */, const std::string& /* existingExperimentID */, const std::string& /* newExperiementName */) {
     return;
   }
   void terminateExperiment(const std::string& /* airavataExperimentId */) {
@@ -2222,21 +2222,21 @@ class Airavata_getJobStatuses_presult {
 };
 
 typedef struct _Airavata_cloneExperiment_args__isset {
-  _Airavata_cloneExperiment_args__isset() : existingExperimentID(false), updatedExperiment(false) {}
+  _Airavata_cloneExperiment_args__isset() : existingExperimentID(false), newExperiementName(false) {}
   bool existingExperimentID;
-  bool updatedExperiment;
+  bool newExperiementName;
 } _Airavata_cloneExperiment_args__isset;
 
 class Airavata_cloneExperiment_args {
  public:
 
-  Airavata_cloneExperiment_args() : existingExperimentID() {
+  Airavata_cloneExperiment_args() : existingExperimentID(), newExperiementName() {
   }
 
   virtual ~Airavata_cloneExperiment_args() throw() {}
 
   std::string existingExperimentID;
-   ::Experiment updatedExperiment;
+  std::string newExperiementName;
 
   _Airavata_cloneExperiment_args__isset __isset;
 
@@ -2244,15 +2244,15 @@ class Airavata_cloneExperiment_args {
     existingExperimentID = val;
   }
 
-  void __set_updatedExperiment(const  ::Experiment& val) {
-    updatedExperiment = val;
+  void __set_newExperiementName(const std::string& val) {
+    newExperiementName = val;
   }
 
   bool operator == (const Airavata_cloneExperiment_args & rhs) const
   {
     if (!(existingExperimentID == rhs.existingExperimentID))
       return false;
-    if (!(updatedExperiment == rhs.updatedExperiment))
+    if (!(newExperiementName == rhs.newExperiementName))
       return false;
     return true;
   }
@@ -2275,7 +2275,7 @@ class Airavata_cloneExperiment_pargs {
   virtual ~Airavata_cloneExperiment_pargs() throw() {}
 
   const std::string* existingExperimentID;
-  const  ::Experiment* updatedExperiment;
+  const std::string* newExperiementName;
 
   uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
 
@@ -2587,8 +2587,8 @@ class AiravataClient : virtual public AiravataIf {
   void getJobStatuses(std::map<std::string,  ::JobStatus> & _return, const std::string& airavataExperimentId);
   void send_getJobStatuses(const std::string& airavataExperimentId);
   void recv_getJobStatuses(std::map<std::string,  ::JobStatus> & _return);
-  void cloneExperiment(std::string& _return, const std::string& existingExperimentID, const  ::Experiment& updatedExperiment);
-  void send_cloneExperiment(const std::string& existingExperimentID, const  ::Experiment& updatedExperiment);
+  void cloneExperiment(std::string& _return, const std::string& existingExperimentID, const std::string& newExperiementName);
+  void send_cloneExperiment(const std::string& existingExperimentID, const std::string& newExperiementName);
   void recv_cloneExperiment(std::string& _return);
   void terminateExperiment(const std::string& airavataExperimentId);
   void send_terminateExperiment(const std::string& airavataExperimentId);
@@ -2841,13 +2841,13 @@ class AiravataMultiface : virtual public AiravataIf {
     return;
   }
 
-  void cloneExperiment(std::string& _return, const std::string& existingExperimentID, const  ::Experiment& updatedExperiment) {
+  void cloneExperiment(std::string& _return, const std::string& existingExperimentID, const std::string& newExperiementName) {
     size_t sz = ifaces_.size();
     size_t i = 0;
     for (; i < (sz - 1); ++i) {
-      ifaces_[i]->cloneExperiment(_return, existingExperimentID, updatedExperiment);
+      ifaces_[i]->cloneExperiment(_return, existingExperimentID, newExperiementName);
     }
-    ifaces_[i]->cloneExperiment(_return, existingExperimentID, updatedExperiment);
+    ifaces_[i]->cloneExperiment(_return, existingExperimentID, newExperiementName);
     return;
   }
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/bf702a5d/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/Airavata_server.skeleton.cpp
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/Airavata_server.skeleton.cpp b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/Airavata_server.skeleton.cpp
index 5fb0668..30e57c0 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/Airavata_server.skeleton.cpp
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/Airavata_server.skeleton.cpp
@@ -107,7 +107,7 @@ class AiravataHandler : virtual public AiravataIf {
     printf("getJobStatuses\n");
   }
 
-  void cloneExperiment(std::string& _return, const std::string& existingExperimentID, const  ::Experiment& updatedExperiment) {
+  void cloneExperiment(std::string& _return, const std::string& existingExperimentID, const std::string& newExperiementName) {
     // Your implementation goes here
     printf("cloneExperiment\n");
   }

http://git-wip-us.apache.org/repos/asf/airavata/blob/bf702a5d/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/API/Airavata.php
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/API/Airavata.php b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/API/Airavata.php
index 2e31b82..f5661c0 100644
--- a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/API/Airavata.php
+++ b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/API/Airavata.php
@@ -34,7 +34,7 @@ interface AiravataIf {
   public function getExperimentStatus($airavataExperimentId);
   public function getExperimentOutputs($airavataExperimentId);
   public function getJobStatuses($airavataExperimentId);
-  public function cloneExperiment($existingExperimentID, \Airavata\Model\Workspace\Experiment\Experiment $updatedExperiment);
+  public function cloneExperiment($existingExperimentID, $newExperiementName);
   public function terminateExperiment($airavataExperimentId);
 }
 
@@ -1027,17 +1027,17 @@ class AiravataClient implements \Airavata\API\AiravataIf {
     throw new \Exception("getJobStatuses failed: unknown result");
   }
 
-  public function cloneExperiment($existingExperimentID, \Airavata\Model\Workspace\Experiment\Experiment $updatedExperiment)
+  public function cloneExperiment($existingExperimentID, $newExperiementName)
   {
-    $this->send_cloneExperiment($existingExperimentID, $updatedExperiment);
+    $this->send_cloneExperiment($existingExperimentID, $newExperiementName);
     return $this->recv_cloneExperiment();
   }
 
-  public function send_cloneExperiment($existingExperimentID, \Airavata\Model\Workspace\Experiment\Experiment $updatedExperiment)
+  public function send_cloneExperiment($existingExperimentID, $newExperiementName)
   {
     $args = new \Airavata\API\Airavata_cloneExperiment_args();
     $args->existingExperimentID = $existingExperimentID;
-    $args->updatedExperiment = $updatedExperiment;
+    $args->newExperiementName = $newExperiementName;
     $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
     if ($bin_accel)
     {
@@ -4656,7 +4656,7 @@ class Airavata_cloneExperiment_args {
   static $_TSPEC;
 
   public $existingExperimentID = null;
-  public $updatedExperiment = null;
+  public $newExperiementName = null;
 
   public function __construct($vals=null) {
     if (!isset(self::$_TSPEC)) {
@@ -4666,9 +4666,8 @@ class Airavata_cloneExperiment_args {
           'type' => TType::STRING,
           ),
         2 => array(
-          'var' => 'updatedExperiment',
-          'type' => TType::STRUCT,
-          'class' => '\Airavata\Model\Workspace\Experiment\Experiment',
+          'var' => 'newExperiementName',
+          'type' => TType::STRING,
           ),
         );
     }
@@ -4676,8 +4675,8 @@ class Airavata_cloneExperiment_args {
       if (isset($vals['existingExperimentID'])) {
         $this->existingExperimentID = $vals['existingExperimentID'];
       }
-      if (isset($vals['updatedExperiment'])) {
-        $this->updatedExperiment = $vals['updatedExperiment'];
+      if (isset($vals['newExperiementName'])) {
+        $this->newExperiementName = $vals['newExperiementName'];
       }
     }
   }
@@ -4709,9 +4708,8 @@ class Airavata_cloneExperiment_args {
           }
           break;
         case 2:
-          if ($ftype == TType::STRUCT) {
-            $this->updatedExperiment = new \Airavata\Model\Workspace\Experiment\Experiment();
-            $xfer += $this->updatedExperiment->read($input);
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->newExperiementName);
           } else {
             $xfer += $input->skip($ftype);
           }
@@ -4734,12 +4732,9 @@ class Airavata_cloneExperiment_args {
       $xfer += $output->writeString($this->existingExperimentID);
       $xfer += $output->writeFieldEnd();
     }
-    if ($this->updatedExperiment !== null) {
-      if (!is_object($this->updatedExperiment)) {
-        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
-      }
-      $xfer += $output->writeFieldBegin('updatedExperiment', TType::STRUCT, 2);
-      $xfer += $this->updatedExperiment->write($output);
+    if ($this->newExperiementName !== null) {
+      $xfer += $output->writeFieldBegin('newExperiementName', TType::STRING, 2);
+      $xfer += $output->writeString($this->newExperiementName);
       $xfer += $output->writeFieldEnd();
     }
     $xfer += $output->writeFieldStop();

http://git-wip-us.apache.org/repos/asf/airavata/blob/bf702a5d/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/CreateLaunchExperiment.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/CreateLaunchExperiment.java b/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/CreateLaunchExperiment.java
index 14e6b68..9113ca5 100644
--- a/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/CreateLaunchExperiment.java
+++ b/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/CreateLaunchExperiment.java
@@ -220,8 +220,7 @@ public class CreateLaunchExperiment {
 
     public static String cloneExperiment(Airavata.Client client, String expId) throws TException  {
         try{
-            Experiment experiment = client.getExperiment(expId);
-            return client.cloneExperiment("cloneExperiment1", experiment);
+            return client.cloneExperiment(expId, "cloneExperiment1");
         }catch (TException e) {
             logger.error("Error occured while creating the experiment...", e.getMessage());
             throw new TException(e);

http://git-wip-us.apache.org/repos/asf/airavata/blob/bf702a5d/airavata-api/thrift-interface-descriptions/airavataAPI.thrift
----------------------------------------------------------------------
diff --git a/airavata-api/thrift-interface-descriptions/airavataAPI.thrift b/airavata-api/thrift-interface-descriptions/airavataAPI.thrift
index 45294be..b534adb 100644
--- a/airavata-api/thrift-interface-descriptions/airavataAPI.thrift
+++ b/airavata-api/thrift-interface-descriptions/airavataAPI.thrift
@@ -378,9 +378,8 @@ service Airavata {
    * Clone an specified experiment with a new name. A copy of the experiment configuration is made and is persisted with new metadata.
    *   The client has to subsequently update this configuration if needed and launch the cloned experiment. 
    *
-   * @param existingExperimentID
-   *    This is the experiment identifier that already exists in the system. Will use this experimentID to retrieve
-   *    user configuration which is used with the clone experiment.
+   * @param newExperiementName
+   *    experiment name that should be used in the cloned experiment
    *
    * @param updatedExperiment
    *    Once an experiment is cloned, to disambiguate, the users are suggested to provide new metadata. This will again require
@@ -415,7 +414,7 @@ service Airavata {
    *
   */
   string cloneExperiment(1: string existingExperimentID,
-                         2: experimentModel.Experiment updatedExperiment)
+                         2: string newExperiementName)
     throws (1: airavataErrors.InvalidRequestException ire,
             2: airavataErrors.ExperimentNotFoundException enf,
             3: airavataErrors.AiravataClientException ace,