http://git-wip-us.apache.org/repos/asf/airavata/blob/02cbb8dc/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/Airavata.cpp
----------------------------------------------------------------------
diff --git 
a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/Airavata.cpp
 
b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/Airavata.cpp
index 262de5e..54a0771 100644
--- 
a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/Airavata.cpp
+++ 
b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/Airavata.cpp
@@ -42866,6 +42866,616 @@ uint32_t 
Airavata_registerReplicaLocation_presult::read(::apache::thrift::protoc
   return xfer;
 }
 
+
+Airavata_getParentDataProduct_args::~Airavata_getParentDataProduct_args() 
throw() {
+}
+
+
+uint32_t 
Airavata_getParentDataProduct_args::read(::apache::thrift::protocol::TProtocol* 
iprot) {
+
+  apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
+  uint32_t xfer = 0;
+  std::string fname;
+  ::apache::thrift::protocol::TType ftype;
+  int16_t fid;
+
+  xfer += iprot->readStructBegin(fname);
+
+  using ::apache::thrift::protocol::TProtocolException;
+
+  bool isset_authzToken = false;
+  bool isset_productUri = false;
+
+  while (true)
+  {
+    xfer += iprot->readFieldBegin(fname, ftype, fid);
+    if (ftype == ::apache::thrift::protocol::T_STOP) {
+      break;
+    }
+    switch (fid)
+    {
+      case 1:
+        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
+          xfer += this->authzToken.read(iprot);
+          isset_authzToken = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 2:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->productUri);
+          isset_productUri = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      default:
+        xfer += iprot->skip(ftype);
+        break;
+    }
+    xfer += iprot->readFieldEnd();
+  }
+
+  xfer += iprot->readStructEnd();
+
+  if (!isset_authzToken)
+    throw TProtocolException(TProtocolException::INVALID_DATA);
+  if (!isset_productUri)
+    throw TProtocolException(TProtocolException::INVALID_DATA);
+  return xfer;
+}
+
+uint32_t 
Airavata_getParentDataProduct_args::write(::apache::thrift::protocol::TProtocol*
 oprot) const {
+  uint32_t xfer = 0;
+  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
+  xfer += oprot->writeStructBegin("Airavata_getParentDataProduct_args");
+
+  xfer += oprot->writeFieldBegin("authzToken", 
::apache::thrift::protocol::T_STRUCT, 1);
+  xfer += this->authzToken.write(oprot);
+  xfer += oprot->writeFieldEnd();
+
+  xfer += oprot->writeFieldBegin("productUri", 
::apache::thrift::protocol::T_STRING, 2);
+  xfer += oprot->writeString(this->productUri);
+  xfer += oprot->writeFieldEnd();
+
+  xfer += oprot->writeFieldStop();
+  xfer += oprot->writeStructEnd();
+  return xfer;
+}
+
+
+Airavata_getParentDataProduct_pargs::~Airavata_getParentDataProduct_pargs() 
throw() {
+}
+
+
+uint32_t 
Airavata_getParentDataProduct_pargs::write(::apache::thrift::protocol::TProtocol*
 oprot) const {
+  uint32_t xfer = 0;
+  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
+  xfer += oprot->writeStructBegin("Airavata_getParentDataProduct_pargs");
+
+  xfer += oprot->writeFieldBegin("authzToken", 
::apache::thrift::protocol::T_STRUCT, 1);
+  xfer += (*(this->authzToken)).write(oprot);
+  xfer += oprot->writeFieldEnd();
+
+  xfer += oprot->writeFieldBegin("productUri", 
::apache::thrift::protocol::T_STRING, 2);
+  xfer += oprot->writeString((*(this->productUri)));
+  xfer += oprot->writeFieldEnd();
+
+  xfer += oprot->writeFieldStop();
+  xfer += oprot->writeStructEnd();
+  return xfer;
+}
+
+
+Airavata_getParentDataProduct_result::~Airavata_getParentDataProduct_result() 
throw() {
+}
+
+
+uint32_t 
Airavata_getParentDataProduct_result::read(::apache::thrift::protocol::TProtocol*
 iprot) {
+
+  apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
+  uint32_t xfer = 0;
+  std::string fname;
+  ::apache::thrift::protocol::TType ftype;
+  int16_t fid;
+
+  xfer += iprot->readStructBegin(fname);
+
+  using ::apache::thrift::protocol::TProtocolException;
+
+
+  while (true)
+  {
+    xfer += iprot->readFieldBegin(fname, ftype, fid);
+    if (ftype == ::apache::thrift::protocol::T_STOP) {
+      break;
+    }
+    switch (fid)
+    {
+      case 0:
+        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
+          xfer += this->success.read(iprot);
+          this->__isset.success = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 1:
+        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
+          xfer += this->ire.read(iprot);
+          this->__isset.ire = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 2:
+        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
+          xfer += this->ace.read(iprot);
+          this->__isset.ace = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 3:
+        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
+          xfer += this->ase.read(iprot);
+          this->__isset.ase = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 4:
+        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
+          xfer += this->ae.read(iprot);
+          this->__isset.ae = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      default:
+        xfer += iprot->skip(ftype);
+        break;
+    }
+    xfer += iprot->readFieldEnd();
+  }
+
+  xfer += iprot->readStructEnd();
+
+  return xfer;
+}
+
+uint32_t 
Airavata_getParentDataProduct_result::write(::apache::thrift::protocol::TProtocol*
 oprot) const {
+
+  uint32_t xfer = 0;
+
+  xfer += oprot->writeStructBegin("Airavata_getParentDataProduct_result");
+
+  if (this->__isset.success) {
+    xfer += oprot->writeFieldBegin("success", 
::apache::thrift::protocol::T_STRUCT, 0);
+    xfer += this->success.write(oprot);
+    xfer += oprot->writeFieldEnd();
+  } else if (this->__isset.ire) {
+    xfer += oprot->writeFieldBegin("ire", 
::apache::thrift::protocol::T_STRUCT, 1);
+    xfer += this->ire.write(oprot);
+    xfer += oprot->writeFieldEnd();
+  } else if (this->__isset.ace) {
+    xfer += oprot->writeFieldBegin("ace", 
::apache::thrift::protocol::T_STRUCT, 2);
+    xfer += this->ace.write(oprot);
+    xfer += oprot->writeFieldEnd();
+  } else if (this->__isset.ase) {
+    xfer += oprot->writeFieldBegin("ase", 
::apache::thrift::protocol::T_STRUCT, 3);
+    xfer += this->ase.write(oprot);
+    xfer += oprot->writeFieldEnd();
+  } else if (this->__isset.ae) {
+    xfer += oprot->writeFieldBegin("ae", ::apache::thrift::protocol::T_STRUCT, 
4);
+    xfer += this->ae.write(oprot);
+    xfer += oprot->writeFieldEnd();
+  }
+  xfer += oprot->writeFieldStop();
+  xfer += oprot->writeStructEnd();
+  return xfer;
+}
+
+
+Airavata_getParentDataProduct_presult::~Airavata_getParentDataProduct_presult()
 throw() {
+}
+
+
+uint32_t 
Airavata_getParentDataProduct_presult::read(::apache::thrift::protocol::TProtocol*
 iprot) {
+
+  apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
+  uint32_t xfer = 0;
+  std::string fname;
+  ::apache::thrift::protocol::TType ftype;
+  int16_t fid;
+
+  xfer += iprot->readStructBegin(fname);
+
+  using ::apache::thrift::protocol::TProtocolException;
+
+
+  while (true)
+  {
+    xfer += iprot->readFieldBegin(fname, ftype, fid);
+    if (ftype == ::apache::thrift::protocol::T_STOP) {
+      break;
+    }
+    switch (fid)
+    {
+      case 0:
+        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
+          xfer += (*(this->success)).read(iprot);
+          this->__isset.success = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 1:
+        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
+          xfer += this->ire.read(iprot);
+          this->__isset.ire = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 2:
+        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
+          xfer += this->ace.read(iprot);
+          this->__isset.ace = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 3:
+        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
+          xfer += this->ase.read(iprot);
+          this->__isset.ase = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 4:
+        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
+          xfer += this->ae.read(iprot);
+          this->__isset.ae = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      default:
+        xfer += iprot->skip(ftype);
+        break;
+    }
+    xfer += iprot->readFieldEnd();
+  }
+
+  xfer += iprot->readStructEnd();
+
+  return xfer;
+}
+
+
+Airavata_getChildDataProducts_args::~Airavata_getChildDataProducts_args() 
throw() {
+}
+
+
+uint32_t 
Airavata_getChildDataProducts_args::read(::apache::thrift::protocol::TProtocol* 
iprot) {
+
+  apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
+  uint32_t xfer = 0;
+  std::string fname;
+  ::apache::thrift::protocol::TType ftype;
+  int16_t fid;
+
+  xfer += iprot->readStructBegin(fname);
+
+  using ::apache::thrift::protocol::TProtocolException;
+
+  bool isset_authzToken = false;
+  bool isset_productUri = false;
+
+  while (true)
+  {
+    xfer += iprot->readFieldBegin(fname, ftype, fid);
+    if (ftype == ::apache::thrift::protocol::T_STOP) {
+      break;
+    }
+    switch (fid)
+    {
+      case 1:
+        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
+          xfer += this->authzToken.read(iprot);
+          isset_authzToken = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 2:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->productUri);
+          isset_productUri = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      default:
+        xfer += iprot->skip(ftype);
+        break;
+    }
+    xfer += iprot->readFieldEnd();
+  }
+
+  xfer += iprot->readStructEnd();
+
+  if (!isset_authzToken)
+    throw TProtocolException(TProtocolException::INVALID_DATA);
+  if (!isset_productUri)
+    throw TProtocolException(TProtocolException::INVALID_DATA);
+  return xfer;
+}
+
+uint32_t 
Airavata_getChildDataProducts_args::write(::apache::thrift::protocol::TProtocol*
 oprot) const {
+  uint32_t xfer = 0;
+  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
+  xfer += oprot->writeStructBegin("Airavata_getChildDataProducts_args");
+
+  xfer += oprot->writeFieldBegin("authzToken", 
::apache::thrift::protocol::T_STRUCT, 1);
+  xfer += this->authzToken.write(oprot);
+  xfer += oprot->writeFieldEnd();
+
+  xfer += oprot->writeFieldBegin("productUri", 
::apache::thrift::protocol::T_STRING, 2);
+  xfer += oprot->writeString(this->productUri);
+  xfer += oprot->writeFieldEnd();
+
+  xfer += oprot->writeFieldStop();
+  xfer += oprot->writeStructEnd();
+  return xfer;
+}
+
+
+Airavata_getChildDataProducts_pargs::~Airavata_getChildDataProducts_pargs() 
throw() {
+}
+
+
+uint32_t 
Airavata_getChildDataProducts_pargs::write(::apache::thrift::protocol::TProtocol*
 oprot) const {
+  uint32_t xfer = 0;
+  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
+  xfer += oprot->writeStructBegin("Airavata_getChildDataProducts_pargs");
+
+  xfer += oprot->writeFieldBegin("authzToken", 
::apache::thrift::protocol::T_STRUCT, 1);
+  xfer += (*(this->authzToken)).write(oprot);
+  xfer += oprot->writeFieldEnd();
+
+  xfer += oprot->writeFieldBegin("productUri", 
::apache::thrift::protocol::T_STRING, 2);
+  xfer += oprot->writeString((*(this->productUri)));
+  xfer += oprot->writeFieldEnd();
+
+  xfer += oprot->writeFieldStop();
+  xfer += oprot->writeStructEnd();
+  return xfer;
+}
+
+
+Airavata_getChildDataProducts_result::~Airavata_getChildDataProducts_result() 
throw() {
+}
+
+
+uint32_t 
Airavata_getChildDataProducts_result::read(::apache::thrift::protocol::TProtocol*
 iprot) {
+
+  apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
+  uint32_t xfer = 0;
+  std::string fname;
+  ::apache::thrift::protocol::TType ftype;
+  int16_t fid;
+
+  xfer += iprot->readStructBegin(fname);
+
+  using ::apache::thrift::protocol::TProtocolException;
+
+
+  while (true)
+  {
+    xfer += iprot->readFieldBegin(fname, ftype, fid);
+    if (ftype == ::apache::thrift::protocol::T_STOP) {
+      break;
+    }
+    switch (fid)
+    {
+      case 0:
+        if (ftype == ::apache::thrift::protocol::T_LIST) {
+          {
+            this->success.clear();
+            uint32_t _size414;
+            ::apache::thrift::protocol::TType _etype417;
+            xfer += iprot->readListBegin(_etype417, _size414);
+            this->success.resize(_size414);
+            uint32_t _i418;
+            for (_i418 = 0; _i418 < _size414; ++_i418)
+            {
+              xfer += this->success[_i418].read(iprot);
+            }
+            xfer += iprot->readListEnd();
+          }
+          this->__isset.success = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 1:
+        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
+          xfer += this->ire.read(iprot);
+          this->__isset.ire = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 2:
+        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
+          xfer += this->ace.read(iprot);
+          this->__isset.ace = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 3:
+        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
+          xfer += this->ase.read(iprot);
+          this->__isset.ase = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 4:
+        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
+          xfer += this->ae.read(iprot);
+          this->__isset.ae = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      default:
+        xfer += iprot->skip(ftype);
+        break;
+    }
+    xfer += iprot->readFieldEnd();
+  }
+
+  xfer += iprot->readStructEnd();
+
+  return xfer;
+}
+
+uint32_t 
Airavata_getChildDataProducts_result::write(::apache::thrift::protocol::TProtocol*
 oprot) const {
+
+  uint32_t xfer = 0;
+
+  xfer += oprot->writeStructBegin("Airavata_getChildDataProducts_result");
+
+  if (this->__isset.success) {
+    xfer += oprot->writeFieldBegin("success", 
::apache::thrift::protocol::T_LIST, 0);
+    {
+      xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, 
static_cast<uint32_t>(this->success.size()));
+      std::vector< ::apache::airavata::model::data::replica::DataProductModel> 
::const_iterator _iter419;
+      for (_iter419 = this->success.begin(); _iter419 != this->success.end(); 
++_iter419)
+      {
+        xfer += (*_iter419).write(oprot);
+      }
+      xfer += oprot->writeListEnd();
+    }
+    xfer += oprot->writeFieldEnd();
+  } else if (this->__isset.ire) {
+    xfer += oprot->writeFieldBegin("ire", 
::apache::thrift::protocol::T_STRUCT, 1);
+    xfer += this->ire.write(oprot);
+    xfer += oprot->writeFieldEnd();
+  } else if (this->__isset.ace) {
+    xfer += oprot->writeFieldBegin("ace", 
::apache::thrift::protocol::T_STRUCT, 2);
+    xfer += this->ace.write(oprot);
+    xfer += oprot->writeFieldEnd();
+  } else if (this->__isset.ase) {
+    xfer += oprot->writeFieldBegin("ase", 
::apache::thrift::protocol::T_STRUCT, 3);
+    xfer += this->ase.write(oprot);
+    xfer += oprot->writeFieldEnd();
+  } else if (this->__isset.ae) {
+    xfer += oprot->writeFieldBegin("ae", ::apache::thrift::protocol::T_STRUCT, 
4);
+    xfer += this->ae.write(oprot);
+    xfer += oprot->writeFieldEnd();
+  }
+  xfer += oprot->writeFieldStop();
+  xfer += oprot->writeStructEnd();
+  return xfer;
+}
+
+
+Airavata_getChildDataProducts_presult::~Airavata_getChildDataProducts_presult()
 throw() {
+}
+
+
+uint32_t 
Airavata_getChildDataProducts_presult::read(::apache::thrift::protocol::TProtocol*
 iprot) {
+
+  apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
+  uint32_t xfer = 0;
+  std::string fname;
+  ::apache::thrift::protocol::TType ftype;
+  int16_t fid;
+
+  xfer += iprot->readStructBegin(fname);
+
+  using ::apache::thrift::protocol::TProtocolException;
+
+
+  while (true)
+  {
+    xfer += iprot->readFieldBegin(fname, ftype, fid);
+    if (ftype == ::apache::thrift::protocol::T_STOP) {
+      break;
+    }
+    switch (fid)
+    {
+      case 0:
+        if (ftype == ::apache::thrift::protocol::T_LIST) {
+          {
+            (*(this->success)).clear();
+            uint32_t _size420;
+            ::apache::thrift::protocol::TType _etype423;
+            xfer += iprot->readListBegin(_etype423, _size420);
+            (*(this->success)).resize(_size420);
+            uint32_t _i424;
+            for (_i424 = 0; _i424 < _size420; ++_i424)
+            {
+              xfer += (*(this->success))[_i424].read(iprot);
+            }
+            xfer += iprot->readListEnd();
+          }
+          this->__isset.success = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 1:
+        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
+          xfer += this->ire.read(iprot);
+          this->__isset.ire = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 2:
+        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
+          xfer += this->ace.read(iprot);
+          this->__isset.ace = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 3:
+        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
+          xfer += this->ase.read(iprot);
+          this->__isset.ase = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 4:
+        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
+          xfer += this->ae.read(iprot);
+          this->__isset.ae = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      default:
+        xfer += iprot->skip(ftype);
+        break;
+    }
+    xfer += iprot->readFieldEnd();
+  }
+
+  xfer += iprot->readStructEnd();
+
+  return xfer;
+}
+
 void AiravataClient::getAPIVersion(std::string& _return, const  
::apache::airavata::model::security::AuthzToken& authzToken)
 {
   send_getAPIVersion(authzToken);
@@ -52390,23 +53000,165 @@ void 
AiravataClient::recv_getWorkflowTemplateId(std::string& _return)
   if (result.__isset.ae) {
     throw result.ae;
   }
-  throw 
::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT,
 "getWorkflowTemplateId failed: unknown result");
+  throw 
::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT,
 "getWorkflowTemplateId failed: unknown result");
