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/14 18:00:12 UTC

git commit: Removing username from createProject and validate whether project has required fields in the API implementation - AIRAVATA-1221

Repository: airavata
Updated Branches:
  refs/heads/master 131d967db -> 71477800f


Removing username from createProject and validate whether project has required fields in the API implementation - AIRAVATA-1221


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

Branch: refs/heads/master
Commit: 71477800f41c38e349e3899c29fa317a4acec287
Parents: 131d967
Author: Chathuri Wimalasena <ka...@gmail.com>
Authored: Wed May 14 12:00:08 2014 -0400
Committer: Chathuri Wimalasena <ka...@gmail.com>
Committed: Wed May 14 12:00:08 2014 -0400

----------------------------------------------------------------------
 .../server/handler/AiravataServerHandler.java   |  19 ++-
 .../java/org/apache/airavata/api/Airavata.java  | 125 ++-----------------
 .../src/main/resources/lib/Airavata.cpp         |  28 +----
 .../src/main/resources/lib/Airavata.h           |  24 ++--
 .../resources/lib/Airavata_server.skeleton.cpp  |   2 +-
 .../resources/lib/experimentModel_types.cpp     |   4 +-
 .../main/resources/lib/experimentModel_types.h  |   7 +-
 .../resources/lib/Airavata/API/Airavata.php     |  29 +----
 .../Model/Workspace/Experiment/Types.php        |  14 +--
 .../client/samples/CreateLaunchExperiment.java  |  10 +-
 .../samples/CreateLaunchExperimentUS3.java      |   8 +-
 .../model/workspace/experiment/DataType.java    |  13 +-
 .../airavataAPI.thrift                          |   3 +-
 .../apache/airavata/integration/BaseCaseIT.java |   4 +-
 .../airavata/integration/DataRetrievalIT.java   |   2 +-
 .../airavata/integration/SimpleEchoIT.java      |   2 +-
 16 files changed, 74 insertions(+), 220 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/71477800/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 d807336..00b0241 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
