You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by la...@apache.org on 2016/08/26 15:43:39 UTC

[44/50] [abbrv] airavata git commit: making experiment status a list in ExperimentModel

making experiment status a list in ExperimentModel


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

Branch: refs/heads/lahiru/AIRAVATA-2057
Commit: 415e9b701599b44999ca35306a53052012e44e63
Parents: 3536751
Author: scnakandala <su...@gmail.com>
Authored: Thu Aug 25 15:28:32 2016 -0400
Committer: scnakandala <su...@gmail.com>
Committed: Thu Aug 25 15:28:32 2016 -0400

----------------------------------------------------------------------
 .../server/handler/AiravataServerHandler.java   |  43 +-
 .../lib/airavata/experiment_model_types.cpp     | 406 ++++++++++---------
 .../lib/airavata/experiment_model_types.h       |   4 +-
 .../lib/Airavata/Model/Experiment/Types.php     | 205 +++++-----
 .../apache/airavata/model/experiment/ttypes.py  | 144 +++----
 .../client/samples/CreateLaunchBES.java         |  19 +-
 .../client/samples/CreateLaunchExperiment.java  |  14 +-
 .../model/experiment/ExperimentModel.java       | 219 ++++++----
 .../model/experiment/ExperimentStatistics.java  | 216 +++++-----
 .../impl/ExperimentStatusValidator.java         |   5 +-
 .../server/OrchestratorServerHandler.java       |  32 +-
 modules/registry/registry-core/pom.xml          |   2 +-
 .../catalog/impl/ExperimentRegistry.java        |   2 +-
 .../core/experiment/catalog/model/Gateway.java  |   2 +-
 .../utils/ThriftDataModelConversion.java        |   4 +-
 .../service/handler/RegistryServerHandler.java  |   2 +-
 .../experiment_model.thrift                     |   2 +-
 17 files changed, 685 insertions(+), 636 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/415e9b70/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 b21be18..83eb771 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
@@ -48,14 +48,7 @@ import org.apache.airavata.model.WorkflowModel;
 import org.apache.airavata.model.appcatalog.appdeployment.ApplicationDeploymentDescription;
 import org.apache.airavata.model.appcatalog.appdeployment.ApplicationModule;
 import org.apache.airavata.model.appcatalog.appinterface.ApplicationInterfaceDescription;
-import org.apache.airavata.model.appcatalog.computeresource.CloudJobSubmission;
-import org.apache.airavata.model.appcatalog.computeresource.ComputeResourceDescription;
-import org.apache.airavata.model.appcatalog.computeresource.JobSubmissionInterface;
-import org.apache.airavata.model.appcatalog.computeresource.JobSubmissionProtocol;
-import org.apache.airavata.model.appcatalog.computeresource.LOCALSubmission;
-import org.apache.airavata.model.appcatalog.computeresource.ResourceJobManager;
-import org.apache.airavata.model.appcatalog.computeresource.SSHJobSubmission;
-import org.apache.airavata.model.appcatalog.computeresource.UnicoreJobSubmission;
+import org.apache.airavata.model.appcatalog.computeresource.*;
 import org.apache.airavata.model.appcatalog.gatewayprofile.ComputeResourcePreference;
 import org.apache.airavata.model.appcatalog.gatewayprofile.GatewayResourceProfile;
 import org.apache.airavata.model.appcatalog.gatewayprofile.StoragePreference;
@@ -64,27 +57,11 @@ import org.apache.airavata.model.application.io.InputDataObjectType;
 import org.apache.airavata.model.application.io.OutputDataObjectType;
 import org.apache.airavata.model.commons.airavata_commonsConstants;
 import org.apache.airavata.model.data.movement.DMType;
-import org.apache.airavata.model.data.movement.DataMovementInterface;
-import org.apache.airavata.model.data.movement.DataMovementProtocol;
-import org.apache.airavata.model.data.movement.GridFTPDataMovement;
-import org.apache.airavata.model.data.movement.LOCALDataMovement;
-import org.apache.airavata.model.data.movement.SCPDataMovement;
-import org.apache.airavata.model.data.movement.UnicoreDataMovement;
+import org.apache.airavata.model.data.movement.*;
 import org.apache.airavata.model.data.replica.DataProductModel;
 import org.apache.airavata.model.data.replica.DataReplicaLocationModel;
-import org.apache.airavata.model.error.AiravataClientException;
-import org.apache.airavata.model.error.AiravataErrorType;
-import org.apache.airavata.model.error.AiravataSystemException;
-import org.apache.airavata.model.error.AuthorizationException;
-import org.apache.airavata.model.error.ExperimentNotFoundException;
-import org.apache.airavata.model.error.InvalidRequestException;
-import org.apache.airavata.model.error.ProjectNotFoundException;
-import org.apache.airavata.model.experiment.ExperimentModel;
-import org.apache.airavata.model.experiment.ExperimentSearchFields;
-import org.apache.airavata.model.experiment.ExperimentStatistics;
-import org.apache.airavata.model.experiment.ExperimentSummaryModel;
-import org.apache.airavata.model.experiment.ProjectSearchFields;
-import org.apache.airavata.model.experiment.UserConfigurationDataModel;
+import org.apache.airavata.model.error.*;
+import org.apache.airavata.model.experiment.*;
 import org.apache.airavata.model.group.GroupModel;
 import org.apache.airavata.model.group.ResourcePermissionType;
 import org.apache.airavata.model.group.ResourceType;
@@ -107,11 +84,7 @@ import org.apache.thrift.TException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.UUID;
+import java.util.*;
 
 public class AiravataServerHandler implements Airavata.Iface {
     private static final Logger logger = LoggerFactory.getLogger(AiravataServerHandler.class);
@@ -934,7 +907,7 @@ public class AiravataServerHandler implements Airavata.Iface {
                 }
             }
 
-            if(!(experimentModel.getExperimentStatus().getState() == ExperimentState.CREATED)){
+            if(!(experimentModel.getExperimentStatus().get(0).getState() == ExperimentState.CREATED)){
                 logger.error("Error while deleting the experiment");
                 throw new RegistryServiceException("Experiment is not in CREATED state. Hence cannot deleted. ID:"+ experimentId);
             }
@@ -1454,9 +1427,9 @@ public class AiravataServerHandler implements Airavata.Iface {
                 logger.error(airavataExperimentId, "Error while cancelling experiment {}, experiment doesn't exist.", airavataExperimentId);
                 throw new ExperimentNotFoundException("Requested experiment id " + airavataExperimentId + " does not exist in the system..");
             }
-            switch (existingExperiment.getExperimentStatus().getState()) {
+            switch (existingExperiment.getExperimentStatus().get(0).getState()) {
                 case COMPLETED: case CANCELED: case FAILED: case CANCELING:
-                    logger.warn("Can't terminate already {} experiment", existingExperiment.getExperimentStatus().getState().name());
+                    logger.warn("Can't terminate already {} experiment", existingExperiment.getExperimentStatus().get(0).getState().name());
                     break;
                 case CREATED:
                     logger.warn("Experiment termination is only allowed for launched experiments.");

http://git-wip-us.apache.org/repos/asf/airavata/blob/415e9b70/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/experiment_model_types.cpp
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/experiment_model_types.cpp b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/experiment_model_types.cpp
index 0bf0ac2..1980b28 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/experiment_model_types.cpp
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/experiment_model_types.cpp
@@ -415,7 +415,7 @@ void ExperimentModel::__set_experimentOutputs(const std::vector< ::apache::airav
 __isset.experimentOutputs = true;
 }
 
-void ExperimentModel::__set_experimentStatus(const  ::apache::airavata::model::status::ExperimentStatus& val) {
+void ExperimentModel::__set_experimentStatus(const std::vector< ::apache::airavata::model::status::ExperimentStatus> & val) {
   this->experimentStatus = val;
 __isset.experimentStatus = true;
 }
@@ -624,45 +624,57 @@ uint32_t ExperimentModel::read(::apache::thrift::protocol::TProtocol* iprot) {
         }
         break;
       case 17:
-        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
-          xfer += this->experimentStatus.read(iprot);
-          this->__isset.experimentStatus = true;
-        } else {
-          xfer += iprot->skip(ftype);
-        }
-        break;
-      case 18:
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
-            this->errors.clear();
+            this->experimentStatus.clear();
             uint32_t _size18;
             ::apache::thrift::protocol::TType _etype21;
             xfer += iprot->readListBegin(_etype21, _size18);
-            this->errors.resize(_size18);
+            this->experimentStatus.resize(_size18);
             uint32_t _i22;
             for (_i22 = 0; _i22 < _size18; ++_i22)
             {
-              xfer += this->errors[_i22].read(iprot);
+              xfer += this->experimentStatus[_i22].read(iprot);
             }
             xfer += iprot->readListEnd();
           }
-          this->__isset.errors = true;
+          this->__isset.experimentStatus = true;
         } else {
           xfer += iprot->skip(ftype);
         }
         break;
-      case 19:
+      case 18:
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
-            this->processes.clear();
+            this->errors.clear();
             uint32_t _size23;
             ::apache::thrift::protocol::TType _etype26;
             xfer += iprot->readListBegin(_etype26, _size23);
-            this->processes.resize(_size23);
+            this->errors.resize(_size23);
             uint32_t _i27;
             for (_i27 = 0; _i27 < _size23; ++_i27)
             {
-              xfer += this->processes[_i27].read(iprot);
+              xfer += this->errors[_i27].read(iprot);
+            }
+            xfer += iprot->readListEnd();
+          }
+          this->__isset.errors = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 19:
+        if (ftype == ::apache::thrift::protocol::T_LIST) {
+          {
+            this->processes.clear();
+            uint32_t _size28;
+            ::apache::thrift::protocol::TType _etype31;
+            xfer += iprot->readListBegin(_etype31, _size28);
+            this->processes.resize(_size28);
+            uint32_t _i32;
+            for (_i32 = 0; _i32 < _size28; ++_i32)
+            {
+              xfer += this->processes[_i32].read(iprot);
             }
             xfer += iprot->readListEnd();
           }
@@ -758,10 +770,10 @@ uint32_t ExperimentModel::write(::apache::thrift::protocol::TProtocol* oprot) co
     xfer += oprot->writeFieldBegin("emailAddresses", ::apache::thrift::protocol::T_LIST, 13);
     {
       xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRING, static_cast<uint32_t>(this->emailAddresses.size()));
-      std::vector<std::string> ::const_iterator _iter28;
-      for (_iter28 = this->emailAddresses.begin(); _iter28 != this->emailAddresses.end(); ++_iter28)
+      std::vector<std::string> ::const_iterator _iter33;
+      for (_iter33 = this->emailAddresses.begin(); _iter33 != this->emailAddresses.end(); ++_iter33)
       {
-        xfer += oprot->writeString((*_iter28));
+        xfer += oprot->writeString((*_iter33));
       }
       xfer += oprot->writeListEnd();
     }
