airavata-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From sma...@apache.org
Subject airavata git commit: adding gateway instance id to allow gateways to specify group id's
Date Fri, 26 Feb 2016 20:14:31 GMT
Repository: airavata
Updated Branches:
  refs/heads/develop 4772b99e3 -> b537f358d


adding gateway instance id to allow gateways to specify group id's


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

Branch: refs/heads/develop
Commit: b537f358de8c303af81ade7b0f42d7e58d3e61b3
Parents: 4772b99
Author: smarru <smarru@apache.org>
Authored: Fri Feb 26 15:14:25 2016 -0500
Committer: smarru <smarru@apache.org>
Committed: Fri Feb 26 15:14:25 2016 -0500

----------------------------------------------------------------------
 .../lib/airavata/experiment_model_types.cpp     |  52 +++--
 .../lib/airavata/experiment_model_types.h       |  12 +-
 .../lib/Airavata/Model/Experiment/Types.php     |  67 ++++--
 .../apache/airavata/model/experiment/ttypes.py  |  61 +++---
 .../model/experiment/ExperimentModel.java       | 206 ++++++++++++++-----
 .../src/main/resources/expcatalog-derby.sql     |   1 +
 .../src/main/resources/expcatalog-mysql.sql     |   1 +
 .../experiment_model.thrift                     |  17 +-
 8 files changed, 296 insertions(+), 121 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/b537f358/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 f27b08b..d63d93a 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
@@ -375,6 +375,11 @@ void ExperimentModel::__set_gatewayExecutionId(const std::string& val) {
 __isset.gatewayExecutionId = true;
 }
 
+void ExperimentModel::__set_gatewayInstanceId(const std::string& val) {
+  this->gatewayInstanceId = val;
+__isset.gatewayInstanceId = true;
+}
+
 void ExperimentModel::__set_enableEmailNotification(const bool val) {
   this->enableEmailNotification = val;
 __isset.enableEmailNotification = true;
@@ -525,6 +530,14 @@ uint32_t ExperimentModel::read(::apache::thrift::protocol::TProtocol* iprot) {
         }
         break;
       case 11:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->gatewayInstanceId);