@@ -62,13 +62,15 @@ public class AiravataServerHandler implements Airavata.Iface {
      * Create a Project
      *
      * @param project
-     * @param userName
      */
     @Override
-    public String createProject(Project project, String userName) throws InvalidRequestException, AiravataClientException, AiravataSystemException, TException {
+    public String createProject(Project project) throws InvalidRequestException, AiravataClientException, AiravataSystemException, TException {
         try {
             registry = RegistryFactory.getDefaultRegistry();
-            project.setOwner(userName);
+            if (!validateProject(project)){
+                logger.error("Project name and owner cannot be empty...");
+                throw new AiravataSystemException(AiravataErrorType.INTERNAL_ERROR);
+            }
             return (String)registry.add(ParentDataType.PROJECT, project);
         } catch (RegistryException e) {
             logger.error("Error while creating the project", e);
@@ -76,6 +78,17 @@ public class AiravataServerHandler implements Airavata.Iface {
         }
     }
 
+    private boolean validateProject(Project project){
+        boolean valid = true;
+        if (project.getName() == null || project.getName().equals("")){
+            valid = false;
+        }
+        if (project.getOwner() == null || project.getOwner().equals("")){
+            valid = false;
+        }
+        return valid;
+    }
+
     /**
      * Update a Project
      *

http://git-wip-us.apache.org/repos/asf/airavata/blob/71477800/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 376558a..d1ed747 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
@@ -62,9 +62,8 @@ import org.slf4j.LoggerFactory;
      * 
      * 
      * @param project
-     * @param userName
      */
-    public String createProject(org.apache.airavata.model.workspace.Project project, String userName) throws org.apache.airavata.api.error.InvalidRequestException, org.apache.airavata.api.error.AiravataClientException, org.apache.airavata.api.error.AiravataSystemException, org.apache.thrift.TException;
+    public String createProject(org.apache.airavata.model.workspace.Project project) throws org.apache.airavata.api.error.InvalidRequestException, org.apache.airavata.api.error.AiravataClientException, org.apache.airavata.api.error.AiravataSystemException, org.apache.thrift.TException;
 
     /**
      * Update a Project
@@ -384,7 +383,7 @@ import org.slf4j.LoggerFactory;
 
     public void GetAPIVersion(org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
 
-    public void createProject(org.apache.airavata.model.workspace.Project project, String userName, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
+    public void createProject(org.apache.airavata.model.workspace.Project project, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
 
     public void updateProject(org.apache.airavata.model.workspace.Project project, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
 
@@ -464,17 +463,16 @@ import org.slf4j.LoggerFactory;
       throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "GetAPIVersion failed: unknown result");
     }
 
-    public String createProject(org.apache.airavata.model.workspace.Project project, String userName) throws org.apache.airavata.api.error.InvalidRequestException, org.apache.airavata.api.error.AiravataClientException, org.apache.airavata.api.error.AiravataSystemException, org.apache.thrift.TException
+    public String createProject(org.apache.airavata.model.workspace.Project project) throws org.apache.airavata.api.error.InvalidRequestException, org.apache.airavata.api.error.AiravataClientException, org.apache.airavata.api.error.AiravataSystemException, org.apache.thrift.TException
     {
-      send_createProject(project, userName);
+      send_createProject(project);
       return recv_createProject();
     }
 
-    public void send_createProject(org.apache.airavata.model.workspace.Project project, String userName) throws org.apache.thrift.TException
+    public void send_createProject(org.apache.airavata.model.workspace.Project project) throws org.apache.thrift.TException
     {
       createProject_args args = new createProject_args();
       args.setProject(project);
-      args.setUserName(userName);
       sendBase("createProject", args);
     }
 
@@ -1060,27 +1058,24 @@ import org.slf4j.LoggerFactory;
       }
     }
 
-    public void createProject(org.apache.airavata.model.workspace.Project project, String userName, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
+    public void createProject(org.apache.airavata.model.workspace.Project project, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
       checkReady();
-      createProject_call method_call = new createProject_call(project, userName, resultHandler, this, ___protocolFactory, ___transport);
+      createProject_call method_call = new createProject_call(project, resultHandler, this, ___protocolFactory, ___transport);
       this.___currentMethod = method_call;
       ___manager.call(method_call);
     }
 
     public static class createProject_call extends org.apache.thrift.async.TAsyncMethodCall {
       private org.apache.airavata.model.workspace.Project project;
-      private String userName;
-      public createProject_call(org.apache.airavata.model.workspace.Project project, String userName, 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 {
+      public createProject_call(org.apache.airavata.model.workspace.Project project, 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.project = project;
-        this.userName = userName;
       }
 
       public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
         prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("createProject", org.apache.thrift.protocol.TMessageType.CALL, 0));
         createProject_args args = new createProject_args();
         args.setProject(project);
-        args.setUserName(userName);
         args.write(prot);
         prot.writeMessageEnd();
       }
@@ -1725,7 +1720,7 @@ import org.slf4j.LoggerFactory;
       public createProject_result getResult(I iface, createProject_args args) throws org.apache.thrift.TException {
         createProject_result result = new createProject_result();
         try {
-          result.success = iface.createProject(args.project, args.userName);
+          result.success = iface.createProject(args.project);
         } catch (org.apache.airavata.api.error.InvalidRequestException ire) {
           result.ire = ire;
         } catch (org.apache.airavata.api.error.AiravataClientException ace) {
@@ -2345,7 +2340,7 @@ import org.slf4j.LoggerFactory;
       }
 
       public void start(I iface, createProject_args args, org.apache.thrift.async.AsyncMethodCallback<String> resultHandler) throws TException {
-        iface.createProject(args.project, args.userName,resultHandler);
+        iface.createProject(args.project,resultHandler);
       }
     }
 
@@ -4060,7 +4055,6 @@ import org.slf4j.LoggerFactory;
     private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("createProject_args");
 
     private static final org.apache.thrift.protocol.TField PROJECT_FIELD_DESC = new org.apache.thrift.protocol.TField("project", org.apache.thrift.protocol.TType.STRUCT, (short)1);
-    private static final org.apache.thrift.protocol.TField USER_NAME_FIELD_DESC = new org.apache.thrift.protocol.TField("userName", org.apache.thrift.protocol.TType.STRING, (short)2);
 
     private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
     static {
@@ -4069,12 +4063,10 @@ import org.slf4j.LoggerFactory;
     }
 
     public org.apache.airavata.model.workspace.Project project; // required
-    public String userName; // 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 {
-      PROJECT((short)1, "project"),
-      USER_NAME((short)2, "userName");
+      PROJECT((short)1, "project");
 
       private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
 
@@ -4091,8 +4083,6 @@ import org.slf4j.LoggerFactory;
         switch(fieldId) {
           case 1: // PROJECT
             return PROJECT;
-          case 2: // USER_NAME
-            return USER_NAME;
           default:
             return null;
         }
@@ -4138,8 +4128,6 @@ 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.PROJECT, new org.apache.thrift.meta_data.FieldMetaData("project", org.apache.thrift.TFieldRequirementType.REQUIRED, 
           new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.model.workspace.Project.class)));
-      tmpMap.put(_Fields.USER_NAME, new org.apache.thrift.meta_data.FieldMetaData("userName", org.apache.thrift.TFieldRequirementType.REQUIRED, 
-          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
       metaDataMap = Collections.unmodifiableMap(tmpMap);
       org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(createProject_args.class, metaDataMap);
     }
@@ -4148,12 +4136,10 @@ import org.slf4j.LoggerFactory;
     }
 
     public createProject_args(
-      org.apache.airavata.model.workspace.Project project,
-      String userName)
+      org.apache.airavata.model.workspace.Project project)
     {
       this();
       this.project = project;
-      this.userName = userName;
     }
 
     /**
@@ -4163,9 +4149,6 @@ import org.slf4j.LoggerFactory;
       if (other.isSetProject()) {
         this.project = new org.apache.airavata.model.workspace.Project(other.project);
       }
-      if (other.isSetUserName()) {
-        this.userName = other.userName;
-      }
     }
 
     public createProject_args deepCopy() {
@@ -4175,7 +4158,6 @@ import org.slf4j.LoggerFactory;
     @Override
     public void clear() {
       this.project = null;
-      this.userName = null;
     }
 
     public org.apache.airavata.model.workspace.Project getProject() {
@@ -4202,30 +4184,6 @@ import org.slf4j.LoggerFactory;
       }
     }
 
-    public String getUserName() {
-      return this.userName;
-    }
-
-    public createProject_args setUserName(String userName) {
-      this.userName = userName;
-      return this;
-    }
-
-    public void unsetUserName() {
-      this.userName = null;
-    }
-
-    /** Returns true if field userName is set (has been assigned a value) and false otherwise */
-    public boolean isSetUserName() {
-      return this.userName != null;
-    }
-
-    public void setUserNameIsSet(boolean value) {
-      if (!value) {
-        this.userName = null;
-      }
-    }
-
     public void setFieldValue(_Fields field, Object value) {
       switch (field) {
       case PROJECT:
@@ -4236,14 +4194,6 @@ import org.slf4j.LoggerFactory;
         }
         break;
 
-      case USER_NAME:
-        if (value == null) {
-          unsetUserName();
-        } else {
-          setUserName((String)value);
-        }
-        break;
-
       }
     }
 
@@ -4252,9 +4202,6 @@ import org.slf4j.LoggerFactory;
       case PROJECT:
         return getProject();
 
-      case USER_NAME:
-        return getUserName();
-
       }
       throw new IllegalStateException();
     }