@@ -776,10 +788,10 @@ uint32_t ExperimentModel::write(::apache::thrift::protocol::TProtocol* oprot) co
     xfer += oprot->writeFieldBegin("experimentInputs", ::apache::thrift::protocol::T_LIST, 15);
     {
       xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->experimentInputs.size()));
-      std::vector< ::apache::airavata::model::application::io::InputDataObjectType> ::const_iterator _iter29;
-      for (_iter29 = this->experimentInputs.begin(); _iter29 != this->experimentInputs.end(); ++_iter29)
+      std::vector< ::apache::airavata::model::application::io::InputDataObjectType> ::const_iterator _iter34;
+      for (_iter34 = this->experimentInputs.begin(); _iter34 != this->experimentInputs.end(); ++_iter34)
       {
-        xfer += (*_iter29).write(oprot);
+        xfer += (*_iter34).write(oprot);
       }
       xfer += oprot->writeListEnd();
     }
@@ -789,28 +801,36 @@ uint32_t ExperimentModel::write(::apache::thrift::protocol::TProtocol* oprot) co
     xfer += oprot->writeFieldBegin("experimentOutputs", ::apache::thrift::protocol::T_LIST, 16);
     {
       xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->experimentOutputs.size()));
-      std::vector< ::apache::airavata::model::application::io::OutputDataObjectType> ::const_iterator _iter30;
-      for (_iter30 = this->experimentOutputs.begin(); _iter30 != this->experimentOutputs.end(); ++_iter30)
+      std::vector< ::apache::airavata::model::application::io::OutputDataObjectType> ::const_iterator _iter35;
+      for (_iter35 = this->experimentOutputs.begin(); _iter35 != this->experimentOutputs.end(); ++_iter35)
       {
-        xfer += (*_iter30).write(oprot);
+        xfer += (*_iter35).write(oprot);
       }
       xfer += oprot->writeListEnd();
     }
     xfer += oprot->writeFieldEnd();
   }
   if (this->__isset.experimentStatus) {
-    xfer += oprot->writeFieldBegin("experimentStatus", ::apache::thrift::protocol::T_STRUCT, 17);
-    xfer += this->experimentStatus.write(oprot);
+    xfer += oprot->writeFieldBegin("experimentStatus", ::apache::thrift::protocol::T_LIST, 17);
+    {
+      xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->experimentStatus.size()));
+      std::vector< ::apache::airavata::model::status::ExperimentStatus> ::const_iterator _iter36;
+      for (_iter36 = this->experimentStatus.begin(); _iter36 != this->experimentStatus.end(); ++_iter36)
+      {
+        xfer += (*_iter36).write(oprot);
+      }
+      xfer += oprot->writeListEnd();
+    }
     xfer += oprot->writeFieldEnd();
   }
   if (this->__isset.errors) {
     xfer += oprot->writeFieldBegin("errors", ::apache::thrift::protocol::T_LIST, 18);
     {
       xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->errors.size()));
-      std::vector< ::apache::airavata::model::commons::ErrorModel> ::const_iterator _iter31;
-      for (_iter31 = this->errors.begin(); _iter31 != this->errors.end(); ++_iter31)
+      std::vector< ::apache::airavata::model::commons::ErrorModel> ::const_iterator _iter37;
+      for (_iter37 = this->errors.begin(); _iter37 != this->errors.end(); ++_iter37)
       {
-        xfer += (*_iter31).write(oprot);
+        xfer += (*_iter37).write(oprot);
       }
       xfer += oprot->writeListEnd();
     }
@@ -820,10 +840,10 @@ uint32_t ExperimentModel::write(::apache::thrift::protocol::TProtocol* oprot) co
     xfer += oprot->writeFieldBegin("processes", ::apache::thrift::protocol::T_LIST, 19);
     {
       xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->processes.size()));
-      std::vector< ::apache::airavata::model::process::ProcessModel> ::const_iterator _iter32;
-      for (_iter32 = this->processes.begin(); _iter32 != this->processes.end(); ++_iter32)
+      std::vector< ::apache::airavata::model::process::ProcessModel> ::const_iterator _iter38;
+      for (_iter38 = this->processes.begin(); _iter38 != this->processes.end(); ++_iter38)
       {
-        xfer += (*_iter32).write(oprot);
+        xfer += (*_iter38).write(oprot);
       }
       xfer += oprot->writeListEnd();
     }
@@ -858,49 +878,49 @@ void swap(ExperimentModel &a, ExperimentModel &b) {
   swap(a.__isset, b.__isset);
 }
 