+}
+
+bool AiravataClient::isWorkflowExistWithName(const  
::apache::airavata::model::security::AuthzToken& authzToken, const std::string& 
workflowName)
+{
+  send_isWorkflowExistWithName(authzToken, workflowName);
+  return recv_isWorkflowExistWithName();
+}
+
+void AiravataClient::send_isWorkflowExistWithName(const  
::apache::airavata::model::security::AuthzToken& authzToken, const std::string& 
workflowName)
+{
+  int32_t cseqid = 0;
+  oprot_->writeMessageBegin("isWorkflowExistWithName", 
::apache::thrift::protocol::T_CALL, cseqid);
+
+  Airavata_isWorkflowExistWithName_pargs args;
+  args.authzToken = &authzToken;
+  args.workflowName = &workflowName;
+  args.write(oprot_);
+
+  oprot_->writeMessageEnd();
+  oprot_->getTransport()->writeEnd();
+  oprot_->getTransport()->flush();
+}
+
+bool AiravataClient::recv_isWorkflowExistWithName()
+{
+
+  int32_t rseqid = 0;
+  std::string fname;
+  ::apache::thrift::protocol::TMessageType mtype;
+
+  iprot_->readMessageBegin(fname, mtype, rseqid);
+  if (mtype == ::apache::thrift::protocol::T_EXCEPTION) {
+    ::apache::thrift::TApplicationException x;
+    x.read(iprot_);
+    iprot_->readMessageEnd();
+    iprot_->getTransport()->readEnd();
+    throw x;
+  }
+  if (mtype != ::apache::thrift::protocol::T_REPLY) {
+    iprot_->skip(::apache::thrift::protocol::T_STRUCT);
+    iprot_->readMessageEnd();
+    iprot_->getTransport()->readEnd();
+  }
+  if (fname.compare("isWorkflowExistWithName") != 0) {
+    iprot_->skip(::apache::thrift::protocol::T_STRUCT);
+    iprot_->readMessageEnd();
+    iprot_->getTransport()->readEnd();
+  }
+  bool _return;
+  Airavata_isWorkflowExistWithName_presult result;
+  result.success = &_return;
+  result.read(iprot_);
+  iprot_->readMessageEnd();
+  iprot_->getTransport()->readEnd();
+
+  if (result.__isset.success) {
+    return _return;
+  }
+  if (result.__isset.ire) {
+    throw result.ire;
+  }
+  if (result.__isset.ace) {
+    throw result.ace;
+  }
+  if (result.__isset.ase) {
+    throw result.ase;
+  }
+  if (result.__isset.ae) {
+    throw result.ae;
+  }
+  throw 
::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT,
 "isWorkflowExistWithName failed: unknown result");
+}
+
+void AiravataClient::registerDataProduct(std::string& _return, const  
::apache::airavata::model::security::AuthzToken& authzToken, const  
::apache::airavata::model::data::replica::DataProductModel& dataProductModel)
+{
+  send_registerDataProduct(authzToken, dataProductModel);
+  recv_registerDataProduct(_return);
+}
+
+void AiravataClient::send_registerDataProduct(const  
::apache::airavata::model::security::AuthzToken& authzToken, const  
::apache::airavata::model::data::replica::DataProductModel& dataProductModel)
+{
+  int32_t cseqid = 0;
+  oprot_->writeMessageBegin("registerDataProduct", 
::apache::thrift::protocol::T_CALL, cseqid);
+
+  Airavata_registerDataProduct_pargs args;
+  args.authzToken = &authzToken;
+  args.dataProductModel = &dataProductModel;
+  args.write(oprot_);
+
+  oprot_->writeMessageEnd();
+  oprot_->getTransport()->writeEnd();
+  oprot_->getTransport()->flush();
+}
+
+void AiravataClient::recv_registerDataProduct(std::string& _return)
+{
+
+  int32_t rseqid = 0;
+  std::string fname;
+  ::apache::thrift::protocol::TMessageType mtype;
+
+  iprot_->readMessageBegin(fname, mtype, rseqid);
+  if (mtype == ::apache::thrift::protocol::T_EXCEPTION) {
+    ::apache::thrift::TApplicationException x;
+    x.read(iprot_);
+    iprot_->readMessageEnd();
+    iprot_->getTransport()->readEnd();
+    throw x;
+  }
+  if (mtype != ::apache::thrift::protocol::T_REPLY) {
+    iprot_->skip(::apache::thrift::protocol::T_STRUCT);
+    iprot_->readMessageEnd();
+    iprot_->getTransport()->readEnd();
+  }
+  if (fname.compare("registerDataProduct") != 0) {
+    iprot_->skip(::apache::thrift::protocol::T_STRUCT);
+    iprot_->readMessageEnd();
+    iprot_->getTransport()->readEnd();
+  }
+  Airavata_registerDataProduct_presult result;
+  result.success = &_return;
+  result.read(iprot_);
+  iprot_->readMessageEnd();
+  iprot_->getTransport()->readEnd();
+
+  if (result.__isset.success) {
+    // _return pointer has now been filled
+    return;
+  }
+  if (result.__isset.ire) {
+    throw result.ire;
+  }
+  if (result.__isset.ace) {
+    throw result.ace;
+  }
+  if (result.__isset.ase) {
+    throw result.ase;
+  }
+  if (result.__isset.ae) {
+    throw result.ae;
+  }
+  throw 
::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT,
 "registerDataProduct failed: unknown result");
 }
 