+          this->__isset.gatewayInstanceId = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 12:
         if (ftype == ::apache::thrift::protocol::T_BOOL) {
           xfer += iprot->readBool(this->enableEmailNotification);
           this->__isset.enableEmailNotification = true;
@@ -532,7 +545,7 @@ uint32_t ExperimentModel::read(::apache::thrift::protocol::TProtocol* iprot) {
           xfer += iprot->skip(ftype);
         }
         break;
-      case 12:
+      case 13:
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
             this->emailAddresses.clear();
@@ -552,7 +565,7 @@ uint32_t ExperimentModel::read(::apache::thrift::protocol::TProtocol* iprot) {
           xfer += iprot->skip(ftype);
         }
         break;
-      case 13:
+      case 14:
         if (ftype == ::apache::thrift::protocol::T_STRUCT) {
           xfer += this->userConfigurationData.read(iprot);
           this->__isset.userConfigurationData = true;
@@ -560,7 +573,7 @@ uint32_t ExperimentModel::read(::apache::thrift::protocol::TProtocol* iprot) {
           xfer += iprot->skip(ftype);
         }
         break;
-      case 14:
+      case 15:
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
             this->experimentInputs.clear();
@@ -580,7 +593,7 @@ uint32_t ExperimentModel::read(::apache::thrift::protocol::TProtocol* iprot) {
           xfer += iprot->skip(ftype);
         }
         break;
-      case 15:
+      case 16:
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
             this->experimentOutputs.clear();
@@ -600,7 +613,7 @@ uint32_t ExperimentModel::read(::apache::thrift::protocol::TProtocol* iprot) {
           xfer += iprot->skip(ftype);
         }
         break;
-      case 16:
+      case 17:
         if (ftype == ::apache::thrift::protocol::T_STRUCT) {
           xfer += this->experimentStatus.read(iprot);
           this->__isset.experimentStatus = true;
@@ -608,7 +621,7 @@ uint32_t ExperimentModel::read(::apache::thrift::protocol::TProtocol* iprot) {
           xfer += iprot->skip(ftype);
         }
         break;
-      case 17:
+      case 18:
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
             this->errors.clear();
@@ -628,7 +641,7 @@ uint32_t ExperimentModel::read(::apache::thrift::protocol::TProtocol* iprot) {
           xfer += iprot->skip(ftype);
         }
         break;
-      case 18:
+      case 19:
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
             this->processes.clear();
@@ -721,13 +734,18 @@ uint32_t ExperimentModel::write(::apache::thrift::protocol::TProtocol* oprot) co
     xfer += oprot->writeString(this->gatewayExecutionId);
     xfer += oprot->writeFieldEnd();
   }
+  if (this->__isset.gatewayInstanceId) {
+    xfer += oprot->writeFieldBegin("gatewayInstanceId", ::apache::thrift::protocol::T_STRING, 11);
+    xfer += oprot->writeString(this->gatewayInstanceId);
+    xfer += oprot->writeFieldEnd();
+  }
   if (this->__isset.enableEmailNotification) {
-    xfer += oprot->writeFieldBegin("enableEmailNotification", ::apache::thrift::protocol::T_BOOL, 11);
+    xfer += oprot->writeFieldBegin("enableEmailNotification", ::apache::thrift::protocol::T_BOOL, 12);
     xfer += oprot->writeBool(this->enableEmailNotification);
     xfer += oprot->writeFieldEnd();
   }
   if (this->__isset.emailAddresses) {
-    xfer += oprot->writeFieldBegin("emailAddresses", ::apache::thrift::protocol::T_LIST, 12);
+    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;
@@ -740,12 +758,12 @@ uint32_t ExperimentModel::write(::apache::thrift::protocol::TProtocol* oprot) co
     xfer += oprot->writeFieldEnd();
   }
   if (this->__isset.userConfigurationData) {
-    xfer += oprot->writeFieldBegin("userConfigurationData", ::apache::thrift::protocol::T_STRUCT, 13);
+    xfer += oprot->writeFieldBegin("userConfigurationData", ::apache::thrift::protocol::T_STRUCT, 14);
     xfer += this->userConfigurationData.write(oprot);
     xfer += oprot->writeFieldEnd();
   }
   if (this->__isset.experimentInputs) {
-    xfer += oprot->writeFieldBegin("experimentInputs", ::apache::thrift::protocol::T_LIST, 14);
+    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;
@@ -758,7 +776,7 @@ uint32_t ExperimentModel::write(::apache::thrift::protocol::TProtocol* oprot) co
     xfer += oprot->writeFieldEnd();
   }
   if (this->__isset.experimentOutputs) {
-    xfer += oprot->writeFieldBegin("experimentOutputs", ::apache::thrift::protocol::T_LIST, 15);
+    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;
@@ -771,12 +789,12 @@ uint32_t ExperimentModel::write(::apache::thrift::protocol::TProtocol* oprot) co
     xfer += oprot->writeFieldEnd();
   }
   if (this->__isset.experimentStatus) {
-    xfer += oprot->writeFieldBegin("experimentStatus", ::apache::thrift::protocol::T_STRUCT, 16);
+    xfer += oprot->writeFieldBegin("experimentStatus", ::apache::thrift::protocol::T_STRUCT, 17);
     xfer += this->experimentStatus.write(oprot);
     xfer += oprot->writeFieldEnd();
   }
   if (this->__isset.errors) {
-    xfer += oprot->writeFieldBegin("errors", ::apache::thrift::protocol::T_LIST, 17);
+    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;
@@ -789,7 +807,7 @@ uint32_t ExperimentModel::write(::apache::thrift::protocol::TProtocol* oprot) co
     xfer += oprot->writeFieldEnd();
   }
   if (this->__isset.processes) {
-    xfer += oprot->writeFieldBegin("processes", ::apache::thrift::protocol::T_LIST, 18);
+    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;
@@ -818,6 +836,7 @@ void swap(ExperimentModel &a, ExperimentModel &b) {
   swap(a.description, b.description);
   swap(a.executionId, b.executionId);
   swap(a.gatewayExecutionId, b.gatewayExecutionId);
+  swap(a.gatewayInstanceId, b.gatewayInstanceId);
   swap(a.enableEmailNotification, b.enableEmailNotification);
   swap(a.emailAddresses, b.emailAddresses);
   swap(a.userConfigurationData, b.userConfigurationData);
@@ -840,6 +859,7 @@ ExperimentModel::ExperimentModel(const ExperimentModel& other33) {
   description = other33.description;
   executionId = other33.executionId;
   gatewayExecutionId = other33.gatewayExecutionId;
+  gatewayInstanceId = other33.gatewayInstanceId;
   enableEmailNotification = other33.enableEmailNotification;
   emailAddresses = other33.emailAddresses;
   userConfigurationData = other33.userConfigurationData;
@@ -861,6 +881,7 @@ ExperimentModel& ExperimentModel::operator=(const ExperimentModel& other34) {
   description = other34.description;
   executionId = other34.executionId;
   gatewayExecutionId = other34.gatewayExecutionId;
+  gatewayInstanceId = other34.gatewayInstanceId;
   enableEmailNotification = other34.enableEmailNotification;
   emailAddresses = other34.emailAddresses;
   userConfigurationData = other34.userConfigurationData;
@@ -885,6 +906,7 @@ void ExperimentModel::printTo(std::ostream& out) const {
   out << ", " << "description="; (__isset.description ? (out << to_string(description)) : (out << "<null>"));
   out << ", " << "executionId="; (__isset.executionId ? (out << to_string(executionId)) : (out << "<null>"));
   out << ", " << "gatewayExecutionId="; (__isset.gatewayExecutionId ? (out << to_string(gatewayExecutionId)) : (out << "<null>"));
+  out << ", " << "gatewayInstanceId="; (__isset.gatewayInstanceId ? (out << to_string(gatewayInstanceId)) : (out << "<null>"));
   out << ", " << "enableEmailNotification="; (__isset.enableEmailNotification ? (out << to_string(enableEmailNotification)) : (out << "<null>"));
   out << ", " << "emailAddresses="; (__isset.emailAddresses ? (out << to_string(emailAddresses)) : (out << "<null>"));
   out << ", " << "userConfigurationData="; (__isset.userConfigurationData ? (out << to_string(userConfigurationData)) : (out << "<null>"));

http://git-wip-us.apache.org/repos/asf/airavata/blob/b537f358/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 aaaf20b..a283fc6 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
@@ -179,11 +179,12 @@ inline std::ostream& operator<<(std::ostream& out, const UserConfigurationDataMo
 }
 
 typedef struct _ExperimentModel__isset {
-  _ExperimentModel__isset() : creationTime(false), description(false), executionId(false), gatewayExecutionId(false), enableEmailNotification(false), emailAddresses(false), userConfigurationData(false), experimentInputs(false), experimentOutputs(false), experimentStatus(false), errors(false), processes(false) {}
+  _ExperimentModel__isset() : creationTime(false), description(false), executionId(false), gatewayExecutionId(false), gatewayInstanceId(false), enableEmailNotification(false), emailAddresses(false), userConfigurationData(false), experimentInputs(false), experimentOutputs(false), experimentStatus(false), errors(false), processes(false) {}
   bool creationTime :1;
   bool description :1;
   bool executionId :1;
   bool gatewayExecutionId :1;
+  bool gatewayInstanceId :1;
   bool enableEmailNotification :1;
   bool emailAddresses :1;
   bool userConfigurationData :1;
@@ -199,7 +200,7 @@ class ExperimentModel {
 
   ExperimentModel(const ExperimentModel&);
   ExperimentModel& operator=(const ExperimentModel&);
-  ExperimentModel() : experimentId("DO_NOT_SET_AT_CLIENTS"), projectId(), gatewayId(), experimentType((ExperimentType::type)0), userName(), experimentName(), creationTime(0), description(), executionId(), gatewayExecutionId(), enableEmailNotification(0) {
+  ExperimentModel() : experimentId("DO_NOT_SET_AT_CLIENTS"), projectId(), gatewayId(), experimentType((ExperimentType::type)0), userName(), experimentName(), creationTime(0), description(), executionId(), gatewayExecutionId(), gatewayInstanceId(), enableEmailNotification(0) {
     experimentType = (ExperimentType::type)0;
 
   }
@@ -215,6 +216,7 @@ class ExperimentModel {
   std::string description;
   std::string executionId;
   std::string gatewayExecutionId;
+  std::string gatewayInstanceId;
   bool enableEmailNotification;
   std::vector<std::string>  emailAddresses;
   UserConfigurationDataModel userConfigurationData;
@@ -246,6 +248,8 @@ class ExperimentModel {
 
   void __set_gatewayExecutionId(const std::string& val);
 
+  void __set_gatewayInstanceId(const std::string& val);
+
   void __set_enableEmailNotification(const bool val);
 
   void __set_emailAddresses(const std::vector<std::string> & val);
@@ -292,6 +296,10 @@ class ExperimentModel {
       return false;
     else if (__isset.gatewayExecutionId && !(gatewayExecutionId == rhs.gatewayExecutionId))
       return false;
+    if (__isset.gatewayInstanceId != rhs.__isset.gatewayInstanceId)
+      return false;
+    else if (__isset.gatewayInstanceId && !(gatewayInstanceId == rhs.gatewayInstanceId))
+      return false;
     if (__isset.enableEmailNotification != rhs.__isset.enableEmailNotification)
       return false;
     else if (__isset.enableEmailNotification && !(enableEmailNotification == rhs.enableEmailNotification))

http://git-wip-us.apache.org/repos/asf/airavata/blob/b537f358/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 7180c44..20587b6 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
@@ -374,6 +374,10 @@ class ExperimentModel {
    */
   public $gatewayExecutionId = null;
   /**
+   * @var string
+   */
+  public $gatewayInstanceId = null;
+  /**
    * @var bool
    */
   public $enableEmailNotification = null;
@@ -450,10 +454,14 @@ class ExperimentModel {
           'type' => TType::STRING,
           ),
         11 => array(
+          'var' => 'gatewayInstanceId',
+          'type' => TType::STRING,
+          ),
+        12 => array(
           'var' => 'enableEmailNotification',
           'type' => TType::BOOL,
           ),
-        12 => array(
+        13 => array(
           'var' => 'emailAddresses',
           'type' => TType::LST,
           'etype' => TType::STRING,
@@ -461,12 +469,12 @@ class ExperimentModel {
             'type' => TType::STRING,
             ),
           ),
-        13 => array(
+        14 => array(
           'var' => 'userConfigurationData',
           'type' => TType::STRUCT,
           'class' => '\Airavata\Model\Experiment\UserConfigurationDataModel',
           ),
-        14 => array(
+        15 => array(
           'var' => 'experimentInputs',
           'type' => TType::LST,
           'etype' => TType::STRUCT,
@@ -475,7 +483,7 @@ class ExperimentModel {
             'class' => '\Airavata\Model\Application\Io\InputDataObjectType',
             ),
           ),
-        15 => array(
+        16 => array(
           'var' => 'experimentOutputs',
           'type' => TType::LST,
           'etype' => TType::STRUCT,
@@ -484,12 +492,12 @@ class ExperimentModel {
             'class' => '\Airavata\Model\Application\Io\OutputDataObjectType',
             ),
           ),
-        16 => array(
+        17 => array(
           'var' => 'experimentStatus',
           'type' => TType::STRUCT,
           'class' => '\Airavata\Model\Status\ExperimentStatus',
           ),
-        17 => array(
+        18 => array(
           'var' => 'errors',
           'type' => TType::LST,
           'etype' => TType::STRUCT,
@@ -498,7 +506,7 @@ class ExperimentModel {
             'class' => '\Airavata\Model\Commons\ErrorModel',
             ),
           ),
-        18 => array(
+        19 => array(
           'var' => 'processes',
           'type' => TType::LST,
           'etype' => TType::STRUCT,
@@ -540,6 +548,9 @@ class ExperimentModel {
       if (isset($vals['gatewayExecutionId'])) {
         $this->gatewayExecutionId = $vals['gatewayExecutionId'];
       }
+      if (isset($vals['gatewayInstanceId'])) {
+        $this->gatewayInstanceId = $vals['gatewayInstanceId'];
+      }
       if (isset($vals['enableEmailNotification'])) {
         $this->enableEmailNotification = $vals['enableEmailNotification'];
       }
@@ -657,13 +668,20 @@ class ExperimentModel {
           }
           break;
         case 11:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->gatewayInstanceId);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 12:
           if ($ftype == TType::BOOL) {
             $xfer += $input->readBool($this->enableEmailNotification);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
-        case 12:
+        case 13:
           if ($ftype == TType::LST) {
             $this->emailAddresses = array();
             $_size0 = 0;
@@ -680,7 +698,7 @@ class ExperimentModel {
             $xfer += $input->skip($ftype);
           }
           break;
-        case 13:
+        case 14:
           if ($ftype == TType::STRUCT) {
             $this->userConfigurationData = new \Airavata\Model\Experiment\UserConfigurationDataModel();
             $xfer += $this->userConfigurationData->read($input);
@@ -688,7 +706,7 @@ class ExperimentModel {
             $xfer += $input->skip($ftype);
           }
           break;
-        case 14:
+        case 15:
           if ($ftype == TType::LST) {
             $this->experimentInputs = array();
             $_size6 = 0;
@@ -706,7 +724,7 @@ class ExperimentModel {
             $xfer += $input->skip($ftype);
           }
           break;
-        case 15:
+        case 16:
           if ($ftype == TType::LST) {
             $this->experimentOutputs = array();
             $_size12 = 0;
@@ -724,7 +742,7 @@ class ExperimentModel {
             $xfer += $input->skip($ftype);
           }
           break;
-        case 16:
+        case 17:
           if ($ftype == TType::STRUCT) {
             $this->experimentStatus = new \Airavata\Model\Status\ExperimentStatus();
             $xfer += $this->experimentStatus->read($input);
@@ -732,7 +750,7 @@ class ExperimentModel {
             $xfer += $input->skip($ftype);
           }
           break;
-        case 17:
+        case 18:
           if ($ftype == TType::LST) {
             $this->errors = array();
             $_size18 = 0;
@@ -750,7 +768,7 @@ class ExperimentModel {
             $xfer += $input->skip($ftype);
           }
           break;
-        case 18:
+        case 19:
           if ($ftype == TType::LST) {
             $this->processes = array();
             $_size24 = 0;
@@ -831,8 +849,13 @@ class ExperimentModel {
       $xfer += $output->writeString($this->gatewayExecutionId);
       $xfer += $output->writeFieldEnd();
     }
+    if ($this->gatewayInstanceId !== null) {
+      $xfer += $output->writeFieldBegin('gatewayInstanceId', TType::STRING, 11);
+      $xfer += $output->writeString($this->gatewayInstanceId);
+      $xfer += $output->writeFieldEnd();
+    }
     if ($this->enableEmailNotification !== null) {
-      $xfer += $output->writeFieldBegin('enableEmailNotification', TType::BOOL, 11);
+      $xfer += $output->writeFieldBegin('enableEmailNotification', TType::BOOL, 12);
       $xfer += $output->writeBool($this->enableEmailNotification);
       $xfer += $output->writeFieldEnd();
     }
@@ -840,7 +863,7 @@ class ExperimentModel {
       if (!is_array($this->emailAddresses)) {
         throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
       }
-      $xfer += $output->writeFieldBegin('emailAddresses', TType::LST, 12);
+      $xfer += $output->writeFieldBegin('emailAddresses', TType::LST, 13);
       {
         $output->writeListBegin(TType::STRING, count($this->emailAddresses));
         {
@@ -857,7 +880,7 @@ class ExperimentModel {
       if (!is_object($this->userConfigurationData)) {
         throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
       }
-      $xfer += $output->writeFieldBegin('userConfigurationData', TType::STRUCT, 13);
+      $xfer += $output->writeFieldBegin('userConfigurationData', TType::STRUCT, 14);
       $xfer += $this->userConfigurationData->write($output);
       $xfer += $output->writeFieldEnd();
     }
@@ -865,7 +888,7 @@ class ExperimentModel {
       if (!is_array($this->experimentInputs)) {
         throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
       }
-      $xfer += $output->writeFieldBegin('experimentInputs', TType::LST, 14);
+      $xfer += $output->writeFieldBegin('experimentInputs', TType::LST, 15);
       {
         $output->writeListBegin(TType::STRUCT, count($this->experimentInputs));
         {
@@ -882,7 +905,7 @@ class ExperimentModel {
       if (!is_array($this->experimentOutputs)) {
         throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
       }
-      $xfer += $output->writeFieldBegin('experimentOutputs', TType::LST, 15);
+      $xfer += $output->writeFieldBegin('experimentOutputs', TType::LST, 16);
       {
         $output->writeListBegin(TType::STRUCT, count($this->experimentOutputs));
         {
@@ -899,7 +922,7 @@ class ExperimentModel {
       if (!is_object($this->experimentStatus)) {
         throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
       }
-      $xfer += $output->writeFieldBegin('experimentStatus', TType::STRUCT, 16);
+      $xfer += $output->writeFieldBegin('experimentStatus', TType::STRUCT, 17);
       $xfer += $this->experimentStatus->write($output);
       $xfer += $output->writeFieldEnd();
     }
@@ -907,7 +930,7 @@ class ExperimentModel {
       if (!is_array($this->errors)) {
         throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
       }
-      $xfer += $output->writeFieldBegin('errors', TType::LST, 17);
+      $xfer += $output->writeFieldBegin('errors', TType::LST, 18);
       {
         $output->writeListBegin(TType::STRUCT, count($this->errors));
         {
@@ -924,7 +947,7 @@ class ExperimentModel {
       if (!is_array($this->processes)) {
         throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
       }
-      $xfer += $output->writeFieldBegin('processes', TType::LST, 18);
+      $xfer += $output->writeFieldBegin('processes', TType::LST, 19);
       {
         $output->writeListBegin(TType::STRUCT, count($this->processes));
         {

http://git-wip-us.apache.org/repos/asf/airavata/blob/b537f358/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 158aa70..afc6510 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
@@ -272,6 +272,7 @@ class ExperimentModel:
    - description
    - executionId
    - gatewayExecutionId
+   - gatewayInstanceId
    - enableEmailNotification
    - emailAddresses
    - userConfigurationData
@@ -294,17 +295,18 @@ class ExperimentModel:
     (8, TType.STRING, 'description', None, None, ), # 8
     (9, TType.STRING, 'executionId', None, None, ), # 9
     (10, TType.STRING, 'gatewayExecutionId', None, None, ), # 10
-    (11, TType.BOOL, 'enableEmailNotification', None, None, ), # 11
-    (12, TType.LIST, 'emailAddresses', (TType.STRING,None), None, ), # 12
-    (13, TType.STRUCT, 'userConfigurationData', (UserConfigurationDataModel, UserConfigurationDataModel.thrift_spec), None, ), # 13
-    (14, TType.LIST, 'experimentInputs', (TType.STRUCT,(apache.airavata.model.application.io.ttypes.InputDataObjectType, apache.airavata.model.application.io.ttypes.InputDataObjectType.thrift_spec)), None, ), # 14
-    (15, TType.LIST, 'experimentOutputs', (TType.STRUCT,(apache.airavata.model.application.io.ttypes.OutputDataObjectType, apache.airavata.model.application.io.ttypes.OutputDataObjectType.thrift_spec)), None, ), # 15
-    (16, TType.STRUCT, 'experimentStatus', (apache.airavata.model.status.ttypes.ExperimentStatus, apache.airavata.model.status.ttypes.ExperimentStatus.thrift_spec), None, ), # 16
-    (17, TType.LIST, 'errors', (TType.STRUCT,(apache.airavata.model.commons.ttypes.ErrorModel, apache.airavata.model.commons.ttypes.ErrorModel.thrift_spec)), None, ), # 17
-    (18, TType.LIST, 'processes', (TType.STRUCT,(apache.airavata.model.process.ttypes.ProcessModel, apache.airavata.model.process.ttypes.ProcessModel.thrift_spec)), None, ), # 18
+    (11, TType.STRING, 'gatewayInstanceId', None, None, ), # 11
+    (12, TType.BOOL, 'enableEmailNotification', None, None, ), # 12
+    (13, TType.LIST, 'emailAddresses', (TType.STRING,None), None, ), # 13
+    (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
+    (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
   )
 
-  def __init__(self, experimentId=thrift_spec[1][4], projectId=None, gatewayId=None, experimentType=thrift_spec[4][4], userName=None, experimentName=None, creationTime=None, description=None, executionId=None, gatewayExecutionId=None, enableEmailNotification=None, emailAddresses=None, userConfigurationData=None, experimentInputs=None, experimentOutputs=None, experimentStatus=None, errors=None, processes=None,):
+  def __init__(self, experimentId=thrift_spec[1][4], projectId=None, gatewayId=None, experimentType=thrift_spec[4][4], userName=None, experimentName=None, creationTime=None, description=None, executionId=None, gatewayExecutionId=None, gatewayInstanceId=None, enableEmailNotification=None, emailAddresses=None, userConfigurationData=None, experimentInputs=None, experimentOutputs=None, experimentStatus=None, errors=None, processes=None,):
     self.experimentId = experimentId
     self.projectId = projectId
     self.gatewayId = gatewayId
@@ -315,6 +317,7 @@ class ExperimentModel:
     self.description = description
     self.executionId = executionId
     self.gatewayExecutionId = gatewayExecutionId
+    self.gatewayInstanceId = gatewayInstanceId
     self.enableEmailNotification = enableEmailNotification
     self.emailAddresses = emailAddresses
     self.userConfigurationData = userConfigurationData
@@ -384,11 +387,16 @@ class ExperimentModel:
         else:
           iprot.skip(ftype)
       elif fid == 11:
+        if ftype == TType.STRING:
+          self.gatewayInstanceId = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 12:
         if ftype == TType.BOOL:
           self.enableEmailNotification = iprot.readBool()
         else:
           iprot.skip(ftype)
-      elif fid == 12:
+      elif fid == 13:
         if ftype == TType.LIST:
           self.emailAddresses = []
           (_etype3, _size0) = iprot.readListBegin()
@@ -398,13 +406,13 @@ class ExperimentModel:
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
-      elif fid == 13:
+      elif fid == 14:
         if ftype == TType.STRUCT:
           self.userConfigurationData = UserConfigurationDataModel()
           self.userConfigurationData.read(iprot)
         else:
           iprot.skip(ftype)
-      elif fid == 14:
+      elif fid == 15:
         if ftype == TType.LIST:
           self.experimentInputs = []
           (_etype9, _size6) = iprot.readListBegin()
@@ -415,7 +423,7 @@ class ExperimentModel:
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
-      elif fid == 15:
+      elif fid == 16:
         if ftype == TType.LIST:
           self.experimentOutputs = []
           (_etype15, _size12) = iprot.readListBegin()
@@ -426,13 +434,13 @@ class ExperimentModel:
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
-      elif fid == 16:
+      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 == 17:
+      elif fid == 18:
         if ftype == TType.LIST:
           self.errors = []
           (_etype21, _size18) = iprot.readListBegin()
@@ -443,7 +451,7 @@ class ExperimentModel:
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
-      elif fid == 18:
+      elif fid == 19:
         if ftype == TType.LIST:
           self.processes = []
           (_etype27, _size24) = iprot.readListBegin()
@@ -504,48 +512,52 @@ class ExperimentModel:
       oprot.writeFieldBegin('gatewayExecutionId', TType.STRING, 10)
       oprot.writeString(self.gatewayExecutionId)
       oprot.writeFieldEnd()
+    if self.gatewayInstanceId is not None:
+      oprot.writeFieldBegin('gatewayInstanceId', TType.STRING, 11)
+      oprot.writeString(self.gatewayInstanceId)
+      oprot.writeFieldEnd()
     if self.enableEmailNotification is not None:
-      oprot.writeFieldBegin('enableEmailNotification', TType.BOOL, 11)
+      oprot.writeFieldBegin('enableEmailNotification', TType.BOOL, 12)
       oprot.writeBool(self.enableEmailNotification)
       oprot.writeFieldEnd()
     if self.emailAddresses is not None:
-      oprot.writeFieldBegin('emailAddresses', TType.LIST, 12)
+      oprot.writeFieldBegin('emailAddresses', TType.LIST, 13)
       oprot.writeListBegin(TType.STRING, len(self.emailAddresses))
       for iter30 in self.emailAddresses:
         oprot.writeString(iter30)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     if self.userConfigurationData is not None:
-      oprot.writeFieldBegin('userConfigurationData', TType.STRUCT, 13)
+      oprot.writeFieldBegin('userConfigurationData', TType.STRUCT, 14)
       self.userConfigurationData.write(oprot)
       oprot.writeFieldEnd()
     if self.experimentInputs is not None:
-      oprot.writeFieldBegin('experimentInputs', TType.LIST, 14)
+      oprot.writeFieldBegin('experimentInputs', TType.LIST, 15)
       oprot.writeListBegin(TType.STRUCT, len(self.experimentInputs))
       for iter31 in self.experimentInputs:
         iter31.write(oprot)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     if self.experimentOutputs is not None:
-      oprot.writeFieldBegin('experimentOutputs', TType.LIST, 15)
+      oprot.writeFieldBegin('experimentOutputs', TType.LIST, 16)
       oprot.writeListBegin(TType.STRUCT, len(self.experimentOutputs))
       for iter32 in self.experimentOutputs:
         iter32.write(oprot)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     if self.experimentStatus is not None:
-      oprot.writeFieldBegin('experimentStatus', TType.STRUCT, 16)
+      oprot.writeFieldBegin('experimentStatus', TType.STRUCT, 17)
       self.experimentStatus.write(oprot)
       oprot.writeFieldEnd()
     if self.errors is not None:
-      oprot.writeFieldBegin('errors', TType.LIST, 17)
+      oprot.writeFieldBegin('errors', TType.LIST, 18)
       oprot.writeListBegin(TType.STRUCT, len(self.errors))
       for iter33 in self.errors:
         iter33.write(oprot)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     if self.processes is not None:
-      oprot.writeFieldBegin('processes', TType.LIST, 18)
+      oprot.writeFieldBegin('processes', TType.LIST, 19)
       oprot.writeListBegin(TType.STRUCT, len(self.processes))
       for iter34 in self.processes:
         iter34.write(oprot)
@@ -582,6 +594,7 @@ class ExperimentModel:
     value = (value * 31) ^ hash(self.description)
     value = (value * 31) ^ hash(self.executionId)
     value = (value * 31) ^ hash(self.gatewayExecutionId)
+    value = (value * 31) ^ hash(self.gatewayInstanceId)
     value = (value * 31) ^ hash(self.enableEmailNotification)
     value = (value * 31) ^ hash(self.emailAddresses)
     value = (value * 31) ^ hash(self.userConfigurationData)

http://git-wip-us.apache.org/repos/asf/airavata/blob/b537f358/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/experiment/ExperimentModel.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/experiment/ExperimentModel.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/experiment/ExperimentModel.java
index 1c665f6..acaaaf6 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/experiment/ExperimentModel.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/experiment/ExperimentModel.java
@@ -81,14 +81,15 @@ public class ExperimentModel implements org.apache.thrift.TBase<ExperimentModel,
   private static final org.apache.thrift.protocol.TField DESCRIPTION_FIELD_DESC = new org.apache.thrift.protocol.TField("description", org.apache.thrift.protocol.TType.STRING, (short)8);
   private static final org.apache.thrift.protocol.TField EXECUTION_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("executionId", org.apache.thrift.protocol.TType.STRING, (short)9);
   private static final org.apache.thrift.protocol.TField GATEWAY_EXECUTION_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("gatewayExecutionId", org.apache.thrift.protocol.TType.STRING, (short)10);
-  private static final org.apache.thrift.protocol.TField ENABLE_EMAIL_NOTIFICATION_FIELD_DESC = new org.apache.thrift.protocol.TField("enableEmailNotification", org.apache.thrift.protocol.TType.BOOL, (short)11);
-  private static final org.apache.thrift.protocol.TField EMAIL_ADDRESSES_FIELD_DESC = new org.apache.thrift.protocol.TField("emailAddresses", org.apache.thrift.protocol.TType.LIST, (short)12);
-  private static final org.apache.thrift.protocol.TField USER_CONFIGURATION_DATA_FIELD_DESC = new org.apache.thrift.protocol.TField("userConfigurationData", org.apache.thrift.protocol.TType.STRUCT, (short)13);
-  private static final org.apache.thrift.protocol.TField EXPERIMENT_INPUTS_FIELD_DESC = new org.apache.thrift.protocol.TField("experimentInputs", org.apache.thrift.protocol.TType.LIST, (short)14);
-  private static final org.apache.thrift.protocol.TField EXPERIMENT_OUTPUTS_FIELD_DESC = new org.apache.thrift.protocol.TField("experimentOutputs", org.apache.thrift.protocol.TType.LIST, (short)15);
-  private static final org.apache.thrift.protocol.TField EXPERIMENT_STATUS_FIELD_DESC = new org.apache.thrift.protocol.TField("experimentStatus", org.apache.thrift.protocol.TType.STRUCT, (short)16);
-  private static final org.apache.thrift.protocol.TField ERRORS_FIELD_DESC = new org.apache.thrift.protocol.TField("errors", org.apache.thrift.protocol.TType.LIST, (short)17);
-  private static final org.apache.thrift.protocol.TField PROCESSES_FIELD_DESC = new org.apache.thrift.protocol.TField("processes", org.apache.thrift.protocol.TType.LIST, (short)18);
+  private static final org.apache.thrift.protocol.TField GATEWAY_INSTANCE_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("gatewayInstanceId", org.apache.thrift.protocol.TType.STRING, (short)11);
+  private static final org.apache.thrift.protocol.TField ENABLE_EMAIL_NOTIFICATION_FIELD_DESC = new org.apache.thrift.protocol.TField("enableEmailNotification", org.apache.thrift.protocol.TType.BOOL, (short)12);
+  private static final org.apache.thrift.protocol.TField EMAIL_ADDRESSES_FIELD_DESC = new org.apache.thrift.protocol.TField("emailAddresses", org.apache.thrift.protocol.TType.LIST, (short)13);
+  private static final org.apache.thrift.protocol.TField USER_CONFIGURATION_DATA_FIELD_DESC = new org.apache.thrift.protocol.TField("userConfigurationData", org.apache.thrift.protocol.TType.STRUCT, (short)14);
+  private static final org.apache.thrift.protocol.TField EXPERIMENT_INPUTS_FIELD_DESC = new org.apache.thrift.protocol.TField("experimentInputs", org.apache.thrift.protocol.TType.LIST, (short)15);
+  private static final org.apache.thrift.protocol.TField EXPERIMENT_OUTPUTS_FIELD_DESC = new org.apache.thrift.protocol.TField("experimentOutputs", org.apache.thrift.protocol.TType.LIST, (short)16);
+  private static final org.apache.thrift.protocol.TField EXPERIMENT_STATUS_FIELD_DESC = new org.apache.thrift.protocol.TField("experimentStatus", org.apache.thrift.protocol.TType.STRUCT, (short)17);
+  private static final org.apache.thrift.protocol.TField ERRORS_FIELD_DESC = new org.apache.thrift.protocol.TField("errors", org.apache.thrift.protocol.TType.LIST, (short)18);
+  private static final org.apache.thrift.protocol.TField PROCESSES_FIELD_DESC = new org.apache.thrift.protocol.TField("processes", org.apache.thrift.protocol.TType.LIST, (short)19);
 
   private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
   static {
@@ -106,6 +107,7 @@ public class ExperimentModel implements org.apache.thrift.TBase<ExperimentModel,
   private String description; // optional
   private String executionId; // optional
   private String gatewayExecutionId; // optional
+  private String gatewayInstanceId; // optional
   private boolean enableEmailNotification; // optional
   private List<String> emailAddresses; // optional
   private UserConfigurationDataModel userConfigurationData; // optional
@@ -131,14 +133,15 @@ public class ExperimentModel implements org.apache.thrift.TBase<ExperimentModel,
     DESCRIPTION((short)8, "description"),
     EXECUTION_ID((short)9, "executionId"),
     GATEWAY_EXECUTION_ID((short)10, "gatewayExecutionId"),
-    ENABLE_EMAIL_NOTIFICATION((short)11, "enableEmailNotification"),
-    EMAIL_ADDRESSES((short)12, "emailAddresses"),
-    USER_CONFIGURATION_DATA((short)13, "userConfigurationData"),
-    EXPERIMENT_INPUTS((short)14, "experimentInputs"),
-    EXPERIMENT_OUTPUTS((short)15, "experimentOutputs"),
-    EXPERIMENT_STATUS((short)16, "experimentStatus"),
-    ERRORS((short)17, "errors"),
-    PROCESSES((short)18, "processes");
+    GATEWAY_INSTANCE_ID((short)11, "gatewayInstanceId"),
+    ENABLE_EMAIL_NOTIFICATION((short)12, "enableEmailNotification"),
+    EMAIL_ADDRESSES((short)13, "emailAddresses"),
+    USER_CONFIGURATION_DATA((short)14, "userConfigurationData"),
+    EXPERIMENT_INPUTS((short)15, "experimentInputs"),
+    EXPERIMENT_OUTPUTS((short)16, "experimentOutputs"),
+    EXPERIMENT_STATUS((short)17, "experimentStatus"),
+    ERRORS((short)18, "errors"),
+    PROCESSES((short)19, "processes");
 
     private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
 
@@ -173,21 +176,23 @@ public class ExperimentModel implements org.apache.thrift.TBase<ExperimentModel,
           return EXECUTION_ID;
         case 10: // GATEWAY_EXECUTION_ID
           return GATEWAY_EXECUTION_ID;
-        case 11: // ENABLE_EMAIL_NOTIFICATION
+        case 11: // GATEWAY_INSTANCE_ID
+          return GATEWAY_INSTANCE_ID;
+        case 12: // ENABLE_EMAIL_NOTIFICATION
           return ENABLE_EMAIL_NOTIFICATION;
-        case 12: // EMAIL_ADDRESSES
+        case 13: // EMAIL_ADDRESSES
           return EMAIL_ADDRESSES;
-        case 13: // USER_CONFIGURATION_DATA
+        case 14: // USER_CONFIGURATION_DATA
           return USER_CONFIGURATION_DATA;
-        case 14: // EXPERIMENT_INPUTS
+        case 15: // EXPERIMENT_INPUTS
           return EXPERIMENT_INPUTS;
-        case 15: // EXPERIMENT_OUTPUTS
+        case 16: // EXPERIMENT_OUTPUTS
           return EXPERIMENT_OUTPUTS;
-        case 16: // EXPERIMENT_STATUS
+        case 17: // EXPERIMENT_STATUS
           return EXPERIMENT_STATUS;
-        case 17: // ERRORS
+        case 18: // ERRORS
           return ERRORS;
-        case 18: // PROCESSES
+        case 19: // PROCESSES
           return PROCESSES;
         default:
           return null;
@@ -232,7 +237,7 @@ public class ExperimentModel implements org.apache.thrift.TBase<ExperimentModel,
   private static final int __CREATIONTIME_ISSET_ID = 0;
   private static final int __ENABLEEMAILNOTIFICATION_ISSET_ID = 1;
   private byte __isset_bitfield = 0;
-  private static final _Fields optionals[] = {_Fields.CREATION_TIME,_Fields.DESCRIPTION,_Fields.EXECUTION_ID,_Fields.GATEWAY_EXECUTION_ID,_Fields.ENABLE_EMAIL_NOTIFICATION,_Fields.EMAIL_ADDRESSES,_Fields.USER_CONFIGURATION_DATA,_Fields.EXPERIMENT_INPUTS,_Fields.EXPERIMENT_OUTPUTS,_Fields.EXPERIMENT_STATUS,_Fields.ERRORS,_Fields.PROCESSES};
+  private static final _Fields optionals[] = {_Fields.CREATION_TIME,_Fields.DESCRIPTION,_Fields.EXECUTION_ID,_Fields.GATEWAY_EXECUTION_ID,_Fields.GATEWAY_INSTANCE_ID,_Fields.ENABLE_EMAIL_NOTIFICATION,_Fields.EMAIL_ADDRESSES,_Fields.USER_CONFIGURATION_DATA,_Fields.EXPERIMENT_INPUTS,_Fields.EXPERIMENT_OUTPUTS,_Fields.EXPERIMENT_STATUS,_Fields.ERRORS,_Fields.PROCESSES};
   public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
   static {
     Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
@@ -256,6 +261,8 @@ public class ExperimentModel implements org.apache.thrift.TBase<ExperimentModel,
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
     tmpMap.put(_Fields.GATEWAY_EXECUTION_ID, new org.apache.thrift.meta_data.FieldMetaData("gatewayExecutionId", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    tmpMap.put(_Fields.GATEWAY_INSTANCE_ID, new org.apache.thrift.meta_data.FieldMetaData("gatewayInstanceId", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
     tmpMap.put(_Fields.ENABLE_EMAIL_NOTIFICATION, new org.apache.thrift.meta_data.FieldMetaData("enableEmailNotification", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.BOOL)));
     tmpMap.put(_Fields.EMAIL_ADDRESSES, new org.apache.thrift.meta_data.FieldMetaData("emailAddresses", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
@@ -338,6 +345,9 @@ public class ExperimentModel implements org.apache.thrift.TBase<ExperimentModel,
     if (other.isSetGatewayExecutionId()) {
       this.gatewayExecutionId = other.gatewayExecutionId;
     }
+    if (other.isSetGatewayInstanceId()) {
+      this.gatewayInstanceId = other.gatewayInstanceId;
+    }
     this.enableEmailNotification = other.enableEmailNotification;
     if (other.isSetEmailAddresses()) {
       List<String> __this__emailAddresses = new ArrayList<String>(other.emailAddresses);
@@ -398,6 +408,7 @@ public class ExperimentModel implements org.apache.thrift.TBase<ExperimentModel,
     this.description = null;
     this.executionId = null;
     this.gatewayExecutionId = null;
+    this.gatewayInstanceId = null;
     setEnableEmailNotificationIsSet(false);
     this.enableEmailNotification = false;
     this.emailAddresses = null;
@@ -646,6 +657,29 @@ public class ExperimentModel implements org.apache.thrift.TBase<ExperimentModel,
     }
   }
 
+  public String getGatewayInstanceId() {
+    return this.gatewayInstanceId;
+  }
+
+  public void setGatewayInstanceId(String gatewayInstanceId) {
+    this.gatewayInstanceId = gatewayInstanceId;
+  }
+
+  public void unsetGatewayInstanceId() {
+    this.gatewayInstanceId = null;
+  }
+
+  /** Returns true if field gatewayInstanceId is set (has been assigned a value) and false otherwise */
+  public boolean isSetGatewayInstanceId() {
+    return this.gatewayInstanceId != null;
+  }
+
+  public void setGatewayInstanceIdIsSet(boolean value) {
+    if (!value) {
+      this.gatewayInstanceId = null;
+    }
+  }
+
   public boolean isEnableEmailNotification() {
     return this.enableEmailNotification;
   }
@@ -986,6 +1020,14 @@ public class ExperimentModel implements org.apache.thrift.TBase<ExperimentModel,
       }
       break;
 
+    case GATEWAY_INSTANCE_ID:
+      if (value == null) {
+        unsetGatewayInstanceId();
+      } else {
+        setGatewayInstanceId((String)value);
+      }
+      break;
+
     case ENABLE_EMAIL_NOTIFICATION:
       if (value == null) {
         unsetEnableEmailNotification();
@@ -1085,6 +1127,9 @@ public class ExperimentModel implements org.apache.thrift.TBase<ExperimentModel,
     case GATEWAY_EXECUTION_ID:
       return getGatewayExecutionId();
 
+    case GATEWAY_INSTANCE_ID:
+      return getGatewayInstanceId();
+
     case ENABLE_EMAIL_NOTIFICATION:
       return isEnableEmailNotification();
 
@@ -1140,6 +1185,8 @@ public class ExperimentModel implements org.apache.thrift.TBase<ExperimentModel,
       return isSetExecutionId();
     case GATEWAY_EXECUTION_ID:
       return isSetGatewayExecutionId();
+    case GATEWAY_INSTANCE_ID:
+      return isSetGatewayInstanceId();
     case ENABLE_EMAIL_NOTIFICATION:
       return isSetEnableEmailNotification();
     case EMAIL_ADDRESSES:
@@ -1263,6 +1310,15 @@ public class ExperimentModel implements org.apache.thrift.TBase<ExperimentModel,
         return false;
     }
 
+    boolean this_present_gatewayInstanceId = true && this.isSetGatewayInstanceId();
+    boolean that_present_gatewayInstanceId = true && that.isSetGatewayInstanceId();
+    if (this_present_gatewayInstanceId || that_present_gatewayInstanceId) {
+      if (!(this_present_gatewayInstanceId && that_present_gatewayInstanceId))
+        return false;
+      if (!this.gatewayInstanceId.equals(that.gatewayInstanceId))
+        return false;
+    }
+
     boolean this_present_enableEmailNotification = true && this.isSetEnableEmailNotification();
     boolean that_present_enableEmailNotification = true && that.isSetEnableEmailNotification();
     if (this_present_enableEmailNotification || that_present_enableEmailNotification) {
@@ -1392,6 +1448,11 @@ public class ExperimentModel implements org.apache.thrift.TBase<ExperimentModel,
     if (present_gatewayExecutionId)
       list.add(gatewayExecutionId);
 
+    boolean present_gatewayInstanceId = true && (isSetGatewayInstanceId());
+    list.add(present_gatewayInstanceId);
+    if (present_gatewayInstanceId)
+      list.add(gatewayInstanceId);
+
     boolean present_enableEmailNotification = true && (isSetEnableEmailNotification());
     list.add(present_enableEmailNotification);
     if (present_enableEmailNotification)
@@ -1543,6 +1604,16 @@ public class ExperimentModel implements org.apache.thrift.TBase<ExperimentModel,
         return lastComparison;
       }
     }
+    lastComparison = Boolean.valueOf(isSetGatewayInstanceId()).compareTo(other.isSetGatewayInstanceId());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetGatewayInstanceId()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.gatewayInstanceId, other.gatewayInstanceId);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
     lastComparison = Boolean.valueOf(isSetEnableEmailNotification()).compareTo(other.isSetEnableEmailNotification());
     if (lastComparison != 0) {
       return lastComparison;
@@ -1726,6 +1797,16 @@ public class ExperimentModel implements org.apache.thrift.TBase<ExperimentModel,
       }
       first = false;
     }
+    if (isSetGatewayInstanceId()) {
+      if (!first) sb.append(", ");
+      sb.append("gatewayInstanceId:");
+      if (this.gatewayInstanceId == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.gatewayInstanceId);
+      }
+      first = false;
+    }
     if (isSetEnableEmailNotification()) {
       if (!first) sb.append(", ");
       sb.append("enableEmailNotification:");
@@ -1957,7 +2038,15 @@ public class ExperimentModel implements org.apache.thrift.TBase<ExperimentModel,
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
-          case 11: // ENABLE_EMAIL_NOTIFICATION
+          case 11: // GATEWAY_INSTANCE_ID
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.gatewayInstanceId = iprot.readString();
+              struct.setGatewayInstanceIdIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 12: // ENABLE_EMAIL_NOTIFICATION
             if (schemeField.type == org.apache.thrift.protocol.TType.BOOL) {
               struct.enableEmailNotification = iprot.readBool();
               struct.setEnableEmailNotificationIsSet(true);
@@ -1965,7 +2054,7 @@ public class ExperimentModel implements org.apache.thrift.TBase<ExperimentModel,
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
-          case 12: // EMAIL_ADDRESSES
+          case 13: // EMAIL_ADDRESSES
             if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
               {
                 org.apache.thrift.protocol.TList _list0 = iprot.readListBegin();
@@ -1983,7 +2072,7 @@ public class ExperimentModel implements org.apache.thrift.TBase<ExperimentModel,
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
-          case 13: // USER_CONFIGURATION_DATA
+          case 14: // USER_CONFIGURATION_DATA
             if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
               struct.userConfigurationData = new UserConfigurationDataModel();
               struct.userConfigurationData.read(iprot);
@@ -1992,7 +2081,7 @@ public class ExperimentModel implements org.apache.thrift.TBase<ExperimentModel,
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
-          case 14: // EXPERIMENT_INPUTS
+          case 15: // EXPERIMENT_INPUTS
             if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
               {
                 org.apache.thrift.protocol.TList _list3 = iprot.readListBegin();
@@ -2011,7 +2100,7 @@ public class ExperimentModel implements org.apache.thrift.TBase<ExperimentModel,
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
-          case 15: // EXPERIMENT_OUTPUTS
+          case 16: // EXPERIMENT_OUTPUTS
             if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
               {
                 org.apache.thrift.protocol.TList _list6 = iprot.readListBegin();
@@ -2030,7 +2119,7 @@ public class ExperimentModel implements org.apache.thrift.TBase<ExperimentModel,
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
-          case 16: // EXPERIMENT_STATUS
+          case 17: // EXPERIMENT_STATUS
             if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
               struct.experimentStatus = new org.apache.airavata.model.status.ExperimentStatus();
               struct.experimentStatus.read(iprot);
@@ -2039,7 +2128,7 @@ public class ExperimentModel implements org.apache.thrift.TBase<ExperimentModel,
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
-          case 17: // ERRORS
+          case 18: // ERRORS
             if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
               {
                 org.apache.thrift.protocol.TList _list9 = iprot.readListBegin();
@@ -2058,7 +2147,7 @@ public class ExperimentModel implements org.apache.thrift.TBase<ExperimentModel,
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
-          case 18: // PROCESSES
+          case 19: // PROCESSES
             if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
               {
                 org.apache.thrift.protocol.TList _list12 = iprot.readListBegin();
@@ -2146,6 +2235,13 @@ public class ExperimentModel implements org.apache.thrift.TBase<ExperimentModel,
           oprot.writeFieldEnd();
         }
       }
+      if (struct.gatewayInstanceId != null) {
+        if (struct.isSetGatewayInstanceId()) {
+          oprot.writeFieldBegin(GATEWAY_INSTANCE_ID_FIELD_DESC);
+          oprot.writeString(struct.gatewayInstanceId);
+          oprot.writeFieldEnd();
+        }
+      }
       if (struct.isSetEnableEmailNotification()) {
         oprot.writeFieldBegin(ENABLE_EMAIL_NOTIFICATION_FIELD_DESC);
         oprot.writeBool(struct.enableEmailNotification);
@@ -2271,31 +2367,34 @@ public class ExperimentModel implements org.apache.thrift.TBase<ExperimentModel,
       if (struct.isSetGatewayExecutionId()) {
         optionals.set(3);
       }
-      if (struct.isSetEnableEmailNotification()) {
+      if (struct.isSetGatewayInstanceId()) {
         optionals.set(4);
       }
-      if (struct.isSetEmailAddresses()) {
+      if (struct.isSetEnableEmailNotification()) {
         optionals.set(5);
       }
-      if (struct.isSetUserConfigurationData()) {
+      if (struct.isSetEmailAddresses()) {
         optionals.set(6);
       }
-      if (struct.isSetExperimentInputs()) {
+      if (struct.isSetUserConfigurationData()) {
         optionals.set(7);
       }
-      if (struct.isSetExperimentOutputs()) {
+      if (struct.isSetExperimentInputs()) {
         optionals.set(8);
       }
-      if (struct.isSetExperimentStatus()) {
+      if (struct.isSetExperimentOutputs()) {
         optionals.set(9);
       }
-      if (struct.isSetErrors()) {
+      if (struct.isSetExperimentStatus()) {
         optionals.set(10);
       }
-      if (struct.isSetProcesses()) {
+      if (struct.isSetErrors()) {
         optionals.set(11);
       }
-      oprot.writeBitSet(optionals, 12);
+      if (struct.isSetProcesses()) {
+        optionals.set(12);
+      }
+      oprot.writeBitSet(optionals, 13);
       if (struct.isSetCreationTime()) {
         oprot.writeI64(struct.creationTime);
       }
@@ -2308,6 +2407,9 @@ public class ExperimentModel implements org.apache.thrift.TBase<ExperimentModel,
       if (struct.isSetGatewayExecutionId()) {
         oprot.writeString(struct.gatewayExecutionId);
       }
+      if (struct.isSetGatewayInstanceId()) {
+        oprot.writeString(struct.gatewayInstanceId);
+      }
       if (struct.isSetEnableEmailNotification()) {
         oprot.writeBool(struct.enableEmailNotification);
       }
@@ -2379,7 +2481,7 @@ public class ExperimentModel implements org.apache.thrift.TBase<ExperimentModel,
       struct.setUserNameIsSet(true);
       struct.experimentName = iprot.readString();
       struct.setExperimentNameIsSet(true);
-      BitSet incoming = iprot.readBitSet(12);
+      BitSet incoming = iprot.readBitSet(13);
       if (incoming.get(0)) {
         struct.creationTime = iprot.readI64();
         struct.setCreationTimeIsSet(true);
@@ -2397,10 +2499,14 @@ public class ExperimentModel implements org.apache.thrift.TBase<ExperimentModel,
         struct.setGatewayExecutionIdIsSet(true);
       }
       if (incoming.get(4)) {
+        struct.gatewayInstanceId = iprot.readString();
+        struct.setGatewayInstanceIdIsSet(true);
+      }
+      if (incoming.get(5)) {
         struct.enableEmailNotification = iprot.readBool();
         struct.setEnableEmailNotificationIsSet(true);
       }
-      if (incoming.get(5)) {
+      if (incoming.get(6)) {
         {
           org.apache.thrift.protocol.TList _list25 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, iprot.readI32());
           struct.emailAddresses = new ArrayList<String>(_list25.size);
@@ -2413,12 +2519,12 @@ public class ExperimentModel implements org.apache.thrift.TBase<ExperimentModel,
         }
         struct.setEmailAddressesIsSet(true);
       }
-      if (incoming.get(6)) {
+      if (incoming.get(7)) {
         struct.userConfigurationData = new UserConfigurationDataModel();
         struct.userConfigurationData.read(iprot);
         struct.setUserConfigurationDataIsSet(true);
       }
-      if (incoming.get(7)) {
+      if (incoming.get(8)) {
         {
           org.apache.thrift.protocol.TList _list28 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
           struct.experimentInputs = new ArrayList<org.apache.airavata.model.application.io.InputDataObjectType>(_list28.size);
@@ -2432,7 +2538,7 @@ public class ExperimentModel implements org.apache.thrift.TBase<ExperimentModel,
         }
         struct.setExperimentInputsIsSet(true);
       }
-      if (incoming.get(8)) {
+      if (incoming.get(9)) {
         {
           org.apache.thrift.protocol.TList _list31 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
           struct.experimentOutputs = new ArrayList<org.apache.airavata.model.application.io.OutputDataObjectType>(_list31.size);
@@ -2446,12 +2552,12 @@ public class ExperimentModel implements org.apache.thrift.TBase<ExperimentModel,
         }
         struct.setExperimentOutputsIsSet(true);
       }
-      if (incoming.get(9)) {
+      if (incoming.get(10)) {
         struct.experimentStatus = new org.apache.airavata.model.status.ExperimentStatus();
         struct.experimentStatus.read(iprot);
         struct.setExperimentStatusIsSet(true);
       }
-      if (incoming.get(10)) {
+      if (incoming.get(11)) {
         {
           org.apache.thrift.protocol.TList _list34 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
           struct.errors = new ArrayList<org.apache.airavata.model.commons.ErrorModel>(_list34.size);
@@ -2465,7 +2571,7 @@ public class ExperimentModel implements org.apache.thrift.TBase<ExperimentModel,
         }
         struct.setErrorsIsSet(true);
       }
-      if (incoming.get(11)) {
+      if (incoming.get(12)) {
         {
           org.apache.thrift.protocol.TList _list37 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
           struct.processes = new ArrayList<org.apache.airavata.model.process.ProcessModel>(_list37.size);

http://git-wip-us.apache.org/repos/asf/airavata/blob/b537f358/modules/registry/registry-core/src/main/resources/expcatalog-derby.sql
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/resources/expcatalog-derby.sql b/modules/registry/registry-core/src/main/resources/expcatalog-derby.sql
index 3d47071..904d37a 100644
--- a/modules/registry/registry-core/src/main/resources/expcatalog-derby.sql
+++ b/modules/registry/registry-core/src/main/resources/expcatalog-derby.sql
@@ -75,6 +75,7 @@ CREATE TABLE EXPERIMENT (
   DESCRIPTION varchar(255),
   EXECUTION_ID varchar(255),
   GATEWAY_EXECUTION_ID varchar(255),
+  GATEWAY_INSTANCE_ID varchar(255),
   ENABLE_EMAIL_NOTIFICATION SMALLINT,
   EMAIL_ADDRESSES CLOB,
   PRIMARY KEY (EXPERIMENT_ID),

http://git-wip-us.apache.org/repos/asf/airavata/blob/b537f358/modules/registry/registry-core/src/main/resources/expcatalog-mysql.sql
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/resources/expcatalog-mysql.sql b/modules/registry/registry-core/src/main/resources/expcatalog-mysql.sql
index ce409ae..2a2ba01 100644
--- a/modules/registry/registry-core/src/main/resources/expcatalog-mysql.sql
+++ b/modules/registry/registry-core/src/main/resources/expcatalog-mysql.sql
@@ -191,6 +191,7 @@ CREATE TABLE PROCESS (
   APPLICATION_DEPLOYMENT_ID varchar(255),
   COMPUTE_RESOURCE_ID varchar(255),
   GATEWAY_EXECUTION_ID varchar(255),
+  GATEWAY_INSTANCE_ID varchar(255),
   ENABLE_EMAIL_NOTIFICATION BOOLEAN,
   EMAIL_ADDRESSES TEXT,
   STORAGE_RESOURCE_ID varchar(255),

http://git-wip-us.apache.org/repos/asf/airavata/blob/b537f358/thrift-interface-descriptions/data-models/experiment-catalog-models/experiment_model.thrift
----------------------------------------------------------------------
diff --git a/thrift-interface-descriptions/data-models/experiment-catalog-models/experiment_model.thrift b/thrift-interface-descriptions/data-models/experiment-catalog-models/experiment_model.thrift
index 5caf7e9..357d92d 100644
--- a/thrift-interface-descriptions/data-models/experiment-catalog-models/experiment_model.thrift
+++ b/thrift-interface-descriptions/data-models/experiment-catalog-models/experiment_model.thrift
@@ -88,14 +88,15 @@ struct ExperimentModel {
     8: optional string description,
     9: optional string executionId,
     10: optional string gatewayExecutionId,
-    11: optional bool enableEmailNotification,
-    12: optional list<string> emailAddresses,
-    13: optional UserConfigurationDataModel userConfigurationData,
-    14: optional list<application_io_models.InputDataObjectType> experimentInputs,
-    15: optional list<application_io_models.OutputDataObjectType> experimentOutputs,
-    16: optional status_models.ExperimentStatus experimentStatus,
-    17: optional list<airavata_commons.ErrorModel> errors,
-    18: optional list<process_model.ProcessModel> processes
+    11: optional string gatewayInstanceId,
+    12: optional bool enableEmailNotification,
+    13: optional list<string> emailAddresses,
+    14: optional UserConfigurationDataModel userConfigurationData,
+    15: optional list<application_io_models.InputDataObjectType> experimentInputs,
+    16: optional list<application_io_models.OutputDataObjectType> experimentOutputs,
+    17: optional status_models.ExperimentStatus experimentStatus,
+    18: optional list<airavata_commons.ErrorModel> errors,
+    19: optional list<process_model.ProcessModel> processes
 }
 
 struct ExperimentSummaryModel {


Mime
View raw message