-ExperimentModel::ExperimentModel(const ExperimentModel& other33) {
-  experimentId = other33.experimentId;
-  projectId = other33.projectId;
-  gatewayId = other33.gatewayId;
-  experimentType = other33.experimentType;
-  userName = other33.userName;
-  experimentName = other33.experimentName;
-  creationTime = other33.creationTime;
-  description = other33.description;
-  executionId = other33.executionId;
-  gatewayExecutionId = other33.gatewayExecutionId;
-  gatewayInstanceId = other33.gatewayInstanceId;
-  enableEmailNotification = other33.enableEmailNotification;
-  emailAddresses = other33.emailAddresses;
-  userConfigurationData = other33.userConfigurationData;
-  experimentInputs = other33.experimentInputs;
-  experimentOutputs = other33.experimentOutputs;
-  experimentStatus = other33.experimentStatus;
-  errors = other33.errors;
-  processes = other33.processes;
-  __isset = other33.__isset;
-}
-ExperimentModel& ExperimentModel::operator=(const ExperimentModel& other34) {
-  experimentId = other34.experimentId;
-  projectId = other34.projectId;
-  gatewayId = other34.gatewayId;
-  experimentType = other34.experimentType;
-  userName = other34.userName;
-  experimentName = other34.experimentName;
-  creationTime = other34.creationTime;
-  description = other34.description;
-  executionId = other34.executionId;
-  gatewayExecutionId = other34.gatewayExecutionId;
-  gatewayInstanceId = other34.gatewayInstanceId;
-  enableEmailNotification = other34.enableEmailNotification;
-  emailAddresses = other34.emailAddresses;
-  userConfigurationData = other34.userConfigurationData;
-  experimentInputs = other34.experimentInputs;
-  experimentOutputs = other34.experimentOutputs;
-  experimentStatus = other34.experimentStatus;
-  errors = other34.errors;
-  processes = other34.processes;
-  __isset = other34.__isset;
+ExperimentModel::ExperimentModel(const ExperimentModel& other39) {
+  experimentId = other39.experimentId;
+  projectId = other39.projectId;
+  gatewayId = other39.gatewayId;
+  experimentType = other39.experimentType;
+  userName = other39.userName;
+  experimentName = other39.experimentName;
+  creationTime = other39.creationTime;
+  description = other39.description;
+  executionId = other39.executionId;
+  gatewayExecutionId = other39.gatewayExecutionId;
+  gatewayInstanceId = other39.gatewayInstanceId;
+  enableEmailNotification = other39.enableEmailNotification;
+  emailAddresses = other39.emailAddresses;
+  userConfigurationData = other39.userConfigurationData;
+  experimentInputs = other39.experimentInputs;
+  experimentOutputs = other39.experimentOutputs;
+  experimentStatus = other39.experimentStatus;
+  errors = other39.errors;
+  processes = other39.processes;
+  __isset = other39.__isset;
+}
+ExperimentModel& ExperimentModel::operator=(const ExperimentModel& other40) {
+  experimentId = other40.experimentId;
+  projectId = other40.projectId;
+  gatewayId = other40.gatewayId;
+  experimentType = other40.experimentType;
+  userName = other40.userName;
+  experimentName = other40.experimentName;
+  creationTime = other40.creationTime;
+  description = other40.description;
+  executionId = other40.executionId;
+  gatewayExecutionId = other40.gatewayExecutionId;
+  gatewayInstanceId = other40.gatewayInstanceId;
+  enableEmailNotification = other40.enableEmailNotification;
+  emailAddresses = other40.emailAddresses;
+  userConfigurationData = other40.userConfigurationData;
+  experimentInputs = other40.experimentInputs;
+  experimentOutputs = other40.experimentOutputs;
+  experimentStatus = other40.experimentStatus;
+  errors = other40.errors;
+  processes = other40.processes;
+  __isset = other40.__isset;
   return *this;
 }
 void ExperimentModel::printTo(std::ostream& out) const {
@@ -1195,33 +1215,33 @@ void swap(ExperimentSummaryModel &a, ExperimentSummaryModel &b) {
   swap(a.__isset, b.__isset);
 }
 
-ExperimentSummaryModel::ExperimentSummaryModel(const ExperimentSummaryModel& other35) {
-  experimentId = other35.experimentId;
-  projectId = other35.projectId;
-  gatewayId = other35.gatewayId;
-  creationTime = other35.creationTime;
-  userName = other35.userName;
-  name = other35.name;
-  description = other35.description;
-  executionId = other35.executionId;
-  resourceHostId = other35.resourceHostId;
-  experimentStatus = other35.experimentStatus;
-  statusUpdateTime = other35.statusUpdateTime;
-  __isset = other35.__isset;
-}
-ExperimentSummaryModel& ExperimentSummaryModel::operator=(const ExperimentSummaryModel& other36) {
-  experimentId = other36.experimentId;
-  projectId = other36.projectId;
-  gatewayId = other36.gatewayId;
-  creationTime = other36.creationTime;
-  userName = other36.userName;
-  name = other36.name;
-  description = other36.description;
-  executionId = other36.executionId;
-  resourceHostId = other36.resourceHostId;
-  experimentStatus = other36.experimentStatus;
-  statusUpdateTime = other36.statusUpdateTime;
-  __isset = other36.__isset;
+ExperimentSummaryModel::ExperimentSummaryModel(const ExperimentSummaryModel& other41) {
+  experimentId = other41.experimentId;
+  projectId = other41.projectId;
+  gatewayId = other41.gatewayId;
+  creationTime = other41.creationTime;
+  userName = other41.userName;
+  name = other41.name;
+  description = other41.description;
+  executionId = other41.executionId;
+  resourceHostId = other41.resourceHostId;
+  experimentStatus = other41.experimentStatus;
+  statusUpdateTime = other41.statusUpdateTime;
+  __isset = other41.__isset;
+}
+ExperimentSummaryModel& ExperimentSummaryModel::operator=(const ExperimentSummaryModel& other42) {
+  experimentId = other42.experimentId;
+  projectId = other42.projectId;
+  gatewayId = other42.gatewayId;
+  creationTime = other42.creationTime;
+  userName = other42.userName;
+  name = other42.name;
+  description = other42.description;
+  executionId = other42.executionId;
+  resourceHostId = other42.resourceHostId;
+  experimentStatus = other42.experimentStatus;
+  statusUpdateTime = other42.statusUpdateTime;
+  __isset = other42.__isset;
   return *this;
 }
 void ExperimentSummaryModel::printTo(std::ostream& out) const {
@@ -1379,14 +1399,14 @@ uint32_t ExperimentStatistics::read(::apache::thrift::protocol::TProtocol* iprot
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
             this->allExperiments.clear();
-            uint32_t _size37;
-            ::apache::thrift::protocol::TType _etype40;
-            xfer += iprot->readListBegin(_etype40, _size37);
-            this->allExperiments.resize(_size37);
-            uint32_t _i41;
-            for (_i41 = 0; _i41 < _size37; ++_i41)
+            uint32_t _size43;
+            ::apache::thrift::protocol::TType _etype46;
+            xfer += iprot->readListBegin(_etype46, _size43);
+            this->allExperiments.resize(_size43);
+            uint32_t _i47;
+            for (_i47 = 0; _i47 < _size43; ++_i47)
             {
-              xfer += this->allExperiments[_i41].read(iprot);
+              xfer += this->allExperiments[_i47].read(iprot);
             }
             xfer += iprot->readListEnd();
           }
@@ -1399,14 +1419,14 @@ uint32_t ExperimentStatistics::read(::apache::thrift::protocol::TProtocol* iprot
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
             this->completedExperiments.clear();
-            uint32_t _size42;
-            ::apache::thrift::protocol::TType _etype45;
-            xfer += iprot->readListBegin(_etype45, _size42);
-            this->completedExperiments.resize(_size42);
-            uint32_t _i46;
-            for (_i46 = 0; _i46 < _size42; ++_i46)
+            uint32_t _size48;
+            ::apache::thrift::protocol::TType _etype51;
+            xfer += iprot->readListBegin(_etype51, _size48);
+            this->completedExperiments.resize(_size48);
+            uint32_t _i52;
+            for (_i52 = 0; _i52 < _size48; ++_i52)
             {
-              xfer += this->completedExperiments[_i46].read(iprot);
+              xfer += this->completedExperiments[_i52].read(iprot);
             }
             xfer += iprot->readListEnd();
           }
@@ -1419,14 +1439,14 @@ uint32_t ExperimentStatistics::read(::apache::thrift::protocol::TProtocol* iprot
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
             this->failedExperiments.clear();
-            uint32_t _size47;
-            ::apache::thrift::protocol::TType _etype50;
-            xfer += iprot->readListBegin(_etype50, _size47);
-            this->failedExperiments.resize(_size47);
-            uint32_t _i51;
-            for (_i51 = 0; _i51 < _size47; ++_i51)
+            uint32_t _size53;
+            ::apache::thrift::protocol::TType _etype56;
+            xfer += iprot->readListBegin(_etype56, _size53);
+            this->failedExperiments.resize(_size53);
+            uint32_t _i57;
+            for (_i57 = 0; _i57 < _size53; ++_i57)
             {
-              xfer += this->failedExperiments[_i51].read(iprot);
+              xfer += this->failedExperiments[_i57].read(iprot);
             }
             xfer += iprot->readListEnd();
           }
@@ -1439,14 +1459,14 @@ uint32_t ExperimentStatistics::read(::apache::thrift::protocol::TProtocol* iprot
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
             this->cancelledExperiments.clear();
-            uint32_t _size52;
-            ::apache::thrift::protocol::TType _etype55;
-            xfer += iprot->readListBegin(_etype55, _size52);
-            this->cancelledExperiments.resize(_size52);
-            uint32_t _i56;
-            for (_i56 = 0; _i56 < _size52; ++_i56)
+            uint32_t _size58;
+            ::apache::thrift::protocol::TType _etype61;
+            xfer += iprot->readListBegin(_etype61, _size58);
+            this->cancelledExperiments.resize(_size58);
+            uint32_t _i62;
+            for (_i62 = 0; _i62 < _size58; ++_i62)
             {
-              xfer += this->cancelledExperiments[_i56].read(iprot);
+              xfer += this->cancelledExperiments[_i62].read(iprot);
             }
             xfer += iprot->readListEnd();
           }
@@ -1459,14 +1479,14 @@ uint32_t ExperimentStatistics::read(::apache::thrift::protocol::TProtocol* iprot
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
             this->createdExperiments.clear();
-            uint32_t _size57;
-            ::apache::thrift::protocol::TType _etype60;
-            xfer += iprot->readListBegin(_etype60, _size57);
-            this->createdExperiments.resize(_size57);
-            uint32_t _i61;
-            for (_i61 = 0; _i61 < _size57; ++_i61)
+            uint32_t _size63;
+            ::apache::thrift::protocol::TType _etype66;
+            xfer += iprot->readListBegin(_etype66, _size63);
+            this->createdExperiments.resize(_size63);
+            uint32_t _i67;
+            for (_i67 = 0; _i67 < _size63; ++_i67)
             {
-              xfer += this->createdExperiments[_i61].read(iprot);
+              xfer += this->createdExperiments[_i67].read(iprot);
             }
             xfer += iprot->readListEnd();
           }
@@ -1479,14 +1499,14 @@ uint32_t ExperimentStatistics::read(::apache::thrift::protocol::TProtocol* iprot
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
             this->runningExperiments.clear();
-            uint32_t _size62;
-            ::apache::thrift::protocol::TType _etype65;
-            xfer += iprot->readListBegin(_etype65, _size62);
-            this->runningExperiments.resize(_size62);
-            uint32_t _i66;
-            for (_i66 = 0; _i66 < _size62; ++_i66)
+            uint32_t _size68;
+            ::apache::thrift::protocol::TType _etype71;
+            xfer += iprot->readListBegin(_etype71, _size68);
+            this->runningExperiments.resize(_size68);
+            uint32_t _i72;
+            for (_i72 = 0; _i72 < _size68; ++_i72)
             {
-              xfer += this->runningExperiments[_i66].read(iprot);
+              xfer += this->runningExperiments[_i72].read(iprot);
             }
             xfer += iprot->readListEnd();
           }
@@ -1552,10 +1572,10 @@ uint32_t ExperimentStatistics::write(::apache::thrift::protocol::TProtocol* opro
   xfer += oprot->writeFieldBegin("allExperiments", ::apache::thrift::protocol::T_LIST, 7);
   {
     xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->allExperiments.size()));
-    std::vector<ExperimentSummaryModel> ::const_iterator _iter67;
-    for (_iter67 = this->allExperiments.begin(); _iter67 != this->allExperiments.end(); ++_iter67)
+    std::vector<ExperimentSummaryModel> ::const_iterator _iter73;
+    for (_iter73 = this->allExperiments.begin(); _iter73 != this->allExperiments.end(); ++_iter73)
     {
-      xfer += (*_iter67).write(oprot);
+      xfer += (*_iter73).write(oprot);
     }
     xfer += oprot->writeListEnd();
   }
@@ -1565,10 +1585,10 @@ uint32_t ExperimentStatistics::write(::apache::thrift::protocol::TProtocol* opro
     xfer += oprot->writeFieldBegin("completedExperiments", ::apache::thrift::protocol::T_LIST, 8);
     {
       xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->completedExperiments.size()));
-      std::vector<ExperimentSummaryModel> ::const_iterator _iter68;
-      for (_iter68 = this->completedExperiments.begin(); _iter68 != this->completedExperiments.end(); ++_iter68)
+      std::vector<ExperimentSummaryModel> ::const_iterator _iter74;
+      for (_iter74 = this->completedExperiments.begin(); _iter74 != this->completedExperiments.end(); ++_iter74)
       {
-        xfer += (*_iter68).write(oprot);
+        xfer += (*_iter74).write(oprot);
       }
       xfer += oprot->writeListEnd();
     }
@@ -1578,10 +1598,10 @@ uint32_t ExperimentStatistics::write(::apache::thrift::protocol::TProtocol* opro
     xfer += oprot->writeFieldBegin("failedExperiments", ::apache::thrift::protocol::T_LIST, 9);
     {
       xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->failedExperiments.size()));
-      std::vector<ExperimentSummaryModel> ::const_iterator _iter69;
-      for (_iter69 = this->failedExperiments.begin(); _iter69 != this->failedExperiments.end(); ++_iter69)
+      std::vector<ExperimentSummaryModel> ::const_iterator _iter75;
+      for (_iter75 = this->failedExperiments.begin(); _iter75 != this->failedExperiments.end(); ++_iter75)
       {
-        xfer += (*_iter69).write(oprot);
+        xfer += (*_iter75).write(oprot);
       }
       xfer += oprot->writeListEnd();
     }
@@ -1591,10 +1611,10 @@ uint32_t ExperimentStatistics::write(::apache::thrift::protocol::TProtocol* opro
     xfer += oprot->writeFieldBegin("cancelledExperiments", ::apache::thrift::protocol::T_LIST, 10);
     {
       xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->cancelledExperiments.size()));
-      std::vector<ExperimentSummaryModel> ::const_iterator _iter70;
-      for (_iter70 = this->cancelledExperiments.begin(); _iter70 != this->cancelledExperiments.end(); ++_iter70)
+      std::vector<ExperimentSummaryModel> ::const_iterator _iter76;
+      for (_iter76 = this->cancelledExperiments.begin(); _iter76 != this->cancelledExperiments.end(); ++_iter76)
       {
-        xfer += (*_iter70).write(oprot);
+        xfer += (*_iter76).write(oprot);
       }
       xfer += oprot->writeListEnd();
     }