-bool AiravataClient::isWorkflowExistWithName(const  
::apache::airavata::model::security::AuthzToken& authzToken, const std::string& 
workflowName)
+void AiravataClient::getDataProduct( 
::apache::airavata::model::data::replica::DataProductModel& _return, const  
::apache::airavata::model::security::AuthzToken& authzToken, const std::string& 
dataProductUri)
 {
-  send_isWorkflowExistWithName(authzToken, workflowName);
-  return recv_isWorkflowExistWithName();
+  send_getDataProduct(authzToken, dataProductUri);
+  recv_getDataProduct(_return);
 }
 
-void AiravataClient::send_isWorkflowExistWithName(const  
::apache::airavata::model::security::AuthzToken& authzToken, const std::string& 
workflowName)
+void AiravataClient::send_getDataProduct(const  
::apache::airavata::model::security::AuthzToken& authzToken, const std::string& 
dataProductUri)
 {
   int32_t cseqid = 0;
-  oprot_->writeMessageBegin("isWorkflowExistWithName", 
::apache::thrift::protocol::T_CALL, cseqid);
+  oprot_->writeMessageBegin("getDataProduct", 
::apache::thrift::protocol::T_CALL, cseqid);
 
-  Airavata_isWorkflowExistWithName_pargs args;
+  Airavata_getDataProduct_pargs args;
   args.authzToken = &authzToken;
-  args.workflowName = &workflowName;
+  args.dataProductUri = &dataProductUri;
   args.write(oprot_);
 
   oprot_->writeMessageEnd();
@@ -52414,7 +53166,7 @@ void AiravataClient::send_isWorkflowExistWithName(const 
 ::apache::airavata::mod
   oprot_->getTransport()->flush();
 }
 
-bool AiravataClient::recv_isWorkflowExistWithName()
+void AiravataClient::recv_getDataProduct( 
::apache::airavata::model::data::replica::DataProductModel& _return)
 {
 
   int32_t rseqid = 0;
@@ -52434,20 +53186,20 @@ bool AiravataClient::recv_isWorkflowExistWithName()
     iprot_->readMessageEnd();
     iprot_->getTransport()->readEnd();
   }
-  if (fname.compare("isWorkflowExistWithName") != 0) {
+  if (fname.compare("getDataProduct") != 0) {
     iprot_->skip(::apache::thrift::protocol::T_STRUCT);
     iprot_->readMessageEnd();
     iprot_->getTransport()->readEnd();
   }
-  bool _return;
-  Airavata_isWorkflowExistWithName_presult result;
+  Airavata_getDataProduct_presult result;
   result.success = &_return;
   result.read(iprot_);
   iprot_->readMessageEnd();
   iprot_->getTransport()->readEnd();
 
   if (result.__isset.success) {
-    return _return;
+    // _return pointer has now been filled
+    return;
   }
   if (result.__isset.ire) {
     throw result.ire;
@@ -52461,23 +53213,23 @@ bool AiravataClient::recv_isWorkflowExistWithName()
   if (result.__isset.ae) {
     throw result.ae;
   }
-  throw 
::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT,
 "isWorkflowExistWithName failed: unknown result");
+  throw 
::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT,
 "getDataProduct failed: unknown result");
 }
 
-void AiravataClient::registerDataProduct(std::string& _return, const  
::apache::airavata::model::security::AuthzToken& authzToken, const  
::apache::airavata::model::data::replica::DataProductModel& dataProductModel)
+void AiravataClient::registerReplicaLocation(std::string& _return, const  
::apache::airavata::model::security::AuthzToken& authzToken, const  
::apache::airavata::model::data::replica::DataReplicaLocationModel& 
replicaLocationModel)
 {
-  send_registerDataProduct(authzToken, dataProductModel);
-  recv_registerDataProduct(_return);
+  send_registerReplicaLocation(authzToken, replicaLocationModel);
+  recv_registerReplicaLocation(_return);
 }
 
-void AiravataClient::send_registerDataProduct(const  
::apache::airavata::model::security::AuthzToken& authzToken, const  
::apache::airavata::model::data::replica::DataProductModel& dataProductModel)
+void AiravataClient::send_registerReplicaLocation(const  
::apache::airavata::model::security::AuthzToken& authzToken, const  
::apache::airavata::model::data::replica::DataReplicaLocationModel& 
replicaLocationModel)
 {
   int32_t cseqid = 0;
-  oprot_->writeMessageBegin("registerDataProduct", 
::apache::thrift::protocol::T_CALL, cseqid);
+  oprot_->writeMessageBegin("registerReplicaLocation", 
::apache::thrift::protocol::T_CALL, cseqid);
 
-  Airavata_registerDataProduct_pargs args;
+  Airavata_registerReplicaLocation_pargs args;
   args.authzToken = &authzToken;
-  args.dataProductModel = &dataProductModel;
+  args.replicaLocationModel = &replicaLocationModel;
   args.write(oprot_);
 
   oprot_->writeMessageEnd();
@@ -52485,7 +53237,7 @@ void AiravataClient::send_registerDataProduct(const  
::apache::airavata::model::
   oprot_->getTransport()->flush();
 }
 
-void AiravataClient::recv_registerDataProduct(std::string& _return)
+void AiravataClient::recv_registerReplicaLocation(std::string& _return)
 {
 
   int32_t rseqid = 0;
@@ -52505,12 +53257,12 @@ void 
AiravataClient::recv_registerDataProduct(std::string& _return)
     iprot_->readMessageEnd();
     iprot_->getTransport()->readEnd();
   }
-  if (fname.compare("registerDataProduct") != 0) {
+  if (fname.compare("registerReplicaLocation") != 0) {
     iprot_->skip(::apache::thrift::protocol::T_STRUCT);
     iprot_->readMessageEnd();
     iprot_->getTransport()->readEnd();
   }
-  Airavata_registerDataProduct_presult result;
+  Airavata_registerReplicaLocation_presult result;
   result.success = &_return;
   result.read(iprot_);
   iprot_->readMessageEnd();
@@ -52532,23 +53284,23 @@ void 
AiravataClient::recv_registerDataProduct(std::string& _return)
   if (result.__isset.ae) {
     throw result.ae;
   }
-  throw 
::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT,
 "registerDataProduct failed: unknown result");
+  throw 
::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT,
 "registerReplicaLocation failed: unknown result");
 }
 
-void AiravataClient::getDataProduct( 
::apache::airavata::model::data::replica::DataProductModel& _return, const  
::apache::airavata::model::security::AuthzToken& authzToken, const std::string& 
dataProductUri)
+void AiravataClient::getParentDataProduct( 
::apache::airavata::model::data::replica::DataProductModel& _return, const  
::apache::airavata::model::security::AuthzToken& authzToken, const std::string& 
productUri)
 {
-  send_getDataProduct(authzToken, dataProductUri);
-  recv_getDataProduct(_return);
+  send_getParentDataProduct(authzToken, productUri);
+  recv_getParentDataProduct(_return);
 }
 
-void AiravataClient::send_getDataProduct(const  
::apache::airavata::model::security::AuthzToken& authzToken, const std::string& 
dataProductUri)
+void AiravataClient::send_getParentDataProduct(const  
::apache::airavata::model::security::AuthzToken& authzToken, const std::string& 
productUri)
 {
   int32_t cseqid = 0;
-  oprot_->writeMessageBegin("getDataProduct", 
::apache::thrift::protocol::T_CALL, cseqid);
+  oprot_->writeMessageBegin("getParentDataProduct", 
::apache::thrift::protocol::T_CALL, cseqid);
 
-  Airavata_getDataProduct_pargs args;
+  Airavata_getParentDataProduct_pargs args;
   args.authzToken = &authzToken;
-  args.dataProductUri = &dataProductUri;
+  args.productUri = &productUri;
   args.write(oprot_);
 
   oprot_->writeMessageEnd();
@@ -52556,7 +53308,7 @@ void AiravataClient::send_getDataProduct(const  
::apache::airavata::model::secur
   oprot_->getTransport()->flush();
 }
 
-void AiravataClient::recv_getDataProduct( 
::apache::airavata::model::data::replica::DataProductModel& _return)
+void AiravataClient::recv_getParentDataProduct( 
::apache::airavata::model::data::replica::DataProductModel& _return)
 {
 
   int32_t rseqid = 0;
@@ -52576,12 +53328,12 @@ void AiravataClient::recv_getDataProduct( 
::apache::airavata::model::data::repli
     iprot_->readMessageEnd();
     iprot_->getTransport()->readEnd();
   }
-  if (fname.compare("getDataProduct") != 0) {
+  if (fname.compare("getParentDataProduct") != 0) {
     iprot_->skip(::apache::thrift::protocol::T_STRUCT);
     iprot_->readMessageEnd();
     iprot_->getTransport()->readEnd();
   }
-  Airavata_getDataProduct_presult result;
+  Airavata_getParentDataProduct_presult result;
   result.success = &_return;
   result.read(iprot_);
   iprot_->readMessageEnd();
@@ -52603,23 +53355,23 @@ void AiravataClient::recv_getDataProduct( 
::apache::airavata::model::data::repli
   if (result.__isset.ae) {
     throw result.ae;
   }
-  throw 
::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT,
 "getDataProduct failed: unknown result");
+  throw 
::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT,
 "getParentDataProduct failed: unknown result");
 }
 
-void AiravataClient::registerReplicaLocation(std::string& _return, const  
::apache::airavata::model::security::AuthzToken& authzToken, const  
::apache::airavata::model::data::replica::DataReplicaLocationModel& 
replicaLocationModel)
+void AiravataClient::getChildDataProducts(std::vector< 
::apache::airavata::model::data::replica::DataProductModel> & _return, const  
::apache::airavata::model::security::AuthzToken& authzToken, const std::string& 
productUri)
 {
-  send_registerReplicaLocation(authzToken, replicaLocationModel);
-  recv_registerReplicaLocation(_return);
+  send_getChildDataProducts(authzToken, productUri);
+  recv_getChildDataProducts(_return);
 }
 
-void AiravataClient::send_registerReplicaLocation(const  
::apache::airavata::model::security::AuthzToken& authzToken, const  
::apache::airavata::model::data::replica::DataReplicaLocationModel& 
replicaLocationModel)
+void AiravataClient::send_getChildDataProducts(const  
::apache::airavata::model::security::AuthzToken& authzToken, const std::string& 
productUri)
 {
   int32_t cseqid = 0;
-  oprot_->writeMessageBegin("registerReplicaLocation", 
::apache::thrift::protocol::T_CALL, cseqid);
+  oprot_->writeMessageBegin("getChildDataProducts", 
::apache::thrift::protocol::T_CALL, cseqid);
 
-  Airavata_registerReplicaLocation_pargs args;
+  Airavata_getChildDataProducts_pargs args;
   args.authzToken = &authzToken;
-  args.replicaLocationModel = &replicaLocationModel;
+  args.productUri = &productUri;
   args.write(oprot_);
 
   oprot_->writeMessageEnd();
@@ -52627,7 +53379,7 @@ void AiravataClient::send_registerReplicaLocation(const 
 ::apache::airavata::mod
   oprot_->getTransport()->flush();
 }
 
-void AiravataClient::recv_registerReplicaLocation(std::string& _return)
+void AiravataClient::recv_getChildDataProducts(std::vector< 
::apache::airavata::model::data::replica::DataProductModel> & _return)
 {
 
   int32_t rseqid = 0;
@@ -52647,12 +53399,12 @@ void 
AiravataClient::recv_registerReplicaLocation(std::string& _return)
     iprot_->readMessageEnd();
     iprot_->getTransport()->readEnd();
   }
-  if (fname.compare("registerReplicaLocation") != 0) {
+  if (fname.compare("getChildDataProducts") != 0) {
     iprot_->skip(::apache::thrift::protocol::T_STRUCT);
     iprot_->readMessageEnd();
     iprot_->getTransport()->readEnd();
   }
-  Airavata_registerReplicaLocation_presult result;
+  Airavata_getChildDataProducts_presult result;
   result.success = &_return;
   result.read(iprot_);
   iprot_->readMessageEnd();
@@ -52674,7 +53426,7 @@ void 
AiravataClient::recv_registerReplicaLocation(std::string& _return)
   if (result.__isset.ae) {
     throw result.ae;
   }
-  throw 
::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT,
 "registerReplicaLocation failed: unknown result");
+  throw 
::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT,
 "getChildDataProducts failed: unknown result");
 }
 
 bool AiravataProcessor::dispatchCall(::apache::thrift::protocol::TProtocol* 
iprot, ::apache::thrift::protocol::TProtocol* oprot, const std::string& fname, 
int32_t seqid, void* callContext) {
@@ -61744,6 +62496,138 @@ void 
AiravataProcessor::process_registerReplicaLocation(int32_t seqid, ::apache:
   }
 }
 
