You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by sc...@apache.org on 2016/10/04 16:01:06 UTC

[3/5] airavata git commit: api method get data sharing enabled

http://git-wip-us.apache.org/repos/asf/airavata/blob/33c02518/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 c77fd8b..cac0f48 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
@@ -46213,6 +46213,252 @@ uint32_t Airavata_getAllGroupsUserBelongs_presult::read(::apache::thrift::protoc
   return xfer;
 }
 
+
+Airavata_isDataSharingEnabled_args::~Airavata_isDataSharingEnabled_args() throw() {
+}
+
+
+uint32_t Airavata_isDataSharingEnabled_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;
+
+
+  while (true)
+  {
+    xfer += iprot->readFieldBegin(fname, ftype, fid);
+    if (ftype == ::apache::thrift::protocol::T_STOP) {
+      break;
+    }
+    xfer += iprot->skip(ftype);
+    xfer += iprot->readFieldEnd();
+  }
+
+  xfer += iprot->readStructEnd();
+
+  return xfer;
+}
+
+uint32_t Airavata_isDataSharingEnabled_args::write(::apache::thrift::protocol::TProtocol* oprot) const {
+  uint32_t xfer = 0;
+  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
+  xfer += oprot->writeStructBegin("Airavata_isDataSharingEnabled_args");
+
+  xfer += oprot->writeFieldStop();
+  xfer += oprot->writeStructEnd();
+  return xfer;
+}
+
+
+Airavata_isDataSharingEnabled_pargs::~Airavata_isDataSharingEnabled_pargs() throw() {
+}
+
+
+uint32_t Airavata_isDataSharingEnabled_pargs::write(::apache::thrift::protocol::TProtocol* oprot) const {
+  uint32_t xfer = 0;
+  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
+  xfer += oprot->writeStructBegin("Airavata_isDataSharingEnabled_pargs");
+
+  xfer += oprot->writeFieldStop();
+  xfer += oprot->writeStructEnd();
+  return xfer;
+}
+
+
+Airavata_isDataSharingEnabled_result::~Airavata_isDataSharingEnabled_result() throw() {
+}
+
+
+uint32_t Airavata_isDataSharingEnabled_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_BOOL) {
+          xfer += iprot->readBool(this->success);
+          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_isDataSharingEnabled_result::write(::apache::thrift::protocol::TProtocol* oprot) const {
+
+  uint32_t xfer = 0;
+
+  xfer += oprot->writeStructBegin("Airavata_isDataSharingEnabled_result");
+
+  if (this->__isset.success) {
+    xfer += oprot->writeFieldBegin("success", ::apache::thrift::protocol::T_BOOL, 0);
+    xfer += oprot->writeBool(this->success);
+    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_isDataSharingEnabled_presult::~Airavata_isDataSharingEnabled_presult() throw() {
+}
+
+
+uint32_t Airavata_isDataSharingEnabled_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_BOOL) {
+          xfer += iprot->readBool((*(this->success)));
+          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);
@@ -56866,6 +57112,75 @@ void AiravataClient::recv_getAllGroupsUserBelongs(std::vector< ::apache::airavat
   throw ::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT, "getAllGroupsUserBelongs failed: unknown result");
 }
 
+bool AiravataClient::isDataSharingEnabled()
+{
+  send_isDataSharingEnabled();
+  return recv_isDataSharingEnabled();
+}
+
+void AiravataClient::send_isDataSharingEnabled()
+{
+  int32_t cseqid = 0;
+  oprot_->writeMessageBegin("isDataSharingEnabled", ::apache::thrift::protocol::T_CALL, cseqid);
+
+  Airavata_isDataSharingEnabled_pargs args;
+  args.write(oprot_);
+
+  oprot_->writeMessageEnd();
+  oprot_->getTransport()->writeEnd();
+  oprot_->getTransport()->flush();
+}
+
+bool AiravataClient::recv_isDataSharingEnabled()
+{
+
+  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("isDataSharingEnabled") != 0) {
+    iprot_->skip(::apache::thrift::protocol::T_STRUCT);
+    iprot_->readMessageEnd();
+    iprot_->getTransport()->readEnd();
+  }
+  bool _return;
+  Airavata_isDataSharingEnabled_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, "isDataSharingEnabled 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) {
   ProcessMap::iterator pfn;
   pfn = processMap_.find(fname);
@@ -66720,6 +67035,72 @@ void AiravataProcessor::process_getAllGroupsUserBelongs(int32_t seqid, ::apache:
   }
 }
 
+void AiravataProcessor::process_isDataSharingEnabled(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.isDataSharingEnabled", callContext);
+  }
+  ::apache::thrift::TProcessorContextFreer freer(this->eventHandler_.get(), ctx, "Airavata.isDataSharingEnabled");
+
+  if (this->eventHandler_.get() != NULL) {
+    this->eventHandler_->preRead(ctx, "Airavata.isDataSharingEnabled");
+  }
+
+  Airavata_isDataSharingEnabled_args args;
+  args.read(iprot);
+  iprot->readMessageEnd();
+  uint32_t bytes = iprot->getTransport()->readEnd();
+
+  if (this->eventHandler_.get() != NULL) {
+    this->eventHandler_->postRead(ctx, "Airavata.isDataSharingEnabled", bytes);
+  }
+
+  Airavata_isDataSharingEnabled_result result;
+  try {
+    result.success = iface_->isDataSharingEnabled();
+    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.isDataSharingEnabled");
+    }
+
+    ::apache::thrift::TApplicationException x(e.what());
+    oprot->writeMessageBegin("isDataSharingEnabled", ::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.isDataSharingEnabled");
+  }
+
+  oprot->writeMessageBegin("isDataSharingEnabled", ::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.isDataSharingEnabled", 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);
@@ -81845,5 +82226,104 @@ void AiravataConcurrentClient::recv_getAllGroupsUserBelongs(std::vector< ::apach
   } // end while(true)
 }
 