@@ -1604,10 +1624,10 @@ uint32_t ExperimentStatistics::write(::apache::thrift::protocol::TProtocol* opro
     xfer += oprot->writeFieldBegin("createdExperiments", ::apache::thrift::protocol::T_LIST, 11);
     {
       xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->createdExperiments.size()));
-      std::vector<ExperimentSummaryModel> ::const_iterator _iter71;
-      for (_iter71 = this->createdExperiments.begin(); _iter71 != this->createdExperiments.end(); ++_iter71)
+      std::vector<ExperimentSummaryModel> ::const_iterator _iter77;
+      for (_iter77 = this->createdExperiments.begin(); _iter77 != this->createdExperiments.end(); ++_iter77)
       {
-        xfer += (*_iter71).write(oprot);
+        xfer += (*_iter77).write(oprot);
       }
       xfer += oprot->writeListEnd();
     }
@@ -1617,10 +1637,10 @@ uint32_t ExperimentStatistics::write(::apache::thrift::protocol::TProtocol* opro
     xfer += oprot->writeFieldBegin("runningExperiments", ::apache::thrift::protocol::T_LIST, 12);
     {
       xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->runningExperiments.size()));
-      std::vector<ExperimentSummaryModel> ::const_iterator _iter72;
-      for (_iter72 = this->runningExperiments.begin(); _iter72 != this->runningExperiments.end(); ++_iter72)
+      std::vector<ExperimentSummaryModel> ::const_iterator _iter78;
+      for (_iter78 = this->runningExperiments.begin(); _iter78 != this->runningExperiments.end(); ++_iter78)
       {
-        xfer += (*_iter72).write(oprot);
+        xfer += (*_iter78).write(oprot);
       }
       xfer += oprot->writeListEnd();
     }
@@ -1648,35 +1668,35 @@ void swap(ExperimentStatistics &a, ExperimentStatistics &b) {
   swap(a.__isset, b.__isset);
 }
 