+void AiravataProcessor::process_getParentDataProduct(int32_t seqid, 
::apache::thrift::protocol::TProtocol* iprot, 
::apache::thrift::protocol::TProtocol* oprot, void* callContext)
+{
+  void* ctx = NULL;
+  if (this->eventHandler_.get() != NULL) {
+    ctx = this->eventHandler_->getContext("Airavata.getParentDataProduct", 
callContext);
+  }
+  ::apache::thrift::TProcessorContextFreer freer(this->eventHandler_.get(), 
ctx, "Airavata.getParentDataProduct");
+
+  if (this->eventHandler_.get() != NULL) {
+    this->eventHandler_->preRead(ctx, "Airavata.getParentDataProduct");
+  }
+
+  Airavata_getParentDataProduct_args args;
+  args.read(iprot);
+  iprot->readMessageEnd();
+  uint32_t bytes = iprot->getTransport()->readEnd();
+
+  if (this->eventHandler_.get() != NULL) {
+    this->eventHandler_->postRead(ctx, "Airavata.getParentDataProduct", bytes);
+  }
+
+  Airavata_getParentDataProduct_result result;
+  try {
+    iface_->getParentDataProduct(result.success, args.authzToken, 
args.productUri);
+    result.__isset.success = true;
+  } catch ( ::apache::airavata::api::error::InvalidRequestException &ire) {
+    result.ire = ire;
+    result.__isset.ire = true;
+  } catch ( ::apache::airavata::api::error::AiravataClientException &ace) {
+    result.ace = ace;
+    result.__isset.ace = true;
+  } catch ( ::apache::airavata::api::error::AiravataSystemException &ase) {
+    result.ase = ase;
+    result.__isset.ase = true;
+  } catch ( ::apache::airavata::api::error::AuthorizationException &ae) {
+    result.ae = ae;
+    result.__isset.ae = true;
+  } catch (const std::exception& e) {
+    if (this->eventHandler_.get() != NULL) {
+      this->eventHandler_->handlerError(ctx, "Airavata.getParentDataProduct");
+    }
+
+    ::apache::thrift::TApplicationException x(e.what());
+    oprot->writeMessageBegin("getParentDataProduct", 
::apache::thrift::protocol::T_EXCEPTION, seqid);
+    x.write(oprot);
+    oprot->writeMessageEnd();
+    oprot->getTransport()->writeEnd();
+    oprot->getTransport()->flush();
+    return;
+  }
+
+  if (this->eventHandler_.get() != NULL) {
+    this->eventHandler_->preWrite(ctx, "Airavata.getParentDataProduct");
+  }
+
+  oprot->writeMessageBegin("getParentDataProduct", 
::apache::thrift::protocol::T_REPLY, seqid);
+  result.write(oprot);
+  oprot->writeMessageEnd();
+  bytes = oprot->getTransport()->writeEnd();
+  oprot->getTransport()->flush();
+
+  if (this->eventHandler_.get() != NULL) {
+    this->eventHandler_->postWrite(ctx, "Airavata.getParentDataProduct", 
bytes);
+  }
+}
+
+void AiravataProcessor::process_getChildDataProducts(int32_t seqid, 
::apache::thrift::protocol::TProtocol* iprot, 
::apache::thrift::protocol::TProtocol* oprot, void* callContext)
+{
+  void* ctx = NULL;
+  if (this->eventHandler_.get() != NULL) {
+    ctx = this->eventHandler_->getContext("Airavata.getChildDataProducts", 
callContext);
+  }
+  ::apache::thrift::TProcessorContextFreer freer(this->eventHandler_.get(), 
ctx, "Airavata.getChildDataProducts");
+
+  if (this->eventHandler_.get() != NULL) {
+    this->eventHandler_->preRead(ctx, "Airavata.getChildDataProducts");
+  }
+
+  Airavata_getChildDataProducts_args args;
+  args.read(iprot);
+  iprot->readMessageEnd();
+  uint32_t bytes = iprot->getTransport()->readEnd();
+
+  if (this->eventHandler_.get() != NULL) {
+    this->eventHandler_->postRead(ctx, "Airavata.getChildDataProducts", bytes);
+  }
+
+  Airavata_getChildDataProducts_result result;
+  try {
+    iface_->getChildDataProducts(result.success, args.authzToken, 
args.productUri);
+    result.__isset.success = true;
+  } catch ( ::apache::airavata::api::error::InvalidRequestException &ire) {
+    result.ire = ire;
+    result.__isset.ire = true;
+  } catch ( ::apache::airavata::api::error::AiravataClientException &ace) {
+    result.ace = ace;
+    result.__isset.ace = true;
+  } catch ( ::apache::airavata::api::error::AiravataSystemException &ase) {
+    result.ase = ase;
+    result.__isset.ase = true;
+  } catch ( ::apache::airavata::api::error::AuthorizationException &ae) {
+    result.ae = ae;
+    result.__isset.ae = true;
+  } catch (const std::exception& e) {
+    if (this->eventHandler_.get() != NULL) {
+      this->eventHandler_->handlerError(ctx, "Airavata.getChildDataProducts");
+    }
+
+    ::apache::thrift::TApplicationException x(e.what());
+    oprot->writeMessageBegin("getChildDataProducts", 
::apache::thrift::protocol::T_EXCEPTION, seqid);
+    x.write(oprot);
+    oprot->writeMessageEnd();
+    oprot->getTransport()->writeEnd();
+    oprot->getTransport()->flush();
+    return;
+  }
+
+  if (this->eventHandler_.get() != NULL) {
+    this->eventHandler_->preWrite(ctx, "Airavata.getChildDataProducts");
+  }
+
+  oprot->writeMessageBegin("getChildDataProducts", 
::apache::thrift::protocol::T_REPLY, seqid);
+  result.write(oprot);
+  oprot->writeMessageEnd();
+  bytes = oprot->getTransport()->writeEnd();
+  oprot->getTransport()->flush();
+
+  if (this->eventHandler_.get() != NULL) {
+    this->eventHandler_->postWrite(ctx, "Airavata.getChildDataProducts", 
bytes);
+  }
+}
+
 ::boost::shared_ptr< ::apache::thrift::TProcessor > 
AiravataProcessorFactory::getProcessor(const ::apache::thrift::TConnectionInfo& 
connInfo) {
   ::apache::thrift::ReleaseHandler< AiravataIfFactory > 
cleanup(handlerFactory_);
   ::boost::shared_ptr< AiravataIf > 
handler(handlerFactory_->getHandler(connInfo), cleanup);
@@ -73807,7 +74691,109 @@ void 
AiravataConcurrentClient::recv_getGatewayComputeResourcePreference( ::apach
         iprot_->readMessageEnd();
         iprot_->getTransport()->readEnd();
       }
-      if (fname.compare("getGatewayComputeResourcePreference") != 0) {
+      if (fname.compare("getGatewayComputeResourcePreference") != 0) {
+        iprot_->skip(::apache::thrift::protocol::T_STRUCT);
+        iprot_->readMessageEnd();
+        iprot_->getTransport()->readEnd();
+
+        // in a bad state, don't commit
+        using ::apache::thrift::protocol::TProtocolException;
+        throw TProtocolException(TProtocolException::INVALID_DATA);
+      }
+      Airavata_getGatewayComputeResourcePreference_presult result;
+      result.success = &_return;
+      result.read(iprot_);
+      iprot_->readMessageEnd();
+      iprot_->getTransport()->readEnd();
+
+      if (result.__isset.success) {
+        // _return pointer has now been filled
+        sentry.commit();
+        return;
+      }
+      if (result.__isset.ire) {
+        sentry.commit();
+        throw result.ire;
+      }
+      if (result.__isset.ace) {
+        sentry.commit();
+        throw result.ace;
+      }
+      if (result.__isset.ase) {
+        sentry.commit();
+        throw result.ase;
+      }
+      if (result.__isset.ae) {
+        sentry.commit();
+        throw result.ae;
+      }
+      // in a bad state, don't commit
+      throw 
::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT,
 "getGatewayComputeResourcePreference failed: unknown result");
+    }
+    // seqid != rseqid
+    this->sync_.updatePending(fname, mtype, rseqid);
+
+    // this will temporarily unlock the readMutex, and let other clients get 
work done
+    this->sync_.waitForWork(seqid);
+  } // end while(true)
+}
+
+void AiravataConcurrentClient::getGatewayStoragePreference( 
::apache::airavata::model::appcatalog::gatewayprofile::StoragePreference& 
_return, const  ::apache::airavata::model::security::AuthzToken& authzToken, 
const std::string& gatewayID, const std::string& storageResourceId)
+{
+  int32_t seqid = send_getGatewayStoragePreference(authzToken, gatewayID, 
storageResourceId);
+  recv_getGatewayStoragePreference(_return, seqid);
+}
+
+int32_t AiravataConcurrentClient::send_getGatewayStoragePreference(const  
::apache::airavata::model::security::AuthzToken& authzToken, const std::string& 
gatewayID, const std::string& storageResourceId)
+{
+  int32_t cseqid = this->sync_.generateSeqId();
+  ::apache::thrift::async::TConcurrentSendSentry sentry(&this->sync_);
+  oprot_->writeMessageBegin("getGatewayStoragePreference", 
::apache::thrift::protocol::T_CALL, cseqid);
+
+  Airavata_getGatewayStoragePreference_pargs args;
+  args.authzToken = &authzToken;
+  args.gatewayID = &gatewayID;
+  args.storageResourceId = &storageResourceId;
+  args.write(oprot_);
+
+  oprot_->writeMessageEnd();
+  oprot_->getTransport()->writeEnd();
+  oprot_->getTransport()->flush();
+
+  sentry.commit();
+  return cseqid;
+}
+
+void AiravataConcurrentClient::recv_getGatewayStoragePreference( 
::apache::airavata::model::appcatalog::gatewayprofile::StoragePreference& 
_return, const int32_t seqid)
+{
+
+  int32_t rseqid = 0;
+  std::string fname;
+  ::apache::thrift::protocol::TMessageType mtype;
+
+  // the read mutex gets dropped and reacquired as part of waitForWork()
+  // The destructor of this sentry wakes up other clients
+  ::apache::thrift::async::TConcurrentRecvSentry sentry(&this->sync_, seqid);
+
+  while(true) {
+    if(!this->sync_.getPending(fname, mtype, rseqid)) {
+      iprot_->readMessageBegin(fname, mtype, rseqid);
+    }
+    if(seqid == rseqid) {
+      if (mtype == ::apache::thrift::protocol::T_EXCEPTION) {
+        ::apache::thrift::TApplicationException x;
+        x.read(iprot_);
+        iprot_->readMessageEnd();
+        iprot_->getTransport()->readEnd();
+        sentry.commit();
+        throw x;
+      }
+      if (mtype != ::apache::thrift::protocol::T_REPLY) {
+        iprot_->skip(::apache::thrift::protocol::T_STRUCT);
+        iprot_->readMessageEnd();
+        iprot_->getTransport()->readEnd();
+      }
+      if (fname.compare("getGatewayStoragePreference") != 0) {
         iprot_->skip(::apache::thrift::protocol::T_STRUCT);
         iprot_->readMessageEnd();
         iprot_->getTransport()->readEnd();
@@ -73816,7 +74802,7 @@ void 
AiravataConcurrentClient::recv_getGatewayComputeResourcePreference( ::apach
         using ::apache::thrift::protocol::TProtocolException;
         throw TProtocolException(TProtocolException::INVALID_DATA);
       }
-      Airavata_getGatewayComputeResourcePreference_presult result;
+      Airavata_getGatewayStoragePreference_presult result;
       result.success = &_return;
       result.read(iprot_);
       iprot_->readMessageEnd();
@@ -73844,7 +74830,7 @@ void 
AiravataConcurrentClient::recv_getGatewayComputeResourcePreference( ::apach
         throw result.ae;
       }
       // in a bad state, don't commit
-      throw 
::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT,
 "getGatewayComputeResourcePreference failed: unknown result");
+      throw 
::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT,
 "getGatewayStoragePreference failed: unknown result");
     }
     // seqid != rseqid
     this->sync_.updatePending(fname, mtype, rseqid);
@@ -73854,22 +74840,21 @@ void 
AiravataConcurrentClient::recv_getGatewayComputeResourcePreference( ::apach
   } // end while(true)
 }
 