@@ -4268,8 +4215,6 @@ import org.slf4j.LoggerFactory;
       switch (field) {
       case PROJECT:
         return isSetProject();
-      case USER_NAME:
-        return isSetUserName();
       }
       throw new IllegalStateException();
     }
@@ -4296,15 +4241,6 @@ import org.slf4j.LoggerFactory;
           return false;
       }
 
-      boolean this_present_userName = true && this.isSetUserName();
-      boolean that_present_userName = true && that.isSetUserName();
-      if (this_present_userName || that_present_userName) {
-        if (!(this_present_userName && that_present_userName))
-          return false;
-        if (!this.userName.equals(that.userName))
-          return false;
-      }
-
       return true;
     }
 
@@ -4331,16 +4267,6 @@ import org.slf4j.LoggerFactory;
           return lastComparison;
         }
       }
-      lastComparison = Boolean.valueOf(isSetUserName()).compareTo(other.isSetUserName());
-      if (lastComparison != 0) {
-        return lastComparison;
-      }
-      if (isSetUserName()) {
-        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.userName, other.userName);
-        if (lastComparison != 0) {
-          return lastComparison;
-        }
-      }
       return 0;
     }
 
@@ -4368,14 +4294,6 @@ import org.slf4j.LoggerFactory;
         sb.append(this.project);
       }
       first = false;
-      if (!first) sb.append(", ");
-      sb.append("userName:");
-      if (this.userName == null) {
-        sb.append("null");
-      } else {
-        sb.append(this.userName);
-      }
-      first = false;
       sb.append(")");
       return sb.toString();
     }
@@ -4385,9 +4303,6 @@ import org.slf4j.LoggerFactory;
       if (project == null) {
         throw new org.apache.thrift.protocol.TProtocolException("Required field 'project' was not present! Struct: " + toString());
       }
-      if (userName == null) {
-        throw new org.apache.thrift.protocol.TProtocolException("Required field 'userName' was not present! Struct: " + toString());
-      }
       // check for sub-struct validity
       if (project != null) {
         project.validate();
@@ -4437,14 +4352,6 @@ import org.slf4j.LoggerFactory;
                 org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
               }
               break;
-            case 2: // USER_NAME
-              if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
-                struct.userName = iprot.readString();
-                struct.setUserNameIsSet(true);
-              } else { 
-                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
-              }
-              break;
             default:
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
           }
@@ -4465,11 +4372,6 @@ import org.slf4j.LoggerFactory;
           struct.project.write(oprot);
           oprot.writeFieldEnd();
         }
-        if (struct.userName != null) {
-          oprot.writeFieldBegin(USER_NAME_FIELD_DESC);
-          oprot.writeString(struct.userName);
-          oprot.writeFieldEnd();
-        }
         oprot.writeFieldStop();
         oprot.writeStructEnd();
       }
@@ -4488,7 +4390,6 @@ import org.slf4j.LoggerFactory;
       public void write(org.apache.thrift.protocol.TProtocol prot, createProject_args struct) throws org.apache.thrift.TException {
         TTupleProtocol oprot = (TTupleProtocol) prot;
         struct.project.write(oprot);
-        oprot.writeString(struct.userName);
       }
 
       @Override