-ExperimentStatistics::ExperimentStatistics(const ExperimentStatistics& other73) {
-  allExperimentCount = other73.allExperimentCount;
-  completedExperimentCount = other73.completedExperimentCount;
-  cancelledExperimentCount = other73.cancelledExperimentCount;
-  failedExperimentCount = other73.failedExperimentCount;
-  createdExperimentCount = other73.createdExperimentCount;
-  runningExperimentCount = other73.runningExperimentCount;
-  allExperiments = other73.allExperiments;
-  completedExperiments = other73.completedExperiments;
-  failedExperiments = other73.failedExperiments;
-  cancelledExperiments = other73.cancelledExperiments;
-  createdExperiments = other73.createdExperiments;
-  runningExperiments = other73.runningExperiments;
-  __isset = other73.__isset;
-}
-ExperimentStatistics& ExperimentStatistics::operator=(const ExperimentStatistics& other74) {
-  allExperimentCount = other74.allExperimentCount;
-  completedExperimentCount = other74.completedExperimentCount;
-  cancelledExperimentCount = other74.cancelledExperimentCount;
-  failedExperimentCount = other74.failedExperimentCount;
-  createdExperimentCount = other74.createdExperimentCount;
-  runningExperimentCount = other74.runningExperimentCount;
-  allExperiments = other74.allExperiments;
-  completedExperiments = other74.completedExperiments;
-  failedExperiments = other74.failedExperiments;
-  cancelledExperiments = other74.cancelledExperiments;
-  createdExperiments = other74.createdExperiments;
-  runningExperiments = other74.runningExperiments;
-  __isset = other74.__isset;
+ExperimentStatistics::ExperimentStatistics(const ExperimentStatistics& other79) {
+  allExperimentCount = other79.allExperimentCount;
+  completedExperimentCount = other79.completedExperimentCount;
+  cancelledExperimentCount = other79.cancelledExperimentCount;
+  failedExperimentCount = other79.failedExperimentCount;
+  createdExperimentCount = other79.createdExperimentCount;
+  runningExperimentCount = other79.runningExperimentCount;
+  allExperiments = other79.allExperiments;
+  completedExperiments = other79.completedExperiments;
+  failedExperiments = other79.failedExperiments;
+  cancelledExperiments = other79.cancelledExperiments;
+  createdExperiments = other79.createdExperiments;
+  runningExperiments = other79.runningExperiments;
+  __isset = other79.__isset;
+}
+ExperimentStatistics& ExperimentStatistics::operator=(const ExperimentStatistics& other80) {
+  allExperimentCount = other80.allExperimentCount;
+  completedExperimentCount = other80.completedExperimentCount;
+  cancelledExperimentCount = other80.cancelledExperimentCount;
+  failedExperimentCount = other80.failedExperimentCount;
+  createdExperimentCount = other80.createdExperimentCount;
+  runningExperimentCount = other80.runningExperimentCount;
+  allExperiments = other80.allExperiments;
+  completedExperiments = other80.completedExperiments;
+  failedExperiments = other80.failedExperiments;
+  cancelledExperiments = other80.cancelledExperiments;
+  createdExperiments = other80.createdExperiments;
+  runningExperiments = other80.runningExperiments;
+  __isset = other80.__isset;
   return *this;
 }
 void ExperimentStatistics::printTo(std::ostream& out) const {

http://git-wip-us.apache.org/repos/asf/airavata/blob/415e9b70/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/experiment_model_types.h
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/experiment_model_types.h b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/experiment_model_types.h
index c3e6fc0..c6368e3 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/experiment_model_types.h
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/experiment_model_types.h
@@ -231,7 +231,7 @@ class ExperimentModel {
   UserConfigurationDataModel userConfigurationData;
   std::vector< ::apache::airavata::model::application::io::InputDataObjectType>  experimentInputs;
   std::vector< ::apache::airavata::model::application::io::OutputDataObjectType>  experimentOutputs;
-   ::apache::airavata::model::status::ExperimentStatus experimentStatus;
+  std::vector< ::apache::airavata::model::status::ExperimentStatus>  experimentStatus;
   std::vector< ::apache::airavata::model::commons::ErrorModel>  errors;
   std::vector< ::apache::airavata::model::process::ProcessModel>  processes;
 
@@ -269,7 +269,7 @@ class ExperimentModel {
 
   void __set_experimentOutputs(const std::vector< ::apache::airavata::model::application::io::OutputDataObjectType> & val);
 
-  void __set_experimentStatus(const  ::apache::airavata::model::status::ExperimentStatus& val);
+  void __set_experimentStatus(const std::vector< ::apache::airavata::model::status::ExperimentStatus> & val);
 
   void __set_errors(const std::vector< ::apache::airavata::model::commons::ErrorModel> & val);
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/415e9b70/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Experiment/Types.php
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Experiment/Types.php b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Experiment/Types.php
index 5018139..3e1dc12 100644
--- a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Experiment/Types.php
+++ b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Experiment/Types.php
@@ -407,7 +407,7 @@ class ExperimentModel {
    */
   public $experimentOutputs = null;
   /**
-   * @var \Airavata\Model\Status\ExperimentStatus
+   * @var \Airavata\Model\Status\ExperimentStatus[]
    */
   public $experimentStatus = null;
   /**
@@ -503,8 +503,12 @@ class ExperimentModel {
           ),
         17 => array(
           'var' => 'experimentStatus',
-          'type' => TType::STRUCT,
-          'class' => '\Airavata\Model\Status\ExperimentStatus',
+          'type' => TType::LST,
+          'etype' => TType::STRUCT,
+          'elem' => array(
+            'type' => TType::STRUCT,
+            'class' => '\Airavata\Model\Status\ExperimentStatus',
+            ),
           ),
         18 => array(
           'var' => 'errors',
@@ -752,43 +756,53 @@ class ExperimentModel {
           }
           break;
         case 17:
-          if ($ftype == TType::STRUCT) {
-            $this->experimentStatus = new \Airavata\Model\Status\ExperimentStatus();
-            $xfer += $this->experimentStatus->read($input);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 18:
           if ($ftype == TType::LST) {
-            $this->errors = array();
+            $this->experimentStatus = array();
             $_size18 = 0;
             $_etype21 = 0;
             $xfer += $input->readListBegin($_etype21, $_size18);
             for ($_i22 = 0; $_i22 < $_size18; ++$_i22)
             {
               $elem23 = null;
-              $elem23 = new \Airavata\Model\Commons\ErrorModel();
+              $elem23 = new \Airavata\Model\Status\ExperimentStatus();
               $xfer += $elem23->read($input);
-              $this->errors []= $elem23;
+              $this->experimentStatus []= $elem23;
             }
             $xfer += $input->readListEnd();
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
-        case 19:
+        case 18:
           if ($ftype == TType::LST) {
-            $this->processes = array();
+            $this->errors = array();
             $_size24 = 0;
             $_etype27 = 0;
             $xfer += $input->readListBegin($_etype27, $_size24);
             for ($_i28 = 0; $_i28 < $_size24; ++$_i28)
             {
               $elem29 = null;
-              $elem29 = new \Airavata\Model\Process\ProcessModel();
+              $elem29 = new \Airavata\Model\Commons\ErrorModel();
               $xfer += $elem29->read($input);
-              $this->processes []= $elem29;
+              $this->errors []= $elem29;
+            }
+            $xfer += $input->readListEnd();
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 19:
+          if ($ftype == TType::LST) {
+            $this->processes = array();
+            $_size30 = 0;
+            $_etype33 = 0;
+            $xfer += $input->readListBegin($_etype33, $_size30);
+            for ($_i34 = 0; $_i34 < $_size30; ++$_i34)
+            {
+              $elem35 = null;
+              $elem35 = new \Airavata\Model\Process\ProcessModel();
+              $xfer += $elem35->read($input);
+              $this->processes []= $elem35;
             }
             $xfer += $input->readListEnd();
           } else {
@@ -876,9 +890,9 @@ class ExperimentModel {
       {
         $output->writeListBegin(TType::STRING, count($this->emailAddresses));
         {
-          foreach ($this->emailAddresses as $iter30)
+          foreach ($this->emailAddresses as $iter36)
           {
-            $xfer += $output->writeString($iter30);
+            $xfer += $output->writeString($iter36);
           }
         }
         $output->writeListEnd();
@@ -901,9 +915,9 @@ class ExperimentModel {
       {
         $output->writeListBegin(TType::STRUCT, count($this->experimentInputs));
         {
-          foreach ($this->experimentInputs as $iter31)
+          foreach ($this->experimentInputs as $iter37)
           {
-            $xfer += $iter31->write($output);
+            $xfer += $iter37->write($output);
           }
         }
         $output->writeListEnd();
@@ -918,9 +932,9 @@ class ExperimentModel {
       {
         $output->writeListBegin(TType::STRUCT, count($this->experimentOutputs));
         {
-          foreach ($this->experimentOutputs as $iter32)
+          foreach ($this->experimentOutputs as $iter38)
           {
-            $xfer += $iter32->write($output);
+            $xfer += $iter38->write($output);
           }
         }
         $output->writeListEnd();
@@ -928,11 +942,20 @@ class ExperimentModel {
       $xfer += $output->writeFieldEnd();
     }
     if ($this->experimentStatus !== null) {
-      if (!is_object($this->experimentStatus)) {
+      if (!is_array($this->experimentStatus)) {
         throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
       }
-      $xfer += $output->writeFieldBegin('experimentStatus', TType::STRUCT, 17);
-      $xfer += $this->experimentStatus->write($output);
+      $xfer += $output->writeFieldBegin('experimentStatus', TType::LST, 17);
+      {
+        $output->writeListBegin(TType::STRUCT, count($this->experimentStatus));
+        {
+          foreach ($this->experimentStatus as $iter39)
+          {
+            $xfer += $iter39->write($output);
+          }
+        }
+        $output->writeListEnd();
+      }
       $xfer += $output->writeFieldEnd();
     }
     if ($this->errors !== null) {
@@ -943,9 +966,9 @@ class ExperimentModel {
       {
         $output->writeListBegin(TType::STRUCT, count($this->errors));
         {
-          foreach ($this->errors as $iter33)
+          foreach ($this->errors as $iter40)
           {
-            $xfer += $iter33->write($output);
+            $xfer += $iter40->write($output);
           }
         }
         $output->writeListEnd();
@@ -960,9 +983,9 @@ class ExperimentModel {
       {
         $output->writeListBegin(TType::STRUCT, count($this->processes));
         {
-          foreach ($this->processes as $iter34)
+          foreach ($this->processes as $iter41)
           {
-            $xfer += $iter34->write($output);
+            $xfer += $iter41->write($output);
           }
         }
         $output->writeListEnd();
@@ -1520,15 +1543,15 @@ class ExperimentStatistics {
         case 7:
           if ($ftype == TType::LST) {
             $this->allExperiments = array();
-            $_size35 = 0;
-            $_etype38 = 0;
-            $xfer += $input->readListBegin($_etype38, $_size35);
-            for ($_i39 = 0; $_i39 < $_size35; ++$_i39)
+            $_size42 = 0;
+            $_etype45 = 0;
+            $xfer += $input->readListBegin($_etype45, $_size42);
+            for ($_i46 = 0; $_i46 < $_size42; ++$_i46)
             {
-              $elem40 = null;
-              $elem40 = new \Airavata\Model\Experiment\ExperimentSummaryModel();
-              $xfer += $elem40->read($input);
-              $this->allExperiments []= $elem40;
+              $elem47 = null;
+              $elem47 = new \Airavata\Model\Experiment\ExperimentSummaryModel();
+              $xfer += $elem47->read($input);
+              $this->allExperiments []= $elem47;
             }
             $xfer += $input->readListEnd();
           } else {
@@ -1538,15 +1561,15 @@ class ExperimentStatistics {
         case 8:
           if ($ftype == TType::LST) {
             $this->completedExperiments = array();
-            $_size41 = 0;
-            $_etype44 = 0;
-            $xfer += $input->readListBegin($_etype44, $_size41);
-            for ($_i45 = 0; $_i45 < $_size41; ++$_i45)
+            $_size48 = 0;
+            $_etype51 = 0;
+            $xfer += $input->readListBegin($_etype51, $_size48);
+            for ($_i52 = 0; $_i52 < $_size48; ++$_i52)
             {
-              $elem46 = null;
-              $elem46 = new \Airavata\Model\Experiment\ExperimentSummaryModel();
-              $xfer += $elem46->read($input);
-              $this->completedExperiments []= $elem46;
+              $elem53 = null;
+              $elem53 = new \Airavata\Model\Experiment\ExperimentSummaryModel();
+              $xfer += $elem53->read($input);
+              $this->completedExperiments []= $elem53;
             }
             $xfer += $input->readListEnd();
           } else {
@@ -1556,15 +1579,15 @@ class ExperimentStatistics {
         case 9:
           if ($ftype == TType::LST) {
             $this->failedExperiments = array();
-            $_size47 = 0;
-            $_etype50 = 0;
-            $xfer += $input->readListBegin($_etype50, $_size47);
-            for ($_i51 = 0; $_i51 < $_size47; ++$_i51)
+            $_size54 = 0;
+            $_etype57 = 0;
+            $xfer += $input->readListBegin($_etype57, $_size54);
+            for ($_i58 = 0; $_i58 < $_size54; ++$_i58)
             {
-              $elem52 = null;
-              $elem52 = new \Airavata\Model\Experiment\ExperimentSummaryModel();
-              $xfer += $elem52->read($input);
-              $this->failedExperiments []= $elem52;
+              $elem59 = null;
+              $elem59 = new \Airavata\Model\Experiment\ExperimentSummaryModel();
+              $xfer += $elem59->read($input);
+              $this->failedExperiments []= $elem59;
             }
             $xfer += $input->readListEnd();
           } else {
@@ -1574,15 +1597,15 @@ class ExperimentStatistics {
         case 10:
           if ($ftype == TType::LST) {
             $this->cancelledExperiments = array();
-            $_size53 = 0;
-            $_etype56 = 0;
-            $xfer += $input->readListBegin($_etype56, $_size53);
-            for ($_i57 = 0; $_i57 < $_size53; ++$_i57)
+            $_size60 = 0;
+            $_etype63 = 0;
+            $xfer += $input->readListBegin($_etype63, $_size60);
+            for ($_i64 = 0; $_i64 < $_size60; ++$_i64)
             {
-              $elem58 = null;
-              $elem58 = new \Airavata\Model\Experiment\ExperimentSummaryModel();
-              $xfer += $elem58->read($input);
-              $this->cancelledExperiments []= $elem58;
+              $elem65 = null;
+              $elem65 = new \Airavata\Model\Experiment\ExperimentSummaryModel();
+              $xfer += $elem65->read($input);
+              $this->cancelledExperiments []= $elem65;
             }
             $xfer += $input->readListEnd();
           } else {
@@ -1592,15 +1615,15 @@ class ExperimentStatistics {
         case 11:
           if ($ftype == TType::LST) {
             $this->createdExperiments = array();
-            $_size59 = 0;
-            $_etype62 = 0;
-            $xfer += $input->readListBegin($_etype62, $_size59);
-            for ($_i63 = 0; $_i63 < $_size59; ++$_i63)
+            $_size66 = 0;
+            $_etype69 = 0;
+            $xfer += $input->readListBegin($_etype69, $_size66);
+            for ($_i70 = 0; $_i70 < $_size66; ++$_i70)
             {
-              $elem64 = null;
-              $elem64 = new \Airavata\Model\Experiment\ExperimentSummaryModel();
-              $xfer += $elem64->read($input);
-              $this->createdExperiments []= $elem64;
+              $elem71 = null;
+              $elem71 = new \Airavata\Model\Experiment\ExperimentSummaryModel();
+              $xfer += $elem71->read($input);
+              $this->createdExperiments []= $elem71;
             }
             $xfer += $input->readListEnd();
           } else {
@@ -1610,15 +1633,15 @@ class ExperimentStatistics {
         case 12:
           if ($ftype == TType::LST) {
             $this->runningExperiments = array();
-            $_size65 = 0;
-            $_etype68 = 0;
-            $xfer += $input->readListBegin($_etype68, $_size65);
-            for ($_i69 = 0; $_i69 < $_size65; ++$_i69)
+            $_size72 = 0;
+            $_etype75 = 0;
+            $xfer += $input->readListBegin($_etype75, $_size72);
+            for ($_i76 = 0; $_i76 < $_size72; ++$_i76)
             {
-              $elem70 = null;
-              $elem70 = new \Airavata\Model\Experiment\ExperimentSummaryModel();
-              $xfer += $elem70->read($input);
-              $this->runningExperiments []= $elem70;
+              $elem77 = null;
+              $elem77 = new \Airavata\Model\Experiment\ExperimentSummaryModel();
+              $xfer += $elem77->read($input);
+              $this->runningExperiments []= $elem77;
             }
             $xfer += $input->readListEnd();
           } else {
@@ -1676,9 +1699,9 @@ class ExperimentStatistics {
       {
         $output->writeListBegin(TType::STRUCT, count($this->allExperiments));
         {
-          foreach ($this->allExperiments as $iter71)
+          foreach ($this->allExperiments as $iter78)
           {
-            $xfer += $iter71->write($output);
+            $xfer += $iter78->write($output);
           }
         }
         $output->writeListEnd();
@@ -1693,9 +1716,9 @@ class ExperimentStatistics {
       {
         $output->writeListBegin(TType::STRUCT, count($this->completedExperiments));
         {
-          foreach ($this->completedExperiments as $iter72)
+          foreach ($this->completedExperiments as $iter79)
           {
-            $xfer += $iter72->write($output);
+            $xfer += $iter79->write($output);
           }
         }
         $output->writeListEnd();
@@ -1710,9 +1733,9 @@ class ExperimentStatistics {
       {
         $output->writeListBegin(TType::STRUCT, count($this->failedExperiments));
         {
-          foreach ($this->failedExperiments as $iter73)
+          foreach ($this->failedExperiments as $iter80)
           {
-            $xfer += $iter73->write($output);
+            $xfer += $iter80->write($output);
           }
         }
         $output->writeListEnd();
@@ -1727,9 +1750,9 @@ class ExperimentStatistics {
       {
         $output->writeListBegin(TType::STRUCT, count($this->cancelledExperiments));
         {
-          foreach ($this->cancelledExperiments as $iter74)
+          foreach ($this->cancelledExperiments as $iter81)
           {
-            $xfer += $iter74->write($output);
+            $xfer += $iter81->write($output);
           }
         }
         $output->writeListEnd();
@@ -1744,9 +1767,9 @@ class ExperimentStatistics {
       {
         $output->writeListBegin(TType::STRUCT, count($this->createdExperiments));
         {
-          foreach ($this->createdExperiments as $iter75)
+          foreach ($this->createdExperiments as $iter82)
           {
-            $xfer += $iter75->write($output);
+            $xfer += $iter82->write($output);
           }
         }
         $output->writeListEnd();
@@ -1761,9 +1784,9 @@ class ExperimentStatistics {
       {
         $output->writeListBegin(TType::STRUCT, count($this->runningExperiments));
         {
-          foreach ($this->runningExperiments as $iter76)
+          foreach ($this->runningExperiments as $iter83)
           {
-            $xfer += $iter76->write($output);
+            $xfer += $iter83->write($output);
           }
         }
         $output->writeListEnd();

http://git-wip-us.apache.org/repos/asf/airavata/blob/415e9b70/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/experiment/ttypes.py
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/experiment/ttypes.py b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/experiment/ttypes.py
index 75f6271..80ff4b1 100644
--- a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/experiment/ttypes.py
+++ b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/experiment/ttypes.py
@@ -315,7 +315,7 @@ class ExperimentModel:
     (14, TType.STRUCT, 'userConfigurationData', (UserConfigurationDataModel, UserConfigurationDataModel.thrift_spec), None, ), # 14
     (15, TType.LIST, 'experimentInputs', (TType.STRUCT,(apache.airavata.model.application.io.ttypes.InputDataObjectType, apache.airavata.model.application.io.ttypes.InputDataObjectType.thrift_spec)), None, ), # 15
     (16, TType.LIST, 'experimentOutputs', (TType.STRUCT,(apache.airavata.model.application.io.ttypes.OutputDataObjectType, apache.airavata.model.application.io.ttypes.OutputDataObjectType.thrift_spec)), None, ), # 16
-    (17, TType.STRUCT, 'experimentStatus', (apache.airavata.model.status.ttypes.ExperimentStatus, apache.airavata.model.status.ttypes.ExperimentStatus.thrift_spec), None, ), # 17
+    (17, TType.LIST, 'experimentStatus', (TType.STRUCT,(apache.airavata.model.status.ttypes.ExperimentStatus, apache.airavata.model.status.ttypes.ExperimentStatus.thrift_spec)), None, ), # 17
     (18, TType.LIST, 'errors', (TType.STRUCT,(apache.airavata.model.commons.ttypes.ErrorModel, apache.airavata.model.commons.ttypes.ErrorModel.thrift_spec)), None, ), # 18
     (19, TType.LIST, 'processes', (TType.STRUCT,(apache.airavata.model.process.ttypes.ProcessModel, apache.airavata.model.process.ttypes.ProcessModel.thrift_spec)), None, ), # 19
   )
@@ -449,30 +449,35 @@ class ExperimentModel:
         else:
           iprot.skip(ftype)
       elif fid == 17:
-        if ftype == TType.STRUCT:
-          self.experimentStatus = apache.airavata.model.status.ttypes.ExperimentStatus()
-          self.experimentStatus.read(iprot)
-        else:
-          iprot.skip(ftype)
-      elif fid == 18:
         if ftype == TType.LIST:
-          self.errors = []
+          self.experimentStatus = []
           (_etype21, _size18) = iprot.readListBegin()
           for _i22 in xrange(_size18):
-            _elem23 = apache.airavata.model.commons.ttypes.ErrorModel()
+            _elem23 = apache.airavata.model.status.ttypes.ExperimentStatus()
             _elem23.read(iprot)
-            self.errors.append(_elem23)
+            self.experimentStatus.append(_elem23)
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
-      elif fid == 19:
+      elif fid == 18:
         if ftype == TType.LIST:
-          self.processes = []
+          self.errors = []
           (_etype27, _size24) = iprot.readListBegin()
           for _i28 in xrange(_size24):
-            _elem29 = apache.airavata.model.process.ttypes.ProcessModel()
+            _elem29 = apache.airavata.model.commons.ttypes.ErrorModel()
             _elem29.read(iprot)
-            self.processes.append(_elem29)
+            self.errors.append(_elem29)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 19:
+        if ftype == TType.LIST:
+          self.processes = []
+          (_etype33, _size30) = iprot.readListBegin()
+          for _i34 in xrange(_size30):
+            _elem35 = apache.airavata.model.process.ttypes.ProcessModel()
+            _elem35.read(iprot)
+            self.processes.append(_elem35)
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
@@ -537,8 +542,8 @@ class ExperimentModel:
     if self.emailAddresses is not None:
       oprot.writeFieldBegin('emailAddresses', TType.LIST, 13)
       oprot.writeListBegin(TType.STRING, len(self.emailAddresses))
-      for iter30 in self.emailAddresses:
-        oprot.writeString(iter30)
+      for iter36 in self.emailAddresses:
+        oprot.writeString(iter36)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     if self.userConfigurationData is not None:
@@ -548,33 +553,36 @@ class ExperimentModel:
     if self.experimentInputs is not None:
       oprot.writeFieldBegin('experimentInputs', TType.LIST, 15)
       oprot.writeListBegin(TType.STRUCT, len(self.experimentInputs))
-      for iter31 in self.experimentInputs:
-        iter31.write(oprot)
+      for iter37 in self.experimentInputs:
+        iter37.write(oprot)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     if self.experimentOutputs is not None:
       oprot.writeFieldBegin('experimentOutputs', TType.LIST, 16)
       oprot.writeListBegin(TType.STRUCT, len(self.experimentOutputs))
-      for iter32 in self.experimentOutputs:
-        iter32.write(oprot)
+      for iter38 in self.experimentOutputs:
+        iter38.write(oprot)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     if self.experimentStatus is not None:
-      oprot.writeFieldBegin('experimentStatus', TType.STRUCT, 17)
-      self.experimentStatus.write(oprot)
+      oprot.writeFieldBegin('experimentStatus', TType.LIST, 17)
+      oprot.writeListBegin(TType.STRUCT, len(self.experimentStatus))
+      for iter39 in self.experimentStatus:
+        iter39.write(oprot)
+      oprot.writeListEnd()
       oprot.writeFieldEnd()
     if self.errors is not None:
       oprot.writeFieldBegin('errors', TType.LIST, 18)
       oprot.writeListBegin(TType.STRUCT, len(self.errors))
-      for iter33 in self.errors:
-        iter33.write(oprot)
+      for iter40 in self.errors:
+        iter40.write(oprot)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     if self.processes is not None:
       oprot.writeFieldBegin('processes', TType.LIST, 19)
       oprot.writeListBegin(TType.STRUCT, len(self.processes))
-      for iter34 in self.processes:
-        iter34.write(oprot)
+      for iter41 in self.processes:
+        iter41.write(oprot)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     oprot.writeFieldStop()
@@ -925,66 +933,66 @@ class ExperimentStatistics:
       elif fid == 7:
         if ftype == TType.LIST:
           self.allExperiments = []
-          (_etype38, _size35) = iprot.readListBegin()
-          for _i39 in xrange(_size35):
-            _elem40 = ExperimentSummaryModel()
-            _elem40.read(iprot)
-            self.allExperiments.append(_elem40)
+          (_etype45, _size42) = iprot.readListBegin()
+          for _i46 in xrange(_size42):
+            _elem47 = ExperimentSummaryModel()
+            _elem47.read(iprot)
+            self.allExperiments.append(_elem47)
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
       elif fid == 8:
         if ftype == TType.LIST:
           self.completedExperiments = []
-          (_etype44, _size41) = iprot.readListBegin()
-          for _i45 in xrange(_size41):
-            _elem46 = ExperimentSummaryModel()
-            _elem46.read(iprot)
-            self.completedExperiments.append(_elem46)
+          (_etype51, _size48) = iprot.readListBegin()
+          for _i52 in xrange(_size48):
+            _elem53 = ExperimentSummaryModel()
+            _elem53.read(iprot)
+            self.completedExperiments.append(_elem53)
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
       elif fid == 9:
         if ftype == TType.LIST:
           self.failedExperiments = []
-          (_etype50, _size47) = iprot.readListBegin()
-          for _i51 in xrange(_size47):
-            _elem52 = ExperimentSummaryModel()
-            _elem52.read(iprot)
-            self.failedExperiments.append(_elem52)
+          (_etype57, _size54) = iprot.readListBegin()
+          for _i58 in xrange(_size54):
+            _elem59 = ExperimentSummaryModel()
+            _elem59.read(iprot)
+            self.failedExperiments.append(_elem59)
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
       elif fid == 10:
         if ftype == TType.LIST:
           self.cancelledExperiments = []
-          (_etype56, _size53) = iprot.readListBegin()
-          for _i57 in xrange(_size53):
-            _elem58 = ExperimentSummaryModel()
-            _elem58.read(iprot)
-            self.cancelledExperiments.append(_elem58)
+          (_etype63, _size60) = iprot.readListBegin()
+          for _i64 in xrange(_size60):
+            _elem65 = ExperimentSummaryModel()
+            _elem65.read(iprot)
+            self.cancelledExperiments.append(_elem65)
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
       elif fid == 11:
         if ftype == TType.LIST:
           self.createdExperiments = []
-          (_etype62, _size59) = iprot.readListBegin()
-          for _i63 in xrange(_size59):
-            _elem64 = ExperimentSummaryModel()
-            _elem64.read(iprot)
-            self.createdExperiments.append(_elem64)
+          (_etype69, _size66) = iprot.readListBegin()
+          for _i70 in xrange(_size66):
+            _elem71 = ExperimentSummaryModel()
+            _elem71.read(iprot)
+            self.createdExperiments.append(_elem71)
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
       elif fid == 12:
         if ftype == TType.LIST:
           self.runningExperiments = []
-          (_etype68, _size65) = iprot.readListBegin()
-          for _i69 in xrange(_size65):
-            _elem70 = ExperimentSummaryModel()
-            _elem70.read(iprot)
-            self.runningExperiments.append(_elem70)
+          (_etype75, _size72) = iprot.readListBegin()
+          for _i76 in xrange(_size72):
+            _elem77 = ExperimentSummaryModel()
+            _elem77.read(iprot)
+            self.runningExperiments.append(_elem77)
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
@@ -1025,43 +1033,43 @@ class ExperimentStatistics:
     if self.allExperiments is not None:
       oprot.writeFieldBegin('allExperiments', TType.LIST, 7)
       oprot.writeListBegin(TType.STRUCT, len(self.allExperiments))
-      for iter71 in self.allExperiments:
-        iter71.write(oprot)
+      for iter78 in self.allExperiments:
+        iter78.write(oprot)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     if self.completedExperiments is not None:
       oprot.writeFieldBegin('completedExperiments', TType.LIST, 8)
       oprot.writeListBegin(TType.STRUCT, len(self.completedExperiments))
-      for iter72 in self.completedExperiments:
-        iter72.write(oprot)
+      for iter79 in self.completedExperiments:
+        iter79.write(oprot)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     if self.failedExperiments is not None:
       oprot.writeFieldBegin('failedExperiments', TType.LIST, 9)
       oprot.writeListBegin(TType.STRUCT, len(self.failedExperiments))
-      for iter73 in self.failedExperiments:
-        iter73.write(oprot)
+      for iter80 in self.failedExperiments:
+        iter80.write(oprot)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     if self.cancelledExperiments is not None:
       oprot.writeFieldBegin('cancelledExperiments', TType.LIST, 10)
       oprot.writeListBegin(TType.STRUCT, len(self.cancelledExperiments))
-      for iter74 in self.cancelledExperiments:
-        iter74.write(oprot)
+      for iter81 in self.cancelledExperiments:
+        iter81.write(oprot)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     if self.createdExperiments is not None:
       oprot.writeFieldBegin('createdExperiments', TType.LIST, 11)
       oprot.writeListBegin(TType.STRUCT, len(self.createdExperiments))
-      for iter75 in self.createdExperiments:
-        iter75.write(oprot)
+      for iter82 in self.createdExperiments:
+        iter82.write(oprot)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     if self.runningExperiments is not None:
       oprot.writeFieldBegin('runningExperiments', TType.LIST, 12)
       oprot.writeListBegin(TType.STRUCT, len(self.runningExperiments))
-      for iter76 in self.runningExperiments:
-        iter76.write(oprot)
+      for iter83 in self.runningExperiments:
+        iter83.write(oprot)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     oprot.writeFieldStop()

http://git-wip-us.apache.org/repos/asf/airavata/blob/415e9b70/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/CreateLaunchBES.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/CreateLaunchBES.java b/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/CreateLaunchBES.java
index dc869c2..b37bd29 100644
--- a/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/CreateLaunchBES.java
+++ b/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/CreateLaunchBES.java
@@ -20,10 +20,6 @@
  */
 package org.apache.airavata.client.samples;
 
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-
 import org.apache.airavata.api.Airavata;
 import org.apache.airavata.api.client.AiravataClientFactory;
 import org.apache.airavata.client.tools.RegisterSampleApplications;
@@ -36,23 +32,22 @@ import org.apache.airavata.model.application.io.InputDataObjectType;
 import org.apache.airavata.model.application.io.OutputDataObjectType;
 import org.apache.airavata.model.commons.ErrorModel;
 import org.apache.airavata.model.data.movement.SecurityProtocol;
-import org.apache.airavata.model.error.AiravataClientException;
-import org.apache.airavata.model.error.AiravataErrorType;
-import org.apache.airavata.model.error.AiravataSystemException;
-import org.apache.airavata.model.error.ExperimentNotFoundException;
-import org.apache.airavata.model.error.InvalidRequestException;
-import org.apache.airavata.model.experiment.ExperimentSummaryModel;
+import org.apache.airavata.model.error.*;
+import org.apache.airavata.model.experiment.ExperimentModel;
 import org.apache.airavata.model.experiment.UserConfigurationDataModel;
 import org.apache.airavata.model.scheduling.ComputationalResourceSchedulingModel;
 import org.apache.airavata.model.security.AuthzToken;
 import org.apache.airavata.model.util.ExperimentModelUtil;
 import org.apache.airavata.model.workspace.Gateway;
 import org.apache.airavata.model.workspace.Project;
-import org.apache.airavata.model.experiment.ExperimentModel;
 import org.apache.thrift.TException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
 public class CreateLaunchBES {
  
     public static final String THRIFT_SERVER_HOST = "localhost";
@@ -167,7 +162,7 @@ public class CreateLaunchBES {
             Thread.sleep(10000);
             for (String exId : experimentIds) {
                 ExperimentModel experiment = airavataClient.getExperiment(new AuthzToken(""), exId);
-                System.out.println(experiment.getExperimentId() + " " + experiment.getExperimentStatus().getState().name());
+                System.out.println(experiment.getExperimentId() + " " + experiment.getExperimentStatus().get(0).getState().name());
             }
 
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/415e9b70/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 11c84a4..aff662b 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
@@ -25,7 +25,10 @@ import org.apache.airavata.api.Airavata;
 import org.apache.airavata.api.client.AiravataClientFactory;
 import org.apache.airavata.client.tools.RegisterSampleApplications;
 import org.apache.airavata.client.tools.RegisterSampleApplicationsUtils;
-import org.apache.airavata.model.appcatalog.computeresource.*;
+import org.apache.airavata.model.appcatalog.computeresource.ComputeResourceDescription;
+import org.apache.airavata.model.appcatalog.computeresource.JobSubmissionInterface;
+import org.apache.airavata.model.appcatalog.computeresource.JobSubmissionProtocol;
+import org.apache.airavata.model.appcatalog.computeresource.UnicoreJobSubmission;
 import org.apache.airavata.model.application.io.DataType;
 import org.apache.airavata.model.application.io.InputDataObjectType;
 import org.apache.airavata.model.application.io.OutputDataObjectType;
@@ -33,7 +36,6 @@ import org.apache.airavata.model.commons.ErrorModel;
 import org.apache.airavata.model.data.movement.SecurityProtocol;
 import org.apache.airavata.model.error.*;
 import org.apache.airavata.model.experiment.ExperimentModel;
-import org.apache.airavata.model.experiment.ExperimentSummaryModel;
 import org.apache.airavata.model.experiment.UserConfigurationDataModel;
 import org.apache.airavata.model.scheduling.ComputationalResourceSchedulingModel;
 import org.apache.airavata.model.security.AuthzToken;
@@ -211,12 +213,12 @@ public class CreateLaunchExperiment {
                 allNotFinished = false;
                 for (String exId : experimentIds) {
                     ExperimentModel experiment = airavataClient.getExperiment(new AuthzToken(""), exId);
-                    if(!experiment.getExperimentStatus().getState().equals(ExperimentState.COMPLETED)&&
-                            !experiment.getExperimentStatus().getState().equals(ExperimentState.FAILED)
-                            &&!experiment.getExperimentStatus().getState().equals(ExperimentState.CANCELED)){
+                    if(!experiment.getExperimentStatus().get(0).getState().equals(ExperimentState.COMPLETED)&&
+                            !experiment.getExperimentStatus().get(0).getState().equals(ExperimentState.FAILED)
+                            &&!experiment.getExperimentStatus().get(0).getState().equals(ExperimentState.CANCELED)){
                         allNotFinished = true;
                     }
-                    System.out.println(experiment.getExperimentId() + " " + experiment.getExperimentStatus().getState().name());
+                    System.out.println(experiment.getExperimentId() + " " + experiment.getExperimentStatus().get(0).getState().name());
                 }
                 System.out.println("----------------------------------------------------");
                 Thread.sleep(10000);