-void AiravataConcurrentClient::getGatewayStoragePreference( 
::apache::airavata::model::appcatalog::gatewayprofile::StoragePreference& 
_return, const  ::apache::airavata::model::security::AuthzToken& authzToken, 
const std::string& gatewayID, const std::string& storageResourceId)
+void 
AiravataConcurrentClient::getAllGatewayComputeResourcePreferences(std::vector< 
::apache::airavata::model::appcatalog::gatewayprofile::ComputeResourcePreference>
 & _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, 
const std::string& gatewayID)
 {
-  int32_t seqid = send_getGatewayStoragePreference(authzToken, gatewayID, 
storageResourceId);
-  recv_getGatewayStoragePreference(_return, seqid);
+  int32_t seqid = send_getAllGatewayComputeResourcePreferences(authzToken, 
gatewayID);
+  recv_getAllGatewayComputeResourcePreferences(_return, seqid);
 }
 
-int32_t AiravataConcurrentClient::send_getGatewayStoragePreference(const  
::apache::airavata::model::security::AuthzToken& authzToken, const std::string& 
gatewayID, const std::string& storageResourceId)
+int32_t 
AiravataConcurrentClient::send_getAllGatewayComputeResourcePreferences(const  
::apache::airavata::model::security::AuthzToken& authzToken, const std::string& 
gatewayID)
 {
   int32_t cseqid = this->sync_.generateSeqId();
   ::apache::thrift::async::TConcurrentSendSentry sentry(&this->sync_);
-  oprot_->writeMessageBegin("getGatewayStoragePreference", 
::apache::thrift::protocol::T_CALL, cseqid);
+  oprot_->writeMessageBegin("getAllGatewayComputeResourcePreferences", 
::apache::thrift::protocol::T_CALL, cseqid);
 
-  Airavata_getGatewayStoragePreference_pargs args;
+  Airavata_getAllGatewayComputeResourcePreferences_pargs args;
   args.authzToken = &authzToken;
   args.gatewayID = &gatewayID;
-  args.storageResourceId = &storageResourceId;
   args.write(oprot_);
 
   oprot_->writeMessageEnd();
@@ -73880,7 +74865,7 @@ int32_t 
AiravataConcurrentClient::send_getGatewayStoragePreference(const  ::apac
   return cseqid;
 }
 
-void AiravataConcurrentClient::recv_getGatewayStoragePreference( 
::apache::airavata::model::appcatalog::gatewayprofile::StoragePreference& 
_return, const int32_t seqid)
+void 
AiravataConcurrentClient::recv_getAllGatewayComputeResourcePreferences(std::vector<
 
::apache::airavata::model::appcatalog::gatewayprofile::ComputeResourcePreference>
 & _return, const int32_t seqid)
 {
 
   int32_t rseqid = 0;
@@ -73909,7 +74894,7 @@ void 
AiravataConcurrentClient::recv_getGatewayStoragePreference( ::apache::airav
         iprot_->readMessageEnd();
         iprot_->getTransport()->readEnd();
       }
-      if (fname.compare("getGatewayStoragePreference") != 0) {
+      if (fname.compare("getAllGatewayComputeResourcePreferences") != 0) {
         iprot_->skip(::apache::thrift::protocol::T_STRUCT);
         iprot_->readMessageEnd();
         iprot_->getTransport()->readEnd();
@@ -73918,7 +74903,7 @@ void 
AiravataConcurrentClient::recv_getGatewayStoragePreference( ::apache::airav
         using ::apache::thrift::protocol::TProtocolException;
         throw TProtocolException(TProtocolException::INVALID_DATA);
       }
-      Airavata_getGatewayStoragePreference_presult result;
+      Airavata_getAllGatewayComputeResourcePreferences_presult result;
       result.success = &_return;
       result.read(iprot_);
       iprot_->readMessageEnd();
@@ -73946,7 +74931,7 @@ void 
AiravataConcurrentClient::recv_getGatewayStoragePreference( ::apache::airav
         throw result.ae;
       }
       // in a bad state, don't commit
-      throw 
::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT,
 "getGatewayStoragePreference failed: unknown result");
+      throw 
::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT,
 "getAllGatewayComputeResourcePreferences failed: unknown result");
     }
     // seqid != rseqid
     this->sync_.updatePending(fname, mtype, rseqid);
@@ -73956,19 +74941,19 @@ void 
AiravataConcurrentClient::recv_getGatewayStoragePreference( ::apache::airav
   } // end while(true)
 }
 
-void 
AiravataConcurrentClient::getAllGatewayComputeResourcePreferences(std::vector< 
::apache::airavata::model::appcatalog::gatewayprofile::ComputeResourcePreference>
 & _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, 
const std::string& gatewayID)
+void AiravataConcurrentClient::getAllGatewayStoragePreferences(std::vector< 
::apache::airavata::model::appcatalog::gatewayprofile::StoragePreference> & 
_return, const  ::apache::airavata::model::security::AuthzToken& authzToken, 
const std::string& gatewayID)
 {
-  int32_t seqid = send_getAllGatewayComputeResourcePreferences(authzToken, 
gatewayID);
-  recv_getAllGatewayComputeResourcePreferences(_return, seqid);
+  int32_t seqid = send_getAllGatewayStoragePreferences(authzToken, gatewayID);
+  recv_getAllGatewayStoragePreferences(_return, seqid);
 }
 
-int32_t 
AiravataConcurrentClient::send_getAllGatewayComputeResourcePreferences(const  
::apache::airavata::model::security::AuthzToken& authzToken, const std::string& 
gatewayID)
+int32_t AiravataConcurrentClient::send_getAllGatewayStoragePreferences(const  
::apache::airavata::model::security::AuthzToken& authzToken, const std::string& 
gatewayID)
 {
   int32_t cseqid = this->sync_.generateSeqId();
   ::apache::thrift::async::TConcurrentSendSentry sentry(&this->sync_);
-  oprot_->writeMessageBegin("getAllGatewayComputeResourcePreferences", 
::apache::thrift::protocol::T_CALL, cseqid);
+  oprot_->writeMessageBegin("getAllGatewayStoragePreferences", 
::apache::thrift::protocol::T_CALL, cseqid);
 
-  Airavata_getAllGatewayComputeResourcePreferences_pargs args;
+  Airavata_getAllGatewayStoragePreferences_pargs args;
   args.authzToken = &authzToken;
   args.gatewayID = &gatewayID;
   args.write(oprot_);
@@ -73981,7 +74966,7 @@ int32_t 
AiravataConcurrentClient::send_getAllGatewayComputeResourcePreferences(c
   return cseqid;
 }
 
-void 
AiravataConcurrentClient::recv_getAllGatewayComputeResourcePreferences(std::vector<
 
::apache::airavata::model::appcatalog::gatewayprofile::ComputeResourcePreference>
 & _return, const int32_t seqid)
+void 
AiravataConcurrentClient::recv_getAllGatewayStoragePreferences(std::vector< 
::apache::airavata::model::appcatalog::gatewayprofile::StoragePreference> & 
_return, const int32_t seqid)
 {
 
   int32_t rseqid = 0;
@@ -74010,7 +74995,7 @@ void 
AiravataConcurrentClient::recv_getAllGatewayComputeResourcePreferences(std:
         iprot_->readMessageEnd();
         iprot_->getTransport()->readEnd();
       }
-      if (fname.compare("getAllGatewayComputeResourcePreferences") != 0) {
+      if (fname.compare("getAllGatewayStoragePreferences") != 0) {
         iprot_->skip(::apache::thrift::protocol::T_STRUCT);
         iprot_->readMessageEnd();
         iprot_->getTransport()->readEnd();
@@ -74019,7 +75004,7 @@ void 
AiravataConcurrentClient::recv_getAllGatewayComputeResourcePreferences(std:
         using ::apache::thrift::protocol::TProtocolException;
         throw TProtocolException(TProtocolException::INVALID_DATA);
       }
-      Airavata_getAllGatewayComputeResourcePreferences_presult result;
+      Airavata_getAllGatewayStoragePreferences_presult result;
       result.success = &_return;
       result.read(iprot_);
       iprot_->readMessageEnd();
@@ -74047,7 +75032,7 @@ void 
AiravataConcurrentClient::recv_getAllGatewayComputeResourcePreferences(std:
         throw result.ae;
       }
       // in a bad state, don't commit
-      throw 
::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT,
 "getAllGatewayComputeResourcePreferences failed: unknown result");
+      throw 
::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT,
 "getAllGatewayStoragePreferences failed: unknown result");
     }
     // seqid != rseqid
     this->sync_.updatePending(fname, mtype, rseqid);
@@ -74057,21 +75042,20 @@ void 
AiravataConcurrentClient::recv_getAllGatewayComputeResourcePreferences(std:
   } // end while(true)
 }
 
-void AiravataConcurrentClient::getAllGatewayStoragePreferences(std::vector< 
::apache::airavata::model::appcatalog::gatewayprofile::StoragePreference> & 
_return, const  ::apache::airavata::model::security::AuthzToken& authzToken, 
const std::string& gatewayID)
+void AiravataConcurrentClient::getAllGatewayResourceProfiles(std::vector< 
::apache::airavata::model::appcatalog::gatewayprofile::GatewayResourceProfile> 
& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken)
 {
-  int32_t seqid = send_getAllGatewayStoragePreferences(authzToken, gatewayID);
-  recv_getAllGatewayStoragePreferences(_return, seqid);
+  int32_t seqid = send_getAllGatewayResourceProfiles(authzToken);
+  recv_getAllGatewayResourceProfiles(_return, seqid);
 }
 