+bool AiravataConcurrentClient::isDataSharingEnabled()
+{
+  int32_t seqid = send_isDataSharingEnabled();
+  return recv_isDataSharingEnabled(seqid);
+}
+
+int32_t AiravataConcurrentClient::send_isDataSharingEnabled()
+{
+  int32_t cseqid = this->sync_.generateSeqId();
+  ::apache::thrift::async::TConcurrentSendSentry sentry(&this->sync_);
+  oprot_->writeMessageBegin("isDataSharingEnabled", ::apache::thrift::protocol::T_CALL, cseqid);
+
+  Airavata_isDataSharingEnabled_pargs args;
+  args.write(oprot_);
+
+  oprot_->writeMessageEnd();
+  oprot_->getTransport()->writeEnd();
+  oprot_->getTransport()->flush();
+
+  sentry.commit();
+  return cseqid;
+}
+
+bool AiravataConcurrentClient::recv_isDataSharingEnabled(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("isDataSharingEnabled") != 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_isDataSharingEnabled_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, "isDataSharingEnabled 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)
+}
+
 }}} // namespace
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/33c02518/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/Airavata.h
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/Airavata.h b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/Airavata.h
index 01b85ae..b0b0e05 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/Airavata.h
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/Airavata.h
@@ -2488,6 +2488,7 @@ class AiravataIf {
   virtual bool deleteGroup(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& groupId, const std::string& ownerId, const std::string& gatewayId) = 0;
   virtual void getGroup( ::apache::airavata::model::group::GroupModel& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& groupId) = 0;
   virtual void getAllGroupsUserBelongs(std::vector< ::apache::airavata::model::group::GroupModel> & _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& userName, const std::string& gatewayId) = 0;
+  virtual bool isDataSharingEnabled() = 0;
 };
 
 class AiravataIfFactory {
@@ -3016,6 +3017,10 @@ class AiravataNull : virtual public AiravataIf {
   void getAllGroupsUserBelongs(std::vector< ::apache::airavata::model::group::GroupModel> & /* _return */, const  ::apache::airavata::model::security::AuthzToken& /* authzToken */, const std::string& /* userName */, const std::string& /* gatewayId */) {
     return;
   }
+  bool isDataSharingEnabled() {
+    bool _return = false;
+    return _return;
+  }
 };
 
 
@@ -23918,6 +23923,130 @@ class Airavata_getAllGroupsUserBelongs_presult {
 
 };
 
+
+class Airavata_isDataSharingEnabled_args {
+ public:
+
+  Airavata_isDataSharingEnabled_args(const Airavata_isDataSharingEnabled_args&);
+  Airavata_isDataSharingEnabled_args& operator=(const Airavata_isDataSharingEnabled_args&);
+  Airavata_isDataSharingEnabled_args() {
+  }
+
+  virtual ~Airavata_isDataSharingEnabled_args() throw();
+
+  bool operator == (const Airavata_isDataSharingEnabled_args & /* rhs */) const
+  {
+    return true;
+  }
+  bool operator != (const Airavata_isDataSharingEnabled_args &rhs) const {
+    return !(*this == rhs);
+  }
+
+  bool operator < (const Airavata_isDataSharingEnabled_args & ) const;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+};
+
+
+class Airavata_isDataSharingEnabled_pargs {
+ public:
+
+
+  virtual ~Airavata_isDataSharingEnabled_pargs() throw();
+
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+};
+
+typedef struct _Airavata_isDataSharingEnabled_result__isset {
+  _Airavata_isDataSharingEnabled_result__isset() : success(false), ire(false), ace(false), ase(false), ae(false) {}
+  bool success :1;
+  bool ire :1;
+  bool ace :1;
+  bool ase :1;
+  bool ae :1;
+} _Airavata_isDataSharingEnabled_result__isset;
+
+class Airavata_isDataSharingEnabled_result {
+ public:
+
+  Airavata_isDataSharingEnabled_result(const Airavata_isDataSharingEnabled_result&);
+  Airavata_isDataSharingEnabled_result& operator=(const Airavata_isDataSharingEnabled_result&);
+  Airavata_isDataSharingEnabled_result() : success(0) {
+  }
+
+  virtual ~Airavata_isDataSharingEnabled_result() throw();
+  bool success;
+   ::apache::airavata::api::error::InvalidRequestException ire;
+   ::apache::airavata::api::error::AiravataClientException ace;
+   ::apache::airavata::api::error::AiravataSystemException ase;
+   ::apache::airavata::api::error::AuthorizationException ae;
+
+  _Airavata_isDataSharingEnabled_result__isset __isset;
+
+  void __set_success(const bool val);
+
+  void __set_ire(const  ::apache::airavata::api::error::InvalidRequestException& val);
+
+  void __set_ace(const  ::apache::airavata::api::error::AiravataClientException& val);
+
+  void __set_ase(const  ::apache::airavata::api::error::AiravataSystemException& val);
+
+  void __set_ae(const  ::apache::airavata::api::error::AuthorizationException& val);
+
+  bool operator == (const Airavata_isDataSharingEnabled_result & rhs) const
+  {
+    if (!(success == rhs.success))
+      return false;
+    if (!(ire == rhs.ire))
+      return false;
+    if (!(ace == rhs.ace))
+      return false;
+    if (!(ase == rhs.ase))
+      return false;
+    if (!(ae == rhs.ae))
+      return false;
+    return true;
+  }
+  bool operator != (const Airavata_isDataSharingEnabled_result &rhs) const {
+    return !(*this == rhs);
+  }
+
+  bool operator < (const Airavata_isDataSharingEnabled_result & ) const;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+};
+
+typedef struct _Airavata_isDataSharingEnabled_presult__isset {
+  _Airavata_isDataSharingEnabled_presult__isset() : success(false), ire(false), ace(false), ase(false), ae(false) {}
+  bool success :1;
+  bool ire :1;
+  bool ace :1;
+  bool ase :1;
+  bool ae :1;
+} _Airavata_isDataSharingEnabled_presult__isset;
+
+class Airavata_isDataSharingEnabled_presult {
+ public:
+
+
+  virtual ~Airavata_isDataSharingEnabled_presult() throw();
+  bool* success;
+   ::apache::airavata::api::error::InvalidRequestException ire;
+   ::apache::airavata::api::error::AiravataClientException ace;
+   ::apache::airavata::api::error::AiravataSystemException ase;
+   ::apache::airavata::api::error::AuthorizationException ae;
+
+  _Airavata_isDataSharingEnabled_presult__isset __isset;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+
+};
+
 class AiravataClient : virtual public AiravataIf {
  public:
   AiravataClient(boost::shared_ptr< ::apache::thrift::protocol::TProtocol> prot) {
@@ -24390,6 +24519,9 @@ class AiravataClient : virtual public AiravataIf {
   void getAllGroupsUserBelongs(std::vector< ::apache::airavata::model::group::GroupModel> & _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& userName, const std::string& gatewayId);
   void send_getAllGroupsUserBelongs(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& userName, const std::string& gatewayId);
   void recv_getAllGroupsUserBelongs(std::vector< ::apache::airavata::model::group::GroupModel> & _return);
+  bool isDataSharingEnabled();
+  void send_isDataSharingEnabled();
+  bool recv_isDataSharingEnabled();
  protected:
   boost::shared_ptr< ::apache::thrift::protocol::TProtocol> piprot_;
   boost::shared_ptr< ::apache::thrift::protocol::TProtocol> poprot_;
@@ -24554,6 +24686,7 @@ class AiravataProcessor : public ::apache::thrift::TDispatchProcessor {
   void process_deleteGroup(int32_t seqid, ::apache::thrift::protocol::TProtocol* iprot, ::apache::thrift::protocol::TProtocol* oprot, void* callContext);
   void process_getGroup(int32_t seqid, ::apache::thrift::protocol::TProtocol* iprot, ::apache::thrift::protocol::TProtocol* oprot, void* callContext);
   void process_getAllGroupsUserBelongs(int32_t seqid, ::apache::thrift::protocol::TProtocol* iprot, ::apache::thrift::protocol::TProtocol* oprot, void* callContext);
+  void process_isDataSharingEnabled(int32_t seqid, ::apache::thrift::protocol::TProtocol* iprot, ::apache::thrift::protocol::TProtocol* oprot, void* callContext);
  public:
   AiravataProcessor(boost::shared_ptr<AiravataIf> iface) :
     iface_(iface) {
@@ -24706,6 +24839,7 @@ class AiravataProcessor : public ::apache::thrift::TDispatchProcessor {
     processMap_["deleteGroup"] = &AiravataProcessor::process_deleteGroup;
     processMap_["getGroup"] = &AiravataProcessor::process_getGroup;
     processMap_["getAllGroupsUserBelongs"] = &AiravataProcessor::process_getAllGroupsUserBelongs;
+    processMap_["isDataSharingEnabled"] = &AiravataProcessor::process_isDataSharingEnabled;
   }
 
   virtual ~AiravataProcessor() {}
@@ -26164,6 +26298,15 @@ class AiravataMultiface : virtual public AiravataIf {
     return;
   }
 
+  bool isDataSharingEnabled() {
+    size_t sz = ifaces_.size();
+    size_t i = 0;
+    for (; i < (sz - 1); ++i) {
+      ifaces_[i]->isDataSharingEnabled();
+    }
+    return ifaces_[i]->isDataSharingEnabled();
+  }
+
 };
 
 // The 'concurrent' client is a thread safe client that correctly handles
@@ -26641,6 +26784,9 @@ class AiravataConcurrentClient : virtual public AiravataIf {
   void getAllGroupsUserBelongs(std::vector< ::apache::airavata::model::group::GroupModel> & _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& userName, const std::string& gatewayId);
   int32_t send_getAllGroupsUserBelongs(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& userName, const std::string& gatewayId);
   void recv_getAllGroupsUserBelongs(std::vector< ::apache::airavata::model::group::GroupModel> & _return, const int32_t seqid);
+  bool isDataSharingEnabled();
+  int32_t send_isDataSharingEnabled();
+  bool recv_isDataSharingEnabled(const int32_t seqid);
  protected:
   boost::shared_ptr< ::apache::thrift::protocol::TProtocol> piprot_;
   boost::shared_ptr< ::apache::thrift::protocol::TProtocol> poprot_;

http://git-wip-us.apache.org/repos/asf/airavata/blob/33c02518/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/Airavata_server.skeleton.cpp
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/Airavata_server.skeleton.cpp b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/Airavata_server.skeleton.cpp
index 4fcd5b1..43974da 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/Airavata_server.skeleton.cpp
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/Airavata_server.skeleton.cpp
@@ -2964,6 +2964,11 @@ class AiravataHandler : virtual public AiravataIf {
     printf("getAllGroupsUserBelongs\n");
   }
 
+  bool isDataSharingEnabled() {
+    // Your implementation goes here
+    printf("isDataSharingEnabled\n");
+  }
+
 };
 
 int main(int argc, char **argv) {

http://git-wip-us.apache.org/repos/asf/airavata/blob/33c02518/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/job_model_types.cpp
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/job_model_types.cpp b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/job_model_types.cpp
index b411913..bb86531 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/job_model_types.cpp
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/job_model_types.cpp
@@ -56,9 +56,9 @@ void JobModel::__set_creationTime(const int64_t val) {
 __isset.creationTime = true;
 }
 
-void JobModel::__set_jobStatus(const std::vector< ::apache::airavata::model::status::JobStatus> & val) {
-  this->jobStatus = val;
-__isset.jobStatus = true;
+void JobModel::__set_jobStatuses(const std::vector< ::apache::airavata::model::status::JobStatus> & val) {
+  this->jobStatuses = val;
+__isset.jobStatuses = true;
 }
 
 void JobModel::__set_computeResourceConsumed(const std::string& val) {
@@ -159,19 +159,19 @@ uint32_t JobModel::read(::apache::thrift::protocol::TProtocol* iprot) {
       case 6:
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
-            this->jobStatus.clear();
+            this->jobStatuses.clear();
             uint32_t _size0;
             ::apache::thrift::protocol::TType _etype3;
             xfer += iprot->readListBegin(_etype3, _size0);
-            this->jobStatus.resize(_size0);
+            this->jobStatuses.resize(_size0);
             uint32_t _i4;
             for (_i4 = 0; _i4 < _size0; ++_i4)
             {
-              xfer += this->jobStatus[_i4].read(iprot);
+              xfer += this->jobStatuses[_i4].read(iprot);
             }
             xfer += iprot->readListEnd();
           }
-          this->__isset.jobStatus = true;
+          this->__isset.jobStatuses = true;
         } else {
           xfer += iprot->skip(ftype);
         }
@@ -270,12 +270,12 @@ uint32_t JobModel::write(::apache::thrift::protocol::TProtocol* oprot) const {
     xfer += oprot->writeI64(this->creationTime);
     xfer += oprot->writeFieldEnd();
   }
-  if (this->__isset.jobStatus) {
-    xfer += oprot->writeFieldBegin("jobStatus", ::apache::thrift::protocol::T_LIST, 6);
+  if (this->__isset.jobStatuses) {
+    xfer += oprot->writeFieldBegin("jobStatuses", ::apache::thrift::protocol::T_LIST, 6);
     {
-      xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->jobStatus.size()));
+      xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->jobStatuses.size()));
       std::vector< ::apache::airavata::model::status::JobStatus> ::const_iterator _iter5;
-      for (_iter5 = this->jobStatus.begin(); _iter5 != this->jobStatus.end(); ++_iter5)
+      for (_iter5 = this->jobStatuses.begin(); _iter5 != this->jobStatuses.end(); ++_iter5)
       {
         xfer += (*_iter5).write(oprot);
       }
@@ -325,7 +325,7 @@ void swap(JobModel &a, JobModel &b) {
   swap(a.processId, b.processId);
   swap(a.jobDescription, b.jobDescription);
   swap(a.creationTime, b.creationTime);
-  swap(a.jobStatus, b.jobStatus);
+  swap(a.jobStatuses, b.jobStatuses);
   swap(a.computeResourceConsumed, b.computeResourceConsumed);
   swap(a.jobName, b.jobName);
   swap(a.workingDir, b.workingDir);
@@ -341,7 +341,7 @@ JobModel::JobModel(const JobModel& other6) {
   processId = other6.processId;
   jobDescription = other6.jobDescription;
   creationTime = other6.creationTime;
-  jobStatus = other6.jobStatus;
+  jobStatuses = other6.jobStatuses;
   computeResourceConsumed = other6.computeResourceConsumed;
   jobName = other6.jobName;
   workingDir = other6.workingDir;
@@ -356,7 +356,7 @@ JobModel& JobModel::operator=(const JobModel& other7) {
   processId = other7.processId;
   jobDescription = other7.jobDescription;
   creationTime = other7.creationTime;
-  jobStatus = other7.jobStatus;
+  jobStatuses = other7.jobStatuses;
   computeResourceConsumed = other7.computeResourceConsumed;
   jobName = other7.jobName;
   workingDir = other7.workingDir;
@@ -374,7 +374,7 @@ void JobModel::printTo(std::ostream& out) const {
   out << ", " << "processId=" << to_string(processId);
   out << ", " << "jobDescription=" << to_string(jobDescription);
   out << ", " << "creationTime="; (__isset.creationTime ? (out << to_string(creationTime)) : (out << "<null>"));
-  out << ", " << "jobStatus="; (__isset.jobStatus ? (out << to_string(jobStatus)) : (out << "<null>"));
+  out << ", " << "jobStatuses="; (__isset.jobStatuses ? (out << to_string(jobStatuses)) : (out << "<null>"));
   out << ", " << "computeResourceConsumed="; (__isset.computeResourceConsumed ? (out << to_string(computeResourceConsumed)) : (out << "<null>"));
   out << ", " << "jobName="; (__isset.jobName ? (out << to_string(jobName)) : (out << "<null>"));
   out << ", " << "workingDir="; (__isset.workingDir ? (out << to_string(workingDir)) : (out << "<null>"));

http://git-wip-us.apache.org/repos/asf/airavata/blob/33c02518/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/job_model_types.h
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/job_model_types.h b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/job_model_types.h
index 00ba9fe..6e4fa48 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/job_model_types.h
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/job_model_types.h
@@ -40,9 +40,9 @@ namespace apache { namespace airavata { namespace model { namespace job {
 class JobModel;
 
 typedef struct _JobModel__isset {
-  _JobModel__isset() : creationTime(false), jobStatus(false), computeResourceConsumed(false), jobName(false), workingDir(false), stdOut(false), stdErr(false), exitCode(false) {}
+  _JobModel__isset() : creationTime(false), jobStatuses(false), computeResourceConsumed(false), jobName(false), workingDir(false), stdOut(false), stdErr(false), exitCode(false) {}
   bool creationTime :1;
-  bool jobStatus :1;
+  bool jobStatuses :1;
   bool computeResourceConsumed :1;
   bool jobName :1;
   bool workingDir :1;
@@ -65,7 +65,7 @@ class JobModel {
   std::string processId;
   std::string jobDescription;
   int64_t creationTime;
-  std::vector< ::apache::airavata::model::status::JobStatus>  jobStatus;
+  std::vector< ::apache::airavata::model::status::JobStatus>  jobStatuses;
   std::string computeResourceConsumed;
   std::string jobName;
   std::string workingDir;
@@ -85,7 +85,7 @@ class JobModel {
 
   void __set_creationTime(const int64_t val);
 
-  void __set_jobStatus(const std::vector< ::apache::airavata::model::status::JobStatus> & val);
+  void __set_jobStatuses(const std::vector< ::apache::airavata::model::status::JobStatus> & val);
 
   void __set_computeResourceConsumed(const std::string& val);
 
@@ -113,9 +113,9 @@ class JobModel {
       return false;
     else if (__isset.creationTime && !(creationTime == rhs.creationTime))
       return false;
-    if (__isset.jobStatus != rhs.__isset.jobStatus)
+    if (__isset.jobStatuses != rhs.__isset.jobStatuses)
       return false;
-    else if (__isset.jobStatus && !(jobStatus == rhs.jobStatus))
+    else if (__isset.jobStatuses && !(jobStatuses == rhs.jobStatuses))
       return false;
     if (__isset.computeResourceConsumed != rhs.__isset.computeResourceConsumed)
       return false;

http://git-wip-us.apache.org/repos/asf/airavata/blob/33c02518/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/process_model_types.cpp
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/process_model_types.cpp b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/process_model_types.cpp
index 8135174..1f72625 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/process_model_types.cpp
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/process_model_types.cpp
@@ -53,9 +53,9 @@ void ProcessModel::__set_lastUpdateTime(const int64_t val) {
 __isset.lastUpdateTime = true;
 }
 
-void ProcessModel::__set_processStatus(const std::vector< ::apache::airavata::model::status::ProcessStatus> & val) {
-  this->processStatus = val;
-__isset.processStatus = true;
+void ProcessModel::__set_processStatuses(const std::vector< ::apache::airavata::model::status::ProcessStatus> & val) {
+  this->processStatuses = val;
+__isset.processStatuses = true;
 }
 
 void ProcessModel::__set_processDetail(const std::string& val) {
@@ -103,9 +103,9 @@ void ProcessModel::__set_taskDag(const std::string& val) {
 __isset.taskDag = true;
 }
 
-void ProcessModel::__set_processError(const std::vector< ::apache::airavata::model::commons::ErrorModel> & val) {
-  this->processError = val;
-__isset.processError = true;
+void ProcessModel::__set_processErrors(const std::vector< ::apache::airavata::model::commons::ErrorModel> & val) {
+  this->processErrors = val;
+__isset.processErrors = true;
 }
 
 void ProcessModel::__set_gatewayExecutionId(const std::string& val) {
@@ -206,19 +206,19 @@ uint32_t ProcessModel::read(::apache::thrift::protocol::TProtocol* iprot) {
       case 5:
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
-            this->processStatus.clear();
+            this->processStatuses.clear();
             uint32_t _size0;
             ::apache::thrift::protocol::TType _etype3;
             xfer += iprot->readListBegin(_etype3, _size0);
-            this->processStatus.resize(_size0);
+            this->processStatuses.resize(_size0);
             uint32_t _i4;
             for (_i4 = 0; _i4 < _size0; ++_i4)
             {
-              xfer += this->processStatus[_i4].read(iprot);
+              xfer += this->processStatuses[_i4].read(iprot);
             }
             xfer += iprot->readListEnd();
           }
-          this->__isset.processStatus = true;
+          this->__isset.processStatuses = true;
         } else {
           xfer += iprot->skip(ftype);
         }
@@ -334,19 +334,19 @@ uint32_t ProcessModel::read(::apache::thrift::protocol::TProtocol* iprot) {
       case 15:
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
-            this->processError.clear();
+            this->processErrors.clear();
             uint32_t _size20;
             ::apache::thrift::protocol::TType _etype23;
             xfer += iprot->readListBegin(_etype23, _size20);
-            this->processError.resize(_size20);
+            this->processErrors.resize(_size20);
             uint32_t _i24;
             for (_i24 = 0; _i24 < _size20; ++_i24)
             {
-              xfer += this->processError[_i24].read(iprot);
+              xfer += this->processErrors[_i24].read(iprot);
             }
             xfer += iprot->readListEnd();
           }
-          this->__isset.processError = true;
+          this->__isset.processErrors = true;
         } else {
           xfer += iprot->skip(ftype);
         }
@@ -466,12 +466,12 @@ uint32_t ProcessModel::write(::apache::thrift::protocol::TProtocol* oprot) const
     xfer += oprot->writeI64(this->lastUpdateTime);
     xfer += oprot->writeFieldEnd();
   }
-  if (this->__isset.processStatus) {
-    xfer += oprot->writeFieldBegin("processStatus", ::apache::thrift::protocol::T_LIST, 5);
+  if (this->__isset.processStatuses) {
+    xfer += oprot->writeFieldBegin("processStatuses", ::apache::thrift::protocol::T_LIST, 5);
     {
-      xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->processStatus.size()));
+      xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->processStatuses.size()));
       std::vector< ::apache::airavata::model::status::ProcessStatus> ::const_iterator _iter30;
-      for (_iter30 = this->processStatus.begin(); _iter30 != this->processStatus.end(); ++_iter30)
+      for (_iter30 = this->processStatuses.begin(); _iter30 != this->processStatuses.end(); ++_iter30)
       {
         xfer += (*_iter30).write(oprot);
       }
@@ -548,12 +548,12 @@ uint32_t ProcessModel::write(::apache::thrift::protocol::TProtocol* oprot) const
     xfer += oprot->writeString(this->taskDag);
     xfer += oprot->writeFieldEnd();
   }
-  if (this->__isset.processError) {
-    xfer += oprot->writeFieldBegin("processError", ::apache::thrift::protocol::T_LIST, 15);
+  if (this->__isset.processErrors) {
+    xfer += oprot->writeFieldBegin("processErrors", ::apache::thrift::protocol::T_LIST, 15);
     {
-      xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->processError.size()));
+      xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->processErrors.size()));
       std::vector< ::apache::airavata::model::commons::ErrorModel> ::const_iterator _iter34;
-      for (_iter34 = this->processError.begin(); _iter34 != this->processError.end(); ++_iter34)
+      for (_iter34 = this->processErrors.begin(); _iter34 != this->processErrors.end(); ++_iter34)
       {
         xfer += (*_iter34).write(oprot);
       }
@@ -620,7 +620,7 @@ void swap(ProcessModel &a, ProcessModel &b) {
   swap(a.experimentId, b.experimentId);
   swap(a.creationTime, b.creationTime);
   swap(a.lastUpdateTime, b.lastUpdateTime);
-  swap(a.processStatus, b.processStatus);
+  swap(a.processStatuses, b.processStatuses);
   swap(a.processDetail, b.processDetail);
   swap(a.applicationInterfaceId, b.applicationInterfaceId);
   swap(a.applicationDeploymentId, b.applicationDeploymentId);
@@ -630,7 +630,7 @@ void swap(ProcessModel &a, ProcessModel &b) {
   swap(a.processResourceSchedule, b.processResourceSchedule);
   swap(a.tasks, b.tasks);
   swap(a.taskDag, b.taskDag);
-  swap(a.processError, b.processError);
+  swap(a.processErrors, b.processErrors);
   swap(a.gatewayExecutionId, b.gatewayExecutionId);
   swap(a.enableEmailNotification, b.enableEmailNotification);
   swap(a.emailAddresses, b.emailAddresses);
@@ -647,7 +647,7 @@ ProcessModel::ProcessModel(const ProcessModel& other36) {
   experimentId = other36.experimentId;
   creationTime = other36.creationTime;
   lastUpdateTime = other36.lastUpdateTime;
-  processStatus = other36.processStatus;
+  processStatuses = other36.processStatuses;
   processDetail = other36.processDetail;
   applicationInterfaceId = other36.applicationInterfaceId;
   applicationDeploymentId = other36.applicationDeploymentId;
@@ -657,7 +657,7 @@ ProcessModel::ProcessModel(const ProcessModel& other36) {
   processResourceSchedule = other36.processResourceSchedule;
   tasks = other36.tasks;
   taskDag = other36.taskDag;
-  processError = other36.processError;
+  processErrors = other36.processErrors;
   gatewayExecutionId = other36.gatewayExecutionId;
   enableEmailNotification = other36.enableEmailNotification;
   emailAddresses = other36.emailAddresses;
@@ -673,7 +673,7 @@ ProcessModel& ProcessModel::operator=(const ProcessModel& other37) {
   experimentId = other37.experimentId;
   creationTime = other37.creationTime;
   lastUpdateTime = other37.lastUpdateTime;
-  processStatus = other37.processStatus;
+  processStatuses = other37.processStatuses;
   processDetail = other37.processDetail;
   applicationInterfaceId = other37.applicationInterfaceId;
   applicationDeploymentId = other37.applicationDeploymentId;
@@ -683,7 +683,7 @@ ProcessModel& ProcessModel::operator=(const ProcessModel& other37) {
   processResourceSchedule = other37.processResourceSchedule;
   tasks = other37.tasks;
   taskDag = other37.taskDag;
-  processError = other37.processError;
+  processErrors = other37.processErrors;
   gatewayExecutionId = other37.gatewayExecutionId;
   enableEmailNotification = other37.enableEmailNotification;
   emailAddresses = other37.emailAddresses;
@@ -702,7 +702,7 @@ void ProcessModel::printTo(std::ostream& out) const {
   out << ", " << "experimentId=" << to_string(experimentId);
   out << ", " << "creationTime="; (__isset.creationTime ? (out << to_string(creationTime)) : (out << "<null>"));
   out << ", " << "lastUpdateTime="; (__isset.lastUpdateTime ? (out << to_string(lastUpdateTime)) : (out << "<null>"));
-  out << ", " << "processStatus="; (__isset.processStatus ? (out << to_string(processStatus)) : (out << "<null>"));
+  out << ", " << "processStatuses="; (__isset.processStatuses ? (out << to_string(processStatuses)) : (out << "<null>"));
   out << ", " << "processDetail="; (__isset.processDetail ? (out << to_string(processDetail)) : (out << "<null>"));
   out << ", " << "applicationInterfaceId="; (__isset.applicationInterfaceId ? (out << to_string(applicationInterfaceId)) : (out << "<null>"));
   out << ", " << "applicationDeploymentId="; (__isset.applicationDeploymentId ? (out << to_string(applicationDeploymentId)) : (out << "<null>"));
@@ -712,7 +712,7 @@ void ProcessModel::printTo(std::ostream& out) const {
   out << ", " << "processResourceSchedule="; (__isset.processResourceSchedule ? (out << to_string(processResourceSchedule)) : (out << "<null>"));
   out << ", " << "tasks="; (__isset.tasks ? (out << to_string(tasks)) : (out << "<null>"));
   out << ", " << "taskDag="; (__isset.taskDag ? (out << to_string(taskDag)) : (out << "<null>"));
-  out << ", " << "processError="; (__isset.processError ? (out << to_string(processError)) : (out << "<null>"));
+  out << ", " << "processErrors="; (__isset.processErrors ? (out << to_string(processErrors)) : (out << "<null>"));
   out << ", " << "gatewayExecutionId="; (__isset.gatewayExecutionId ? (out << to_string(gatewayExecutionId)) : (out << "<null>"));
   out << ", " << "enableEmailNotification="; (__isset.enableEmailNotification ? (out << to_string(enableEmailNotification)) : (out << "<null>"));
   out << ", " << "emailAddresses="; (__isset.emailAddresses ? (out << to_string(emailAddresses)) : (out << "<null>"));

http://git-wip-us.apache.org/repos/asf/airavata/blob/33c02518/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/process_model_types.h
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/process_model_types.h b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/process_model_types.h
index 5d73b26..82b8113 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/process_model_types.h
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/process_model_types.h
@@ -44,10 +44,10 @@ namespace apache { namespace airavata { namespace model { namespace process {
 class ProcessModel;
 
 typedef struct _ProcessModel__isset {
-  _ProcessModel__isset() : creationTime(false), lastUpdateTime(false), processStatus(false), processDetail(false), applicationInterfaceId(false), applicationDeploymentId(false), computeResourceId(false), processInputs(false), processOutputs(false), processResourceSchedule(false), tasks(false), taskDag(false), processError(false), gatewayExecutionId(false), enableEmailNotification(false), emailAddresses(false), storageResourceId(false), userDn(false), generateCert(true), experimentDataDir(false), userName(false) {}
+  _ProcessModel__isset() : creationTime(false), lastUpdateTime(false), processStatuses(false), processDetail(false), applicationInterfaceId(false), applicationDeploymentId(false), computeResourceId(false), processInputs(false), processOutputs(false), processResourceSchedule(false), tasks(false), taskDag(false), processErrors(false), gatewayExecutionId(false), enableEmailNotification(false), emailAddresses(false), storageResourceId(false), userDn(false), generateCert(true), experimentDataDir(false), userName(false) {}
   bool creationTime :1;
   bool lastUpdateTime :1;
-  bool processStatus :1;
+  bool processStatuses :1;
   bool processDetail :1;
   bool applicationInterfaceId :1;
   bool applicationDeploymentId :1;
@@ -57,7 +57,7 @@ typedef struct _ProcessModel__isset {
   bool processResourceSchedule :1;
   bool tasks :1;
   bool taskDag :1;
-  bool processError :1;
+  bool processErrors :1;
   bool gatewayExecutionId :1;
   bool enableEmailNotification :1;
   bool emailAddresses :1;
@@ -81,7 +81,7 @@ class ProcessModel {
   std::string experimentId;
   int64_t creationTime;
   int64_t lastUpdateTime;
-  std::vector< ::apache::airavata::model::status::ProcessStatus>  processStatus;
+  std::vector< ::apache::airavata::model::status::ProcessStatus>  processStatuses;
   std::string processDetail;
   std::string applicationInterfaceId;
   std::string applicationDeploymentId;
@@ -91,7 +91,7 @@ class ProcessModel {
    ::apache::airavata::model::scheduling::ComputationalResourceSchedulingModel processResourceSchedule;
   std::vector< ::apache::airavata::model::task::TaskModel>  tasks;
   std::string taskDag;
-  std::vector< ::apache::airavata::model::commons::ErrorModel>  processError;
+  std::vector< ::apache::airavata::model::commons::ErrorModel>  processErrors;
   std::string gatewayExecutionId;
   bool enableEmailNotification;
   std::vector<std::string>  emailAddresses;
@@ -111,7 +111,7 @@ class ProcessModel {
 
   void __set_lastUpdateTime(const int64_t val);
 
-  void __set_processStatus(const std::vector< ::apache::airavata::model::status::ProcessStatus> & val);
+  void __set_processStatuses(const std::vector< ::apache::airavata::model::status::ProcessStatus> & val);
 
   void __set_processDetail(const std::string& val);
 
@@ -131,7 +131,7 @@ class ProcessModel {
 
   void __set_taskDag(const std::string& val);
 
-  void __set_processError(const std::vector< ::apache::airavata::model::commons::ErrorModel> & val);
+  void __set_processErrors(const std::vector< ::apache::airavata::model::commons::ErrorModel> & val);
 
   void __set_gatewayExecutionId(const std::string& val);
 
@@ -163,9 +163,9 @@ class ProcessModel {
       return false;
     else if (__isset.lastUpdateTime && !(lastUpdateTime == rhs.lastUpdateTime))
       return false;
-    if (__isset.processStatus != rhs.__isset.processStatus)
+    if (__isset.processStatuses != rhs.__isset.processStatuses)
       return false;
-    else if (__isset.processStatus && !(processStatus == rhs.processStatus))
+    else if (__isset.processStatuses && !(processStatuses == rhs.processStatuses))
       return false;
     if (__isset.processDetail != rhs.__isset.processDetail)
       return false;
@@ -203,9 +203,9 @@ class ProcessModel {
       return false;
     else if (__isset.taskDag && !(taskDag == rhs.taskDag))
       return false;
-    if (__isset.processError != rhs.__isset.processError)
+    if (__isset.processErrors != rhs.__isset.processErrors)
       return false;
-    else if (__isset.processError && !(processError == rhs.processError))
+    else if (__isset.processErrors && !(processErrors == rhs.processErrors))
       return false;
     if (__isset.gatewayExecutionId != rhs.__isset.gatewayExecutionId)
       return false;

http://git-wip-us.apache.org/repos/asf/airavata/blob/33c02518/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/task_model_types.cpp
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/task_model_types.cpp b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/task_model_types.cpp
index e73eca8..337f2d5 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/task_model_types.cpp
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/task_model_types.cpp
@@ -85,8 +85,8 @@ void TaskModel::__set_lastUpdateTime(const int64_t val) {
   this->lastUpdateTime = val;
 }
 
-void TaskModel::__set_taskStatus(const std::vector< ::apache::airavata::model::status::TaskStatus> & val) {
-  this->taskStatus = val;
+void TaskModel::__set_taskStatuses(const std::vector< ::apache::airavata::model::status::TaskStatus> & val) {
+  this->taskStatuses = val;
 }
 
 void TaskModel::__set_taskDetail(const std::string& val) {
@@ -99,9 +99,9 @@ void TaskModel::__set_subTaskModel(const std::string& val) {
 __isset.subTaskModel = true;
 }
 
-void TaskModel::__set_taskError(const std::vector< ::apache::airavata::model::commons::ErrorModel> & val) {
-  this->taskError = val;
-__isset.taskError = true;
+void TaskModel::__set_taskErrors(const std::vector< ::apache::airavata::model::commons::ErrorModel> & val) {
+  this->taskErrors = val;
+__isset.taskErrors = true;
 }
 
 void TaskModel::__set_jobs(const std::vector< ::apache::airavata::model::job::JobModel> & val) {
@@ -126,7 +126,7 @@ uint32_t TaskModel::read(::apache::thrift::protocol::TProtocol* iprot) {
   bool isset_parentProcessId = false;
   bool isset_creationTime = false;
   bool isset_lastUpdateTime = false;
-  bool isset_taskStatus = false;
+  bool isset_taskStatuses = false;
 
   while (true)
   {
@@ -181,19 +181,19 @@ uint32_t TaskModel::read(::apache::thrift::protocol::TProtocol* iprot) {
       case 6:
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
-            this->taskStatus.clear();
+            this->taskStatuses.clear();
             uint32_t _size1;
             ::apache::thrift::protocol::TType _etype4;
             xfer += iprot->readListBegin(_etype4, _size1);
-            this->taskStatus.resize(_size1);
+            this->taskStatuses.resize(_size1);
             uint32_t _i5;
             for (_i5 = 0; _i5 < _size1; ++_i5)
             {
-              xfer += this->taskStatus[_i5].read(iprot);
+              xfer += this->taskStatuses[_i5].read(iprot);
             }
             xfer += iprot->readListEnd();
           }
-          isset_taskStatus = true;
+          isset_taskStatuses = true;
         } else {
           xfer += iprot->skip(ftype);
         }
@@ -217,19 +217,19 @@ uint32_t TaskModel::read(::apache::thrift::protocol::TProtocol* iprot) {
       case 9:
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
-            this->taskError.clear();
+            this->taskErrors.clear();
             uint32_t _size6;
             ::apache::thrift::protocol::TType _etype9;
             xfer += iprot->readListBegin(_etype9, _size6);
-            this->taskError.resize(_size6);
+            this->taskErrors.resize(_size6);
             uint32_t _i10;
             for (_i10 = 0; _i10 < _size6; ++_i10)
             {
-              xfer += this->taskError[_i10].read(iprot);
+              xfer += this->taskErrors[_i10].read(iprot);
             }
             xfer += iprot->readListEnd();
           }
-          this->__isset.taskError = true;
+          this->__isset.taskErrors = true;
         } else {
           xfer += iprot->skip(ftype);
         }
@@ -273,7 +273,7 @@ uint32_t TaskModel::read(::apache::thrift::protocol::TProtocol* iprot) {
     throw TProtocolException(TProtocolException::INVALID_DATA);
   if (!isset_lastUpdateTime)
     throw TProtocolException(TProtocolException::INVALID_DATA);
-  if (!isset_taskStatus)
+  if (!isset_taskStatuses)
     throw TProtocolException(TProtocolException::INVALID_DATA);
   return xfer;
 }
@@ -303,11 +303,11 @@ uint32_t TaskModel::write(::apache::thrift::protocol::TProtocol* oprot) const {
   xfer += oprot->writeI64(this->lastUpdateTime);
   xfer += oprot->writeFieldEnd();
 
-  xfer += oprot->writeFieldBegin("taskStatus", ::apache::thrift::protocol::T_LIST, 6);
+  xfer += oprot->writeFieldBegin("taskStatuses", ::apache::thrift::protocol::T_LIST, 6);
   {
-    xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->taskStatus.size()));
+    xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->taskStatuses.size()));
     std::vector< ::apache::airavata::model::status::TaskStatus> ::const_iterator _iter16;
-    for (_iter16 = this->taskStatus.begin(); _iter16 != this->taskStatus.end(); ++_iter16)
+    for (_iter16 = this->taskStatuses.begin(); _iter16 != this->taskStatuses.end(); ++_iter16)
     {
       xfer += (*_iter16).write(oprot);
     }
@@ -325,12 +325,12 @@ uint32_t TaskModel::write(::apache::thrift::protocol::TProtocol* oprot) const {
     xfer += oprot->writeBinary(this->subTaskModel);
     xfer += oprot->writeFieldEnd();
   }
-  if (this->__isset.taskError) {
-    xfer += oprot->writeFieldBegin("taskError", ::apache::thrift::protocol::T_LIST, 9);
+  if (this->__isset.taskErrors) {
+    xfer += oprot->writeFieldBegin("taskErrors", ::apache::thrift::protocol::T_LIST, 9);
     {
-      xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->taskError.size()));
+      xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->taskErrors.size()));
       std::vector< ::apache::airavata::model::commons::ErrorModel> ::const_iterator _iter17;
-      for (_iter17 = this->taskError.begin(); _iter17 != this->taskError.end(); ++_iter17)
+      for (_iter17 = this->taskErrors.begin(); _iter17 != this->taskErrors.end(); ++_iter17)
       {
         xfer += (*_iter17).write(oprot);
       }
@@ -363,10 +363,10 @@ void swap(TaskModel &a, TaskModel &b) {
   swap(a.parentProcessId, b.parentProcessId);
   swap(a.creationTime, b.creationTime);
   swap(a.lastUpdateTime, b.lastUpdateTime);
-  swap(a.taskStatus, b.taskStatus);
+  swap(a.taskStatuses, b.taskStatuses);
   swap(a.taskDetail, b.taskDetail);
   swap(a.subTaskModel, b.subTaskModel);
-  swap(a.taskError, b.taskError);
+  swap(a.taskErrors, b.taskErrors);
   swap(a.jobs, b.jobs);
   swap(a.__isset, b.__isset);
 }
@@ -377,10 +377,10 @@ TaskModel::TaskModel(const TaskModel& other19) {
   parentProcessId = other19.parentProcessId;
   creationTime = other19.creationTime;
   lastUpdateTime = other19.lastUpdateTime;
-  taskStatus = other19.taskStatus;
+  taskStatuses = other19.taskStatuses;
   taskDetail = other19.taskDetail;
   subTaskModel = other19.subTaskModel;
-  taskError = other19.taskError;
+  taskErrors = other19.taskErrors;
   jobs = other19.jobs;
   __isset = other19.__isset;
 }
@@ -390,10 +390,10 @@ TaskModel& TaskModel::operator=(const TaskModel& other20) {
   parentProcessId = other20.parentProcessId;
   creationTime = other20.creationTime;
   lastUpdateTime = other20.lastUpdateTime;
-  taskStatus = other20.taskStatus;
+  taskStatuses = other20.taskStatuses;
   taskDetail = other20.taskDetail;
   subTaskModel = other20.subTaskModel;
-  taskError = other20.taskError;
+  taskErrors = other20.taskErrors;
   jobs = other20.jobs;
   __isset = other20.__isset;
   return *this;
@@ -406,10 +406,10 @@ void TaskModel::printTo(std::ostream& out) const {
   out << ", " << "parentProcessId=" << to_string(parentProcessId);
   out << ", " << "creationTime=" << to_string(creationTime);
   out << ", " << "lastUpdateTime=" << to_string(lastUpdateTime);
-  out << ", " << "taskStatus=" << to_string(taskStatus);
+  out << ", " << "taskStatuses=" << to_string(taskStatuses);
   out << ", " << "taskDetail="; (__isset.taskDetail ? (out << to_string(taskDetail)) : (out << "<null>"));
   out << ", " << "subTaskModel="; (__isset.subTaskModel ? (out << to_string(subTaskModel)) : (out << "<null>"));
-  out << ", " << "taskError="; (__isset.taskError ? (out << to_string(taskError)) : (out << "<null>"));
+  out << ", " << "taskErrors="; (__isset.taskErrors ? (out << to_string(taskErrors)) : (out << "<null>"));
   out << ", " << "jobs="; (__isset.jobs ? (out << to_string(jobs)) : (out << "<null>"));
   out << ")";
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/33c02518/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/task_model_types.h
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/task_model_types.h b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/task_model_types.h
index 8a98904..ab0089c 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/task_model_types.h
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/task_model_types.h
@@ -76,10 +76,10 @@ class JobSubmissionTaskModel;
 class MonitorTaskModel;
 
 typedef struct _TaskModel__isset {
-  _TaskModel__isset() : taskDetail(false), subTaskModel(false), taskError(false), jobs(false) {}
+  _TaskModel__isset() : taskDetail(false), subTaskModel(false), taskErrors(false), jobs(false) {}
   bool taskDetail :1;
   bool subTaskModel :1;
-  bool taskError :1;
+  bool taskErrors :1;
   bool jobs :1;
 } _TaskModel__isset;
 
@@ -97,10 +97,10 @@ class TaskModel {
   std::string parentProcessId;
   int64_t creationTime;
   int64_t lastUpdateTime;
-  std::vector< ::apache::airavata::model::status::TaskStatus>  taskStatus;
+  std::vector< ::apache::airavata::model::status::TaskStatus>  taskStatuses;
   std::string taskDetail;
   std::string subTaskModel;
-  std::vector< ::apache::airavata::model::commons::ErrorModel>  taskError;
+  std::vector< ::apache::airavata::model::commons::ErrorModel>  taskErrors;
   std::vector< ::apache::airavata::model::job::JobModel>  jobs;
 
   _TaskModel__isset __isset;
@@ -115,13 +115,13 @@ class TaskModel {
 
   void __set_lastUpdateTime(const int64_t val);
 
-  void __set_taskStatus(const std::vector< ::apache::airavata::model::status::TaskStatus> & val);
+  void __set_taskStatuses(const std::vector< ::apache::airavata::model::status::TaskStatus> & val);
 
   void __set_taskDetail(const std::string& val);
 
   void __set_subTaskModel(const std::string& val);
 
-  void __set_taskError(const std::vector< ::apache::airavata::model::commons::ErrorModel> & val);
+  void __set_taskErrors(const std::vector< ::apache::airavata::model::commons::ErrorModel> & val);
 
   void __set_jobs(const std::vector< ::apache::airavata::model::job::JobModel> & val);
 
@@ -137,7 +137,7 @@ class TaskModel {
       return false;
     if (!(lastUpdateTime == rhs.lastUpdateTime))
       return false;
-    if (!(taskStatus == rhs.taskStatus))
+    if (!(taskStatuses == rhs.taskStatuses))
       return false;
     if (__isset.taskDetail != rhs.__isset.taskDetail)
       return false;
@@ -147,9 +147,9 @@ class TaskModel {
       return false;
     else if (__isset.subTaskModel && !(subTaskModel == rhs.subTaskModel))
       return false;
-    if (__isset.taskError != rhs.__isset.taskError)
+    if (__isset.taskErrors != rhs.__isset.taskErrors)
       return false;
-    else if (__isset.taskError && !(taskError == rhs.taskError))
+    else if (__isset.taskErrors && !(taskErrors == rhs.taskErrors))
       return false;
     if (__isset.jobs != rhs.__isset.jobs)
       return false;

http://git-wip-us.apache.org/repos/asf/airavata/blob/33c02518/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/API/Airavata.php
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/API/Airavata.php b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/API/Airavata.php
index a73c656..07e127d 100644
--- a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/API/Airavata.php
+++ b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/API/Airavata.php
@@ -3459,6 +3459,14 @@ interface AiravataIf {
    * @throws \Airavata\API\Error\AuthorizationException
    */
   public function getAllGroupsUserBelongs(\Airavata\Model\Security\AuthzToken $authzToken, $userName, $gatewayId);
+  /**
+   * @return bool
+   * @throws \Airavata\API\Error\InvalidRequestException
+   * @throws \Airavata\API\Error\AiravataClientException
+   * @throws \Airavata\API\Error\AiravataSystemException
+   * @throws \Airavata\API\Error\AuthorizationException
+   */
+  public function isDataSharingEnabled();
 }
 
 class AiravataClient implements \Airavata\API\AiravataIf {
@@ -13098,6 +13106,68 @@ class AiravataClient implements \Airavata\API\AiravataIf {
     throw new \Exception("getAllGroupsUserBelongs failed: unknown result");
   }
 
+  public function isDataSharingEnabled()
+  {
+    $this->send_isDataSharingEnabled();
+    return $this->recv_isDataSharingEnabled();
+  }
+
+  public function send_isDataSharingEnabled()
+  {
+    $args = new \Airavata\API\Airavata_isDataSharingEnabled_args();
+    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
+    if ($bin_accel)
+    {
+      thrift_protocol_write_binary($this->output_, 'isDataSharingEnabled', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
+    }
+    else
+    {
+      $this->output_->writeMessageBegin('isDataSharingEnabled', TMessageType::CALL, $this->seqid_);
+      $args->write($this->output_);
+      $this->output_->writeMessageEnd();
+      $this->output_->getTransport()->flush();
+    }
+  }
+
+  public function recv_isDataSharingEnabled()
+  {
+    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
+    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Airavata_isDataSharingEnabled_result', $this->input_->isStrictRead());
+    else
+    {
+      $rseqid = 0;
+      $fname = null;
+      $mtype = 0;
+
+      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
+      if ($mtype == TMessageType::EXCEPTION) {
+        $x = new TApplicationException();
+        $x->read($this->input_);
+        $this->input_->readMessageEnd();
+        throw $x;
+      }
+      $result = new \Airavata\API\Airavata_isDataSharingEnabled_result();
+      $result->read($this->input_);
+      $this->input_->readMessageEnd();
+    }
+    if ($result->success !== null) {
+      return $result->success;
+    }
+    if ($result->ire !== null) {
+      throw $result->ire;
+    }
+    if ($result->ace !== null) {
+      throw $result->ace;
+    }
+    if ($result->ase !== null) {
+      throw $result->ase;
+    }
+    if ($result->ae !== null) {
+      throw $result->ae;
+    }
+    throw new \Exception("isDataSharingEnabled failed: unknown result");
+  }
+
 }
 
 // HELPER FUNCTIONS AND STRUCTURES
@@ -58333,4 +58403,229 @@ class Airavata_getAllGroupsUserBelongs_result {
 
 }
 
+class Airavata_isDataSharingEnabled_args {
+  static $_TSPEC;
+
+
+  public function __construct() {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        );
+    }
+  }
+
+  public function getName() {
+    return 'Airavata_isDataSharingEnabled_args';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('Airavata_isDataSharingEnabled_args');
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+class Airavata_isDataSharingEnabled_result {
+  static $_TSPEC;
+
+  /**
+   * @var bool
+   */
+  public $success = null;
+  /**
+   * @var \Airavata\API\Error\InvalidRequestException
+   */
+  public $ire = null;
+  /**
+   * @var \Airavata\API\Error\AiravataClientException
+   */
+  public $ace = null;
+  /**
+   * @var \Airavata\API\Error\AiravataSystemException
+   */
+  public $ase = null;
+  /**
+   * @var \Airavata\API\Error\AuthorizationException
+   */
+  public $ae = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        0 => array(
+          'var' => 'success',
+          'type' => TType::BOOL,
+          ),
+        1 => array(
+          'var' => 'ire',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\API\Error\InvalidRequestException',
+          ),
+        2 => array(
+          'var' => 'ace',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\API\Error\AiravataClientException',
+          ),
+        3 => array(
+          'var' => 'ase',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\API\Error\AiravataSystemException',
+          ),
+        4 => array(
+          'var' => 'ae',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\API\Error\AuthorizationException',
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['success'])) {
+        $this->success = $vals['success'];
+      }
+      if (isset($vals['ire'])) {
+        $this->ire = $vals['ire'];
+      }
+      if (isset($vals['ace'])) {
+        $this->ace = $vals['ace'];
+      }
+      if (isset($vals['ase'])) {
+        $this->ase = $vals['ase'];
+      }
+      if (isset($vals['ae'])) {
+        $this->ae = $vals['ae'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'Airavata_isDataSharingEnabled_result';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 0:
+          if ($ftype == TType::BOOL) {
+            $xfer += $input->readBool($this->success);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 1:
+          if ($ftype == TType::STRUCT) {
+            $this->ire = new \Airavata\API\Error\InvalidRequestException();
+            $xfer += $this->ire->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::STRUCT) {
+            $this->ace = new \Airavata\API\Error\AiravataClientException();
+            $xfer += $this->ace->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 3:
+          if ($ftype == TType::STRUCT) {
+            $this->ase = new \Airavata\API\Error\AiravataSystemException();
+            $xfer += $this->ase->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 4:
+          if ($ftype == TType::STRUCT) {
+            $this->ae = new \Airavata\API\Error\AuthorizationException();
+            $xfer += $this->ae->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('Airavata_isDataSharingEnabled_result');
+    if ($this->success !== null) {
+      $xfer += $output->writeFieldBegin('success', TType::BOOL, 0);
+      $xfer += $output->writeBool($this->success);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->ire !== null) {
+      $xfer += $output->writeFieldBegin('ire', TType::STRUCT, 1);
+      $xfer += $this->ire->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->ace !== null) {
+      $xfer += $output->writeFieldBegin('ace', TType::STRUCT, 2);
+      $xfer += $this->ace->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->ase !== null) {
+      $xfer += $output->writeFieldBegin('ase', TType::STRUCT, 3);
+      $xfer += $this->ase->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->ae !== null) {
+      $xfer += $output->writeFieldBegin('ae', TType::STRUCT, 4);
+      $xfer += $this->ae->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/33c02518/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Process/Types.php
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Process/Types.php b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Process/Types.php
index e1b7b81..9e0b0b2 100644
--- a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Process/Types.php
+++ b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Process/Types.php
@@ -48,7 +48,7 @@ class ProcessModel {
   /**
    * @var \Airavata\Model\Status\ProcessStatus[]
    */
-  public $processStatus = null;
+  public $processStatuses = null;
   /**
    * @var string
    */
@@ -88,7 +88,7 @@ class ProcessModel {
   /**
    * @var \Airavata\Model\Commons\ErrorModel[]
    */
-  public $processError = null;
+  public $processErrors = null;
   /**
    * @var string
    */
@@ -142,7 +142,7 @@ class ProcessModel {
           'type' => TType::I64,
           ),
         5 => array(
-          'var' => 'processStatus',
+          'var' => 'processStatuses',
           'type' => TType::LST,
           'etype' => TType::STRUCT,
           'elem' => array(
@@ -203,7 +203,7 @@ class ProcessModel {
           'type' => TType::STRING,
           ),
         15 => array(
-          'var' => 'processError',
+          'var' => 'processErrors',
           'type' => TType::LST,
           'etype' => TType::STRUCT,
           'elem' => array(
@@ -262,8 +262,8 @@ class ProcessModel {
       if (isset($vals['lastUpdateTime'])) {
         $this->lastUpdateTime = $vals['lastUpdateTime'];
       }
-      if (isset($vals['processStatus'])) {
-        $this->processStatus = $vals['processStatus'];
+      if (isset($vals['processStatuses'])) {
+        $this->processStatuses = $vals['processStatuses'];
       }
       if (isset($vals['processDetail'])) {
         $this->processDetail = $vals['processDetail'];
@@ -292,8 +292,8 @@ class ProcessModel {
       if (isset($vals['taskDag'])) {
         $this->taskDag = $vals['taskDag'];
       }
-      if (isset($vals['processError'])) {
-        $this->processError = $vals['processError'];
+      if (isset($vals['processErrors'])) {
+        $this->processErrors = $vals['processErrors'];
       }
       if (isset($vals['gatewayExecutionId'])) {
         $this->gatewayExecutionId = $vals['gatewayExecutionId'];
@@ -371,7 +371,7 @@ class ProcessModel {
           break;
         case 5:
           if ($ftype == TType::LST) {
-            $this->processStatus = array();
+            $this->processStatuses = array();
             $_size0 = 0;
             $_etype3 = 0;
             $xfer += $input->readListBegin($_etype3, $_size0);
@@ -380,7 +380,7 @@ class ProcessModel {
               $elem5 = null;
               $elem5 = new \Airavata\Model\Status\ProcessStatus();
               $xfer += $elem5->read($input);
-              $this->processStatus []= $elem5;
+              $this->processStatuses []= $elem5;
             }
             $xfer += $input->readListEnd();
           } else {
@@ -486,7 +486,7 @@ class ProcessModel {
           break;
         case 15:
           if ($ftype == TType::LST) {
-            $this->processError = array();
+            $this->processErrors = array();
             $_size24 = 0;
             $_etype27 = 0;
             $xfer += $input->readListBegin($_etype27, $_size24);
@@ -495,7 +495,7 @@ class ProcessModel {
               $elem29 = null;
               $elem29 = new \Airavata\Model\Commons\ErrorModel();
               $xfer += $elem29->read($input);
-              $this->processError []= $elem29;
+              $this->processErrors []= $elem29;
             }
             $xfer += $input->readListEnd();
           } else {
@@ -601,15 +601,15 @@ class ProcessModel {
       $xfer += $output->writeI64($this->lastUpdateTime);
       $xfer += $output->writeFieldEnd();
     }
-    if ($this->processStatus !== null) {
-      if (!is_array($this->processStatus)) {
+    if ($this->processStatuses !== null) {
+      if (!is_array($this->processStatuses)) {
         throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
       }
-      $xfer += $output->writeFieldBegin('processStatus', TType::LST, 5);
+      $xfer += $output->writeFieldBegin('processStatuses', TType::LST, 5);
       {
-        $output->writeListBegin(TType::STRUCT, count($this->processStatus));
+        $output->writeListBegin(TType::STRUCT, count($this->processStatuses));
         {
-          foreach ($this->processStatus as $iter36)
+          foreach ($this->processStatuses as $iter36)
           {
             $xfer += $iter36->write($output);
           }
@@ -702,15 +702,15 @@ class ProcessModel {
       $xfer += $output->writeString($this->taskDag);
       $xfer += $output->writeFieldEnd();
     }
-    if ($this->processError !== null) {
-      if (!is_array($this->processError)) {
+    if ($this->processErrors !== null) {
+      if (!is_array($this->processErrors)) {
         throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
       }
-      $xfer += $output->writeFieldBegin('processError', TType::LST, 15);
+      $xfer += $output->writeFieldBegin('processErrors', TType::LST, 15);
       {
-        $output->writeListBegin(TType::STRUCT, count($this->processError));
+        $output->writeListBegin(TType::STRUCT, count($this->processErrors));
         {
-          foreach ($this->processError as $iter40)
+          foreach ($this->processErrors as $iter40)
           {
             $xfer += $iter40->write($output);
           }

http://git-wip-us.apache.org/repos/asf/airavata/blob/33c02518/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Task/Types.php
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Task/Types.php b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Task/Types.php
index b655020..202fde8 100644
--- a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Task/Types.php
+++ b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Task/Types.php
@@ -91,7 +91,7 @@ class TaskModel {
   /**
    * @var \Airavata\Model\Status\TaskStatus[]
    */
-  public $taskStatus = null;
+  public $taskStatuses = null;
   /**
    * @var string
    */
@@ -103,7 +103,7 @@ class TaskModel {
   /**
    * @var \Airavata\Model\Commons\ErrorModel[]
    */
-  public $taskError = null;
+  public $taskErrors = null;
   /**
    * @var \Airavata\Model\Job\JobModel[]
    */
@@ -133,7 +133,7 @@ class TaskModel {
           'type' => TType::I64,
           ),
         6 => array(
-          'var' => 'taskStatus',
+          'var' => 'taskStatuses',
           'type' => TType::LST,
           'etype' => TType::STRUCT,
           'elem' => array(
@@ -150,7 +150,7 @@ class TaskModel {
           'type' => TType::STRING,
           ),
         9 => array(
-          'var' => 'taskError',
+          'var' => 'taskErrors',
           'type' => TType::LST,
           'etype' => TType::STRUCT,
           'elem' => array(
@@ -185,8 +185,8 @@ class TaskModel {
       if (isset($vals['lastUpdateTime'])) {
         $this->lastUpdateTime = $vals['lastUpdateTime'];
       }
-      if (isset($vals['taskStatus'])) {
-        $this->taskStatus = $vals['taskStatus'];
+      if (isset($vals['taskStatuses'])) {
+        $this->taskStatuses = $vals['taskStatuses'];
       }
       if (isset($vals['taskDetail'])) {
         $this->taskDetail = $vals['taskDetail'];
@@ -194,8 +194,8 @@ class TaskModel {
       if (isset($vals['subTaskModel'])) {
         $this->subTaskModel = $vals['subTaskModel'];
       }
-      if (isset($vals['taskError'])) {
-        $this->taskError = $vals['taskError'];
+      if (isset($vals['taskErrors'])) {
+        $this->taskErrors = $vals['taskErrors'];
       }
       if (isset($vals['jobs'])) {
         $this->jobs = $vals['jobs'];
@@ -259,7 +259,7 @@ class TaskModel {
           break;
         case 6:
           if ($ftype == TType::LST) {
-            $this->taskStatus = array();
+            $this->taskStatuses = array();
             $_size0 = 0;
             $_etype3 = 0;
             $xfer += $input->readListBegin($_etype3, $_size0);
@@ -268,7 +268,7 @@ class TaskModel {
               $elem5 = null;
               $elem5 = new \Airavata\Model\Status\TaskStatus();
               $xfer += $elem5->read($input);
-              $this->taskStatus []= $elem5;
+              $this->taskStatuses []= $elem5;
             }
             $xfer += $input->readListEnd();
           } else {
@@ -291,7 +291,7 @@ class TaskModel {
           break;
         case 9:
           if ($ftype == TType::LST) {
-            $this->taskError = array();
+            $this->taskErrors = array();
             $_size6 = 0;
             $_etype9 = 0;
             $xfer += $input->readListBegin($_etype9, $_size6);
@@ -300,7 +300,7 @@ class TaskModel {
               $elem11 = null;
               $elem11 = new \Airavata\Model\Commons\ErrorModel();
               $xfer += $elem11->read($input);
-              $this->taskError []= $elem11;
+              $this->taskErrors []= $elem11;
             }
             $xfer += $input->readListEnd();
           } else {
@@ -363,15 +363,15 @@ class TaskModel {
       $xfer += $output->writeI64($this->lastUpdateTime);
       $xfer += $output->writeFieldEnd();
     }
-    if ($this->taskStatus !== null) {
-      if (!is_array($this->taskStatus)) {
+    if ($this->taskStatuses !== null) {
+      if (!is_array($this->taskStatuses)) {
         throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
       }
-      $xfer += $output->writeFieldBegin('taskStatus', TType::LST, 6);
+      $xfer += $output->writeFieldBegin('taskStatuses', TType::LST, 6);
       {
-        $output->writeListBegin(TType::STRUCT, count($this->taskStatus));
+        $output->writeListBegin(TType::STRUCT, count($this->taskStatuses));
         {
-          foreach ($this->taskStatus as $iter18)
+          foreach ($this->taskStatuses as $iter18)
           {
             $xfer += $iter18->write($output);
           }
@@ -390,15 +390,15 @@ class TaskModel {
       $xfer += $output->writeString($this->subTaskModel);
       $xfer += $output->writeFieldEnd();
     }
-    if ($this->taskError !== null) {
-      if (!is_array($this->taskError)) {
+    if ($this->taskErrors !== null) {
+      if (!is_array($this->taskErrors)) {
         throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
       }
-      $xfer += $output->writeFieldBegin('taskError', TType::LST, 9);
+      $xfer += $output->writeFieldBegin('taskErrors', TType::LST, 9);
       {
-        $output->writeListBegin(TType::STRUCT, count($this->taskError));
+        $output->writeListBegin(TType::STRUCT, count($this->taskErrors));
         {
-          foreach ($this->taskError as $iter19)
+          foreach ($this->taskErrors as $iter19)
           {
             $xfer += $iter19->write($output);
           }

http://git-wip-us.apache.org/repos/asf/airavata/blob/33c02518/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/job/Types.php
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/job/Types.php b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/job/Types.php
index 8f50b70..bb25859 100644
--- a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/job/Types.php
+++ b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/job/Types.php
@@ -43,7 +43,7 @@ class JobModel {
   /**
    * @var \Airavata\Model\Status\JobStatus[]
    */
-  public $jobStatus = null;
+  public $jobStatuses = null;
   /**
    * @var string
    */
@@ -93,7 +93,7 @@ class JobModel {
           'type' => TType::I64,
           ),
         6 => array(
-          'var' => 'jobStatus',
+          'var' => 'jobStatuses',
           'type' => TType::LST,
           'etype' => TType::STRUCT,
           'elem' => array(
@@ -143,8 +143,8 @@ class JobModel {
       if (isset($vals['creationTime'])) {
         $this->creationTime = $vals['creationTime'];
       }
-      if (isset($vals['jobStatus'])) {
-        $this->jobStatus = $vals['jobStatus'];
+      if (isset($vals['jobStatuses'])) {
+        $this->jobStatuses = $vals['jobStatuses'];
       }
       if (isset($vals['computeResourceConsumed'])) {
         $this->computeResourceConsumed = $vals['computeResourceConsumed'];
@@ -223,7 +223,7 @@ class JobModel {
           break;
         case 6:
           if ($ftype == TType::LST) {
-            $this->jobStatus = array();
+            $this->jobStatuses = array();
             $_size0 = 0;
             $_etype3 = 0;
             $xfer += $input->readListBegin($_etype3, $_size0);
@@ -232,7 +232,7 @@ class JobModel {
               $elem5 = null;
               $elem5 = new \Airavata\Model\Status\JobStatus();
               $xfer += $elem5->read($input);
-              $this->jobStatus []= $elem5;
+              $this->jobStatuses []= $elem5;
             }
             $xfer += $input->readListEnd();
           } else {
@@ -319,15 +319,15 @@ class JobModel {
       $xfer += $output->writeI64($this->creationTime);
       $xfer += $output->writeFieldEnd();
     }
-    if ($this->jobStatus !== null) {
-      if (!is_array($this->jobStatus)) {
+    if ($this->jobStatuses !== null) {
+      if (!is_array($this->jobStatuses)) {
         throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
       }
-      $xfer += $output->writeFieldBegin('jobStatus', TType::LST, 6);
+      $xfer += $output->writeFieldBegin('jobStatuses', TType::LST, 6);
       {
-        $output->writeListBegin(TType::STRUCT, count($this->jobStatus));
+        $output->writeListBegin(TType::STRUCT, count($this->jobStatuses));
         {
-          foreach ($this->jobStatus as $iter6)
+          foreach ($this->jobStatuses as $iter6)
           {
             $xfer += $iter6->write($output);
           }

http://git-wip-us.apache.org/repos/asf/airavata/blob/33c02518/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/api/Airavata-remote
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/api/Airavata-remote b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/api/Airavata-remote
index 0a94e16..c9605bf 100755
--- a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/api/Airavata-remote
+++ b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/api/Airavata-remote
@@ -173,6 +173,7 @@ if len(sys.argv) <= 1 or sys.argv[1] == '--help':
   print('  bool deleteGroup(AuthzToken authzToken, string groupId, string ownerId, string gatewayId)')
   print('  GroupModel getGroup(AuthzToken authzToken, string groupId)')
   print('   getAllGroupsUserBelongs(AuthzToken authzToken, string userName, string gatewayId)')
+  print('  bool isDataSharingEnabled()')
   print('')
   sys.exit(0)
 
@@ -1123,6 +1124,12 @@ elif cmd == 'getAllGroupsUserBelongs':
     sys.exit(1)
   pp.pprint(client.getAllGroupsUserBelongs(eval(args[0]),args[1],args[2],))
 
+elif cmd == 'isDataSharingEnabled':
+  if len(args) != 0:
+    print('isDataSharingEnabled requires 0 args')
+    sys.exit(1)
+  pp.pprint(client.isDataSharingEnabled())
+
 else:
   print('Unrecognized method %s' % cmd)
   sys.exit(1)