http://git-wip-us.apache.org/repos/asf/airavata/blob/d84783da/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 a1c5143..155b8ef 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
@@ -1972,6 +1972,11 @@ class AiravataHandler : virtual public AiravataIf {
     printf("addGatewayComputeResourcePreference\n");
   }
 
+  bool addGatewayDataStoragePreference(const  
::apache::airavata::model::security::AuthzToken& authzToken, const std::string& 
gatewayID, const std::string& dataMoveId, const  
::apache::airavata::model::appcatalog::gatewayprofile::DataStoragePreference& 
dataStoragePreference) {
+    // Your implementation goes here
+    printf("addGatewayDataStoragePreference\n");
+  }
+
   /**
    * Fetch a Compute Resource Preference of a registered gateway profile.
    * 
@@ -1994,6 +1999,11 @@ class AiravataHandler : virtual public AiravataIf {
     printf("getGatewayComputeResourcePreference\n");
   }
 
+  void getGatewayDataStoragePreference( 
::apache::airavata::model::appcatalog::gatewayprofile::DataStoragePreference& 
_return, const  ::apache::airavata::model::security::AuthzToken& authzToken, 
const std::string& gatewayID, const std::string& dataMoveId) {
+    // Your implementation goes here
+    printf("getGatewayDataStoragePreference\n");
+  }
+
   /**
    * Fetch all Compute Resource Preferences of a registered gateway profile.
    * 
@@ -2012,6 +2022,11 @@ class AiravataHandler : virtual public AiravataIf {
     printf("getAllGatewayComputeResourcePreferences\n");
   }
 
+  void getAllGatewayDataStoragePreferences(std::vector< 
::apache::airavata::model::appcatalog::gatewayprofile::DataStoragePreference> & 
_return, const  ::apache::airavata::model::security::AuthzToken& authzToken, 
const std::string& gatewayID) {
+    // Your implementation goes here
+    printf("getAllGatewayDataStoragePreferences\n");
+  }
+
   /**
    * Fetch all gateway profiles registered
    * 
@@ -2049,6 +2064,11 @@ class AiravataHandler : virtual public AiravataIf {
     printf("updateGatewayComputeResourcePreference\n");
   }
 
+  bool updateGatewayDataStoragePreference(const  
::apache::airavata::model::security::AuthzToken& authzToken, const std::string& 
gatewayID, const std::string& dataMoveId, const  
::apache::airavata::model::appcatalog::gatewayprofile::DataStoragePreference& 
dataStoragePreference) {
+    // Your implementation goes here
+    printf("updateGatewayDataStoragePreference\n");
+  }
+
   /**
    * Delete the Compute Resource Preference of a registered gateway profile.
    * 
@@ -2071,6 +2091,11 @@ class AiravataHandler : virtual public AiravataIf {
     printf("deleteGatewayComputeResourcePreference\n");
   }
 
+  bool deleteGatewayDataStoragePreference(const  
::apache::airavata::model::security::AuthzToken& authzToken, const std::string& 
gatewayID, const std::string& dataMoveId) {
+    // Your implementation goes here
+    printf("deleteGatewayDataStoragePreference\n");
+  }
+
   void getAllWorkflows(std::vector<std::string> & _return, const  
::apache::airavata::model::security::AuthzToken& authzToken, const std::string& 
gatewayId) {
     // Your implementation goes here
     printf("getAllWorkflows\n");

http://git-wip-us.apache.org/repos/asf/airavata/blob/d84783da/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/compute_resource_model_types.cpp
----------------------------------------------------------------------
diff --git 
a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/compute_resource_model_types.cpp
 
b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/compute_resource_model_types.cpp
index 952612c..949a59d 100644
--- 
a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/compute_resource_model_types.cpp
+++ 
b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/compute_resource_model_types.cpp
@@ -1286,8 +1286,13 @@ void SSHJobSubmission::__set_monitorMode(const 
MonitorMode::type val) {
 __isset.monitorMode = true;
 }
 
-const char* SSHJobSubmission::ascii_fingerprint = 
"A62183DAA7AFF027173705420A9D99D0";
-const uint8_t SSHJobSubmission::binary_fingerprint[16] = 
{0xA6,0x21,0x83,0xDA,0xA7,0xAF,0xF0,0x27,0x17,0x37,0x05,0x42,0x0A,0x9D,0x99,0xD0};
+void SSHJobSubmission::__set_batchQueueEmailSenders(const 
std::vector<std::string> & val) {
+  this->batchQueueEmailSenders = val;
+__isset.batchQueueEmailSenders = true;
+}
+
+const char* SSHJobSubmission::ascii_fingerprint = 
"46172F971809F7ECCCF7AB14291B87C6";
+const uint8_t SSHJobSubmission::binary_fingerprint[16] = 
{0x46,0x17,0x2F,0x97,0x18,0x09,0xF7,0xEC,0xCC,0xF7,0xAB,0x14,0x29,0x1B,0x87,0xC6};
 
 uint32_t SSHJobSubmission::read(::apache::thrift::protocol::TProtocol* iprot) {
 
@@ -1364,6 +1369,26 @@ uint32_t 
SSHJobSubmission::read(::apache::thrift::protocol::TProtocol* iprot) {
           xfer += iprot->skip(ftype);
         }
         break;
+      case 7:
+        if (ftype == ::apache::thrift::protocol::T_LIST) {
+          {
+            this->batchQueueEmailSenders.clear();
+            uint32_t _size35;
+            ::apache::thrift::protocol::TType _etype38;
+            xfer += iprot->readListBegin(_etype38, _size35);
+            this->batchQueueEmailSenders.resize(_size35);
+            uint32_t _i39;
+            for (_i39 = 0; _i39 < _size35; ++_i39)
+            {
+              xfer += iprot->readString(this->batchQueueEmailSenders[_i39]);
+            }
+            xfer += iprot->readListEnd();
+          }
+          this->__isset.batchQueueEmailSenders = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
       default:
         xfer += iprot->skip(ftype);
         break;
@@ -1414,6 +1439,19 @@ uint32_t 
SSHJobSubmission::write(::apache::thrift::protocol::TProtocol* oprot) c
     xfer += oprot->writeI32((int32_t)this->monitorMode);
     xfer += oprot->writeFieldEnd();
   }
+  if (this->__isset.batchQueueEmailSenders) {
+    xfer += oprot->writeFieldBegin("batchQueueEmailSenders", 
::apache::thrift::protocol::T_LIST, 7);
+    {
+      xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRING, 
static_cast<uint32_t>(this->batchQueueEmailSenders.size()));
+      std::vector<std::string> ::const_iterator _iter40;
+      for (_iter40 = this->batchQueueEmailSenders.begin(); _iter40 != 
this->batchQueueEmailSenders.end(); ++_iter40)
+      {
+        xfer += oprot->writeString((*_iter40));
+      }
+      xfer += oprot->writeListEnd();
+    }
+    xfer += oprot->writeFieldEnd();
+  }
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
   oprot->decrementRecursionDepth();
@@ -1428,26 +1466,29 @@ void swap(SSHJobSubmission &a, SSHJobSubmission &b) {
   swap(a.alternativeSSHHostName, b.alternativeSSHHostName);
   swap(a.sshPort, b.sshPort);
   swap(a.monitorMode, b.monitorMode);
+  swap(a.batchQueueEmailSenders, b.batchQueueEmailSenders);
   swap(a.__isset, b.__isset);
 }
 
-SSHJobSubmission::SSHJobSubmission(const SSHJobSubmission& other35) {
-  jobSubmissionInterfaceId = other35.jobSubmissionInterfaceId;
-  securityProtocol = other35.securityProtocol;
-  resourceJobManager = other35.resourceJobManager;
-  alternativeSSHHostName = other35.alternativeSSHHostName;
-  sshPort = other35.sshPort;
-  monitorMode = other35.monitorMode;
-  __isset = other35.__isset;
-}
-SSHJobSubmission& SSHJobSubmission::operator=(const SSHJobSubmission& other36) 
{
-  jobSubmissionInterfaceId = other36.jobSubmissionInterfaceId;
-  securityProtocol = other36.securityProtocol;
-  resourceJobManager = other36.resourceJobManager;
-  alternativeSSHHostName = other36.alternativeSSHHostName;
-  sshPort = other36.sshPort;
-  monitorMode = other36.monitorMode;
-  __isset = other36.__isset;
+SSHJobSubmission::SSHJobSubmission(const SSHJobSubmission& other41) {
+  jobSubmissionInterfaceId = other41.jobSubmissionInterfaceId;
+  securityProtocol = other41.securityProtocol;
+  resourceJobManager = other41.resourceJobManager;
+  alternativeSSHHostName = other41.alternativeSSHHostName;
+  sshPort = other41.sshPort;
+  monitorMode = other41.monitorMode;
+  batchQueueEmailSenders = other41.batchQueueEmailSenders;
+  __isset = other41.__isset;
+}
+SSHJobSubmission& SSHJobSubmission::operator=(const SSHJobSubmission& other42) 
{
+  jobSubmissionInterfaceId = other42.jobSubmissionInterfaceId;
+  securityProtocol = other42.securityProtocol;
+  resourceJobManager = other42.resourceJobManager;
+  alternativeSSHHostName = other42.alternativeSSHHostName;
+  sshPort = other42.sshPort;
+  monitorMode = other42.monitorMode;
+  batchQueueEmailSenders = other42.batchQueueEmailSenders;
+  __isset = other42.__isset;
   return *this;
 }
 std::ostream& operator<<(std::ostream& out, const SSHJobSubmission& obj) {
@@ -1459,6 +1500,7 @@ std::ostream& operator<<(std::ostream& out, const 
SSHJobSubmission& obj) {
   out << ", " << "alternativeSSHHostName="; 
(obj.__isset.alternativeSSHHostName ? (out << 
to_string(obj.alternativeSSHHostName)) : (out << "<null>"));
   out << ", " << "sshPort="; (obj.__isset.sshPort ? (out << 
to_string(obj.sshPort)) : (out << "<null>"));
   out << ", " << "monitorMode="; (obj.__isset.monitorMode ? (out << 
to_string(obj.monitorMode)) : (out << "<null>"));
+  out << ", " << "batchQueueEmailSenders="; 
(obj.__isset.batchQueueEmailSenders ? (out << 
to_string(obj.batchQueueEmailSenders)) : (out << "<null>"));
   out << ")";
   return out;
 }
@@ -1516,9 +1558,9 @@ uint32_t 
GlobusJobSubmission::read(::apache::thrift::protocol::TProtocol* iprot)
         break;
       case 2:
         if (ftype == ::apache::thrift::protocol::T_I32) {
-          int32_t ecast37;
-          xfer += iprot->readI32(ecast37);
-          this->securityProtocol = (SecurityProtocol::type)ecast37;
+          int32_t ecast43;
+          xfer += iprot->readI32(ecast43);
+          this->securityProtocol = (SecurityProtocol::type)ecast43;
           isset_securityProtocol = true;
         } else {
           xfer += iprot->skip(ftype);
@@ -1528,14 +1570,14 @@ uint32_t 
GlobusJobSubmission::read(::apache::thrift::protocol::TProtocol* iprot)
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
             this->globusGateKeeperEndPoint.clear();
-            uint32_t _size38;
-            ::apache::thrift::protocol::TType _etype41;
-            xfer += iprot->readListBegin(_etype41, _size38);
-            this->globusGateKeeperEndPoint.resize(_size38);
-            uint32_t _i42;
-            for (_i42 = 0; _i42 < _size38; ++_i42)
+            uint32_t _size44;
+            ::apache::thrift::protocol::TType _etype47;
+            xfer += iprot->readListBegin(_etype47, _size44);
+            this->globusGateKeeperEndPoint.resize(_size44);
+            uint32_t _i48;
+            for (_i48 = 0; _i48 < _size44; ++_i48)
             {
-              xfer += iprot->readString(this->globusGateKeeperEndPoint[_i42]);
+              xfer += iprot->readString(this->globusGateKeeperEndPoint[_i48]);
             }
             xfer += iprot->readListEnd();
           }
@@ -1577,10 +1619,10 @@ uint32_t 
GlobusJobSubmission::write(::apache::thrift::protocol::TProtocol* oprot
     xfer += oprot->writeFieldBegin("globusGateKeeperEndPoint", 
::apache::thrift::protocol::T_LIST, 3);
     {
       xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRING, 
static_cast<uint32_t>(this->globusGateKeeperEndPoint.size()));
-      std::vector<std::string> ::const_iterator _iter43;
-      for (_iter43 = this->globusGateKeeperEndPoint.begin(); _iter43 != 
this->globusGateKeeperEndPoint.end(); ++_iter43)
+      std::vector<std::string> ::const_iterator _iter49;
+      for (_iter49 = this->globusGateKeeperEndPoint.begin(); _iter49 != 
this->globusGateKeeperEndPoint.end(); ++_iter49)
       {
-        xfer += oprot->writeString((*_iter43));
+        xfer += oprot->writeString((*_iter49));
       }
       xfer += oprot->writeListEnd();
     }
@@ -1600,17 +1642,17 @@ void swap(GlobusJobSubmission &a, GlobusJobSubmission 
&b) {
   swap(a.__isset, b.__isset);
 }
 
-GlobusJobSubmission::GlobusJobSubmission(const GlobusJobSubmission& other44) {
-  jobSubmissionInterfaceId = other44.jobSubmissionInterfaceId;
-  securityProtocol = other44.securityProtocol;
-  globusGateKeeperEndPoint = other44.globusGateKeeperEndPoint;
-  __isset = other44.__isset;
+GlobusJobSubmission::GlobusJobSubmission(const GlobusJobSubmission& other50) {
+  jobSubmissionInterfaceId = other50.jobSubmissionInterfaceId;
+  securityProtocol = other50.securityProtocol;
+  globusGateKeeperEndPoint = other50.globusGateKeeperEndPoint;
+  __isset = other50.__isset;
 }
-GlobusJobSubmission& GlobusJobSubmission::operator=(const GlobusJobSubmission& 
other45) {
-  jobSubmissionInterfaceId = other45.jobSubmissionInterfaceId;
-  securityProtocol = other45.securityProtocol;
-  globusGateKeeperEndPoint = other45.globusGateKeeperEndPoint;
-  __isset = other45.__isset;
+GlobusJobSubmission& GlobusJobSubmission::operator=(const GlobusJobSubmission& 
other51) {
+  jobSubmissionInterfaceId = other51.jobSubmissionInterfaceId;
+  securityProtocol = other51.securityProtocol;
+  globusGateKeeperEndPoint = other51.globusGateKeeperEndPoint;
+  __isset = other51.__isset;
   return *this;
 }
 std::ostream& operator<<(std::ostream& out, const GlobusJobSubmission& obj) {
@@ -1676,9 +1718,9 @@ uint32_t 
UnicoreJobSubmission::read(::apache::thrift::protocol::TProtocol* iprot
         break;
       case 2:
         if (ftype == ::apache::thrift::protocol::T_I32) {
-          int32_t ecast46;
-          xfer += iprot->readI32(ecast46);
-          this->securityProtocol = (SecurityProtocol::type)ecast46;
+          int32_t ecast52;
+          xfer += iprot->readI32(ecast52);
+          this->securityProtocol = (SecurityProtocol::type)ecast52;
           isset_securityProtocol = true;
         } else {
           xfer += iprot->skip(ftype);
@@ -1740,15 +1782,15 @@ void swap(UnicoreJobSubmission &a, UnicoreJobSubmission 
&b) {
   swap(a.unicoreEndPointURL, b.unicoreEndPointURL);
 }
 
-UnicoreJobSubmission::UnicoreJobSubmission(const UnicoreJobSubmission& 
other47) {
-  jobSubmissionInterfaceId = other47.jobSubmissionInterfaceId;
-  securityProtocol = other47.securityProtocol;
-  unicoreEndPointURL = other47.unicoreEndPointURL;
+UnicoreJobSubmission::UnicoreJobSubmission(const UnicoreJobSubmission& 
other53) {
+  jobSubmissionInterfaceId = other53.jobSubmissionInterfaceId;
+  securityProtocol = other53.securityProtocol;
+  unicoreEndPointURL = other53.unicoreEndPointURL;
 }
-UnicoreJobSubmission& UnicoreJobSubmission::operator=(const 
UnicoreJobSubmission& other48) {
-  jobSubmissionInterfaceId = other48.jobSubmissionInterfaceId;
-  securityProtocol = other48.securityProtocol;
-  unicoreEndPointURL = other48.unicoreEndPointURL;
+UnicoreJobSubmission& UnicoreJobSubmission::operator=(const 
UnicoreJobSubmission& other54) {
+  jobSubmissionInterfaceId = other54.jobSubmissionInterfaceId;
+  securityProtocol = other54.securityProtocol;
+  unicoreEndPointURL = other54.unicoreEndPointURL;
   return *this;
 }
 std::ostream& operator<<(std::ostream& out, const UnicoreJobSubmission& obj) {
@@ -1829,9 +1871,9 @@ uint32_t 
CloudJobSubmission::read(::apache::thrift::protocol::TProtocol* iprot)
         break;
       case 2:
         if (ftype == ::apache::thrift::protocol::T_I32) {
-          int32_t ecast49;
-          xfer += iprot->readI32(ecast49);
-          this->securityProtocol = (SecurityProtocol::type)ecast49;
+          int32_t ecast55;
+          xfer += iprot->readI32(ecast55);
+          this->securityProtocol = (SecurityProtocol::type)ecast55;
           isset_securityProtocol = true;
         } else {
           xfer += iprot->skip(ftype);
@@ -1855,9 +1897,9 @@ uint32_t 
CloudJobSubmission::read(::apache::thrift::protocol::TProtocol* iprot)
         break;
       case 5:
         if (ftype == ::apache::thrift::protocol::T_I32) {
-          int32_t ecast50;
-          xfer += iprot->readI32(ecast50);
-          this->providerName = (ProviderName::type)ecast50;
+          int32_t ecast56;
+          xfer += iprot->readI32(ecast56);
+          this->providerName = (ProviderName::type)ecast56;
           isset_providerName = true;
         } else {
           xfer += iprot->skip(ftype);
@@ -1940,21 +1982,21 @@ void swap(CloudJobSubmission &a, CloudJobSubmission &b) 
{
   swap(a.userAccountName, b.userAccountName);
 }
 
-CloudJobSubmission::CloudJobSubmission(const CloudJobSubmission& other51) {
-  jobSubmissionInterfaceId = other51.jobSubmissionInterfaceId;
-  securityProtocol = other51.securityProtocol;
-  nodeId = other51.nodeId;
-  executableType = other51.executableType;
-  providerName = other51.providerName;
-  userAccountName = other51.userAccountName;
-}
-CloudJobSubmission& CloudJobSubmission::operator=(const CloudJobSubmission& 
other52) {
-  jobSubmissionInterfaceId = other52.jobSubmissionInterfaceId;
-  securityProtocol = other52.securityProtocol;
-  nodeId = other52.nodeId;
-  executableType = other52.executableType;
-  providerName = other52.providerName;
-  userAccountName = other52.userAccountName;
+CloudJobSubmission::CloudJobSubmission(const CloudJobSubmission& other57) {
+  jobSubmissionInterfaceId = other57.jobSubmissionInterfaceId;
+  securityProtocol = other57.securityProtocol;
+  nodeId = other57.nodeId;
+  executableType = other57.executableType;
+  providerName = other57.providerName;
+  userAccountName = other57.userAccountName;
+}
+CloudJobSubmission& CloudJobSubmission::operator=(const CloudJobSubmission& 
other58) {
+  jobSubmissionInterfaceId = other58.jobSubmissionInterfaceId;
+  securityProtocol = other58.securityProtocol;
+  nodeId = other58.nodeId;
+  executableType = other58.executableType;
+  providerName = other58.providerName;
+  userAccountName = other58.userAccountName;
   return *this;
 }
 std::ostream& operator<<(std::ostream& out, const CloudJobSubmission& obj) {
@@ -2023,9 +2065,9 @@ uint32_t 
JobSubmissionInterface::read(::apache::thrift::protocol::TProtocol* ipr
         break;
       case 2:
         if (ftype == ::apache::thrift::protocol::T_I32) {
-          int32_t ecast53;
-          xfer += iprot->readI32(ecast53);
-          this->jobSubmissionProtocol = (JobSubmissionProtocol::type)ecast53;
+          int32_t ecast59;
+          xfer += iprot->readI32(ecast59);
+          this->jobSubmissionProtocol = (JobSubmissionProtocol::type)ecast59;
           isset_jobSubmissionProtocol = true;
         } else {
           xfer += iprot->skip(ftype);
@@ -2087,15 +2129,15 @@ void swap(JobSubmissionInterface &a, 
JobSubmissionInterface &b) {
   swap(a.priorityOrder, b.priorityOrder);
 }
 
-JobSubmissionInterface::JobSubmissionInterface(const JobSubmissionInterface& 
other54) {
-  jobSubmissionInterfaceId = other54.jobSubmissionInterfaceId;
-  jobSubmissionProtocol = other54.jobSubmissionProtocol;
-  priorityOrder = other54.priorityOrder;
+JobSubmissionInterface::JobSubmissionInterface(const JobSubmissionInterface& 
other60) {
+  jobSubmissionInterfaceId = other60.jobSubmissionInterfaceId;
+  jobSubmissionProtocol = other60.jobSubmissionProtocol;
+  priorityOrder = other60.priorityOrder;
 }
-JobSubmissionInterface& JobSubmissionInterface::operator=(const 
JobSubmissionInterface& other55) {
-  jobSubmissionInterfaceId = other55.jobSubmissionInterfaceId;
-  jobSubmissionProtocol = other55.jobSubmissionProtocol;
-  priorityOrder = other55.priorityOrder;
+JobSubmissionInterface& JobSubmissionInterface::operator=(const 
JobSubmissionInterface& other61) {
+  jobSubmissionInterfaceId = other61.jobSubmissionInterfaceId;
+  jobSubmissionProtocol = other61.jobSubmissionProtocol;
+  priorityOrder = other61.priorityOrder;
   return *this;
 }
 std::ostream& operator<<(std::ostream& out, const JobSubmissionInterface& obj) 
{
@@ -2161,9 +2203,9 @@ uint32_t 
DataMovementInterface::read(::apache::thrift::protocol::TProtocol* ipro
         break;
       case 2:
         if (ftype == ::apache::thrift::protocol::T_I32) {
-          int32_t ecast56;
-          xfer += iprot->readI32(ecast56);
-          this->dataMovementProtocol = (DataMovementProtocol::type)ecast56;
+          int32_t ecast62;
+          xfer += iprot->readI32(ecast62);
+          this->dataMovementProtocol = (DataMovementProtocol::type)ecast62;
           isset_dataMovementProtocol = true;
         } else {
           xfer += iprot->skip(ftype);
@@ -2225,15 +2267,15 @@ void swap(DataMovementInterface &a, 
DataMovementInterface &b) {
   swap(a.priorityOrder, b.priorityOrder);
 }
 
-DataMovementInterface::DataMovementInterface(const DataMovementInterface& 
other57) {
-  dataMovementInterfaceId = other57.dataMovementInterfaceId;
-  dataMovementProtocol = other57.dataMovementProtocol;
-  priorityOrder = other57.priorityOrder;
+DataMovementInterface::DataMovementInterface(const DataMovementInterface& 
other63) {
+  dataMovementInterfaceId = other63.dataMovementInterfaceId;
+  dataMovementProtocol = other63.dataMovementProtocol;
+  priorityOrder = other63.priorityOrder;
 }
-DataMovementInterface& DataMovementInterface::operator=(const 
DataMovementInterface& other58) {
-  dataMovementInterfaceId = other58.dataMovementInterfaceId;
-  dataMovementProtocol = other58.dataMovementProtocol;
-  priorityOrder = other58.priorityOrder;
+DataMovementInterface& DataMovementInterface::operator=(const 
DataMovementInterface& other64) {
+  dataMovementInterfaceId = other64.dataMovementInterfaceId;
+  dataMovementProtocol = other64.dataMovementProtocol;
+  priorityOrder = other64.priorityOrder;
   return *this;
 }
 std::ostream& operator<<(std::ostream& out, const DataMovementInterface& obj) {
@@ -2349,14 +2391,14 @@ uint32_t 
ComputeResourceDescription::read(::apache::thrift::protocol::TProtocol*
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
             this->hostAliases.clear();
-            uint32_t _size59;
-            ::apache::thrift::protocol::TType _etype62;
-            xfer += iprot->readListBegin(_etype62, _size59);
-            this->hostAliases.resize(_size59);
-            uint32_t _i63;
-            for (_i63 = 0; _i63 < _size59; ++_i63)
+            uint32_t _size65;
+            ::apache::thrift::protocol::TType _etype68;
+            xfer += iprot->readListBegin(_etype68, _size65);
+            this->hostAliases.resize(_size65);
+            uint32_t _i69;
+            for (_i69 = 0; _i69 < _size65; ++_i69)
             {
-              xfer += iprot->readString(this->hostAliases[_i63]);
+              xfer += iprot->readString(this->hostAliases[_i69]);
             }
             xfer += iprot->readListEnd();
           }
@@ -2369,14 +2411,14 @@ uint32_t 
ComputeResourceDescription::read(::apache::thrift::protocol::TProtocol*
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
             this->ipAddresses.clear();
-            uint32_t _size64;
-            ::apache::thrift::protocol::TType _etype67;
-            xfer += iprot->readListBegin(_etype67, _size64);
-            this->ipAddresses.resize(_size64);
-            uint32_t _i68;
-            for (_i68 = 0; _i68 < _size64; ++_i68)
+            uint32_t _size70;
+            ::apache::thrift::protocol::TType _etype73;
+            xfer += iprot->readListBegin(_etype73, _size70);
+            this->ipAddresses.resize(_size70);
+            uint32_t _i74;
+            for (_i74 = 0; _i74 < _size70; ++_i74)
             {
-              xfer += iprot->readString(this->ipAddresses[_i68]);
+              xfer += iprot->readString(this->ipAddresses[_i74]);
             }
             xfer += iprot->readListEnd();
           }
@@ -2405,14 +2447,14 @@ uint32_t 
ComputeResourceDescription::read(::apache::thrift::protocol::TProtocol*
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
             this->batchQueues.clear();
-            uint32_t _size69;
-            ::apache::thrift::protocol::TType _etype72;
-            xfer += iprot->readListBegin(_etype72, _size69);
-            this->batchQueues.resize(_size69);
-            uint32_t _i73;
-            for (_i73 = 0; _i73 < _size69; ++_i73)
+            uint32_t _size75;
+            ::apache::thrift::protocol::TType _etype78;
+            xfer += iprot->readListBegin(_etype78, _size75);
+            this->batchQueues.resize(_size75);
+            uint32_t _i79;
+            for (_i79 = 0; _i79 < _size75; ++_i79)
             {
-              xfer += this->batchQueues[_i73].read(iprot);
+              xfer += this->batchQueues[_i79].read(iprot);
             }
             xfer += iprot->readListEnd();
           }
@@ -2425,19 +2467,19 @@ uint32_t 
ComputeResourceDescription::read(::apache::thrift::protocol::TProtocol*
         if (ftype == ::apache::thrift::protocol::T_MAP) {
           {
             this->fileSystems.clear();
-            uint32_t _size74;
-            ::apache::thrift::protocol::TType _ktype75;
-            ::apache::thrift::protocol::TType _vtype76;
-            xfer += iprot->readMapBegin(_ktype75, _vtype76, _size74);
-            uint32_t _i78;
-            for (_i78 = 0; _i78 < _size74; ++_i78)
+            uint32_t _size80;
+            ::apache::thrift::protocol::TType _ktype81;
+            ::apache::thrift::protocol::TType _vtype82;
+            xfer += iprot->readMapBegin(_ktype81, _vtype82, _size80);
+            uint32_t _i84;
+            for (_i84 = 0; _i84 < _size80; ++_i84)
             {
-              FileSystems::type _key79;
-              int32_t ecast81;
-              xfer += iprot->readI32(ecast81);
-              _key79 = (FileSystems::type)ecast81;
-              std::string& _val80 = this->fileSystems[_key79];
-              xfer += iprot->readString(_val80);
+              FileSystems::type _key85;
+              int32_t ecast87;
+              xfer += iprot->readI32(ecast87);
+              _key85 = (FileSystems::type)ecast87;
+              std::string& _val86 = this->fileSystems[_key85];
+              xfer += iprot->readString(_val86);
             }
             xfer += iprot->readMapEnd();
           }
@@ -2450,14 +2492,14 @@ uint32_t 
ComputeResourceDescription::read(::apache::thrift::protocol::TProtocol*
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
             this->jobSubmissionInterfaces.clear();
-            uint32_t _size82;
-            ::apache::thrift::protocol::TType _etype85;
-            xfer += iprot->readListBegin(_etype85, _size82);
-            this->jobSubmissionInterfaces.resize(_size82);
-            uint32_t _i86;
-            for (_i86 = 0; _i86 < _size82; ++_i86)
+            uint32_t _size88;
+            ::apache::thrift::protocol::TType _etype91;
+            xfer += iprot->readListBegin(_etype91, _size88);
+            this->jobSubmissionInterfaces.resize(_size88);
+            uint32_t _i92;
+            for (_i92 = 0; _i92 < _size88; ++_i92)
             {
-              xfer += this->jobSubmissionInterfaces[_i86].read(iprot);
+              xfer += this->jobSubmissionInterfaces[_i92].read(iprot);
             }
             xfer += iprot->readListEnd();
           }
@@ -2470,14 +2512,14 @@ uint32_t 
ComputeResourceDescription::read(::apache::thrift::protocol::TProtocol*
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
             this->dataMovementInterfaces.clear();
-            uint32_t _size87;
-            ::apache::thrift::protocol::TType _etype90;
-            xfer += iprot->readListBegin(_etype90, _size87);
-            this->dataMovementInterfaces.resize(_size87);
-            uint32_t _i91;
-            for (_i91 = 0; _i91 < _size87; ++_i91)
+            uint32_t _size93;
+            ::apache::thrift::protocol::TType _etype96;
+            xfer += iprot->readListBegin(_etype96, _size93);
+            this->dataMovementInterfaces.resize(_size93);
+            uint32_t _i97;
+            for (_i97 = 0; _i97 < _size93; ++_i97)
             {
-              xfer += this->dataMovementInterfaces[_i91].read(iprot);
+              xfer += this->dataMovementInterfaces[_i97].read(iprot);
             }
             xfer += iprot->readListEnd();
           }
@@ -2527,10 +2569,10 @@ uint32_t 
ComputeResourceDescription::write(::apache::thrift::protocol::TProtocol
     xfer += oprot->writeFieldBegin("hostAliases", 
::apache::thrift::protocol::T_LIST, 3);
     {
       xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRING, 
static_cast<uint32_t>(this->hostAliases.size()));
-      std::vector<std::string> ::const_iterator _iter92;
-      for (_iter92 = this->hostAliases.begin(); _iter92 != 
this->hostAliases.end(); ++_iter92)
+      std::vector<std::string> ::const_iterator _iter98;
+      for (_iter98 = this->hostAliases.begin(); _iter98 != 
this->hostAliases.end(); ++_iter98)
       {
-        xfer += oprot->writeString((*_iter92));
+        xfer += oprot->writeString((*_iter98));
       }
       xfer += oprot->writeListEnd();
     }
@@ -2540,10 +2582,10 @@ uint32_t 
ComputeResourceDescription::write(::apache::thrift::protocol::TProtocol
     xfer += oprot->writeFieldBegin("ipAddresses", 
::apache::thrift::protocol::T_LIST, 4);
     {
       xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRING, 
static_cast<uint32_t>(this->ipAddresses.size()));
-      std::vector<std::string> ::const_iterator _iter93;
-      for (_iter93 = this->ipAddresses.begin(); _iter93 != 
this->ipAddresses.end(); ++_iter93)
+      std::vector<std::string> ::const_iterator _iter99;
+      for (_iter99 = this->ipAddresses.begin(); _iter99 != 
this->ipAddresses.end(); ++_iter99)
       {
-        xfer += oprot->writeString((*_iter93));
+        xfer += oprot->writeString((*_iter99));
       }
       xfer += oprot->writeListEnd();
     }
@@ -2563,10 +2605,10 @@ uint32_t 
ComputeResourceDescription::write(::apache::thrift::protocol::TProtocol
     xfer += oprot->writeFieldBegin("batchQueues", 
::apache::thrift::protocol::T_LIST, 7);
     {
       xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, 
static_cast<uint32_t>(this->batchQueues.size()));
-      std::vector<BatchQueue> ::const_iterator _iter94;
-      for (_iter94 = this->batchQueues.begin(); _iter94 != 
this->batchQueues.end(); ++_iter94)
+      std::vector<BatchQueue> ::const_iterator _iter100;
+      for (_iter100 = this->batchQueues.begin(); _iter100 != 
this->batchQueues.end(); ++_iter100)
       {
-        xfer += (*_iter94).write(oprot);
+        xfer += (*_iter100).write(oprot);
       }
       xfer += oprot->writeListEnd();
     }
@@ -2576,11 +2618,11 @@ uint32_t 
ComputeResourceDescription::write(::apache::thrift::protocol::TProtocol
     xfer += oprot->writeFieldBegin("fileSystems", 
::apache::thrift::protocol::T_MAP, 8);
     {
       xfer += oprot->writeMapBegin(::apache::thrift::protocol::T_I32, 
::apache::thrift::protocol::T_STRING, 
static_cast<uint32_t>(this->fileSystems.size()));
-      std::map<FileSystems::type, std::string> ::const_iterator _iter95;
-      for (_iter95 = this->fileSystems.begin(); _iter95 != 
this->fileSystems.end(); ++_iter95)
+      std::map<FileSystems::type, std::string> ::const_iterator _iter101;
+      for (_iter101 = this->fileSystems.begin(); _iter101 != 
this->fileSystems.end(); ++_iter101)
       {
-        xfer += oprot->writeI32((int32_t)_iter95->first);
-        xfer += oprot->writeString(_iter95->second);
+        xfer += oprot->writeI32((int32_t)_iter101->first);
+        xfer += oprot->writeString(_iter101->second);
       }
       xfer += oprot->writeMapEnd();
     }
@@ -2590,10 +2632,10 @@ uint32_t 
ComputeResourceDescription::write(::apache::thrift::protocol::TProtocol
     xfer += oprot->writeFieldBegin("jobSubmissionInterfaces", 
::apache::thrift::protocol::T_LIST, 9);
     {
       xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, 
static_cast<uint32_t>(this->jobSubmissionInterfaces.size()));
-      std::vector<JobSubmissionInterface> ::const_iterator _iter96;
-      for (_iter96 = this->jobSubmissionInterfaces.begin(); _iter96 != 
this->jobSubmissionInterfaces.end(); ++_iter96)
+      std::vector<JobSubmissionInterface> ::const_iterator _iter102;
+      for (_iter102 = this->jobSubmissionInterfaces.begin(); _iter102 != 
this->jobSubmissionInterfaces.end(); ++_iter102)
       {
-        xfer += (*_iter96).write(oprot);
+        xfer += (*_iter102).write(oprot);
       }
       xfer += oprot->writeListEnd();
     }
@@ -2603,10 +2645,10 @@ uint32_t 
ComputeResourceDescription::write(::apache::thrift::protocol::TProtocol
     xfer += oprot->writeFieldBegin("dataMovementInterfaces", 
::apache::thrift::protocol::T_LIST, 10);
     {
       xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, 
static_cast<uint32_t>(this->dataMovementInterfaces.size()));
-      std::vector<DataMovementInterface> ::const_iterator _iter97;
-      for (_iter97 = this->dataMovementInterfaces.begin(); _iter97 != 
this->dataMovementInterfaces.end(); ++_iter97)
+      std::vector<DataMovementInterface> ::const_iterator _iter103;
+      for (_iter103 = this->dataMovementInterfaces.begin(); _iter103 != 
this->dataMovementInterfaces.end(); ++_iter103)
       {
-        xfer += (*_iter97).write(oprot);
+        xfer += (*_iter103).write(oprot);
       }
       xfer += oprot->writeListEnd();
     }
@@ -2639,33 +2681,33 @@ void swap(ComputeResourceDescription &a, 
ComputeResourceDescription &b) {
   swap(a.__isset, b.__isset);
 }
 
-ComputeResourceDescription::ComputeResourceDescription(const 
ComputeResourceDescription& other98) {
-  computeResourceId = other98.computeResourceId;
-  hostName = other98.hostName;
-  hostAliases = other98.hostAliases;
-  ipAddresses = other98.ipAddresses;
-  resourceDescription = other98.resourceDescription;
-  enabled = other98.enabled;
-  batchQueues = other98.batchQueues;
-  fileSystems = other98.fileSystems;
-  jobSubmissionInterfaces = other98.jobSubmissionInterfaces;
-  dataMovementInterfaces = other98.dataMovementInterfaces;
-  maxMemoryPerNode = other98.maxMemoryPerNode;
-  __isset = other98.__isset;
-}
-ComputeResourceDescription& ComputeResourceDescription::operator=(const 
ComputeResourceDescription& other99) {
-  computeResourceId = other99.computeResourceId;
-  hostName = other99.hostName;
-  hostAliases = other99.hostAliases;
-  ipAddresses = other99.ipAddresses;
-  resourceDescription = other99.resourceDescription;
-  enabled = other99.enabled;
-  batchQueues = other99.batchQueues;
-  fileSystems = other99.fileSystems;
-  jobSubmissionInterfaces = other99.jobSubmissionInterfaces;
-  dataMovementInterfaces = other99.dataMovementInterfaces;
-  maxMemoryPerNode = other99.maxMemoryPerNode;
-  __isset = other99.__isset;
+ComputeResourceDescription::ComputeResourceDescription(const 
ComputeResourceDescription& other104) {
+  computeResourceId = other104.computeResourceId;
+  hostName = other104.hostName;
+  hostAliases = other104.hostAliases;
+  ipAddresses = other104.ipAddresses;
+  resourceDescription = other104.resourceDescription;
+  enabled = other104.enabled;
+  batchQueues = other104.batchQueues;
+  fileSystems = other104.fileSystems;
+  jobSubmissionInterfaces = other104.jobSubmissionInterfaces;
+  dataMovementInterfaces = other104.dataMovementInterfaces;
+  maxMemoryPerNode = other104.maxMemoryPerNode;
+  __isset = other104.__isset;
+}
+ComputeResourceDescription& ComputeResourceDescription::operator=(const 
ComputeResourceDescription& other105) {
+  computeResourceId = other105.computeResourceId;
+  hostName = other105.hostName;
+  hostAliases = other105.hostAliases;
+  ipAddresses = other105.ipAddresses;
+  resourceDescription = other105.resourceDescription;
+  enabled = other105.enabled;
+  batchQueues = other105.batchQueues;
+  fileSystems = other105.fileSystems;
+  jobSubmissionInterfaces = other105.jobSubmissionInterfaces;
+  dataMovementInterfaces = other105.dataMovementInterfaces;
+  maxMemoryPerNode = other105.maxMemoryPerNode;
+  __isset = other105.__isset;
   return *this;
 }
 std::ostream& operator<<(std::ostream& out, const ComputeResourceDescription& 
obj) {

http://git-wip-us.apache.org/repos/asf/airavata/blob/d84783da/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/compute_resource_model_types.h
----------------------------------------------------------------------
diff --git 
a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/compute_resource_model_types.h
 
b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/compute_resource_model_types.h
index a169f7b..bfcd20e 100644
--- 
a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/compute_resource_model_types.h
+++ 
b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/compute_resource_model_types.h
@@ -559,17 +559,18 @@ class LOCALDataMovement {
 void swap(LOCALDataMovement &a, LOCALDataMovement &b);
 
 typedef struct _SSHJobSubmission__isset {
-  _SSHJobSubmission__isset() : alternativeSSHHostName(false), sshPort(true), 
monitorMode(false) {}
+  _SSHJobSubmission__isset() : alternativeSSHHostName(false), sshPort(true), 
monitorMode(false), batchQueueEmailSenders(false) {}
   bool alternativeSSHHostName :1;
   bool sshPort :1;
   bool monitorMode :1;
+  bool batchQueueEmailSenders :1;
 } _SSHJobSubmission__isset;
 
 class SSHJobSubmission {
  public:
 
-  static const char* ascii_fingerprint; // = 
"A62183DAA7AFF027173705420A9D99D0";
-  static const uint8_t binary_fingerprint[16]; // = 
{0xA6,0x21,0x83,0xDA,0xA7,0xAF,0xF0,0x27,0x17,0x37,0x05,0x42,0x0A,0x9D,0x99,0xD0};
+  static const char* ascii_fingerprint; // = 
"46172F971809F7ECCCF7AB14291B87C6";
+  static const uint8_t binary_fingerprint[16]; // = 
{0x46,0x17,0x2F,0x97,0x18,0x09,0xF7,0xEC,0xCC,0xF7,0xAB,0x14,0x29,0x1B,0x87,0xC6};
 
   SSHJobSubmission(const SSHJobSubmission&);
   SSHJobSubmission& operator=(const SSHJobSubmission&);
@@ -583,6 +584,7 @@ class SSHJobSubmission {
   std::string alternativeSSHHostName;
   int32_t sshPort;
   MonitorMode::type monitorMode;
+  std::vector<std::string>  batchQueueEmailSenders;
 
   _SSHJobSubmission__isset __isset;
 
@@ -598,6 +600,8 @@ class SSHJobSubmission {
 
   void __set_monitorMode(const MonitorMode::type val);
 
+  void __set_batchQueueEmailSenders(const std::vector<std::string> & val);
+
   bool operator == (const SSHJobSubmission & rhs) const
   {
     if (!(jobSubmissionInterfaceId == rhs.jobSubmissionInterfaceId))
@@ -618,6 +622,10 @@ class SSHJobSubmission {
       return false;
     else if (__isset.monitorMode && !(monitorMode == rhs.monitorMode))
       return false;
+    if (__isset.batchQueueEmailSenders != rhs.__isset.batchQueueEmailSenders)
+      return false;
+    else if (__isset.batchQueueEmailSenders && !(batchQueueEmailSenders == 
rhs.batchQueueEmailSenders))
+      return false;
     return true;
   }
   bool operator != (const SSHJobSubmission &rhs) const {

http://git-wip-us.apache.org/repos/asf/airavata/blob/d84783da/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/gateway_resource_profile_model_types.cpp
----------------------------------------------------------------------
diff --git 
a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/gateway_resource_profile_model_types.cpp
 
b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/gateway_resource_profile_model_types.cpp
index efe4c1a..6da0cfa 100644
--- 
a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/gateway_resource_profile_model_types.cpp
+++ 
b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/gateway_resource_profile_model_types.cpp
@@ -73,8 +73,13 @@ void 
ComputeResourcePreference::__set_allocationProjectNumber(const std::string&
 __isset.allocationProjectNumber = true;
 }
 
-const char* ComputeResourcePreference::ascii_fingerprint = 
"D89E0E13D04B60B99B78496AC9B85D52";
-const uint8_t ComputeResourcePreference::binary_fingerprint[16] = 
{0xD8,0x9E,0x0E,0x13,0xD0,0x4B,0x60,0xB9,0x9B,0x78,0x49,0x6A,0xC9,0xB8,0x5D,0x52};
+void 
ComputeResourcePreference::__set_resourceSpecificCredentialStoreToken(const 
std::string& val) {
+  this->resourceSpecificCredentialStoreToken = val;
+__isset.resourceSpecificCredentialStoreToken = true;
+}
+
+const char* ComputeResourcePreference::ascii_fingerprint = 
"294547CFB0912EC49097370EC1C66E41";
+const uint8_t ComputeResourcePreference::binary_fingerprint[16] = 
{0x29,0x45,0x47,0xCF,0xB0,0x91,0x2E,0xC4,0x90,0x97,0x37,0x0E,0xC1,0xC6,0x6E,0x41};
 
 uint32_t 
ComputeResourcePreference::read(::apache::thrift::protocol::TProtocol* iprot) {
 
@@ -166,6 +171,14 @@ uint32_t 
ComputeResourcePreference::read(::apache::thrift::protocol::TProtocol*
           xfer += iprot->skip(ftype);
         }
         break;
+      case 9:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += 
iprot->readString(this->resourceSpecificCredentialStoreToken);
+          this->__isset.resourceSpecificCredentialStoreToken = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
       default:
         xfer += iprot->skip(ftype);
         break;
@@ -225,6 +238,11 @@ uint32_t 
ComputeResourcePreference::write(::apache::thrift::protocol::TProtocol*
     xfer += oprot->writeString(this->allocationProjectNumber);
     xfer += oprot->writeFieldEnd();
   }
+  if (this->__isset.resourceSpecificCredentialStoreToken) {
+    xfer += oprot->writeFieldBegin("resourceSpecificCredentialStoreToken", 
::apache::thrift::protocol::T_STRING, 9);
+    xfer += oprot->writeString(this->resourceSpecificCredentialStoreToken);
+    xfer += oprot->writeFieldEnd();
+  }
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
   oprot->decrementRecursionDepth();
@@ -241,6 +259,7 @@ void swap(ComputeResourcePreference &a, 
ComputeResourcePreference &b) {
   swap(a.preferredBatchQueue, b.preferredBatchQueue);
   swap(a.scratchLocation, b.scratchLocation);
   swap(a.allocationProjectNumber, b.allocationProjectNumber);
+  swap(a.resourceSpecificCredentialStoreToken, 
b.resourceSpecificCredentialStoreToken);
   swap(a.__isset, b.__isset);
 }
 
@@ -253,6 +272,7 @@ ComputeResourcePreference::ComputeResourcePreference(const 
ComputeResourcePrefer
   preferredBatchQueue = other2.preferredBatchQueue;
   scratchLocation = other2.scratchLocation;
   allocationProjectNumber = other2.allocationProjectNumber;
+  resourceSpecificCredentialStoreToken = 
other2.resourceSpecificCredentialStoreToken;
   __isset = other2.__isset;
 }
 ComputeResourcePreference& ComputeResourcePreference::operator=(const 
ComputeResourcePreference& other3) {
@@ -264,6 +284,7 @@ ComputeResourcePreference& 
ComputeResourcePreference::operator=(const ComputeRes
   preferredBatchQueue = other3.preferredBatchQueue;
   scratchLocation = other3.scratchLocation;
   allocationProjectNumber = other3.allocationProjectNumber;
+  resourceSpecificCredentialStoreToken = 
other3.resourceSpecificCredentialStoreToken;
   __isset = other3.__isset;
   return *this;
 }
@@ -278,6 +299,166 @@ std::ostream& operator<<(std::ostream& out, const 
ComputeResourcePreference& obj
   out << ", " << "preferredBatchQueue="; (obj.__isset.preferredBatchQueue ? 
(out << to_string(obj.preferredBatchQueue)) : (out << "<null>"));
   out << ", " << "scratchLocation="; (obj.__isset.scratchLocation ? (out << 
to_string(obj.scratchLocation)) : (out << "<null>"));
   out << ", " << "allocationProjectNumber="; 
(obj.__isset.allocationProjectNumber ? (out << 
to_string(obj.allocationProjectNumber)) : (out << "<null>"));
+  out << ", " << "resourceSpecificCredentialStoreToken="; 
(obj.__isset.resourceSpecificCredentialStoreToken ? (out << 
to_string(obj.resourceSpecificCredentialStoreToken)) : (out << "<null>"));
+  out << ")";
+  return out;
+}
+
+
+DataStoragePreference::~DataStoragePreference() throw() {
+}
+
+
+void DataStoragePreference::__set_dataMovememtResourceId(const std::string& 
val) {
+  this->dataMovememtResourceId = val;
+}
+
+void DataStoragePreference::__set_loginUserName(const std::string& val) {
+  this->loginUserName = val;
+__isset.loginUserName = true;
+}
+
+void DataStoragePreference::__set_fileSystemRootLocation(const std::string& 
val) {
+  this->fileSystemRootLocation = val;
+__isset.fileSystemRootLocation = true;
+}
+
+void DataStoragePreference::__set_resourceSpecificCredentialStoreToken(const 
std::string& val) {
+  this->resourceSpecificCredentialStoreToken = val;
+__isset.resourceSpecificCredentialStoreToken = true;
+}
+
+const char* DataStoragePreference::ascii_fingerprint = 
"6BA700CA2E5FC52A8DA5ADCF811DC8DA";
+const uint8_t DataStoragePreference::binary_fingerprint[16] = 
{0x6B,0xA7,0x00,0xCA,0x2E,0x5F,0xC5,0x2A,0x8D,0xA5,0xAD,0xCF,0x81,0x1D,0xC8,0xDA};
+
+uint32_t DataStoragePreference::read(::apache::thrift::protocol::TProtocol* 
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_dataMovememtResourceId = 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_STRING) {
+          xfer += iprot->readString(this->dataMovememtResourceId);
+          isset_dataMovememtResourceId = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 2:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->loginUserName);
+          this->__isset.loginUserName = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 3:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->fileSystemRootLocation);
+          this->__isset.fileSystemRootLocation = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 4:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += 
iprot->readString(this->resourceSpecificCredentialStoreToken);
+          this->__isset.resourceSpecificCredentialStoreToken = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      default:
+        xfer += iprot->skip(ftype);
+        break;
+    }
+    xfer += iprot->readFieldEnd();
+  }
+
+  xfer += iprot->readStructEnd();
+
+  if (!isset_dataMovememtResourceId)
+    throw TProtocolException(TProtocolException::INVALID_DATA);
+  return xfer;
+}
+
+uint32_t DataStoragePreference::write(::apache::thrift::protocol::TProtocol* 
oprot) const {
+  uint32_t xfer = 0;
+  oprot->incrementRecursionDepth();
+  xfer += oprot->writeStructBegin("DataStoragePreference");
+
+  xfer += oprot->writeFieldBegin("dataMovememtResourceId", 
::apache::thrift::protocol::T_STRING, 1);
+  xfer += oprot->writeString(this->dataMovememtResourceId);
+  xfer += oprot->writeFieldEnd();
+
+  if (this->__isset.loginUserName) {
+    xfer += oprot->writeFieldBegin("loginUserName", 
::apache::thrift::protocol::T_STRING, 2);
+    xfer += oprot->writeString(this->loginUserName);
+    xfer += oprot->writeFieldEnd();
+  }
+  if (this->__isset.fileSystemRootLocation) {
+    xfer += oprot->writeFieldBegin("fileSystemRootLocation", 
::apache::thrift::protocol::T_STRING, 3);
+    xfer += oprot->writeString(this->fileSystemRootLocation);
+    xfer += oprot->writeFieldEnd();
+  }
+  if (this->__isset.resourceSpecificCredentialStoreToken) {
+    xfer += oprot->writeFieldBegin("resourceSpecificCredentialStoreToken", 
::apache::thrift::protocol::T_STRING, 4);
+    xfer += oprot->writeString(this->resourceSpecificCredentialStoreToken);
+    xfer += oprot->writeFieldEnd();
+  }
+  xfer += oprot->writeFieldStop();
+  xfer += oprot->writeStructEnd();
+  oprot->decrementRecursionDepth();
+  return xfer;
+}
+
+void swap(DataStoragePreference &a, DataStoragePreference &b) {
+  using ::std::swap;
+  swap(a.dataMovememtResourceId, b.dataMovememtResourceId);
+  swap(a.loginUserName, b.loginUserName);
+  swap(a.fileSystemRootLocation, b.fileSystemRootLocation);
+  swap(a.resourceSpecificCredentialStoreToken, 
b.resourceSpecificCredentialStoreToken);
+  swap(a.__isset, b.__isset);
+}
+
+DataStoragePreference::DataStoragePreference(const DataStoragePreference& 
other4) {
+  dataMovememtResourceId = other4.dataMovememtResourceId;
+  loginUserName = other4.loginUserName;
+  fileSystemRootLocation = other4.fileSystemRootLocation;
+  resourceSpecificCredentialStoreToken = 
other4.resourceSpecificCredentialStoreToken;
+  __isset = other4.__isset;
+}
+DataStoragePreference& DataStoragePreference::operator=(const 
DataStoragePreference& other5) {
+  dataMovememtResourceId = other5.dataMovememtResourceId;
+  loginUserName = other5.loginUserName;
+  fileSystemRootLocation = other5.fileSystemRootLocation;
+  resourceSpecificCredentialStoreToken = 
other5.resourceSpecificCredentialStoreToken;
+  __isset = other5.__isset;
+  return *this;
+}
+std::ostream& operator<<(std::ostream& out, const DataStoragePreference& obj) {
+  using apache::thrift::to_string;
+  out << "DataStoragePreference(";
+  out << "dataMovememtResourceId=" << to_string(obj.dataMovememtResourceId);
+  out << ", " << "loginUserName="; (obj.__isset.loginUserName ? (out << 
to_string(obj.loginUserName)) : (out << "<null>"));
+  out << ", " << "fileSystemRootLocation="; 
(obj.__isset.fileSystemRootLocation ? (out << 
to_string(obj.fileSystemRootLocation)) : (out << "<null>"));
+  out << ", " << "resourceSpecificCredentialStoreToken="; 
(obj.__isset.resourceSpecificCredentialStoreToken ? (out << 
to_string(obj.resourceSpecificCredentialStoreToken)) : (out << "<null>"));
   out << ")";
   return out;
 }
@@ -291,13 +472,23 @@ void GatewayResourceProfile::__set_gatewayID(const 
std::string& val) {
   this->gatewayID = val;
 }
 
+void GatewayResourceProfile::__set_credentialStoreToken(const std::string& 
val) {
+  this->credentialStoreToken = val;
+__isset.credentialStoreToken = true;
+}
+
 void GatewayResourceProfile::__set_computeResourcePreferences(const 
std::vector<ComputeResourcePreference> & val) {
   this->computeResourcePreferences = val;
 __isset.computeResourcePreferences = true;
 }
 
-const char* GatewayResourceProfile::ascii_fingerprint = 
"106DE1CD0F7026F6471DE8DAF360BE03";
-const uint8_t GatewayResourceProfile::binary_fingerprint[16] = 
{0x10,0x6D,0xE1,0xCD,0x0F,0x70,0x26,0xF6,0x47,0x1D,0xE8,0xDA,0xF3,0x60,0xBE,0x03};
+void GatewayResourceProfile::__set_dataStoragePreferences(const 
std::vector<DataStoragePreference> & val) {
+  this->dataStoragePreferences = val;
+__isset.dataStoragePreferences = true;
+}
+
+const char* GatewayResourceProfile::ascii_fingerprint = 
"A4BF6D60A7DE5979505C0E7F00278F12";
+const uint8_t GatewayResourceProfile::binary_fingerprint[16] = 
{0xA4,0xBF,0x6D,0x60,0xA7,0xDE,0x59,0x79,0x50,0x5C,0x0E,0x7F,0x00,0x27,0x8F,0x12};
 
 uint32_t GatewayResourceProfile::read(::apache::thrift::protocol::TProtocol* 
iprot) {
 
@@ -329,17 +520,25 @@ uint32_t 
GatewayResourceProfile::read(::apache::thrift::protocol::TProtocol* ipr
         }
         break;
       case 2:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->credentialStoreToken);
+          this->__isset.credentialStoreToken = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 3:
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
             this->computeResourcePreferences.clear();
-            uint32_t _size4;
-            ::apache::thrift::protocol::TType _etype7;
-            xfer += iprot->readListBegin(_etype7, _size4);
-            this->computeResourcePreferences.resize(_size4);
-            uint32_t _i8;
-            for (_i8 = 0; _i8 < _size4; ++_i8)
+            uint32_t _size6;
+            ::apache::thrift::protocol::TType _etype9;
+            xfer += iprot->readListBegin(_etype9, _size6);
+            this->computeResourcePreferences.resize(_size6);
+            uint32_t _i10;
+            for (_i10 = 0; _i10 < _size6; ++_i10)
             {
-              xfer += this->computeResourcePreferences[_i8].read(iprot);
+              xfer += this->computeResourcePreferences[_i10].read(iprot);
             }
             xfer += iprot->readListEnd();
           }
@@ -348,6 +547,26 @@ uint32_t 
GatewayResourceProfile::read(::apache::thrift::protocol::TProtocol* ipr
           xfer += iprot->skip(ftype);
         }
         break;
+      case 4:
+        if (ftype == ::apache::thrift::protocol::T_LIST) {
+          {
+            this->dataStoragePreferences.clear();
+            uint32_t _size11;
+            ::apache::thrift::protocol::TType _etype14;
+            xfer += iprot->readListBegin(_etype14, _size11);
+            this->dataStoragePreferences.resize(_size11);
+            uint32_t _i15;
+            for (_i15 = 0; _i15 < _size11; ++_i15)
+            {
+              xfer += this->dataStoragePreferences[_i15].read(iprot);
+            }
+            xfer += iprot->readListEnd();
+          }
+          this->__isset.dataStoragePreferences = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
       default:
         xfer += iprot->skip(ftype);
         break;
@@ -371,14 +590,32 @@ uint32_t 
GatewayResourceProfile::write(::apache::thrift::protocol::TProtocol* op
   xfer += oprot->writeString(this->gatewayID);
   xfer += oprot->writeFieldEnd();
 
+  if (this->__isset.credentialStoreToken) {
+    xfer += oprot->writeFieldBegin("credentialStoreToken", 
::apache::thrift::protocol::T_STRING, 2);
+    xfer += oprot->writeString(this->credentialStoreToken);
+    xfer += oprot->writeFieldEnd();
+  }
   if (this->__isset.computeResourcePreferences) {
-    xfer += oprot->writeFieldBegin("computeResourcePreferences", 
::apache::thrift::protocol::T_LIST, 2);
+    xfer += oprot->writeFieldBegin("computeResourcePreferences", 
::apache::thrift::protocol::T_LIST, 3);
     {
       xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, 
static_cast<uint32_t>(this->computeResourcePreferences.size()));
-      std::vector<ComputeResourcePreference> ::const_iterator _iter9;
-      for (_iter9 = this->computeResourcePreferences.begin(); _iter9 != 
this->computeResourcePreferences.end(); ++_iter9)
+      std::vector<ComputeResourcePreference> ::const_iterator _iter16;
+      for (_iter16 = this->computeResourcePreferences.begin(); _iter16 != 
this->computeResourcePreferences.end(); ++_iter16)
+      {
+        xfer += (*_iter16).write(oprot);
+      }
+      xfer += oprot->writeListEnd();
+    }
+    xfer += oprot->writeFieldEnd();
+  }
+  if (this->__isset.dataStoragePreferences) {
+    xfer += oprot->writeFieldBegin("dataStoragePreferences", 
::apache::thrift::protocol::T_LIST, 4);
+    {
+      xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, 
static_cast<uint32_t>(this->dataStoragePreferences.size()));
+      std::vector<DataStoragePreference> ::const_iterator _iter17;
+      for (_iter17 = this->dataStoragePreferences.begin(); _iter17 != 
this->dataStoragePreferences.end(); ++_iter17)
       {
-        xfer += (*_iter9).write(oprot);
+        xfer += (*_iter17).write(oprot);
       }
       xfer += oprot->writeListEnd();
     }
@@ -393,26 +630,34 @@ uint32_t 
GatewayResourceProfile::write(::apache::thrift::protocol::TProtocol* op
 void swap(GatewayResourceProfile &a, GatewayResourceProfile &b) {
   using ::std::swap;
   swap(a.gatewayID, b.gatewayID);
+  swap(a.credentialStoreToken, b.credentialStoreToken);
   swap(a.computeResourcePreferences, b.computeResourcePreferences);
+  swap(a.dataStoragePreferences, b.dataStoragePreferences);
   swap(a.__isset, b.__isset);
 }
 
-GatewayResourceProfile::GatewayResourceProfile(const GatewayResourceProfile& 
other10) {
-  gatewayID = other10.gatewayID;
-  computeResourcePreferences = other10.computeResourcePreferences;
-  __isset = other10.__isset;
+GatewayResourceProfile::GatewayResourceProfile(const GatewayResourceProfile& 
other18) {
+  gatewayID = other18.gatewayID;
+  credentialStoreToken = other18.credentialStoreToken;
+  computeResourcePreferences = other18.computeResourcePreferences;
+  dataStoragePreferences = other18.dataStoragePreferences;
+  __isset = other18.__isset;
 }
-GatewayResourceProfile& GatewayResourceProfile::operator=(const 
GatewayResourceProfile& other11) {
-  gatewayID = other11.gatewayID;
-  computeResourcePreferences = other11.computeResourcePreferences;
-  __isset = other11.__isset;
+GatewayResourceProfile& GatewayResourceProfile::operator=(const 
GatewayResourceProfile& other19) {
+  gatewayID = other19.gatewayID;
+  credentialStoreToken = other19.credentialStoreToken;
+  computeResourcePreferences = other19.computeResourcePreferences;
+  dataStoragePreferences = other19.dataStoragePreferences;
+  __isset = other19.__isset;
   return *this;
 }
 std::ostream& operator<<(std::ostream& out, const GatewayResourceProfile& obj) 
{
   using apache::thrift::to_string;
   out << "GatewayResourceProfile(";
   out << "gatewayID=" << to_string(obj.gatewayID);
+  out << ", " << "credentialStoreToken="; (obj.__isset.credentialStoreToken ? 
(out << to_string(obj.credentialStoreToken)) : (out << "<null>"));
   out << ", " << "computeResourcePreferences="; 
(obj.__isset.computeResourcePreferences ? (out << 
to_string(obj.computeResourcePreferences)) : (out << "<null>"));
+  out << ", " << "dataStoragePreferences="; 
(obj.__isset.dataStoragePreferences ? (out << 
to_string(obj.dataStoragePreferences)) : (out << "<null>"));
   out << ")";
   return out;
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/d84783da/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/gateway_resource_profile_model_types.h
----------------------------------------------------------------------
diff --git 
a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/gateway_resource_profile_model_types.h
 
b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/gateway_resource_profile_model_types.h
index 978ca60..59fbbef 100644
--- 
a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/gateway_resource_profile_model_types.h
+++ 
b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/gateway_resource_profile_model_types.h
@@ -39,27 +39,30 @@ namespace apache { namespace airavata { namespace model { 
namespace appcatalog {
 
 class ComputeResourcePreference;
 
+class DataStoragePreference;
+
 class GatewayResourceProfile;
 
 typedef struct _ComputeResourcePreference__isset {
-  _ComputeResourcePreference__isset() : loginUserName(false), 
preferredJobSubmissionProtocol(false), preferredDataMovementProtocol(false), 
preferredBatchQueue(false), scratchLocation(false), 
allocationProjectNumber(false) {}
+  _ComputeResourcePreference__isset() : loginUserName(false), 
preferredJobSubmissionProtocol(false), preferredDataMovementProtocol(false), 
preferredBatchQueue(false), scratchLocation(false), 
allocationProjectNumber(false), resourceSpecificCredentialStoreToken(false) {}
   bool loginUserName :1;
   bool preferredJobSubmissionProtocol :1;
   bool preferredDataMovementProtocol :1;
   bool preferredBatchQueue :1;
   bool scratchLocation :1;
   bool allocationProjectNumber :1;
+  bool resourceSpecificCredentialStoreToken :1;
 } _ComputeResourcePreference__isset;
 
 class ComputeResourcePreference {
  public:
 
-  static const char* ascii_fingerprint; // = 
"D89E0E13D04B60B99B78496AC9B85D52";
-  static const uint8_t binary_fingerprint[16]; // = 
{0xD8,0x9E,0x0E,0x13,0xD0,0x4B,0x60,0xB9,0x9B,0x78,0x49,0x6A,0xC9,0xB8,0x5D,0x52};
+  static const char* ascii_fingerprint; // = 
"294547CFB0912EC49097370EC1C66E41";
+  static const uint8_t binary_fingerprint[16]; // = 
{0x29,0x45,0x47,0xCF,0xB0,0x91,0x2E,0xC4,0x90,0x97,0x37,0x0E,0xC1,0xC6,0x6E,0x41};
 
   ComputeResourcePreference(const ComputeResourcePreference&);
   ComputeResourcePreference& operator=(const ComputeResourcePreference&);
-  ComputeResourcePreference() : computeResourceId(), overridebyAiravata(true), 
loginUserName(), preferredJobSubmissionProtocol(( 
::apache::airavata::model::appcatalog::computeresource::JobSubmissionProtocol::type)0),
 preferredDataMovementProtocol(( 
::apache::airavata::model::appcatalog::computeresource::DataMovementProtocol::type)0),
 preferredBatchQueue(), scratchLocation(), allocationProjectNumber() {
+  ComputeResourcePreference() : computeResourceId(), overridebyAiravata(true), 
loginUserName(), preferredJobSubmissionProtocol(( 
::apache::airavata::model::appcatalog::computeresource::JobSubmissionProtocol::type)0),
 preferredDataMovementProtocol(( 
::apache::airavata::model::appcatalog::computeresource::DataMovementProtocol::type)0),
 preferredBatchQueue(), scratchLocation(), allocationProjectNumber(), 
resourceSpecificCredentialStoreToken() {
   }
 
   virtual ~ComputeResourcePreference() throw();
@@ -71,6 +74,7 @@ class ComputeResourcePreference {
   std::string preferredBatchQueue;
   std::string scratchLocation;
   std::string allocationProjectNumber;
+  std::string resourceSpecificCredentialStoreToken;
 
   _ComputeResourcePreference__isset __isset;
 
@@ -90,6 +94,8 @@ class ComputeResourcePreference {
 
   void __set_allocationProjectNumber(const std::string& val);
 
+  void __set_resourceSpecificCredentialStoreToken(const std::string& val);
+
   bool operator == (const ComputeResourcePreference & rhs) const
   {
     if (!(computeResourceId == rhs.computeResourceId))
@@ -120,6 +126,10 @@ class ComputeResourcePreference {
       return false;
     else if (__isset.allocationProjectNumber && !(allocationProjectNumber == 
rhs.allocationProjectNumber))
       return false;
+    if (__isset.resourceSpecificCredentialStoreToken != 
rhs.__isset.resourceSpecificCredentialStoreToken)
+      return false;
+    else if (__isset.resourceSpecificCredentialStoreToken && 
!(resourceSpecificCredentialStoreToken == 
rhs.resourceSpecificCredentialStoreToken))
+      return false;
     return true;
   }
   bool operator != (const ComputeResourcePreference &rhs) const {
@@ -136,40 +146,122 @@ class ComputeResourcePreference {
 
 void swap(ComputeResourcePreference &a, ComputeResourcePreference &b);
 
+typedef struct _DataStoragePreference__isset {
+  _DataStoragePreference__isset() : loginUserName(false), 
fileSystemRootLocation(false), resourceSpecificCredentialStoreToken(false) {}
+  bool loginUserName :1;
+  bool fileSystemRootLocation :1;
+  bool resourceSpecificCredentialStoreToken :1;
+} _DataStoragePreference__isset;
+
+class DataStoragePreference {
+ public:
+
+  static const char* ascii_fingerprint; // = 
"6BA700CA2E5FC52A8DA5ADCF811DC8DA";
+  static const uint8_t binary_fingerprint[16]; // = 
{0x6B,0xA7,0x00,0xCA,0x2E,0x5F,0xC5,0x2A,0x8D,0xA5,0xAD,0xCF,0x81,0x1D,0xC8,0xDA};
+
+  DataStoragePreference(const DataStoragePreference&);
+  DataStoragePreference& operator=(const DataStoragePreference&);
+  DataStoragePreference() : dataMovememtResourceId(), loginUserName(), 
fileSystemRootLocation(), resourceSpecificCredentialStoreToken() {
+  }
+
+  virtual ~DataStoragePreference() throw();
+  std::string dataMovememtResourceId;
+  std::string loginUserName;
+  std::string fileSystemRootLocation;
+  std::string resourceSpecificCredentialStoreToken;
+
+  _DataStoragePreference__isset __isset;
+
+  void __set_dataMovememtResourceId(const std::string& val);
+
+  void __set_loginUserName(const std::string& val);
+
+  void __set_fileSystemRootLocation(const std::string& val);
+
+  void __set_resourceSpecificCredentialStoreToken(const std::string& val);
+
+  bool operator == (const DataStoragePreference & rhs) const
+  {
+    if (!(dataMovememtResourceId == rhs.dataMovememtResourceId))
+      return false;
+    if (__isset.loginUserName != rhs.__isset.loginUserName)
+      return false;
+    else if (__isset.loginUserName && !(loginUserName == rhs.loginUserName))
+      return false;
+    if (__isset.fileSystemRootLocation != rhs.__isset.fileSystemRootLocation)
+      return false;
+    else if (__isset.fileSystemRootLocation && !(fileSystemRootLocation == 
rhs.fileSystemRootLocation))
+      return false;
+    if (__isset.resourceSpecificCredentialStoreToken != 
rhs.__isset.resourceSpecificCredentialStoreToken)
+      return false;
+    else if (__isset.resourceSpecificCredentialStoreToken && 
!(resourceSpecificCredentialStoreToken == 
rhs.resourceSpecificCredentialStoreToken))
+      return false;
+    return true;
+  }
+  bool operator != (const DataStoragePreference &rhs) const {
+    return !(*this == rhs);
+  }
+
+  bool operator < (const DataStoragePreference & ) const;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+  friend std::ostream& operator<<(std::ostream& out, const 
DataStoragePreference& obj);
+};
+
+void swap(DataStoragePreference &a, DataStoragePreference &b);
+
 typedef struct _GatewayResourceProfile__isset {
-  _GatewayResourceProfile__isset() : computeResourcePreferences(false) {}
+  _GatewayResourceProfile__isset() : credentialStoreToken(false), 
computeResourcePreferences(false), dataStoragePreferences(false) {}
+  bool credentialStoreToken :1;
   bool computeResourcePreferences :1;
+  bool dataStoragePreferences :1;
 } _GatewayResourceProfile__isset;
 
 class GatewayResourceProfile {
  public:
 
-  static const char* ascii_fingerprint; // = 
"106DE1CD0F7026F6471DE8DAF360BE03";
-  static const uint8_t binary_fingerprint[16]; // = 
{0x10,0x6D,0xE1,0xCD,0x0F,0x70,0x26,0xF6,0x47,0x1D,0xE8,0xDA,0xF3,0x60,0xBE,0x03};
+  static const char* ascii_fingerprint; // = 
"A4BF6D60A7DE5979505C0E7F00278F12";
+  static const uint8_t binary_fingerprint[16]; // = 
{0xA4,0xBF,0x6D,0x60,0xA7,0xDE,0x59,0x79,0x50,0x5C,0x0E,0x7F,0x00,0x27,0x8F,0x12};
 
   GatewayResourceProfile(const GatewayResourceProfile&);
   GatewayResourceProfile& operator=(const GatewayResourceProfile&);
-  GatewayResourceProfile() : gatewayID() {
+  GatewayResourceProfile() : gatewayID(), credentialStoreToken() {
   }
 
   virtual ~GatewayResourceProfile() throw();
   std::string gatewayID;
+  std::string credentialStoreToken;
   std::vector<ComputeResourcePreference>  computeResourcePreferences;
+  std::vector<DataStoragePreference>  dataStoragePreferences;
 
   _GatewayResourceProfile__isset __isset;
 
   void __set_gatewayID(const std::string& val);
 
+  void __set_credentialStoreToken(const std::string& val);
+
   void __set_computeResourcePreferences(const 
std::vector<ComputeResourcePreference> & val);
 
+  void __set_dataStoragePreferences(const std::vector<DataStoragePreference> & 
val);
+
   bool operator == (const GatewayResourceProfile & rhs) const
   {
     if (!(gatewayID == rhs.gatewayID))
       return false;
+    if (__isset.credentialStoreToken != rhs.__isset.credentialStoreToken)
+      return false;
+    else if (__isset.credentialStoreToken && !(credentialStoreToken == 
rhs.credentialStoreToken))
+      return false;
     if (__isset.computeResourcePreferences != 
rhs.__isset.computeResourcePreferences)
       return false;
     else if (__isset.computeResourcePreferences && 
!(computeResourcePreferences == rhs.computeResourcePreferences))
       return false;
+    if (__isset.dataStoragePreferences != rhs.__isset.dataStoragePreferences)
+      return false;
+    else if (__isset.dataStoragePreferences && !(dataStoragePreferences == 
rhs.dataStoragePreferences))
+      return false;
     return true;
   }
   bool operator != (const GatewayResourceProfile &rhs) const {

Reply via email to