-int32_t AiravataConcurrentClient::send_getAllGatewayStoragePreferences(const  
::apache::airavata::model::security::AuthzToken& authzToken, const std::string& 
gatewayID)
+int32_t AiravataConcurrentClient::send_getAllGatewayResourceProfiles(const  
::apache::airavata::model::security::AuthzToken& authzToken)
 {
   int32_t cseqid = this->sync_.generateSeqId();
   ::apache::thrift::async::TConcurrentSendSentry sentry(&this->sync_);
-  oprot_->writeMessageBegin("getAllGatewayStoragePreferences", 
::apache::thrift::protocol::T_CALL, cseqid);
+  oprot_->writeMessageBegin("getAllGatewayResourceProfiles", 
::apache::thrift::protocol::T_CALL, cseqid);
 
-  Airavata_getAllGatewayStoragePreferences_pargs args;
+  Airavata_getAllGatewayResourceProfiles_pargs args;
   args.authzToken = &authzToken;
-  args.gatewayID = &gatewayID;
   args.write(oprot_);
 
   oprot_->writeMessageEnd();
@@ -74082,7 +75066,7 @@ int32_t 
AiravataConcurrentClient::send_getAllGatewayStoragePreferences(const  ::
   return cseqid;
 }
 
-void 
AiravataConcurrentClient::recv_getAllGatewayStoragePreferences(std::vector< 
::apache::airavata::model::appcatalog::gatewayprofile::StoragePreference> & 
_return, const int32_t seqid)
+void AiravataConcurrentClient::recv_getAllGatewayResourceProfiles(std::vector< 
::apache::airavata::model::appcatalog::gatewayprofile::GatewayResourceProfile> 
& _return, const int32_t seqid)
 {
 
   int32_t rseqid = 0;
@@ -74111,7 +75095,7 @@ void 
AiravataConcurrentClient::recv_getAllGatewayStoragePreferences(std::vector<
         iprot_->readMessageEnd();
         iprot_->getTransport()->readEnd();
       }
-      if (fname.compare("getAllGatewayStoragePreferences") != 0) {
+      if (fname.compare("getAllGatewayResourceProfiles") != 0) {
         iprot_->skip(::apache::thrift::protocol::T_STRUCT);
         iprot_->readMessageEnd();
         iprot_->getTransport()->readEnd();
@@ -74120,7 +75104,7 @@ void 
AiravataConcurrentClient::recv_getAllGatewayStoragePreferences(std::vector<
         using ::apache::thrift::protocol::TProtocolException;
         throw TProtocolException(TProtocolException::INVALID_DATA);
       }
-      Airavata_getAllGatewayStoragePreferences_presult result;
+      Airavata_getAllGatewayResourceProfiles_presult result;
       result.success = &_return;
       result.read(iprot_);
       iprot_->readMessageEnd();
@@ -74148,7 +75132,7 @@ void 
AiravataConcurrentClient::recv_getAllGatewayStoragePreferences(std::vector<
         throw result.ae;
       }
       // in a bad state, don't commit
-      throw 
::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT,
 "getAllGatewayStoragePreferences failed: unknown result");
+      throw 
::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT,
 "getAllGatewayResourceProfiles failed: unknown result");
     }
     // seqid != rseqid
     this->sync_.updatePending(fname, mtype, rseqid);
@@ -74158,20 +75142,23 @@ void 
AiravataConcurrentClient::recv_getAllGatewayStoragePreferences(std::vector<
   } // end while(true)
 }
 
-void AiravataConcurrentClient::getAllGatewayResourceProfiles(std::vector< 
::apache::airavata::model::appcatalog::gatewayprofile::GatewayResourceProfile> 
& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken)
+bool AiravataConcurrentClient::updateGatewayComputeResourcePreference(const  
::apache::airavata::model::security::AuthzToken& authzToken, const std::string& 
gatewayID, const std::string& computeResourceId, const  
::apache::airavata::model::appcatalog::gatewayprofile::ComputeResourcePreference&
 computeResourcePreference)
 {
-  int32_t seqid = send_getAllGatewayResourceProfiles(authzToken);
-  recv_getAllGatewayResourceProfiles(_return, seqid);
+  int32_t seqid = send_updateGatewayComputeResourcePreference(authzToken, 
gatewayID, computeResourceId, computeResourcePreference);
+  return recv_updateGatewayComputeResourcePreference(seqid);
 }
 
-int32_t AiravataConcurrentClient::send_getAllGatewayResourceProfiles(const  
::apache::airavata::model::security::AuthzToken& authzToken)
+int32_t 
AiravataConcurrentClient::send_updateGatewayComputeResourcePreference(const  
::apache::airavata::model::security::AuthzToken& authzToken, const std::string& 
gatewayID, const std::string& computeResourceId, const  
::apache::airavata::model::appcatalog::gatewayprofile::ComputeResourcePreference&
 computeResourcePreference)
 {
   int32_t cseqid = this->sync_.generateSeqId();
   ::apache::thrift::async::TConcurrentSendSentry sentry(&this->sync_);
-  oprot_->writeMessageBegin("getAllGatewayResourceProfiles", 
::apache::thrift::protocol::T_CALL, cseqid);
+  oprot_->writeMessageBegin("updateGatewayComputeResourcePreference", 
::apache::thrift::protocol::T_CALL, cseqid);
 
-  Airavata_getAllGatewayResourceProfiles_pargs args;
+  Airavata_updateGatewayComputeResourcePreference_pargs args;
   args.authzToken = &authzToken;
+  args.gatewayID = &gatewayID;
+  args.computeResourceId = &computeResourceId;
+  args.computeResourcePreference = &computeResourcePreference;
   args.write(oprot_);
 
   oprot_->writeMessageEnd();
@@ -74182,7 +75169,7 @@ int32_t 
AiravataConcurrentClient::send_getAllGatewayResourceProfiles(const  ::ap
   return cseqid;
 }
 
-void AiravataConcurrentClient::recv_getAllGatewayResourceProfiles(std::vector< 
::apache::airavata::model::appcatalog::gatewayprofile::GatewayResourceProfile> 
& _return, const int32_t seqid)
+bool 
AiravataConcurrentClient::recv_updateGatewayComputeResourcePreference(const 
int32_t seqid)
 {
 
   int32_t rseqid = 0;
@@ -74211,7 +75198,7 @@ void 
AiravataConcurrentClient::recv_getAllGatewayResourceProfiles(std::vector< :
         iprot_->readMessageEnd();
         iprot_->getTransport()->readEnd();
       }
-      if (fname.compare("getAllGatewayResourceProfiles") != 0) {
+      if (fname.compare("updateGatewayComputeResourcePreference") != 0) {
         iprot_->skip(::apache::thrift::protocol::T_STRUCT);
         iprot_->readMessageEnd();
         iprot_->getTransport()->readEnd();
@@ -74220,16 +75207,16 @@ void 
AiravataConcurrentClient::recv_getAllGatewayResourceProfiles(std::vector< :
         using ::apache::thrift::protocol::TProtocolException;
         throw TProtocolException(TProtocolException::INVALID_DATA);
       }
-      Airavata_getAllGatewayResourceProfiles_presult result;
+      bool _return;
+      Airavata_updateGatewayComputeResourcePreference_presult result;
       result.success = &_return;
       result.read(iprot_);
       iprot_->readMessageEnd();
       iprot_->getTransport()->readEnd();
 
       if (result.__isset.success) {
-        // _return pointer has now been filled
         sentry.commit();
-        return;
+        return _return;
       }
       if (result.__isset.ire) {
         sentry.commit();
@@ -74248,7 +75235,7 @@ void 
AiravataConcurrentClient::recv_getAllGatewayResourceProfiles(std::vector< :
         throw result.ae;
       }
       // in a bad state, don't commit
-      throw 
::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT,
 "getAllGatewayResourceProfiles failed: unknown result");
+      throw 
::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT,
 "updateGatewayComputeResourcePreference failed: unknown result");
     }
     // seqid != rseqid
     this->sync_.updatePending(fname, mtype, rseqid);
@@ -74258,23 +75245,125 @@ void 
AiravataConcurrentClient::recv_getAllGatewayResourceProfiles(std::vector< :
   } // end while(true)
 }
 
-bool AiravataConcurrentClient::updateGatewayComputeResourcePreference(const  
::apache::airavata::model::security::AuthzToken& authzToken, const std::string& 
gatewayID, const std::string& computeResourceId, const  
::apache::airavata::model::appcatalog::gatewayprofile::ComputeResourcePreference&
 computeResourcePreference)
+bool AiravataConcurrentClient::updateGatewayStoragePreference(const  
::apache::airavata::model::security::AuthzToken& authzToken, const std::string& 
gatewayID, const std::string& storageId, const  
::apache::airavata::model::appcatalog::gatewayprofile::StoragePreference& 
storagePreference)
 {
-  int32_t seqid = send_updateGatewayComputeResourcePreference(authzToken, 
gatewayID, computeResourceId, computeResourcePreference);
-  return recv_updateGatewayComputeResourcePreference(seqid);
+  int32_t seqid = send_updateGatewayStoragePreference(authzToken, gatewayID, 
storageId, storagePreference);
+  return recv_updateGatewayStoragePreference(seqid);
 }
 
-int32_t 
AiravataConcurrentClient::send_updateGatewayComputeResourcePreference(const  
::apache::airavata::model::security::AuthzToken& authzToken, const std::string& 
gatewayID, const std::string& computeResourceId, const  
::apache::airavata::model::appcatalog::gatewayprofile::ComputeResourcePreference&
 computeResourcePreference)
+int32_t AiravataConcurrentClient::send_updateGatewayStoragePreference(const  
::apache::airavata::model::security::AuthzToken& authzToken, const std::string& 
gatewayID, const std::string& storageId, const  
::apache::airavata::model::appcatalog::gatewayprofile::StoragePreference& 
storagePreference)
 {
   int32_t cseqid = this->sync_.generateSeqId();
   ::apache::thrift::async::TConcurrentSendSentry sentry(&this->sync_);
-  oprot_->writeMessageBegin("updateGatewayComputeResourcePreference", 
::apache::thrift::protocol::T_CALL, cseqid);
+  oprot_->writeMessageBegin("updateGatewayStoragePreference", 
::apache::thrift::protocol::T_CALL, cseqid);
 
-  Airavata_updateGatewayComputeResourcePreference_pargs args;
+  Airavata_updateGatewayStoragePreference_pargs args;
+  args.authzToken = &authzToken;
+  args.gatewayID = &gatewayID;
+  args.storageId = &storageId;
+  args.storagePreference = &storagePreference;
+  args.write(oprot_);
+
+  oprot_->writeMessageEnd();
+  oprot_->getTransport()->writeEnd();
+  oprot_->getTransport()->flush();
+
+  sentry.commit();
+  return cseqid;
+}
+
+bool AiravataConcurrentClient::recv_updateGatewayStoragePreference(const 
int32_t seqid)
+{
+
+  int32_t rseqid = 0;
+  std::string fname;
+  ::apache::thrift::protocol::TMessageType mtype;
+
+  // the read mutex gets dropped and reacquired as part of waitForWork()
+  // The destructor of this sentry wakes up other clients
+  ::apache::thrift::async::TConcurrentRecvSentry sentry(&this->sync_, seqid);
+
+  while(true) {
+    if(!this->sync_.getPending(fname, mtype, rseqid)) {
+      iprot_->readMessageBegin(fname, mtype, rseqid);
+    }
+    if(seqid == rseqid) {
+      if (mtype == ::apache::thrift::protocol::T_EXCEPTION) {
+        ::apache::thrift::TApplicationException x;
+        x.read(iprot_);
+        iprot_->readMessageEnd();
+        iprot_->getTransport()->readEnd();
+        sentry.commit();
+        throw x;
+      }
+      if (mtype != ::apache::thrift::protocol::T_REPLY) {
+        iprot_->skip(::apache::thrift::protocol::T_STRUCT);
+        iprot_->readMessageEnd();
+        iprot_->getTransport()->readEnd();
+      }
+      if (fname.compare("updateGatewayStoragePreference") != 0) {
+        iprot_->skip(::apache::thrift::protocol::T_STRUCT);
+        iprot_->readMessageEnd();
+        iprot_->getTransport()->readEnd();
+
+        // in a bad state, don't commit
+        using ::apache::thrift::protocol::TProtocolException;
+        throw TProtocolException(TProtocolException::INVALID_DATA);
+      }
+      bool _return;
+      Airavata_updateGatewayStoragePreference_presult result;
+      result.success = &_return;
+      result.read(iprot_);
+      iprot_->readMessageEnd();
+      iprot_->getTransport()->readEnd();
+
+      if (result.__isset.success) {
+        sentry.commit();
+        return _return;
+      }
+      if (result.__isset.ire) {
+        sentry.commit();
+        throw result.ire;
+      }
+      if (result.__isset.ace) {
+        sentry.commit();
+        throw result.ace;
+      }
+      if (result.__isset.ase) {
+        sentry.commit();
+        throw result.ase;
+      }
+      if (result.__isset.ae) {
+        sentry.commit();
+        throw result.ae;
+      }
+      // in a bad state, don't commit
+      throw 
::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT,
 "updateGatewayStoragePreference failed: unknown result");
+    }
+    // seqid != rseqid
+    this->sync_.updatePending(fname, mtype, rseqid);
+
+    // this will temporarily unlock the readMutex, and let other clients get 
work done
+    this->sync_.waitForWork(seqid);
+  } // end while(true)
+}
+
+bool AiravataConcurrentClient::deleteGatewayComputeResourcePreference(const  
::apache::airavata::model::security::AuthzToken& authzToken, const std::string& 
gatewayID, const std::string& computeResourceId)
+{
+  int32_t seqid = send_deleteGatewayComputeResourcePreference(authzToken, 
gatewayID, computeResourceId);
+  return recv_deleteGatewayComputeResourcePreference(seqid);
+}
+
+int32_t 
AiravataConcurrentClient::send_deleteGatewayComputeResourcePreference(const  
::apache::airavata::model::security::AuthzToken& authzToken, const std::string& 
gatewayID, const std::string& computeResourceId)
+{
+  int32_t cseqid = this->sync_.generateSeqId();
+  ::apache::thrift::async::TConcurrentSendSentry sentry(&this->sync_);
+  oprot_->writeMessageBegin("deleteGatewayComputeResourcePreference", 
::apache::thrift::protocol::T_CALL, cseqid);
+
+  Airavata_deleteGatewayComputeResourcePreference_pargs args;
   args.authzToken = &authzToken;
   args.gatewayID = &gatewayID;
   args.computeResourceId = &computeResourceId;
-  args.computeResourcePreference = &computeResourcePreference;
   args.write(oprot_);
 
   oprot_->writeMessageEnd();
@@ -74285,7 +75374,7 @@ int32_t 
AiravataConcurrentClient::send_updateGatewayComputeResourcePreference(co
   return cseqid;
 }
 
-bool 
AiravataConcurrentClient::recv_updateGatewayComputeResourcePreference(const 
int32_t seqid)
+bool 
AiravataConcurrentClient::recv_deleteGatewayComputeResourcePreference(const 
int32_t seqid)
 {
 
   int32_t rseqid = 0;
@@ -74314,7 +75403,7 @@ bool 
AiravataConcurrentClient::recv_updateGatewayComputeResourcePreference(const
         iprot_->readMessageEnd();
         iprot_->getTransport()->readEnd();
       }
-      if (fname.compare("updateGatewayComputeResourcePreference") != 0) {
+      if (fname.compare("deleteGatewayComputeResourcePreference") != 0) {
         iprot_->skip(::apache::thrift::protocol::T_STRUCT);
         iprot_->readMessageEnd();
         iprot_->getTransport()->readEnd();
@@ -74324,7 +75413,7 @@ bool 
AiravataConcurrentClient::recv_updateGatewayComputeResourcePreference(const
         throw TProtocolException(TProtocolException::INVALID_DATA);
       }
       bool _return;
-      Airavata_updateGatewayComputeResourcePreference_presult result;
+      Airavata_deleteGatewayComputeResourcePreference_presult result;
       result.success = &_return;
       result.read(iprot_);
       iprot_->readMessageEnd();
@@ -74351,7 +75440,7 @@ bool 
AiravataConcurrentClient::recv_updateGatewayComputeResourcePreference(const
         throw result.ae;
       }
       // in a bad state, don't commit
-      throw 
::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT,
 "updateGatewayComputeResourcePreference failed: unknown result");
+      throw 
::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT,
 "deleteGatewayComputeResourcePreference failed: unknown result");
     }
     // seqid != rseqid
     this->sync_.updatePending(fname, mtype, rseqid);
@@ -74361,23 +75450,22 @@ bool 
AiravataConcurrentClient::recv_updateGatewayComputeResourcePreference(const
   } // end while(true)
 }
 