@@ -4497,8 +4398,6 @@ import org.slf4j.LoggerFactory;
         struct.project = new org.apache.airavata.model.workspace.Project();
         struct.project.read(iprot);
         struct.setProjectIsSet(true);
-        struct.userName = iprot.readString();
-        struct.setUserNameIsSet(true);
       }
     }
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/71477800/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 82b1b54..4b3d8f8 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
@@ -161,7 +161,6 @@ uint32_t Airavata_createProject_args::read(::apache::thrift::protocol::TProtocol
   using ::apache::thrift::protocol::TProtocolException;
 
   bool isset_project = false;
-  bool isset_userName = false;
 
   while (true)
   {
@@ -179,14 +178,6 @@ uint32_t Airavata_createProject_args::read(::apache::thrift::protocol::TProtocol
           xfer += iprot->skip(ftype);
         }
         break;
-      case 2:
-        if (ftype == ::apache::thrift::protocol::T_STRING) {
-          xfer += iprot->readString(this->userName);
-          isset_userName = true;
-        } else {
-          xfer += iprot->skip(ftype);
-        }
-        break;
       default:
         xfer += iprot->skip(ftype);
         break;
@@ -198,8 +189,6 @@ uint32_t Airavata_createProject_args::read(::apache::thrift::protocol::TProtocol
 
   if (!isset_project)
     throw TProtocolException(TProtocolException::INVALID_DATA);
-  if (!isset_userName)
-    throw TProtocolException(TProtocolException::INVALID_DATA);
   return xfer;
 }
 
@@ -211,10 +200,6 @@ uint32_t Airavata_createProject_args::write(::apache::thrift::protocol::TProtoco
   xfer += this->project.write(oprot);
   xfer += oprot->writeFieldEnd();
 
-  xfer += oprot->writeFieldBegin("userName", ::apache::thrift::protocol::T_STRING, 2);
-  xfer += oprot->writeString(this->userName);
-  xfer += oprot->writeFieldEnd();
-
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
   return xfer;
@@ -228,10 +213,6 @@ uint32_t Airavata_createProject_pargs::write(::apache::thrift::protocol::TProtoc
   xfer += (*(this->project)).write(oprot);
   xfer += oprot->writeFieldEnd();
 
-  xfer += oprot->writeFieldBegin("userName", ::apache::thrift::protocol::T_STRING, 2);
-  xfer += oprot->writeString((*(this->userName)));
-  xfer += oprot->writeFieldEnd();
-
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
   return xfer;
@@ -4286,20 +4267,19 @@ void AiravataClient::recv_GetAPIVersion(std::string& _return)
   throw ::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT, "GetAPIVersion failed: unknown result");
 }
 
-void AiravataClient::createProject(std::string& _return, const  ::Project& project, const std::string& userName)
+void AiravataClient::createProject(std::string& _return, const  ::Project& project)
 {
-  send_createProject(project, userName);
+  send_createProject(project);
   recv_createProject(_return);
 }
 
-void AiravataClient::send_createProject(const  ::Project& project, const std::string& userName)
+void AiravataClient::send_createProject(const  ::Project& project)
 {
   int32_t cseqid = 0;
   oprot_->writeMessageBegin("createProject", ::apache::thrift::protocol::T_CALL, cseqid);
 
   Airavata_createProject_pargs args;
   args.project = &project;
-  args.userName = &userName;
   args.write(oprot_);
 
   oprot_->writeMessageEnd();
@@ -5549,7 +5529,7 @@ void AiravataProcessor::process_createProject(int32_t seqid, ::apache::thrift::p
 
   Airavata_createProject_result result;
   try {
-    iface_->createProject(result.success, args.project, args.userName);
+    iface_->createProject(result.success, args.project);
     result.__isset.success = true;
   } catch ( ::airavata::api::error::InvalidRequestException &ire) {
     result.ire = ire;

http://git-wip-us.apache.org/repos/asf/airavata/blob/71477800/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 96b6e3f..9cd12a1 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
@@ -16,7 +16,7 @@ class AiravataIf {
  public:
   virtual ~AiravataIf() {}
   virtual void GetAPIVersion(std::string& _return) = 0;
-  virtual void createProject(std::string& _return, const  ::Project& project, const std::string& userName) = 0;
+  virtual void createProject(std::string& _return, const  ::Project& project) = 0;
   virtual void updateProject(const  ::Project& project) = 0;
   virtual void getProject( ::Project& _return, const std::string& projectId) = 0;
   virtual void getAllUserProjects(std::vector< ::Project> & _return, const std::string& userName) = 0;
@@ -66,7 +66,7 @@ class AiravataNull : virtual public AiravataIf {
   void GetAPIVersion(std::string& /* _return */) {
     return;
   }
-  void createProject(std::string& /* _return */, const  ::Project& /* project */, const std::string& /* userName */) {
+  void createProject(std::string& /* _return */, const  ::Project& /* project */) {
     return;
   }
   void updateProject(const  ::Project& /* project */) {
@@ -221,28 +221,21 @@ class Airavata_GetAPIVersion_presult {
 class Airavata_createProject_args {
  public:
 
-  Airavata_createProject_args() : userName() {
+  Airavata_createProject_args() {
   }
 
   virtual ~Airavata_createProject_args() throw() {}
 
    ::Project project;
-  std::string userName;
 
   void __set_project(const  ::Project& val) {
     project = val;
   }
 
-  void __set_userName(const std::string& val) {
-    userName = val;
-  }
-
   bool operator == (const Airavata_createProject_args & rhs) const
   {
     if (!(project == rhs.project))
       return false;
-    if (!(userName == rhs.userName))
-      return false;
     return true;
   }
   bool operator != (const Airavata_createProject_args &rhs) const {
@@ -264,7 +257,6 @@ class Airavata_createProject_pargs {
   virtual ~Airavata_createProject_pargs() throw() {}
 
   const  ::Project* project;
-  const std::string* userName;
 
   uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
 
@@ -2547,8 +2539,8 @@ class AiravataClient : virtual public AiravataIf {
   void GetAPIVersion(std::string& _return);
   void send_GetAPIVersion();
   void recv_GetAPIVersion(std::string& _return);
-  void createProject(std::string& _return, const  ::Project& project, const std::string& userName);
-  void send_createProject(const  ::Project& project, const std::string& userName);
+  void createProject(std::string& _return, const  ::Project& project);
+  void send_createProject(const  ::Project& project);
   void recv_createProject(std::string& _return);
   void updateProject(const  ::Project& project);
   void send_updateProject(const  ::Project& project);
@@ -2695,13 +2687,13 @@ class AiravataMultiface : virtual public AiravataIf {
     return;
   }
 
-  void createProject(std::string& _return, const  ::Project& project, const std::string& userName) {
+  void createProject(std::string& _return, const  ::Project& project) {
     size_t sz = ifaces_.size();
     size_t i = 0;
     for (; i < (sz - 1); ++i) {
-      ifaces_[i]->createProject(_return, project, userName);
+      ifaces_[i]->createProject(_return, project);
     }
-    ifaces_[i]->createProject(_return, project, userName);
+    ifaces_[i]->createProject(_return, project);
     return;
   }
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/71477800/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 8c37958..761359d 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
@@ -27,7 +27,7 @@ class AiravataHandler : virtual public AiravataIf {
     printf("GetAPIVersion\n");
   }
 
-  void createProject(std::string& _return, const  ::Project& project, const std::string& userName) {
+  void createProject(std::string& _return, const  ::Project& project) {
     // Your implementation goes here
     printf("createProject\n");
   }

http://git-wip-us.apache.org/repos/asf/airavata/blob/71477800/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/experimentModel_types.cpp
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/experimentModel_types.cpp b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/experimentModel_types.cpp
index 1caa068..e02c462 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/experimentModel_types.cpp
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/experimentModel_types.cpp
@@ -203,7 +203,6 @@ const std::map<int, const char*> _CorrectiveAction_VALUES_TO_NAMES(::apache::thr
 int _kDataTypeValues[] = {
   DataType::STRING,
   DataType::INTEGER,
-  DataType::FLOAT,
   DataType::URI,
   DataType::STDOUT,
   DataType::STDERR
@@ -211,12 +210,11 @@ int _kDataTypeValues[] = {
 const char* _kDataTypeNames[] = {
   "STRING",
   "INTEGER",
-  "FLOAT",
   "URI",
   "STDOUT",
   "STDERR"
 };
-const std::map<int, const char*> _DataType_VALUES_TO_NAMES(::apache::thrift::TEnumIterator(6, _kDataTypeValues, _kDataTypeNames), ::apache::thrift::TEnumIterator(-1, NULL, NULL));
+const std::map<int, const char*> _DataType_VALUES_TO_NAMES(::apache::thrift::TEnumIterator(5, _kDataTypeValues, _kDataTypeNames), ::apache::thrift::TEnumIterator(-1, NULL, NULL));
 
 const char* ExperimentStatus::ascii_fingerprint = "1662AAADFABAB647546029B578B3B69B";
 const uint8_t ExperimentStatus::binary_fingerprint[16] = {0x16,0x62,0xAA,0xAD,0xFA,0xBA,0xB6,0x47,0x54,0x60,0x29,0xB5,0x78,0xB3,0xB6,0x9B};

http://git-wip-us.apache.org/repos/asf/airavata/blob/71477800/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/experimentModel_types.h
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/experimentModel_types.h b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/experimentModel_types.h
index b129270..ad58c38 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/experimentModel_types.h
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/experimentModel_types.h
@@ -148,10 +148,9 @@ struct DataType {
   enum type {
     STRING = 0,
     INTEGER = 1,
-    FLOAT = 2,
-    URI = 3,
-    STDOUT = 4,
-    STDERR = 5
+    URI = 2,
+    STDOUT = 3,
+    STDERR = 4
   };
 };
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/71477800/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 cf3d5ca..a5a55d3 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
@@ -18,7 +18,7 @@ use Thrift\Exception\TApplicationException;
 
 interface AiravataIf {
   public function GetAPIVersion();
-  public function createProject(\Airavata\Model\Workspace\Project $project, $userName);
+  public function createProject(\Airavata\Model\Workspace\Project $project);
   public function updateProject(\Airavata\Model\Workspace\Project $project);
   public function getProject($projectId);
   public function getAllUserProjects($userName);
@@ -99,17 +99,16 @@ class AiravataClient implements \Airavata\API\AiravataIf {
     throw new \Exception("GetAPIVersion failed: unknown result");
   }
 
-  public function createProject(\Airavata\Model\Workspace\Project $project, $userName)
+  public function createProject(\Airavata\Model\Workspace\Project $project)
   {
-    $this->send_createProject($project, $userName);
+    $this->send_createProject($project);
     return $this->recv_createProject();
   }
 
-  public function send_createProject(\Airavata\Model\Workspace\Project $project, $userName)
+  public function send_createProject(\Airavata\Model\Workspace\Project $project)
   {
     $args = new \Airavata\API\Airavata_createProject_args();
     $args->project = $project;
-    $args->userName = $userName;
     $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
     if ($bin_accel)
     {
@@ -1282,7 +1281,6 @@ class Airavata_createProject_args {
   static $_TSPEC;
 
   public $project = null;
-  public $userName = null;
 
   public function __construct($vals=null) {
     if (!isset(self::$_TSPEC)) {
@@ -1292,19 +1290,12 @@ class Airavata_createProject_args {
           'type' => TType::STRUCT,
           'class' => '\Airavata\Model\Workspace\Project',
           ),
-        2 => array(
-          'var' => 'userName',
-          'type' => TType::STRING,
-          ),
         );
     }
     if (is_array($vals)) {
       if (isset($vals['project'])) {
         $this->project = $vals['project'];
       }
-      if (isset($vals['userName'])) {
-        $this->userName = $vals['userName'];
-      }
     }
   }
 
@@ -1335,13 +1326,6 @@ class Airavata_createProject_args {
             $xfer += $input->skip($ftype);
           }
           break;
-        case 2:
-          if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->userName);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
         default:
           $xfer += $input->skip($ftype);
           break;
@@ -1363,11 +1347,6 @@ class Airavata_createProject_args {
       $xfer += $this->project->write($output);
       $xfer += $output->writeFieldEnd();
     }
-    if ($this->userName !== null) {
-      $xfer += $output->writeFieldBegin('userName', TType::STRING, 2);
-      $xfer += $output->writeString($this->userName);
-      $xfer += $output->writeFieldEnd();
-    }
     $xfer += $output->writeFieldStop();
     $xfer += $output->writeStructEnd();
     return $xfer;

http://git-wip-us.apache.org/repos/asf/airavata/blob/71477800/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Workspace/Experiment/Types.php
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Workspace/Experiment/Types.php b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Workspace/Experiment/Types.php
index b498141..b8fc000 100644
--- a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Workspace/Experiment/Types.php
+++ b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Workspace/Experiment/Types.php
@@ -202,17 +202,15 @@ final class CorrectiveAction {
 final class DataType {
   const STRING = 0;
   const INTEGER = 1;
-  const FLOAT = 2;
-  const URI = 3;
-  const STDOUT = 4;
-  const STDERR = 5;
+  const URI = 2;
+  const STDOUT = 3;
+  const STDERR = 4;
   static public $__names = array(
     0 => 'STRING',
     1 => 'INTEGER',
-    2 => 'FLOAT',
-    3 => 'URI',
-    4 => 'STDOUT',
-    5 => 'STDERR',
+    2 => 'URI',
+    3 => 'STDOUT',
+    4 => 'STDERR',
   );
 }
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/71477800/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 3ee45dc..14e6b68 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
@@ -106,7 +106,7 @@ public class CreateLaunchExperiment {
                              System.out.println(airavata.getExperimentStatus(expId));
                              Thread.sleep(5000);
                          } catch (Exception e) {
-                             e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
+                             e.printStackTrace();
                          }
                      }
 
@@ -246,7 +246,7 @@ public class CreateLaunchExperiment {
             exOut.add(output);
 
             Project project = ProjectModelUtil.createProject("project1", "admin", "test project");
-            String projectId = client.createProject(project, "admin");
+            String projectId = client.createProject(project);
 
             Experiment simpleExperiment =
                     ExperimentModelUtil.createSimpleExperiment(projectId, "admin", "echoExperiment", "SimpleEcho0", "SimpleEcho0", exInputs);
@@ -292,7 +292,7 @@ public class CreateLaunchExperiment {
             exOut.add(output);
 
             Project project = ProjectModelUtil.createProject("default", "admin", "test project");
-            String projectId = client.createProject(project, "admin");
+            String projectId = client.createProject(project);
 
             Experiment simpleExperiment =
                     ExperimentModelUtil.createSimpleExperiment(projectId, "admin", "sshEchoExperiment", "SSHEcho1", "SSHEcho1", exInputs);
@@ -337,7 +337,7 @@ public class CreateLaunchExperiment {
             exOut.add(output);
 
             Project project = ProjectModelUtil.createProject("default", "admin", "test project");
-            String projectId = client.createProject(project, "admin");
+            String projectId = client.createProject(project);
 
             Experiment simpleExperiment =
                     ExperimentModelUtil.createSimpleExperiment(projectId, "admin", "echoExperiment", "SimpleEcho3", "SimpleEcho3", exInputs);
@@ -383,7 +383,7 @@ public class CreateLaunchExperiment {
             exOut.add(output);
 
             Project project = ProjectModelUtil.createProject("default", "admin", "test project");
-            String projectId = client.createProject(project, "admin");
+            String projectId = client.createProject(project);
 
             Experiment simpleExperiment =
                     ExperimentModelUtil.createSimpleExperiment(projectId, "admin", "echoExperiment", "SimpleEcho4", "SimpleEcho4", exInputs);

http://git-wip-us.apache.org/repos/asf/airavata/blob/71477800/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/CreateLaunchExperimentUS3.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/CreateLaunchExperimentUS3.java b/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/CreateLaunchExperimentUS3.java
index 7ab8afc..30020bc 100644
--- a/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/CreateLaunchExperimentUS3.java
+++ b/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/CreateLaunchExperimentUS3.java
@@ -142,7 +142,7 @@ public class CreateLaunchExperimentUS3 {
             exOut.add(output);
 
             Project project = ProjectModelUtil.createProject("project1", "admin", "test project");
-            String projectId = client.createProject(project, "admin");
+            String projectId = client.createProject(project);
 
             Experiment simpleExperiment =
                     ExperimentModelUtil.createSimpleExperiment(projectId, "admin", "US3EchoExperimentTrestles", "US3EchoTrestles", "US3EchoTrestles", exInputs);
@@ -198,7 +198,7 @@ public class CreateLaunchExperimentUS3 {
             exOut.add(output2);
 
             Project project = ProjectModelUtil.createProject("project1", "admin", "test project");
-            String projectId = client.createProject(project, "admin");
+            String projectId = client.createProject(project);
 
             Experiment simpleExperiment = ExperimentModelUtil.createSimpleExperiment(projectId, "admin", "US3ExperimentTrestles", "US3AppTrestles", "US3AppTrestles", exInputs);
             simpleExperiment.setExperimentOutputs(exOut);
@@ -258,7 +258,7 @@ public class CreateLaunchExperimentUS3 {
             exOut.add(output2);
 
             Project project = ProjectModelUtil.createProject("project1", "admin", "test project");
-            String projectId = client.createProject(project, "admin");
+            String projectId = client.createProject(project);
 
             Experiment simpleExperiment = ExperimentModelUtil.createSimpleExperiment(projectId, "admin", "US3ExperimentStampede", "US3AppStampede", "US3AppStampede", exInputs);
             simpleExperiment.setExperimentOutputs(exOut);
@@ -309,7 +309,7 @@ public class CreateLaunchExperimentUS3 {
             exOut.add(output);
 
             Project project = ProjectModelUtil.createProject("project1", "admin", "test project");
-            String projectId = client.createProject(project, "admin");
+            String projectId = client.createProject(project);
 
             Experiment simpleExperiment =
                     ExperimentModelUtil.createSimpleExperiment(projectId, "admin", "US3EchoExperimentStatus", "US3EchoStampede", "US3EchoStampede", exInputs);

http://git-wip-us.apache.org/repos/asf/airavata/blob/71477800/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/workspace/experiment/DataType.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/workspace/experiment/DataType.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/workspace/experiment/DataType.java
index 8d7fd67..eceb638 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/workspace/experiment/DataType.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/workspace/experiment/DataType.java
@@ -30,10 +30,9 @@ import org.apache.thrift.TEnum;
 @SuppressWarnings("all") public enum DataType implements org.apache.thrift.TEnum {
   STRING(0),
   INTEGER(1),
-  FLOAT(2),
-  URI(3),
-  STDOUT(4),
-  STDERR(5);
+  URI(2),
+  STDOUT(3),
+  STDERR(4);
 
   private final int value;
 
@@ -59,12 +58,10 @@ import org.apache.thrift.TEnum;
       case 1:
         return INTEGER;
       case 2:
-        return FLOAT;
-      case 3:
         return URI;
-      case 4:
+      case 3:
         return STDOUT;
-      case 5:
+      case 4:
         return STDERR;
       default:
         return null;

http://git-wip-us.apache.org/repos/asf/airavata/blob/71477800/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 f9feaec..445e721 100644
--- a/airavata-api/thrift-interface-descriptions/airavataAPI.thrift
+++ b/airavata-api/thrift-interface-descriptions/airavataAPI.thrift
@@ -64,8 +64,7 @@ service Airavata {
    * Create a Project
    *
   */
-  string createProject (1: required workspaceModel.Project project,
-                        2: required string userName)
+  string createProject (1: required workspaceModel.Project project)
       throws (1: airavataErrors.InvalidRequestException ire,
               2: airavataErrors.AiravataClientException ace,
               3: airavataErrors.AiravataSystemException ase)

http://git-wip-us.apache.org/repos/asf/airavata/blob/71477800/modules/integration-tests/src/test/java/org/apache/airavata/integration/BaseCaseIT.java
----------------------------------------------------------------------
diff --git a/modules/integration-tests/src/test/java/org/apache/airavata/integration/BaseCaseIT.java b/modules/integration-tests/src/test/java/org/apache/airavata/integration/BaseCaseIT.java
index 5a9361a..43b993f 100644
--- a/modules/integration-tests/src/test/java/org/apache/airavata/integration/BaseCaseIT.java
+++ b/modules/integration-tests/src/test/java/org/apache/airavata/integration/BaseCaseIT.java
@@ -97,7 +97,7 @@ public class BaseCaseIT extends WorkflowIntegrationTestBase {
         exOut.add(output);
 
         Project project = ProjectModelUtil.createProject("project1", "admin", "test project");
-        String projectId = getClient().createProject(project, "admin");
+        String projectId = getClient().createProject(project);
 
         Experiment simpleExperiment = ExperimentModelUtil.createSimpleExperiment(projectId, "admin", "echoExperiment", "SimpleEcho2", "SimpleEcho2", exInputs);
         simpleExperiment.setExperimentOutputs(exOut);
@@ -171,7 +171,7 @@ public class BaseCaseIT extends WorkflowIntegrationTestBase {
         exOut.add(output);
 
         Project project = ProjectModelUtil.createProject("project1", "admin", "test project");
-        String projectId = getClient().createProject(project, "admin");
+        String projectId = getClient().createProject(project);
 
         Experiment simpleExperiment = ExperimentModelUtil.createSimpleExperiment(projectId, "admin", "echoExperiment", "SimpleEcho3", "SimpleEcho3", exInputs);
         simpleExperiment.setExperimentOutputs(exOut);

http://git-wip-us.apache.org/repos/asf/airavata/blob/71477800/modules/integration-tests/src/test/java/org/apache/airavata/integration/DataRetrievalIT.java
----------------------------------------------------------------------
diff --git a/modules/integration-tests/src/test/java/org/apache/airavata/integration/DataRetrievalIT.java b/modules/integration-tests/src/test/java/org/apache/airavata/integration/DataRetrievalIT.java
index e4773f6..69604ca 100644
--- a/modules/integration-tests/src/test/java/org/apache/airavata/integration/DataRetrievalIT.java
+++ b/modules/integration-tests/src/test/java/org/apache/airavata/integration/DataRetrievalIT.java
@@ -85,7 +85,7 @@ public class DataRetrievalIT extends AbstractIntegrationTest {
     private void addProjects() throws TException {
         for (int i = 0; i < projects.length; i++){
             Project project = ProjectModelUtil.createProject(projects[i], "admin", "test project");
-            String projectId = getClient().createProject(project, "admin");
+            String projectId = getClient().createProject(project);
             projectIds.add(projectId);
         }
     }

http://git-wip-us.apache.org/repos/asf/airavata/blob/71477800/modules/integration-tests/src/test/java/org/apache/airavata/integration/SimpleEchoIT.java
----------------------------------------------------------------------
diff --git a/modules/integration-tests/src/test/java/org/apache/airavata/integration/SimpleEchoIT.java b/modules/integration-tests/src/test/java/org/apache/airavata/integration/SimpleEchoIT.java
index 02fc6c8..08ed3f9 100644
--- a/modules/integration-tests/src/test/java/org/apache/airavata/integration/SimpleEchoIT.java
+++ b/modules/integration-tests/src/test/java/org/apache/airavata/integration/SimpleEchoIT.java
@@ -70,7 +70,7 @@ public class SimpleEchoIT extends SingleAppIntegrationTestBase {
         exOut.add(output);
 
         Project project = ProjectModelUtil.createProject("project1", "admin", "test project");
-        String projectId = getClient().createProject(project, "admin");
+        String projectId = getClient().createProject(project);
 
         Experiment simpleExperiment =
                 ExperimentModelUtil.createSimpleExperiment(projectId, "admin", "echoExperiment", "SimpleEcho0", "SimpleEcho0", exInputs);