-bool AiravataConcurrentClient::updateGatewayStoragePreference(const  
::apache::airavata::model::security::AuthzToken& authzToken, const std::string& 
gatewayID, const std::string& storageId, const  
::apache::airavata::model::appcatalog::gatewayprofile::StoragePreference& 
storagePreference)
+bool AiravataConcurrentClient::deleteGatewayStoragePreference(const  
::apache::airavata::model::security::AuthzToken& authzToken, const std::string& 
gatewayID, const std::string& storageId)
 {
-  int32_t seqid = send_updateGatewayStoragePreference(authzToken, gatewayID, 
storageId, storagePreference);
-  return recv_updateGatewayStoragePreference(seqid);
+  int32_t seqid = send_deleteGatewayStoragePreference(authzToken, gatewayID, 
storageId);
+  return recv_deleteGatewayStoragePreference(seqid);
 }
 
-int32_t AiravataConcurrentClient::send_updateGatewayStoragePreference(const  
::apache::airavata::model::security::AuthzToken& authzToken, const std::string& 
gatewayID, const std::string& storageId, const  
::apache::airavata::model::appcatalog::gatewayprofile::StoragePreference& 
storagePreference)
+int32_t AiravataConcurrentClient::send_deleteGatewayStoragePreference(const  
::apache::airavata::model::security::AuthzToken& authzToken, const std::string& 
gatewayID, const std::string& storageId)
 {
   int32_t cseqid = this->sync_.generateSeqId();
   ::apache::thrift::async::TConcurrentSendSentry sentry(&this->sync_);
-  oprot_->writeMessageBegin("updateGatewayStoragePreference", 
::apache::thrift::protocol::T_CALL, cseqid);
+  oprot_->writeMessageBegin("deleteGatewayStoragePreference", 
::apache::thrift::protocol::T_CALL, cseqid);
 
-  Airavata_updateGatewayStoragePreference_pargs args;
+  Airavata_deleteGatewayStoragePreference_pargs args;
   args.authzToken = &authzToken;
   args.gatewayID = &gatewayID;
   args.storageId = &storageId;
-  args.storagePreference = &storagePreference;
   args.write(oprot_);
 
   oprot_->writeMessageEnd();
@@ -74388,7 +75476,7 @@ int32_t 
AiravataConcurrentClient::send_updateGatewayStoragePreference(const  ::a
   return cseqid;
 }
 
-bool AiravataConcurrentClient::recv_updateGatewayStoragePreference(const 
int32_t seqid)
+bool AiravataConcurrentClient::recv_deleteGatewayStoragePreference(const 
int32_t seqid)
 {
 
   int32_t rseqid = 0;
@@ -74417,7 +75505,7 @@ bool 
AiravataConcurrentClient::recv_updateGatewayStoragePreference(const int32_t
         iprot_->readMessageEnd();
         iprot_->getTransport()->readEnd();
       }
-      if (fname.compare("updateGatewayStoragePreference") != 0) {
+      if (fname.compare("deleteGatewayStoragePreference") != 0) {
         iprot_->skip(::apache::thrift::protocol::T_STRUCT);
         iprot_->readMessageEnd();
         iprot_->getTransport()->readEnd();
@@ -74427,7 +75515,7 @@ bool 
AiravataConcurrentClient::recv_updateGatewayStoragePreference(const int32_t
         throw TProtocolException(TProtocolException::INVALID_DATA);
       }
       bool _return;
-      Airavata_updateGatewayStoragePreference_presult result;
+      Airavata_deleteGatewayStoragePreference_presult result;
       result.success = &_return;
       result.read(iprot_);
       iprot_->readMessageEnd();
@@ -74454,7 +75542,7 @@ bool 
AiravataConcurrentClient::recv_updateGatewayStoragePreference(const int32_t
         throw result.ae;
       }
       // in a bad state, don't commit
-      throw 
::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT,
 "updateGatewayStoragePreference failed: unknown result");
+      throw 
::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT,
 "deleteGatewayStoragePreference failed: unknown result");
     }
     // seqid != rseqid
     this->sync_.updatePending(fname, mtype, rseqid);
@@ -74464,22 +75552,21 @@ bool 
AiravataConcurrentClient::recv_updateGatewayStoragePreference(const int32_t
   } // end while(true)
 }
 
-bool AiravataConcurrentClient::deleteGatewayComputeResourcePreference(const  
::apache::airavata::model::security::AuthzToken& authzToken, const std::string& 
gatewayID, const std::string& computeResourceId)
+void AiravataConcurrentClient::getAllWorkflows(std::vector<std::string> & 
_return, const  ::apache::airavata::model::security::AuthzToken& authzToken, 
const std::string& gatewayId)
 {
-  int32_t seqid = send_deleteGatewayComputeResourcePreference(authzToken, 
gatewayID, computeResourceId);
-  return recv_deleteGatewayComputeResourcePreference(seqid);
+  int32_t seqid = send_getAllWorkflows(authzToken, gatewayId);
+  recv_getAllWorkflows(_return, seqid);
 }
 
-int32_t 
AiravataConcurrentClient::send_deleteGatewayComputeResourcePreference(const  
::apache::airavata::model::security::AuthzToken& authzToken, const std::string& 
gatewayID, const std::string& computeResourceId)
+int32_t AiravataConcurrentClient::send_getAllWorkflows(const  
::apache::airavata::model::security::AuthzToken& authzToken, const std::string& 
gatewayId)
 {
   int32_t cseqid = this->sync_.generateSeqId();
   ::apache::thrift::async::TConcurrentSendSentry sentry(&this->sync_);
-  oprot_->writeMessageBegin("deleteGatewayComputeResourcePreference", 
::apache::thrift::protocol::T_CALL, cseqid);
+  oprot_->writeMessageBegin("getAllWorkflows", 
::apache::thrift::protocol::T_CALL, cseqid);
 
-  Airavata_deleteGatewayComputeResourcePreference_pargs args;
+  Airavata_getAllWorkflows_pargs args;
   args.authzToken = &authzToken;
-  args.gatewayID = &gatewayID;
-  args.computeResourceId = &computeResourceId;
+  args.gatewayId = &gatewayId;
   args.write(oprot_);
 
   oprot_->writeMessageEnd();
@@ -74490,7 +75577,7 @@ int32_t 
AiravataConcurrentClient::send_deleteGatewayComputeResourcePreference(co
   return cseqid;
 }
 
-bool 
AiravataConcurrentClient::recv_deleteGatewayComputeResourcePreference(const 
int32_t seqid)
+void AiravataConcurrentClient::recv_getAllWorkflows(std::vector<std::string> & 
_return, const int32_t seqid)
 {
 
   int32_t rseqid = 0;
@@ -74519,7 +75606,7 @@ bool 
AiravataConcurrentClient::recv_deleteGatewayComputeResourcePreference(const
         iprot_->readMessageEnd();
         iprot_->getTransport()->readEnd();
       }
-      if (fname.compare("deleteGatewayComputeResourcePreference") != 0) {
+      if (fname.compare("getAllWorkflows") != 0) {
         iprot_->skip(::apache::thrift::protocol::T_STRUCT);
         iprot_->readMessageEnd();
         iprot_->getTransport()->readEnd();
@@ -74528,16 +75615,16 @@ bool 
AiravataConcurrentClient::recv_deleteGatewayComputeResourcePreference(const
         using ::apache::thrift::protocol::TProtocolException;
         throw TProtocolException(TProtocolException::INVALID_DATA);
       }
-      bool _return;
-      Airavata_deleteGatewayComputeResourcePreference_presult result;
+      Airavata_getAllWorkflows_presult result;
       result.success = &_return;
       result.read(iprot_);
       iprot_->readMessageEnd();
       iprot_->getTransport()->readEnd();
 
       if (result.__isset.success) {
+        // _return pointer has now been filled
         sentry.commit();
-        return _return;
+        return;
       }
       if (result.__isset.ire) {
         sentry.commit();
@@ -74556,7 +75643,7 @@ bool 
AiravataConcurrentClient::recv_deleteGatewayComputeResourcePreference(const
         throw result.ae;
       }
       // in a bad state, don't commit
-      throw 
::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT,
 "deleteGatewayComputeResourcePreference failed: unknown result");
+      throw 
::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT,
 "getAllWorkflows failed: unknown result");
     }
     // seqid != rseqid
     this->sync_.updatePending(fname, mtype, rseqid);
@@ -74566,22 +75653,21 @@ bool 
AiravataConcurrentClient::recv_deleteGatewayComputeResourcePreference(const
   } // end while(true)
 }
 
-bool AiravataConcurrentClient::deleteGatewayStoragePreference(const  
::apache::airavata::model::security::AuthzToken& authzToken, const std::string& 
gatewayID, const std::string& storageId)
+void AiravataConcurrentClient::getWorkflow( ::WorkflowModel& _return, const  
::apache::airavata::model::security::AuthzToken& authzToken, const std::string& 
workflowTemplateId)
 {
-  int32_t seqid = send_deleteGatewayStoragePreference(authzToken, gatewayID, 
storageId);
-  return recv_deleteGatewayStoragePreference(seqid);
+  int32_t seqid = send_getWorkflow(authzToken, workflowTemplateId);
+  recv_getWorkflow(_return, seqid);
 }
 
-int32_t AiravataConcurrentClient::send_deleteGatewayStoragePreference(const  
::apache::airavata::model::security::AuthzToken& authzToken, const std::string& 
gatewayID, const std::string& storageId)
+int32_t AiravataConcurrentClient::send_getWorkflow(const  
::apache::airavata::model::security::AuthzToken& authzToken, const std::string& 
workflowTemplateId)
 {
   int32_t cseqid = this->sync_.generateSeqId();
   ::apache::thrift::async::TConcurrentSendSentry sentry(&this->sync_);
-  oprot_->writeMessageBegin("deleteGatewayStoragePreference", 
::apache::thrift::protocol::T_CALL, cseqid);
+  oprot_->writeMessageBegin("getWorkflow", ::apache::thrift::protocol::T_CALL, 
cseqid);
 
-  Airavata_deleteGatewayStoragePreference_pargs args;
+  Airavata_getWorkflow_pargs args;
   args.authzToken = &authzToken;
-  args.gatewayID = &gatewayID;
-  args.storageId = &storageId;
+  args.workflowTemplateId = &workflowTemplateId;
   args.write(oprot_);
 
   oprot_->writeMessageEnd();
@@ -74592,7 +75678,7 @@ int32_t 
AiravataConcurrentClient::send_deleteGatewayStoragePreference(const  ::a
   return cseqid;
 }
 
-bool AiravataConcurrentClient::recv_deleteGatewayStoragePreference(const 
int32_t seqid)
+void AiravataConcurrentClient::recv_getWorkflow( ::WorkflowModel& _return, 
const int32_t seqid)
 {
 
   int32_t rseqid = 0;
@@ -74621,7 +75707,7 @@ bool 
AiravataConcurrentClient::recv_deleteGatewayStoragePreference(const int32_t
         iprot_->readMessageEnd();
         iprot_->getTransport()->readEnd();
       }
-      if (fname.compare("deleteGatewayStoragePreference") != 0) {
+      if (fname.compare("getWorkflow") != 0) {
         iprot_->skip(::apache::thrift::protocol::T_STRUCT);
         iprot_->readMessageEnd();
         iprot_->getTransport()->readEnd();
@@ -74630,16 +75716,16 @@ bool 
AiravataConcurrentClient::recv_deleteGatewayStoragePreference(const int32_t
         using ::apache::thrift::protocol::TProtocolException;
         throw TProtocolException(TProtocolException::INVALID_DATA);
       }
-      bool _return;
-      Airavata_deleteGatewayStoragePreference_presult result;
+      Airavata_getWorkflow_presult result;
       result.success = &_return;
       result.read(iprot_);
       iprot_->readMessageEnd();
       iprot_->getTransport()->readEnd();
 
       if (result.__isset.success) {
+        // _return pointer has now been filled
         sentry.commit();
-        return _return;
+        return;
       }
       if (result.__isset.ire) {
         sentry.commit();
@@ -74658,7 +75744,7 @@ bool 
AiravataConcurrentClient::recv_deleteGatewayStoragePreference(const int32_t
         throw result.ae;
       }
       // in a bad state, don't commit
-      throw 
::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT,
 "deleteGatewayStoragePreference failed: unknown result");
+      throw 
::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT,
 "getWorkflow failed: unknown result");
     }
     // seqid != rseqid
     this->sync_.updatePending(fname, mtype, rseqid);
@@ -74668,21 +75754,21 @@ bool 
AiravataConcurrentClient::recv_deleteGatewayStoragePreference(const int32_t
   } // end while(true)
 }
 
-void AiravataConcurrentClient::getAllWorkflows(std::vector<std::string> & 
_return, const  ::apache::airavata::model::security::AuthzToken& authzToken, 
const std::string& gatewayId)
+void AiravataConcurrentClient::deleteWorkflow(const  
::apache::airavata::model::security::AuthzToken& authzToken, const std::string& 
workflowTemplateId)
 {
-  int32_t seqid = send_getAllWorkflows(authzToken, gatewayId);
-  recv_getAllWorkflows(_return, seqid);
+  int32_t seqid = send_deleteWorkflow(authzToken, workflowTemplateId);
+  recv_deleteWorkflow(seqid);
 }
 
-int32_t AiravataConcurrentClient::send_getAllWorkflows(const  
::apache::airavata::model::security::AuthzToken& authzToken, const std::string& 
gatewayId)
+int32_t AiravataConcurrentClient::send_deleteWorkflow(const  
::apache::airavata::model::security::AuthzToken& authzToken, const std::string& 
workflowTemplateId)
 {
   int32_t cseqid = this->sync_.generateSeqId();
   ::apache::thrift::async::TConcurrentSendSentry sentry(&this->sync_);
-  oprot_->writeMessageBegin("getAllWorkflows", 
::apache::thrift::protocol::T_CALL, cseqid);
+  oprot_->writeMessageBegin("deleteWorkflow", 
::apache::thrift::protocol::T_CALL, cseqid);
 
-  Airavata_getAllWorkflows_pargs args;
+  Airavata_deleteWorkflow_pargs args;
   args.authzToken = &authzToken;
-  args.gatewayId = &gatewayId;
+  args.workflowTemplateId = &workflowTemplateId;
   args.write(oprot_);
 
   oprot_->writeMessageEnd();
@@ -74693,7 +75779,7 @@ int32_t 
AiravataConcurrentClient::send_getAllWorkflows(const  ::apache::airavata
   return cseqid;
 }
 
-void AiravataConcurrentClient::recv_getAllWorkflows(std::vector<std::string> & 
_return, const int32_t seqid)
+void AiravataConcurrentClient::recv_deleteWorkflow(const int32_t seqid)
 {
 
   int32_t rseqid = 0;
@@ -74722,7 +75808,7 @@ void 
AiravataConcurrentClient::recv_getAllWorkflows(std::vector<std::string> & _
         iprot_->readMessageEnd();
         iprot_->getTransport()->readEnd();
       }
-      if (fname.compare("getAllWorkflows") != 0) {
+      if (fname.compare("deleteWorkflow") != 0) {
         iprot_->skip(::apache::thrift::protocol::T_STRUCT);
         iprot_->readMessageEnd();
         iprot_->getTransport()->readEnd();
@@ -74731,17 +75817,11 @@ void 
AiravataConcurrentClient::recv_getAllWorkflows(std::vector<std::string> & _
         using ::apache::thrift::protocol::TProtocolException;
         throw TProtocolException(TProtocolException::INVALID_DATA);
       }
-      Airavata_getAllWorkflows_presult result;
-      result.success = &_return;
+      Airavata_deleteWorkflow_presult result;
       result.read(iprot_);
       iprot_->readMessageEnd();
       iprot_->getTransport()->readEnd();
 
-      if (result.__isset.success) {
-        // _return pointer has now been filled
-        sentry.commit();
-        return;
-      }
       if (result.__isset.ire) {
         sentry.commit();
         throw result.ire;
@@ -74758,8 +75838,8 @@ void 
AiravataConcurrentClient::recv_getAllWorkflows(std::vector<std::string> & _
         sentry.commit();
         throw result.ae;
       }
-      // in a bad state, don't commit
-      throw 
::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT,
 "getAllWorkflows failed: unknown result");
+      sentry.commit();
+      return;
     }
     // seqid != rseqid
     this->sync_.updatePending(fname, mtype, rseqid);
@@ -74769,21 +75849,22 @@ void 
AiravataConcurrentClient::recv_getAllWorkflows(std::vector<std::string> & _
   } // end while(true)
 }
 
-void AiravataConcurrentClient::getWorkflow( ::WorkflowModel& _return, const  
::apache::airavata::model::security::AuthzToken& authzToken, const std::string& 
workflowTemplateId)
+void AiravataConcurrentClient::registerWorkflow(std::string& _return, const  
::apache::airavata::model::security::AuthzToken& authzToken, const std::string& 
gatewayId, const  ::WorkflowModel& workflow)
 {
-  int32_t seqid = send_getWorkflow(authzToken, workflowTemplateId);
-  recv_getWorkflow(_return, seqid);
+  int32_t seqid = send_registerWorkflow(authzToken, gatewayId, workflow);
+  recv_registerWorkflow(_return, seqid);
 }
 
-int32_t AiravataConcurrentClient::send_getWorkflow(const  
::apache::airavata::model::security::AuthzToken& authzToken, const std::string& 
workflowTemplateId)
+int32_t AiravataConcurrentClient::send_registerWorkflow(const  
::apache::airavata::model::security::AuthzToken& authzToken, const std::string& 
gatewayId, const  ::WorkflowModel& workflow)
 {
   int32_t cseqid = this->sync_.generateSeqId();
   ::apache::thrift::async::TConcurrentSendSentry sentry(&this->sync_);
-  oprot_->writeMessageBegin("getWorkflow", ::apache::thrift::protocol::T_CALL, 
cseqid);
+  oprot_->writeMessageBegin("registerWorkflow", 
::apache::thrift::protocol::T_CALL, cseqid);
 
-  Airavata_getWorkflow_pargs args;
+  Airavata_registerWorkflow_pargs args;
   args.authzToken = &authzToken;
-  args.workflowTemplateId = &workflowTemplateId;
+  args.gatewayId = &gatewayId;
+  args.workflow = &workflow;
   args.write(oprot_);
 
   oprot_->writeMessageEnd();
@@ -74794,7 +75875,7 @@ int32_t 
AiravataConcurrentClient::send_getWorkflow(const  ::apache::airavata::mo
   return cseqid;
 }
 
-void AiravataConcurrentClient::recv_getWorkflow( ::WorkflowModel& _return, 
const int32_t seqid)
+void AiravataConcurrentClient::recv_registerWorkflow(std::string& _return, 
const int32_t seqid)
 {
 
   int32_t rseqid = 0;
@@ -74823,7 +75904,7 @@ void AiravataConcurrentClient::recv_getWorkflow( 
::WorkflowModel& _return, const
         iprot_->readMessageEnd();
         iprot_->getTransport()->readEnd();
       }
-      if (fname.compare("getWorkflow") != 0) {
+      if (fname.compare("registerWorkflow") != 0) {
         iprot_->skip(::apache::thrift::protocol::T_STRUCT);
         iprot_->readMessageEnd();
         iprot_->getTransport()->readEnd();
@@ -74832,7 +75913,7 @@ void AiravataConcurrentClient::recv_getWorkflow( 
::WorkflowModel& _return, const
 

<TRUNCATED>

Reply via email to