You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by ch...@apache.org on 2015/11/03 20:47:27 UTC

[02/51] [abbrv] airavata git commit: adding task creation at orchestrartor level

adding task creation at orchestrartor level


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

Branch: refs/heads/master
Commit: 14b7bcf98a2d9f7df19af7f5525d4598f3d1911f
Parents: af29522
Author: Chathuri Wimalasena <ch...@apache.org>
Authored: Tue Oct 13 16:28:54 2015 -0400
Committer: Chathuri Wimalasena <ch...@apache.org>
Committed: Tue Oct 13 16:28:54 2015 -0400

----------------------------------------------------------------------
 .../src/main/resources/lib/airavata/Airavata.h  |  24 +-
 .../airavata/compute_resource_model_types.cpp   | 397 ++++++++++---------
 .../lib/airavata/compute_resource_model_types.h |  14 +-
 .../Model/AppCatalog/ComputeResource/Types.php  |  27 +-
 .../model/appcatalog/computeresource/ttypes.py  |  24 +-
 .../computeresource/LOCALSubmission.java        | 121 +++++-
 .../computeresource/SecurityProtocol.java       |   5 +-
 .../server/src/main/resources/PBSTemplate.xslt  |   5 +
 .../orchestrator/cpi/OrchestratorService.java   | 130 +++++-
 .../core/context/OrchestratorContext.java       |   8 +
 .../core/utils/OrchestratorUtils.java           | 155 +++++++-
 .../cpi/impl/SimpleOrchestratorImpl.java        | 159 +++++++-
 .../server/OrchestratorServerHandler.java       |  10 +-
 .../airavata-api/compute_resource_model.thrift  |   6 +-
 .../orchestrator.cpi.service.thrift             |   2 +-
 15 files changed, 838 insertions(+), 249 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/14b7bcf9/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 0425236..4d81dc7 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
@@ -12396,8 +12396,8 @@ class Airavata_deleteComputeResource_presult {
 class Airavata_addLocalSubmissionDetails_args {
  public:
 
-  static const char* ascii_fingerprint; // = "00D126D537D3074444AD00D217BBE71E";
-  static const uint8_t binary_fingerprint[16]; // = {0x00,0xD1,0x26,0xD5,0x37,0xD3,0x07,0x44,0x44,0xAD,0x00,0xD2,0x17,0xBB,0xE7,0x1E};
+  static const char* ascii_fingerprint; // = "ABD3079657DEFDA176E387B3DF45FABE";
+  static const uint8_t binary_fingerprint[16]; // = {0xAB,0xD3,0x07,0x96,0x57,0xDE,0xFD,0xA1,0x76,0xE3,0x87,0xB3,0xDF,0x45,0xFA,0xBE};
 
   Airavata_addLocalSubmissionDetails_args(const Airavata_addLocalSubmissionDetails_args&);
   Airavata_addLocalSubmissionDetails_args& operator=(const Airavata_addLocalSubmissionDetails_args&);
@@ -12446,8 +12446,8 @@ class Airavata_addLocalSubmissionDetails_args {
 class Airavata_addLocalSubmissionDetails_pargs {
  public:
 
-  static const char* ascii_fingerprint; // = "00D126D537D3074444AD00D217BBE71E";
-  static const uint8_t binary_fingerprint[16]; // = {0x00,0xD1,0x26,0xD5,0x37,0xD3,0x07,0x44,0x44,0xAD,0x00,0xD2,0x17,0xBB,0xE7,0x1E};
+  static const char* ascii_fingerprint; // = "ABD3079657DEFDA176E387B3DF45FABE";
+  static const uint8_t binary_fingerprint[16]; // = {0xAB,0xD3,0x07,0x96,0x57,0xDE,0xFD,0xA1,0x76,0xE3,0x87,0xB3,0xDF,0x45,0xFA,0xBE};
 
 
   virtual ~Airavata_addLocalSubmissionDetails_pargs() throw();
@@ -12560,8 +12560,8 @@ class Airavata_addLocalSubmissionDetails_presult {
 class Airavata_updateLocalSubmissionDetails_args {
  public:
 
-  static const char* ascii_fingerprint; // = "3A312248D892ED814394F9D34608B8F2";
-  static const uint8_t binary_fingerprint[16]; // = {0x3A,0x31,0x22,0x48,0xD8,0x92,0xED,0x81,0x43,0x94,0xF9,0xD3,0x46,0x08,0xB8,0xF2};
+  static const char* ascii_fingerprint; // = "F5A6B807509E64946BA08A791F1D4FDA";
+  static const uint8_t binary_fingerprint[16]; // = {0xF5,0xA6,0xB8,0x07,0x50,0x9E,0x64,0x94,0x6B,0xA0,0x8A,0x79,0x1F,0x1D,0x4F,0xDA};
 
   Airavata_updateLocalSubmissionDetails_args(const Airavata_updateLocalSubmissionDetails_args&);
   Airavata_updateLocalSubmissionDetails_args& operator=(const Airavata_updateLocalSubmissionDetails_args&);
@@ -12605,8 +12605,8 @@ class Airavata_updateLocalSubmissionDetails_args {
 class Airavata_updateLocalSubmissionDetails_pargs {
  public:
 
-  static const char* ascii_fingerprint; // = "3A312248D892ED814394F9D34608B8F2";
-  static const uint8_t binary_fingerprint[16]; // = {0x3A,0x31,0x22,0x48,0xD8,0x92,0xED,0x81,0x43,0x94,0xF9,0xD3,0x46,0x08,0xB8,0xF2};
+  static const char* ascii_fingerprint; // = "F5A6B807509E64946BA08A791F1D4FDA";
+  static const uint8_t binary_fingerprint[16]; // = {0xF5,0xA6,0xB8,0x07,0x50,0x9E,0x64,0x94,0x6B,0xA0,0x8A,0x79,0x1F,0x1D,0x4F,0xDA};
 
 
   virtual ~Airavata_updateLocalSubmissionDetails_pargs() throw();
@@ -12783,8 +12783,8 @@ typedef struct _Airavata_getLocalJobSubmission_result__isset {
 class Airavata_getLocalJobSubmission_result {
  public:
 
-  static const char* ascii_fingerprint; // = "0DD51139219D43EA79E77A98C849E3E7";
-  static const uint8_t binary_fingerprint[16]; // = {0x0D,0xD5,0x11,0x39,0x21,0x9D,0x43,0xEA,0x79,0xE7,0x7A,0x98,0xC8,0x49,0xE3,0xE7};
+  static const char* ascii_fingerprint; // = "23BFB8C268475C0787439B8DF01C13C9";
+  static const uint8_t binary_fingerprint[16]; // = {0x23,0xBF,0xB8,0xC2,0x68,0x47,0x5C,0x07,0x87,0x43,0x9B,0x8D,0xF0,0x1C,0x13,0xC9};
 
   Airavata_getLocalJobSubmission_result(const Airavata_getLocalJobSubmission_result&);
   Airavata_getLocalJobSubmission_result& operator=(const Airavata_getLocalJobSubmission_result&);
@@ -12848,8 +12848,8 @@ typedef struct _Airavata_getLocalJobSubmission_presult__isset {
 class Airavata_getLocalJobSubmission_presult {
  public:
 
-  static const char* ascii_fingerprint; // = "0DD51139219D43EA79E77A98C849E3E7";
-  static const uint8_t binary_fingerprint[16]; // = {0x0D,0xD5,0x11,0x39,0x21,0x9D,0x43,0xEA,0x79,0xE7,0x7A,0x98,0xC8,0x49,0xE3,0xE7};
+  static const char* ascii_fingerprint; // = "23BFB8C268475C0787439B8DF01C13C9";
+  static const uint8_t binary_fingerprint[16]; // = {0x23,0xBF,0xB8,0xC2,0x68,0x47,0x5C,0x07,0x87,0x43,0x9B,0x8D,0xF0,0x1C,0x13,0xC9};
 
 
   virtual ~Airavata_getLocalJobSubmission_presult() throw();

http://git-wip-us.apache.org/repos/asf/airavata/blob/14b7bcf9/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 949a59d..1bd9b28 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
@@ -87,16 +87,18 @@ int _kSecurityProtocolValues[] = {
   SecurityProtocol::SSH_KEYS,
   SecurityProtocol::GSI,
   SecurityProtocol::KERBEROS,
-  SecurityProtocol::OAUTH
+  SecurityProtocol::OAUTH,
+  SecurityProtocol::LOCAL
 };
 const char* _kSecurityProtocolNames[] = {
   "USERNAME_PASSWORD",
   "SSH_KEYS",
   "GSI",
   "KERBEROS",
-  "OAUTH"
+  "OAUTH",
+  "LOCAL"
 };
-const std::map<int, const char*> _SecurityProtocol_VALUES_TO_NAMES(::apache::thrift::TEnumIterator(5, _kSecurityProtocolValues, _kSecurityProtocolNames), ::apache::thrift::TEnumIterator(-1, NULL, NULL));
+const std::map<int, const char*> _SecurityProtocol_VALUES_TO_NAMES(::apache::thrift::TEnumIterator(6, _kSecurityProtocolValues, _kSecurityProtocolNames), ::apache::thrift::TEnumIterator(-1, NULL, NULL));
 
 int _kJobSubmissionProtocolValues[] = {
   JobSubmissionProtocol::LOCAL,
@@ -1060,12 +1062,16 @@ void LOCALSubmission::__set_jobSubmissionInterfaceId(const std::string& val) {
   this->jobSubmissionInterfaceId = val;
 }
 
+void LOCALSubmission::__set_securityProtocol(const SecurityProtocol::type val) {
+  this->securityProtocol = val;
+}
+
 void LOCALSubmission::__set_resourceJobManager(const ResourceJobManager& val) {
   this->resourceJobManager = val;
 }
 
-const char* LOCALSubmission::ascii_fingerprint = "A5A35C842CBE1CA9D6A13C5974C6FB8F";
-const uint8_t LOCALSubmission::binary_fingerprint[16] = {0xA5,0xA3,0x5C,0x84,0x2C,0xBE,0x1C,0xA9,0xD6,0xA1,0x3C,0x59,0x74,0xC6,0xFB,0x8F};
+const char* LOCALSubmission::ascii_fingerprint = "9237E82F3C6C8601C7B7AD6A6BBC347C";
+const uint8_t LOCALSubmission::binary_fingerprint[16] = {0x92,0x37,0xE8,0x2F,0x3C,0x6C,0x86,0x01,0xC7,0xB7,0xAD,0x6A,0x6B,0xBC,0x34,0x7C};
 
 uint32_t LOCALSubmission::read(::apache::thrift::protocol::TProtocol* iprot) {
 
@@ -1079,6 +1085,7 @@ uint32_t LOCALSubmission::read(::apache::thrift::protocol::TProtocol* iprot) {
   using ::apache::thrift::protocol::TProtocolException;
 
   bool isset_jobSubmissionInterfaceId = false;
+  bool isset_securityProtocol = false;
   bool isset_resourceJobManager = false;
 
   while (true)
@@ -1098,6 +1105,16 @@ uint32_t LOCALSubmission::read(::apache::thrift::protocol::TProtocol* iprot) {
         }
         break;
       case 2:
+        if (ftype == ::apache::thrift::protocol::T_I32) {
+          int32_t ecast29;
+          xfer += iprot->readI32(ecast29);
+          this->securityProtocol = (SecurityProtocol::type)ecast29;
+          isset_securityProtocol = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 3:
         if (ftype == ::apache::thrift::protocol::T_STRUCT) {
           xfer += this->resourceJobManager.read(iprot);
           isset_resourceJobManager = true;
@@ -1116,6 +1133,8 @@ uint32_t LOCALSubmission::read(::apache::thrift::protocol::TProtocol* iprot) {
 
   if (!isset_jobSubmissionInterfaceId)
     throw TProtocolException(TProtocolException::INVALID_DATA);
+  if (!isset_securityProtocol)
+    throw TProtocolException(TProtocolException::INVALID_DATA);
   if (!isset_resourceJobManager)
     throw TProtocolException(TProtocolException::INVALID_DATA);
   return xfer;
@@ -1130,7 +1149,11 @@ uint32_t LOCALSubmission::write(::apache::thrift::protocol::TProtocol* oprot) co
   xfer += oprot->writeString(this->jobSubmissionInterfaceId);
   xfer += oprot->writeFieldEnd();
 
-  xfer += oprot->writeFieldBegin("resourceJobManager", ::apache::thrift::protocol::T_STRUCT, 2);
+  xfer += oprot->writeFieldBegin("securityProtocol", ::apache::thrift::protocol::T_I32, 2);
+  xfer += oprot->writeI32((int32_t)this->securityProtocol);
+  xfer += oprot->writeFieldEnd();
+
+  xfer += oprot->writeFieldBegin("resourceJobManager", ::apache::thrift::protocol::T_STRUCT, 3);
   xfer += this->resourceJobManager.write(oprot);
   xfer += oprot->writeFieldEnd();
 
@@ -1143,22 +1166,26 @@ uint32_t LOCALSubmission::write(::apache::thrift::protocol::TProtocol* oprot) co
 void swap(LOCALSubmission &a, LOCALSubmission &b) {
   using ::std::swap;
   swap(a.jobSubmissionInterfaceId, b.jobSubmissionInterfaceId);
+  swap(a.securityProtocol, b.securityProtocol);
   swap(a.resourceJobManager, b.resourceJobManager);
 }
 
-LOCALSubmission::LOCALSubmission(const LOCALSubmission& other29) {
-  jobSubmissionInterfaceId = other29.jobSubmissionInterfaceId;
-  resourceJobManager = other29.resourceJobManager;
-}
-LOCALSubmission& LOCALSubmission::operator=(const LOCALSubmission& other30) {
+LOCALSubmission::LOCALSubmission(const LOCALSubmission& other30) {
   jobSubmissionInterfaceId = other30.jobSubmissionInterfaceId;
+  securityProtocol = other30.securityProtocol;
   resourceJobManager = other30.resourceJobManager;
+}
+LOCALSubmission& LOCALSubmission::operator=(const LOCALSubmission& other31) {
+  jobSubmissionInterfaceId = other31.jobSubmissionInterfaceId;
+  securityProtocol = other31.securityProtocol;
+  resourceJobManager = other31.resourceJobManager;
   return *this;
 }
 std::ostream& operator<<(std::ostream& out, const LOCALSubmission& obj) {
   using apache::thrift::to_string;
   out << "LOCALSubmission(";
   out << "jobSubmissionInterfaceId=" << to_string(obj.jobSubmissionInterfaceId);
+  out << ", " << "securityProtocol=" << to_string(obj.securityProtocol);
   out << ", " << "resourceJobManager=" << to_string(obj.resourceJobManager);
   out << ")";
   return out;
@@ -1239,11 +1266,11 @@ void swap(LOCALDataMovement &a, LOCALDataMovement &b) {
   swap(a.dataMovementInterfaceId, b.dataMovementInterfaceId);
 }
 
-LOCALDataMovement::LOCALDataMovement(const LOCALDataMovement& other31) {
-  dataMovementInterfaceId = other31.dataMovementInterfaceId;
-}
-LOCALDataMovement& LOCALDataMovement::operator=(const LOCALDataMovement& other32) {
+LOCALDataMovement::LOCALDataMovement(const LOCALDataMovement& other32) {
   dataMovementInterfaceId = other32.dataMovementInterfaceId;
+}
+LOCALDataMovement& LOCALDataMovement::operator=(const LOCALDataMovement& other33) {
+  dataMovementInterfaceId = other33.dataMovementInterfaceId;
   return *this;
 }
 std::ostream& operator<<(std::ostream& out, const LOCALDataMovement& obj) {
@@ -1327,9 +1354,9 @@ uint32_t SSHJobSubmission::read(::apache::thrift::protocol::TProtocol* iprot) {
         break;
       case 2:
         if (ftype == ::apache::thrift::protocol::T_I32) {
-          int32_t ecast33;
-          xfer += iprot->readI32(ecast33);
-          this->securityProtocol = (SecurityProtocol::type)ecast33;
+          int32_t ecast34;
+          xfer += iprot->readI32(ecast34);
+          this->securityProtocol = (SecurityProtocol::type)ecast34;
           isset_securityProtocol = true;
         } else {
           xfer += iprot->skip(ftype);
@@ -1361,9 +1388,9 @@ uint32_t SSHJobSubmission::read(::apache::thrift::protocol::TProtocol* iprot) {
         break;
       case 6:
         if (ftype == ::apache::thrift::protocol::T_I32) {
-          int32_t ecast34;
-          xfer += iprot->readI32(ecast34);
-          this->monitorMode = (MonitorMode::type)ecast34;
+          int32_t ecast35;
+          xfer += iprot->readI32(ecast35);
+          this->monitorMode = (MonitorMode::type)ecast35;
           this->__isset.monitorMode = true;
         } else {
           xfer += iprot->skip(ftype);
@@ -1373,14 +1400,14 @@ uint32_t SSHJobSubmission::read(::apache::thrift::protocol::TProtocol* iprot) {
         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)
+            uint32_t _size36;
+            ::apache::thrift::protocol::TType _etype39;
+            xfer += iprot->readListBegin(_etype39, _size36);
+            this->batchQueueEmailSenders.resize(_size36);
+            uint32_t _i40;
+            for (_i40 = 0; _i40 < _size36; ++_i40)
             {
-              xfer += iprot->readString(this->batchQueueEmailSenders[_i39]);
+              xfer += iprot->readString(this->batchQueueEmailSenders[_i40]);
             }
             xfer += iprot->readListEnd();
           }
@@ -1443,10 +1470,10 @@ uint32_t SSHJobSubmission::write(::apache::thrift::protocol::TProtocol* oprot) c
     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)
+      std::vector<std::string> ::const_iterator _iter41;
+      for (_iter41 = this->batchQueueEmailSenders.begin(); _iter41 != this->batchQueueEmailSenders.end(); ++_iter41)
       {
-        xfer += oprot->writeString((*_iter40));
+        xfer += oprot->writeString((*_iter41));
       }
       xfer += oprot->writeListEnd();
     }
@@ -1470,17 +1497,7 @@ void swap(SSHJobSubmission &a, SSHJobSubmission &b) {
   swap(a.__isset, b.__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) {
+SSHJobSubmission::SSHJobSubmission(const SSHJobSubmission& other42) {
   jobSubmissionInterfaceId = other42.jobSubmissionInterfaceId;
   securityProtocol = other42.securityProtocol;
   resourceJobManager = other42.resourceJobManager;
@@ -1489,6 +1506,16 @@ SSHJobSubmission& SSHJobSubmission::operator=(const SSHJobSubmission& other42) {
   monitorMode = other42.monitorMode;
   batchQueueEmailSenders = other42.batchQueueEmailSenders;
   __isset = other42.__isset;
+}
+SSHJobSubmission& SSHJobSubmission::operator=(const SSHJobSubmission& other43) {
+  jobSubmissionInterfaceId = other43.jobSubmissionInterfaceId;
+  securityProtocol = other43.securityProtocol;
+  resourceJobManager = other43.resourceJobManager;
+  alternativeSSHHostName = other43.alternativeSSHHostName;
+  sshPort = other43.sshPort;
+  monitorMode = other43.monitorMode;
+  batchQueueEmailSenders = other43.batchQueueEmailSenders;
+  __isset = other43.__isset;
   return *this;
 }
 std::ostream& operator<<(std::ostream& out, const SSHJobSubmission& obj) {
@@ -1558,9 +1585,9 @@ uint32_t GlobusJobSubmission::read(::apache::thrift::protocol::TProtocol* iprot)
         break;
       case 2:
         if (ftype == ::apache::thrift::protocol::T_I32) {
-          int32_t ecast43;
-          xfer += iprot->readI32(ecast43);
-          this->securityProtocol = (SecurityProtocol::type)ecast43;
+          int32_t ecast44;
+          xfer += iprot->readI32(ecast44);
+          this->securityProtocol = (SecurityProtocol::type)ecast44;
           isset_securityProtocol = true;
         } else {
           xfer += iprot->skip(ftype);
@@ -1570,14 +1597,14 @@ uint32_t GlobusJobSubmission::read(::apache::thrift::protocol::TProtocol* iprot)
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
             this->globusGateKeeperEndPoint.clear();
-            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)
+            uint32_t _size45;
+            ::apache::thrift::protocol::TType _etype48;
+            xfer += iprot->readListBegin(_etype48, _size45);
+            this->globusGateKeeperEndPoint.resize(_size45);
+            uint32_t _i49;
+            for (_i49 = 0; _i49 < _size45; ++_i49)
             {
-              xfer += iprot->readString(this->globusGateKeeperEndPoint[_i48]);
+              xfer += iprot->readString(this->globusGateKeeperEndPoint[_i49]);
             }
             xfer += iprot->readListEnd();
           }
@@ -1619,10 +1646,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 _iter49;
-      for (_iter49 = this->globusGateKeeperEndPoint.begin(); _iter49 != this->globusGateKeeperEndPoint.end(); ++_iter49)
+      std::vector<std::string> ::const_iterator _iter50;
+      for (_iter50 = this->globusGateKeeperEndPoint.begin(); _iter50 != this->globusGateKeeperEndPoint.end(); ++_iter50)
       {
-        xfer += oprot->writeString((*_iter49));
+        xfer += oprot->writeString((*_iter50));
       }
       xfer += oprot->writeListEnd();
     }
@@ -1642,17 +1669,17 @@ void swap(GlobusJobSubmission &a, GlobusJobSubmission &b) {
   swap(a.__isset, b.__isset);
 }
 
-GlobusJobSubmission::GlobusJobSubmission(const GlobusJobSubmission& other50) {
-  jobSubmissionInterfaceId = other50.jobSubmissionInterfaceId;
-  securityProtocol = other50.securityProtocol;
-  globusGateKeeperEndPoint = other50.globusGateKeeperEndPoint;
-  __isset = other50.__isset;
-}
-GlobusJobSubmission& GlobusJobSubmission::operator=(const GlobusJobSubmission& other51) {
+GlobusJobSubmission::GlobusJobSubmission(const GlobusJobSubmission& other51) {
   jobSubmissionInterfaceId = other51.jobSubmissionInterfaceId;
   securityProtocol = other51.securityProtocol;
   globusGateKeeperEndPoint = other51.globusGateKeeperEndPoint;
   __isset = other51.__isset;
+}
+GlobusJobSubmission& GlobusJobSubmission::operator=(const GlobusJobSubmission& other52) {
+  jobSubmissionInterfaceId = other52.jobSubmissionInterfaceId;
+  securityProtocol = other52.securityProtocol;
+  globusGateKeeperEndPoint = other52.globusGateKeeperEndPoint;
+  __isset = other52.__isset;
   return *this;
 }
 std::ostream& operator<<(std::ostream& out, const GlobusJobSubmission& obj) {
@@ -1718,9 +1745,9 @@ uint32_t UnicoreJobSubmission::read(::apache::thrift::protocol::TProtocol* iprot
         break;
       case 2:
         if (ftype == ::apache::thrift::protocol::T_I32) {
-          int32_t ecast52;
-          xfer += iprot->readI32(ecast52);
-          this->securityProtocol = (SecurityProtocol::type)ecast52;
+          int32_t ecast53;
+          xfer += iprot->readI32(ecast53);
+          this->securityProtocol = (SecurityProtocol::type)ecast53;
           isset_securityProtocol = true;
         } else {
           xfer += iprot->skip(ftype);
@@ -1782,15 +1809,15 @@ void swap(UnicoreJobSubmission &a, UnicoreJobSubmission &b) {
   swap(a.unicoreEndPointURL, b.unicoreEndPointURL);
 }
 
-UnicoreJobSubmission::UnicoreJobSubmission(const UnicoreJobSubmission& other53) {
-  jobSubmissionInterfaceId = other53.jobSubmissionInterfaceId;
-  securityProtocol = other53.securityProtocol;
-  unicoreEndPointURL = other53.unicoreEndPointURL;
-}
-UnicoreJobSubmission& UnicoreJobSubmission::operator=(const UnicoreJobSubmission& other54) {
+UnicoreJobSubmission::UnicoreJobSubmission(const UnicoreJobSubmission& other54) {
   jobSubmissionInterfaceId = other54.jobSubmissionInterfaceId;
   securityProtocol = other54.securityProtocol;
   unicoreEndPointURL = other54.unicoreEndPointURL;
+}
+UnicoreJobSubmission& UnicoreJobSubmission::operator=(const UnicoreJobSubmission& other55) {
+  jobSubmissionInterfaceId = other55.jobSubmissionInterfaceId;
+  securityProtocol = other55.securityProtocol;
+  unicoreEndPointURL = other55.unicoreEndPointURL;
   return *this;
 }
 std::ostream& operator<<(std::ostream& out, const UnicoreJobSubmission& obj) {
@@ -1871,9 +1898,9 @@ uint32_t CloudJobSubmission::read(::apache::thrift::protocol::TProtocol* iprot)
         break;
       case 2:
         if (ftype == ::apache::thrift::protocol::T_I32) {
-          int32_t ecast55;
-          xfer += iprot->readI32(ecast55);
-          this->securityProtocol = (SecurityProtocol::type)ecast55;
+          int32_t ecast56;
+          xfer += iprot->readI32(ecast56);
+          this->securityProtocol = (SecurityProtocol::type)ecast56;
           isset_securityProtocol = true;
         } else {
           xfer += iprot->skip(ftype);
@@ -1897,9 +1924,9 @@ uint32_t CloudJobSubmission::read(::apache::thrift::protocol::TProtocol* iprot)
         break;
       case 5:
         if (ftype == ::apache::thrift::protocol::T_I32) {
-          int32_t ecast56;
-          xfer += iprot->readI32(ecast56);
-          this->providerName = (ProviderName::type)ecast56;
+          int32_t ecast57;
+          xfer += iprot->readI32(ecast57);
+          this->providerName = (ProviderName::type)ecast57;
           isset_providerName = true;
         } else {
           xfer += iprot->skip(ftype);
@@ -1982,21 +2009,21 @@ void swap(CloudJobSubmission &a, CloudJobSubmission &b) {
   swap(a.userAccountName, b.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) {
+CloudJobSubmission::CloudJobSubmission(const CloudJobSubmission& other58) {
   jobSubmissionInterfaceId = other58.jobSubmissionInterfaceId;
   securityProtocol = other58.securityProtocol;
   nodeId = other58.nodeId;
   executableType = other58.executableType;
   providerName = other58.providerName;
   userAccountName = other58.userAccountName;
+}
+CloudJobSubmission& CloudJobSubmission::operator=(const CloudJobSubmission& other59) {
+  jobSubmissionInterfaceId = other59.jobSubmissionInterfaceId;
+  securityProtocol = other59.securityProtocol;
+  nodeId = other59.nodeId;
+  executableType = other59.executableType;
+  providerName = other59.providerName;
+  userAccountName = other59.userAccountName;
   return *this;
 }
 std::ostream& operator<<(std::ostream& out, const CloudJobSubmission& obj) {
@@ -2065,9 +2092,9 @@ uint32_t JobSubmissionInterface::read(::apache::thrift::protocol::TProtocol* ipr
         break;
       case 2:
         if (ftype == ::apache::thrift::protocol::T_I32) {
-          int32_t ecast59;
-          xfer += iprot->readI32(ecast59);
-          this->jobSubmissionProtocol = (JobSubmissionProtocol::type)ecast59;
+          int32_t ecast60;
+          xfer += iprot->readI32(ecast60);
+          this->jobSubmissionProtocol = (JobSubmissionProtocol::type)ecast60;
           isset_jobSubmissionProtocol = true;
         } else {
           xfer += iprot->skip(ftype);
@@ -2129,15 +2156,15 @@ void swap(JobSubmissionInterface &a, JobSubmissionInterface &b) {
   swap(a.priorityOrder, b.priorityOrder);
 }
 
-JobSubmissionInterface::JobSubmissionInterface(const JobSubmissionInterface& other60) {
-  jobSubmissionInterfaceId = other60.jobSubmissionInterfaceId;
-  jobSubmissionProtocol = other60.jobSubmissionProtocol;
-  priorityOrder = other60.priorityOrder;
-}
-JobSubmissionInterface& JobSubmissionInterface::operator=(const JobSubmissionInterface& other61) {
+JobSubmissionInterface::JobSubmissionInterface(const JobSubmissionInterface& other61) {
   jobSubmissionInterfaceId = other61.jobSubmissionInterfaceId;
   jobSubmissionProtocol = other61.jobSubmissionProtocol;
   priorityOrder = other61.priorityOrder;
+}
+JobSubmissionInterface& JobSubmissionInterface::operator=(const JobSubmissionInterface& other62) {
+  jobSubmissionInterfaceId = other62.jobSubmissionInterfaceId;
+  jobSubmissionProtocol = other62.jobSubmissionProtocol;
+  priorityOrder = other62.priorityOrder;
   return *this;
 }
 std::ostream& operator<<(std::ostream& out, const JobSubmissionInterface& obj) {
@@ -2203,9 +2230,9 @@ uint32_t DataMovementInterface::read(::apache::thrift::protocol::TProtocol* ipro
         break;
       case 2:
         if (ftype == ::apache::thrift::protocol::T_I32) {
-          int32_t ecast62;
-          xfer += iprot->readI32(ecast62);
-          this->dataMovementProtocol = (DataMovementProtocol::type)ecast62;
+          int32_t ecast63;
+          xfer += iprot->readI32(ecast63);
+          this->dataMovementProtocol = (DataMovementProtocol::type)ecast63;
           isset_dataMovementProtocol = true;
         } else {
           xfer += iprot->skip(ftype);
@@ -2267,15 +2294,15 @@ void swap(DataMovementInterface &a, DataMovementInterface &b) {
   swap(a.priorityOrder, b.priorityOrder);
 }
 
-DataMovementInterface::DataMovementInterface(const DataMovementInterface& other63) {
-  dataMovementInterfaceId = other63.dataMovementInterfaceId;
-  dataMovementProtocol = other63.dataMovementProtocol;
-  priorityOrder = other63.priorityOrder;
-}
-DataMovementInterface& DataMovementInterface::operator=(const DataMovementInterface& other64) {
+DataMovementInterface::DataMovementInterface(const DataMovementInterface& other64) {
   dataMovementInterfaceId = other64.dataMovementInterfaceId;
   dataMovementProtocol = other64.dataMovementProtocol;
   priorityOrder = other64.priorityOrder;
+}
+DataMovementInterface& DataMovementInterface::operator=(const DataMovementInterface& other65) {
+  dataMovementInterfaceId = other65.dataMovementInterfaceId;
+  dataMovementProtocol = other65.dataMovementProtocol;
+  priorityOrder = other65.priorityOrder;
   return *this;
 }
 std::ostream& operator<<(std::ostream& out, const DataMovementInterface& obj) {
@@ -2391,14 +2418,14 @@ uint32_t ComputeResourceDescription::read(::apache::thrift::protocol::TProtocol*
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
             this->hostAliases.clear();
-            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)
+            uint32_t _size66;
+            ::apache::thrift::protocol::TType _etype69;
+            xfer += iprot->readListBegin(_etype69, _size66);
+            this->hostAliases.resize(_size66);
+            uint32_t _i70;
+            for (_i70 = 0; _i70 < _size66; ++_i70)
             {
-              xfer += iprot->readString(this->hostAliases[_i69]);
+              xfer += iprot->readString(this->hostAliases[_i70]);
             }
             xfer += iprot->readListEnd();
           }
@@ -2411,14 +2438,14 @@ uint32_t ComputeResourceDescription::read(::apache::thrift::protocol::TProtocol*
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
             this->ipAddresses.clear();
-            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)
+            uint32_t _size71;
+            ::apache::thrift::protocol::TType _etype74;
+            xfer += iprot->readListBegin(_etype74, _size71);
+            this->ipAddresses.resize(_size71);
+            uint32_t _i75;
+            for (_i75 = 0; _i75 < _size71; ++_i75)
             {
-              xfer += iprot->readString(this->ipAddresses[_i74]);
+              xfer += iprot->readString(this->ipAddresses[_i75]);
             }
             xfer += iprot->readListEnd();
           }
@@ -2447,14 +2474,14 @@ uint32_t ComputeResourceDescription::read(::apache::thrift::protocol::TProtocol*
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
             this->batchQueues.clear();
-            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)
+            uint32_t _size76;
+            ::apache::thrift::protocol::TType _etype79;
+            xfer += iprot->readListBegin(_etype79, _size76);
+            this->batchQueues.resize(_size76);
+            uint32_t _i80;
+            for (_i80 = 0; _i80 < _size76; ++_i80)
             {
-              xfer += this->batchQueues[_i79].read(iprot);
+              xfer += this->batchQueues[_i80].read(iprot);
             }
             xfer += iprot->readListEnd();
           }
@@ -2467,19 +2494,19 @@ uint32_t ComputeResourceDescription::read(::apache::thrift::protocol::TProtocol*
         if (ftype == ::apache::thrift::protocol::T_MAP) {
           {
             this->fileSystems.clear();
-            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)
+            uint32_t _size81;
+            ::apache::thrift::protocol::TType _ktype82;
+            ::apache::thrift::protocol::TType _vtype83;
+            xfer += iprot->readMapBegin(_ktype82, _vtype83, _size81);
+            uint32_t _i85;
+            for (_i85 = 0; _i85 < _size81; ++_i85)
             {
-              FileSystems::type _key85;
-              int32_t ecast87;
-              xfer += iprot->readI32(ecast87);
-              _key85 = (FileSystems::type)ecast87;
-              std::string& _val86 = this->fileSystems[_key85];
-              xfer += iprot->readString(_val86);
+              FileSystems::type _key86;
+              int32_t ecast88;
+              xfer += iprot->readI32(ecast88);
+              _key86 = (FileSystems::type)ecast88;
+              std::string& _val87 = this->fileSystems[_key86];
+              xfer += iprot->readString(_val87);
             }
             xfer += iprot->readMapEnd();
           }
@@ -2492,14 +2519,14 @@ uint32_t ComputeResourceDescription::read(::apache::thrift::protocol::TProtocol*
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
             this->jobSubmissionInterfaces.clear();
-            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)
+            uint32_t _size89;
+            ::apache::thrift::protocol::TType _etype92;
+            xfer += iprot->readListBegin(_etype92, _size89);
+            this->jobSubmissionInterfaces.resize(_size89);
+            uint32_t _i93;
+            for (_i93 = 0; _i93 < _size89; ++_i93)
             {
-              xfer += this->jobSubmissionInterfaces[_i92].read(iprot);
+              xfer += this->jobSubmissionInterfaces[_i93].read(iprot);
             }
             xfer += iprot->readListEnd();
           }
@@ -2512,14 +2539,14 @@ uint32_t ComputeResourceDescription::read(::apache::thrift::protocol::TProtocol*
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
             this->dataMovementInterfaces.clear();
-            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)
+            uint32_t _size94;
+            ::apache::thrift::protocol::TType _etype97;
+            xfer += iprot->readListBegin(_etype97, _size94);
+            this->dataMovementInterfaces.resize(_size94);
+            uint32_t _i98;
+            for (_i98 = 0; _i98 < _size94; ++_i98)
             {
-              xfer += this->dataMovementInterfaces[_i97].read(iprot);
+              xfer += this->dataMovementInterfaces[_i98].read(iprot);
             }
             xfer += iprot->readListEnd();
           }
@@ -2569,10 +2596,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 _iter98;
-      for (_iter98 = this->hostAliases.begin(); _iter98 != this->hostAliases.end(); ++_iter98)
+      std::vector<std::string> ::const_iterator _iter99;
+      for (_iter99 = this->hostAliases.begin(); _iter99 != this->hostAliases.end(); ++_iter99)
       {
-        xfer += oprot->writeString((*_iter98));
+        xfer += oprot->writeString((*_iter99));
       }
       xfer += oprot->writeListEnd();
     }
@@ -2582,10 +2609,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 _iter99;
-      for (_iter99 = this->ipAddresses.begin(); _iter99 != this->ipAddresses.end(); ++_iter99)
+      std::vector<std::string> ::const_iterator _iter100;
+      for (_iter100 = this->ipAddresses.begin(); _iter100 != this->ipAddresses.end(); ++_iter100)
       {
-        xfer += oprot->writeString((*_iter99));
+        xfer += oprot->writeString((*_iter100));
       }
       xfer += oprot->writeListEnd();
     }
@@ -2605,10 +2632,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 _iter100;
-      for (_iter100 = this->batchQueues.begin(); _iter100 != this->batchQueues.end(); ++_iter100)
+      std::vector<BatchQueue> ::const_iterator _iter101;
+      for (_iter101 = this->batchQueues.begin(); _iter101 != this->batchQueues.end(); ++_iter101)
       {
-        xfer += (*_iter100).write(oprot);
+        xfer += (*_iter101).write(oprot);
       }
       xfer += oprot->writeListEnd();
     }
@@ -2618,11 +2645,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 _iter101;
-      for (_iter101 = this->fileSystems.begin(); _iter101 != this->fileSystems.end(); ++_iter101)
+      std::map<FileSystems::type, std::string> ::const_iterator _iter102;
+      for (_iter102 = this->fileSystems.begin(); _iter102 != this->fileSystems.end(); ++_iter102)
       {
-        xfer += oprot->writeI32((int32_t)_iter101->first);
-        xfer += oprot->writeString(_iter101->second);
+        xfer += oprot->writeI32((int32_t)_iter102->first);
+        xfer += oprot->writeString(_iter102->second);
       }
       xfer += oprot->writeMapEnd();
     }
@@ -2632,10 +2659,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 _iter102;
-      for (_iter102 = this->jobSubmissionInterfaces.begin(); _iter102 != this->jobSubmissionInterfaces.end(); ++_iter102)
+      std::vector<JobSubmissionInterface> ::const_iterator _iter103;
+      for (_iter103 = this->jobSubmissionInterfaces.begin(); _iter103 != this->jobSubmissionInterfaces.end(); ++_iter103)
       {
-        xfer += (*_iter102).write(oprot);
+        xfer += (*_iter103).write(oprot);
       }
       xfer += oprot->writeListEnd();
     }
@@ -2645,10 +2672,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 _iter103;
-      for (_iter103 = this->dataMovementInterfaces.begin(); _iter103 != this->dataMovementInterfaces.end(); ++_iter103)
+      std::vector<DataMovementInterface> ::const_iterator _iter104;
+      for (_iter104 = this->dataMovementInterfaces.begin(); _iter104 != this->dataMovementInterfaces.end(); ++_iter104)
       {
-        xfer += (*_iter103).write(oprot);
+        xfer += (*_iter104).write(oprot);
       }
       xfer += oprot->writeListEnd();
     }
@@ -2681,21 +2708,7 @@ void swap(ComputeResourceDescription &a, ComputeResourceDescription &b) {
   swap(a.__isset, b.__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) {
+ComputeResourceDescription::ComputeResourceDescription(const ComputeResourceDescription& other105) {
   computeResourceId = other105.computeResourceId;
   hostName = other105.hostName;
   hostAliases = other105.hostAliases;
@@ -2708,6 +2721,20 @@ ComputeResourceDescription& ComputeResourceDescription::operator=(const ComputeR
   dataMovementInterfaces = other105.dataMovementInterfaces;
   maxMemoryPerNode = other105.maxMemoryPerNode;
   __isset = other105.__isset;
+}
+ComputeResourceDescription& ComputeResourceDescription::operator=(const ComputeResourceDescription& other106) {
+  computeResourceId = other106.computeResourceId;
+  hostName = other106.hostName;
+  hostAliases = other106.hostAliases;
+  ipAddresses = other106.ipAddresses;
+  resourceDescription = other106.resourceDescription;
+  enabled = other106.enabled;
+  batchQueues = other106.batchQueues;
+  fileSystems = other106.fileSystems;
+  jobSubmissionInterfaces = other106.jobSubmissionInterfaces;
+  dataMovementInterfaces = other106.dataMovementInterfaces;
+  maxMemoryPerNode = other106.maxMemoryPerNode;
+  __isset = other106.__isset;
   return *this;
 }
 std::ostream& operator<<(std::ostream& out, const ComputeResourceDescription& obj) {

http://git-wip-us.apache.org/repos/asf/airavata/blob/14b7bcf9/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 bfcd20e..f00be80 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
@@ -81,7 +81,8 @@ struct SecurityProtocol {
     SSH_KEYS = 1,
     GSI = 2,
     KERBEROS = 3,
-    OAUTH = 4
+    OAUTH = 4,
+    LOCAL = 5
   };
 };
 
@@ -483,26 +484,31 @@ void swap(UnicoreDataMovement &a, UnicoreDataMovement &b);
 class LOCALSubmission {
  public:
 
-  static const char* ascii_fingerprint; // = "A5A35C842CBE1CA9D6A13C5974C6FB8F";
-  static const uint8_t binary_fingerprint[16]; // = {0xA5,0xA3,0x5C,0x84,0x2C,0xBE,0x1C,0xA9,0xD6,0xA1,0x3C,0x59,0x74,0xC6,0xFB,0x8F};
+  static const char* ascii_fingerprint; // = "9237E82F3C6C8601C7B7AD6A6BBC347C";
+  static const uint8_t binary_fingerprint[16]; // = {0x92,0x37,0xE8,0x2F,0x3C,0x6C,0x86,0x01,0xC7,0xB7,0xAD,0x6A,0x6B,0xBC,0x34,0x7C};
 
   LOCALSubmission(const LOCALSubmission&);
   LOCALSubmission& operator=(const LOCALSubmission&);
-  LOCALSubmission() : jobSubmissionInterfaceId("DO_NOT_SET_AT_CLIENTS") {
+  LOCALSubmission() : jobSubmissionInterfaceId("DO_NOT_SET_AT_CLIENTS"), securityProtocol((SecurityProtocol::type)0) {
   }
 
   virtual ~LOCALSubmission() throw();
   std::string jobSubmissionInterfaceId;
+  SecurityProtocol::type securityProtocol;
   ResourceJobManager resourceJobManager;
 
   void __set_jobSubmissionInterfaceId(const std::string& val);
 
+  void __set_securityProtocol(const SecurityProtocol::type val);
+
   void __set_resourceJobManager(const ResourceJobManager& val);
 
   bool operator == (const LOCALSubmission & rhs) const
   {
     if (!(jobSubmissionInterfaceId == rhs.jobSubmissionInterfaceId))
       return false;
+    if (!(securityProtocol == rhs.securityProtocol))
+      return false;
     if (!(resourceJobManager == rhs.resourceJobManager))
       return false;
     return true;

http://git-wip-us.apache.org/repos/asf/airavata/blob/14b7bcf9/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/AppCatalog/ComputeResource/Types.php
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/AppCatalog/ComputeResource/Types.php b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/AppCatalog/ComputeResource/Types.php
index e5bff2c..ce752e3 100644
--- a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/AppCatalog/ComputeResource/Types.php
+++ b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/AppCatalog/ComputeResource/Types.php
@@ -146,12 +146,14 @@ final class SecurityProtocol {
   const GSI = 2;
   const KERBEROS = 3;
   const OAUTH = 4;
+  const LOCAL = 5;
   static public $__names = array(
     0 => 'USERNAME_PASSWORD',
     1 => 'SSH_KEYS',
     2 => 'GSI',
     3 => 'KERBEROS',
     4 => 'OAUTH',
+    5 => 'LOCAL',
   );
 }
 
@@ -1145,6 +1147,10 @@ class LOCALSubmission {
    */
   public $jobSubmissionInterfaceId = "DO_NOT_SET_AT_CLIENTS";
   /**
+   * @var int
+   */
+  public $securityProtocol = null;
+  /**
    * @var \Airavata\Model\AppCatalog\ComputeResource\ResourceJobManager
    */
   public $resourceJobManager = null;
@@ -1157,6 +1163,10 @@ class LOCALSubmission {
           'type' => TType::STRING,
           ),
         2 => array(
+          'var' => 'securityProtocol',
+          'type' => TType::I32,
+          ),
+        3 => array(
           'var' => 'resourceJobManager',
           'type' => TType::STRUCT,
           'class' => '\Airavata\Model\AppCatalog\ComputeResource\ResourceJobManager',
@@ -1167,6 +1177,9 @@ class LOCALSubmission {
       if (isset($vals['jobSubmissionInterfaceId'])) {
         $this->jobSubmissionInterfaceId = $vals['jobSubmissionInterfaceId'];
       }
+      if (isset($vals['securityProtocol'])) {
+        $this->securityProtocol = $vals['securityProtocol'];
+      }
       if (isset($vals['resourceJobManager'])) {
         $this->resourceJobManager = $vals['resourceJobManager'];
       }
@@ -1200,6 +1213,13 @@ class LOCALSubmission {
           }
           break;
         case 2:
+          if ($ftype == TType::I32) {
+            $xfer += $input->readI32($this->securityProtocol);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 3:
           if ($ftype == TType::STRUCT) {
             $this->resourceJobManager = new \Airavata\Model\AppCatalog\ComputeResource\ResourceJobManager();
             $xfer += $this->resourceJobManager->read($input);
@@ -1225,11 +1245,16 @@ class LOCALSubmission {
       $xfer += $output->writeString($this->jobSubmissionInterfaceId);
       $xfer += $output->writeFieldEnd();
     }
+    if ($this->securityProtocol !== null) {
+      $xfer += $output->writeFieldBegin('securityProtocol', TType::I32, 2);
+      $xfer += $output->writeI32($this->securityProtocol);
+      $xfer += $output->writeFieldEnd();
+    }
     if ($this->resourceJobManager !== null) {
       if (!is_object($this->resourceJobManager)) {
         throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
       }
-      $xfer += $output->writeFieldBegin('resourceJobManager', TType::STRUCT, 2);
+      $xfer += $output->writeFieldBegin('resourceJobManager', TType::STRUCT, 3);
       $xfer += $this->resourceJobManager->write($output);
       $xfer += $output->writeFieldEnd();
     }

http://git-wip-us.apache.org/repos/asf/airavata/blob/14b7bcf9/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/appcatalog/computeresource/ttypes.py
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/appcatalog/computeresource/ttypes.py b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/appcatalog/computeresource/ttypes.py
index 4b99185..e4847ad 100644
--- a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/appcatalog/computeresource/ttypes.py
+++ b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/appcatalog/computeresource/ttypes.py
@@ -173,6 +173,7 @@ class SecurityProtocol:
   GSI = 2
   KERBEROS = 3
   OAUTH = 4
+  LOCAL = 5
 
   _VALUES_TO_NAMES = {
     0: "USERNAME_PASSWORD",
@@ -180,6 +181,7 @@ class SecurityProtocol:
     2: "GSI",
     3: "KERBEROS",
     4: "OAUTH",
+    5: "LOCAL",
   }
 
   _NAMES_TO_VALUES = {
@@ -188,6 +190,7 @@ class SecurityProtocol:
     "GSI": 2,
     "KERBEROS": 3,
     "OAUTH": 4,
+    "LOCAL": 5,
   }
 
 class JobSubmissionProtocol:
@@ -961,17 +964,20 @@ class LOCALSubmission:
 
   Attributes:
    - jobSubmissionInterfaceId
+   - securityProtocol
    - resourceJobManager
   """
 
   thrift_spec = (
     None, # 0
     (1, TType.STRING, 'jobSubmissionInterfaceId', None, "DO_NOT_SET_AT_CLIENTS", ), # 1
-    (2, TType.STRUCT, 'resourceJobManager', (ResourceJobManager, ResourceJobManager.thrift_spec), None, ), # 2
+    (2, TType.I32, 'securityProtocol', None, None, ), # 2
+    (3, TType.STRUCT, 'resourceJobManager', (ResourceJobManager, ResourceJobManager.thrift_spec), None, ), # 3
   )
 
-  def __init__(self, jobSubmissionInterfaceId=thrift_spec[1][4], resourceJobManager=None,):
+  def __init__(self, jobSubmissionInterfaceId=thrift_spec[1][4], securityProtocol=None, resourceJobManager=None,):
     self.jobSubmissionInterfaceId = jobSubmissionInterfaceId
+    self.securityProtocol = securityProtocol
     self.resourceJobManager = resourceJobManager
 
   def read(self, iprot):
@@ -989,6 +995,11 @@ class LOCALSubmission:
         else:
           iprot.skip(ftype)
       elif fid == 2:
+        if ftype == TType.I32:
+          self.securityProtocol = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
         if ftype == TType.STRUCT:
           self.resourceJobManager = ResourceJobManager()
           self.resourceJobManager.read(iprot)
@@ -1008,8 +1019,12 @@ class LOCALSubmission:
       oprot.writeFieldBegin('jobSubmissionInterfaceId', TType.STRING, 1)
       oprot.writeString(self.jobSubmissionInterfaceId)
       oprot.writeFieldEnd()
+    if self.securityProtocol is not None:
+      oprot.writeFieldBegin('securityProtocol', TType.I32, 2)
+      oprot.writeI32(self.securityProtocol)
+      oprot.writeFieldEnd()
     if self.resourceJobManager is not None:
-      oprot.writeFieldBegin('resourceJobManager', TType.STRUCT, 2)
+      oprot.writeFieldBegin('resourceJobManager', TType.STRUCT, 3)
       self.resourceJobManager.write(oprot)
       oprot.writeFieldEnd()
     oprot.writeFieldStop()
@@ -1018,6 +1033,8 @@ class LOCALSubmission:
   def validate(self):
     if self.jobSubmissionInterfaceId is None:
       raise TProtocol.TProtocolException(message='Required field jobSubmissionInterfaceId is unset!')
+    if self.securityProtocol is None:
+      raise TProtocol.TProtocolException(message='Required field securityProtocol is unset!')
     if self.resourceJobManager is None:
       raise TProtocol.TProtocolException(message='Required field resourceJobManager is unset!')
     return
@@ -1026,6 +1043,7 @@ class LOCALSubmission:
   def __hash__(self):
     value = 17
     value = (value * 31) ^ hash(self.jobSubmissionInterfaceId)
+    value = (value * 31) ^ hash(self.securityProtocol)
     value = (value * 31) ^ hash(self.resourceJobManager)
     return value
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/14b7bcf9/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/LOCALSubmission.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/LOCALSubmission.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/LOCALSubmission.java
index 78c9a7f..efc33c0 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/LOCALSubmission.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/LOCALSubmission.java
@@ -65,7 +65,8 @@ public class LOCALSubmission implements org.apache.thrift.TBase<LOCALSubmission,
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("LOCALSubmission");
 
   private static final org.apache.thrift.protocol.TField JOB_SUBMISSION_INTERFACE_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("jobSubmissionInterfaceId", org.apache.thrift.protocol.TType.STRING, (short)1);
-  private static final org.apache.thrift.protocol.TField RESOURCE_JOB_MANAGER_FIELD_DESC = new org.apache.thrift.protocol.TField("resourceJobManager", org.apache.thrift.protocol.TType.STRUCT, (short)2);
+  private static final org.apache.thrift.protocol.TField SECURITY_PROTOCOL_FIELD_DESC = new org.apache.thrift.protocol.TField("securityProtocol", org.apache.thrift.protocol.TType.I32, (short)2);
+  private static final org.apache.thrift.protocol.TField RESOURCE_JOB_MANAGER_FIELD_DESC = new org.apache.thrift.protocol.TField("resourceJobManager", org.apache.thrift.protocol.TType.STRUCT, (short)3);
 
   private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
   static {
@@ -74,12 +75,18 @@ public class LOCALSubmission implements org.apache.thrift.TBase<LOCALSubmission,
   }
 
   private String jobSubmissionInterfaceId; // required
+  private SecurityProtocol securityProtocol; // required
   private ResourceJobManager resourceJobManager; // required
 
   /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
   public enum _Fields implements org.apache.thrift.TFieldIdEnum {
     JOB_SUBMISSION_INTERFACE_ID((short)1, "jobSubmissionInterfaceId"),
-    RESOURCE_JOB_MANAGER((short)2, "resourceJobManager");
+    /**
+     * 
+     * @see SecurityProtocol
+     */
+    SECURITY_PROTOCOL((short)2, "securityProtocol"),
+    RESOURCE_JOB_MANAGER((short)3, "resourceJobManager");
 
     private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
 
@@ -96,7 +103,9 @@ public class LOCALSubmission implements org.apache.thrift.TBase<LOCALSubmission,
       switch(fieldId) {
         case 1: // JOB_SUBMISSION_INTERFACE_ID
           return JOB_SUBMISSION_INTERFACE_ID;
-        case 2: // RESOURCE_JOB_MANAGER
+        case 2: // SECURITY_PROTOCOL
+          return SECURITY_PROTOCOL;
+        case 3: // RESOURCE_JOB_MANAGER
           return RESOURCE_JOB_MANAGER;
         default:
           return null;
@@ -143,6 +152,8 @@ public class LOCALSubmission implements org.apache.thrift.TBase<LOCALSubmission,
     Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
     tmpMap.put(_Fields.JOB_SUBMISSION_INTERFACE_ID, new org.apache.thrift.meta_data.FieldMetaData("jobSubmissionInterfaceId", org.apache.thrift.TFieldRequirementType.REQUIRED, 
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    tmpMap.put(_Fields.SECURITY_PROTOCOL, new org.apache.thrift.meta_data.FieldMetaData("securityProtocol", org.apache.thrift.TFieldRequirementType.REQUIRED, 
+        new org.apache.thrift.meta_data.EnumMetaData(org.apache.thrift.protocol.TType.ENUM, SecurityProtocol.class)));
     tmpMap.put(_Fields.RESOURCE_JOB_MANAGER, new org.apache.thrift.meta_data.FieldMetaData("resourceJobManager", org.apache.thrift.TFieldRequirementType.REQUIRED, 
         new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, ResourceJobManager.class)));
     metaDataMap = Collections.unmodifiableMap(tmpMap);
@@ -156,10 +167,12 @@ public class LOCALSubmission implements org.apache.thrift.TBase<LOCALSubmission,
 
   public LOCALSubmission(
     String jobSubmissionInterfaceId,
+    SecurityProtocol securityProtocol,
     ResourceJobManager resourceJobManager)
   {
     this();
     this.jobSubmissionInterfaceId = jobSubmissionInterfaceId;
+    this.securityProtocol = securityProtocol;
     this.resourceJobManager = resourceJobManager;
   }
 
@@ -170,6 +183,9 @@ public class LOCALSubmission implements org.apache.thrift.TBase<LOCALSubmission,
     if (other.isSetJobSubmissionInterfaceId()) {
       this.jobSubmissionInterfaceId = other.jobSubmissionInterfaceId;
     }
+    if (other.isSetSecurityProtocol()) {
+      this.securityProtocol = other.securityProtocol;
+    }
     if (other.isSetResourceJobManager()) {
       this.resourceJobManager = new ResourceJobManager(other.resourceJobManager);
     }
@@ -183,6 +199,7 @@ public class LOCALSubmission implements org.apache.thrift.TBase<LOCALSubmission,
   public void clear() {
     this.jobSubmissionInterfaceId = "DO_NOT_SET_AT_CLIENTS";
 
+    this.securityProtocol = null;
     this.resourceJobManager = null;
   }
 
@@ -209,6 +226,37 @@ public class LOCALSubmission implements org.apache.thrift.TBase<LOCALSubmission,
     }
   }
 
+  /**
+   * 
+   * @see SecurityProtocol
+   */
+  public SecurityProtocol getSecurityProtocol() {
+    return this.securityProtocol;
+  }
+
+  /**
+   * 
+   * @see SecurityProtocol
+   */
+  public void setSecurityProtocol(SecurityProtocol securityProtocol) {
+    this.securityProtocol = securityProtocol;
+  }
+
+  public void unsetSecurityProtocol() {
+    this.securityProtocol = null;
+  }
+
+  /** Returns true if field securityProtocol is set (has been assigned a value) and false otherwise */
+  public boolean isSetSecurityProtocol() {
+    return this.securityProtocol != null;
+  }
+
+  public void setSecurityProtocolIsSet(boolean value) {
+    if (!value) {
+      this.securityProtocol = null;
+    }
+  }
+
   public ResourceJobManager getResourceJobManager() {
     return this.resourceJobManager;
   }
@@ -242,6 +290,14 @@ public class LOCALSubmission implements org.apache.thrift.TBase<LOCALSubmission,
       }
       break;
 
+    case SECURITY_PROTOCOL:
+      if (value == null) {
+        unsetSecurityProtocol();
+      } else {
+        setSecurityProtocol((SecurityProtocol)value);
+      }
+      break;
+
     case RESOURCE_JOB_MANAGER:
       if (value == null) {
         unsetResourceJobManager();
@@ -258,6 +314,9 @@ public class LOCALSubmission implements org.apache.thrift.TBase<LOCALSubmission,
     case JOB_SUBMISSION_INTERFACE_ID:
       return getJobSubmissionInterfaceId();
 
+    case SECURITY_PROTOCOL:
+      return getSecurityProtocol();
+
     case RESOURCE_JOB_MANAGER:
       return getResourceJobManager();
 
@@ -274,6 +333,8 @@ public class LOCALSubmission implements org.apache.thrift.TBase<LOCALSubmission,
     switch (field) {
     case JOB_SUBMISSION_INTERFACE_ID:
       return isSetJobSubmissionInterfaceId();
+    case SECURITY_PROTOCOL:
+      return isSetSecurityProtocol();
     case RESOURCE_JOB_MANAGER:
       return isSetResourceJobManager();
     }
@@ -302,6 +363,15 @@ public class LOCALSubmission implements org.apache.thrift.TBase<LOCALSubmission,
         return false;
     }
 
+    boolean this_present_securityProtocol = true && this.isSetSecurityProtocol();
+    boolean that_present_securityProtocol = true && that.isSetSecurityProtocol();
+    if (this_present_securityProtocol || that_present_securityProtocol) {
+      if (!(this_present_securityProtocol && that_present_securityProtocol))
+        return false;
+      if (!this.securityProtocol.equals(that.securityProtocol))
+        return false;
+    }
+
     boolean this_present_resourceJobManager = true && this.isSetResourceJobManager();
     boolean that_present_resourceJobManager = true && that.isSetResourceJobManager();
     if (this_present_resourceJobManager || that_present_resourceJobManager) {
@@ -323,6 +393,11 @@ public class LOCALSubmission implements org.apache.thrift.TBase<LOCALSubmission,
     if (present_jobSubmissionInterfaceId)
       list.add(jobSubmissionInterfaceId);
 
+    boolean present_securityProtocol = true && (isSetSecurityProtocol());
+    list.add(present_securityProtocol);
+    if (present_securityProtocol)
+      list.add(securityProtocol.getValue());
+
     boolean present_resourceJobManager = true && (isSetResourceJobManager());
     list.add(present_resourceJobManager);
     if (present_resourceJobManager)
@@ -349,6 +424,16 @@ public class LOCALSubmission implements org.apache.thrift.TBase<LOCALSubmission,
         return lastComparison;
       }
     }
+    lastComparison = Boolean.valueOf(isSetSecurityProtocol()).compareTo(other.isSetSecurityProtocol());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetSecurityProtocol()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.securityProtocol, other.securityProtocol);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
     lastComparison = Boolean.valueOf(isSetResourceJobManager()).compareTo(other.isSetResourceJobManager());
     if (lastComparison != 0) {
       return lastComparison;
@@ -387,6 +472,14 @@ public class LOCALSubmission implements org.apache.thrift.TBase<LOCALSubmission,
     }
     first = false;
     if (!first) sb.append(", ");
+    sb.append("securityProtocol:");
+    if (this.securityProtocol == null) {
+      sb.append("null");
+    } else {
+      sb.append(this.securityProtocol);
+    }
+    first = false;
+    if (!first) sb.append(", ");
     sb.append("resourceJobManager:");
     if (this.resourceJobManager == null) {
       sb.append("null");
@@ -404,6 +497,10 @@ public class LOCALSubmission implements org.apache.thrift.TBase<LOCALSubmission,
       throw new org.apache.thrift.protocol.TProtocolException("Required field 'jobSubmissionInterfaceId' is unset! Struct:" + toString());
     }
 
+    if (!isSetSecurityProtocol()) {
+      throw new org.apache.thrift.protocol.TProtocolException("Required field 'securityProtocol' is unset! Struct:" + toString());
+    }
+
     if (!isSetResourceJobManager()) {
       throw new org.apache.thrift.protocol.TProtocolException("Required field 'resourceJobManager' is unset! Struct:" + toString());
     }
@@ -456,7 +553,15 @@ public class LOCALSubmission implements org.apache.thrift.TBase<LOCALSubmission,
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
-          case 2: // RESOURCE_JOB_MANAGER
+          case 2: // SECURITY_PROTOCOL
+            if (schemeField.type == org.apache.thrift.protocol.TType.I32) {
+              struct.securityProtocol = org.apache.airavata.model.appcatalog.computeresource.SecurityProtocol.findByValue(iprot.readI32());
+              struct.setSecurityProtocolIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 3: // RESOURCE_JOB_MANAGER
             if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
               struct.resourceJobManager = new ResourceJobManager();
               struct.resourceJobManager.read(iprot);
@@ -483,6 +588,11 @@ public class LOCALSubmission implements org.apache.thrift.TBase<LOCALSubmission,
         oprot.writeString(struct.jobSubmissionInterfaceId);
         oprot.writeFieldEnd();
       }
+      if (struct.securityProtocol != null) {
+        oprot.writeFieldBegin(SECURITY_PROTOCOL_FIELD_DESC);
+        oprot.writeI32(struct.securityProtocol.getValue());
+        oprot.writeFieldEnd();
+      }
       if (struct.resourceJobManager != null) {
         oprot.writeFieldBegin(RESOURCE_JOB_MANAGER_FIELD_DESC);
         struct.resourceJobManager.write(oprot);
@@ -506,6 +616,7 @@ public class LOCALSubmission implements org.apache.thrift.TBase<LOCALSubmission,
     public void write(org.apache.thrift.protocol.TProtocol prot, LOCALSubmission struct) throws org.apache.thrift.TException {
       TTupleProtocol oprot = (TTupleProtocol) prot;
       oprot.writeString(struct.jobSubmissionInterfaceId);
+      oprot.writeI32(struct.securityProtocol.getValue());
       struct.resourceJobManager.write(oprot);
     }
 
@@ -514,6 +625,8 @@ public class LOCALSubmission implements org.apache.thrift.TBase<LOCALSubmission,
       TTupleProtocol iprot = (TTupleProtocol) prot;
       struct.jobSubmissionInterfaceId = iprot.readString();
       struct.setJobSubmissionInterfaceIdIsSet(true);
+      struct.securityProtocol = org.apache.airavata.model.appcatalog.computeresource.SecurityProtocol.findByValue(iprot.readI32());
+      struct.setSecurityProtocolIsSet(true);
       struct.resourceJobManager = new ResourceJobManager();
       struct.resourceJobManager.read(iprot);
       struct.setResourceJobManagerIsSet(true);

http://git-wip-us.apache.org/repos/asf/airavata/blob/14b7bcf9/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/SecurityProtocol.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/SecurityProtocol.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/SecurityProtocol.java
index ce43568..e033812 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/SecurityProtocol.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/computeresource/SecurityProtocol.java
@@ -47,7 +47,8 @@ public enum SecurityProtocol implements org.apache.thrift.TEnum {
   SSH_KEYS(1),
   GSI(2),
   KERBEROS(3),
-  OAUTH(4);
+  OAUTH(4),
+  LOCAL(5);
 
   private final int value;
 
@@ -78,6 +79,8 @@ public enum SecurityProtocol implements org.apache.thrift.TEnum {
         return KERBEROS;
       case 4:
         return OAUTH;
+      case 5:
+        return LOCAL;
       default:
         return null;
     }

http://git-wip-us.apache.org/repos/asf/airavata/blob/14b7bcf9/modules/configuration/server/src/main/resources/PBSTemplate.xslt
----------------------------------------------------------------------
diff --git a/modules/configuration/server/src/main/resources/PBSTemplate.xslt b/modules/configuration/server/src/main/resources/PBSTemplate.xslt
index 75b71b2..a7c74a6 100644
--- a/modules/configuration/server/src/main/resources/PBSTemplate.xslt
+++ b/modules/configuration/server/src/main/resources/PBSTemplate.xslt
@@ -41,6 +41,11 @@
     </xsl:when>
     </xsl:choose>
     <xsl:choose>
+    <xsl:when test="ns:jobSubmitterCommand = 'ccmrun'">
+#PBS -l gres=ccm
+    </xsl:when>
+    </xsl:choose>
+    <xsl:choose>
     <xsl:when test="ns:standardOutFile != ''">
 #PBS -o <xsl:value-of select="ns:standardOutFile"/>
     </xsl:when>

http://git-wip-us.apache.org/repos/asf/airavata/blob/14b7bcf9/modules/orchestrator/orchestrator-client/src/main/java/org/apache/airavata/orchestrator/cpi/OrchestratorService.java
----------------------------------------------------------------------
diff --git a/modules/orchestrator/orchestrator-client/src/main/java/org/apache/airavata/orchestrator/cpi/OrchestratorService.java b/modules/orchestrator/orchestrator-client/src/main/java/org/apache/airavata/orchestrator/cpi/OrchestratorService.java
index 09dc50e..6dbe722 100644
--- a/modules/orchestrator/orchestrator-client/src/main/java/org/apache/airavata/orchestrator/cpi/OrchestratorService.java
+++ b/modules/orchestrator/orchestrator-client/src/main/java/org/apache/airavata/orchestrator/cpi/OrchestratorService.java
@@ -88,8 +88,9 @@ public class OrchestratorService {
      * 
      * @param processId
      * @param airavataCredStoreToken
+     * @param gatewayId
      */
-    public boolean launchProcess(String processId, String airavataCredStoreToken) throws org.apache.thrift.TException;
+    public boolean launchProcess(String processId, String airavataCredStoreToken, String gatewayId) throws org.apache.thrift.TException;
 
     /**
      *  *
@@ -128,7 +129,7 @@ public class OrchestratorService {
 
     public void launchExperiment(String experimentId, String gatewayId, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
 
-    public void launchProcess(String processId, String airavataCredStoreToken, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
+    public void launchProcess(String processId, String airavataCredStoreToken, String gatewayId, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
 
     public void validateExperiment(String experimentId, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
 
@@ -204,17 +205,18 @@ public class OrchestratorService {
       throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "launchExperiment failed: unknown result");
     }
 
-    public boolean launchProcess(String processId, String airavataCredStoreToken) throws org.apache.thrift.TException
+    public boolean launchProcess(String processId, String airavataCredStoreToken, String gatewayId) throws org.apache.thrift.TException
     {
-      send_launchProcess(processId, airavataCredStoreToken);
+      send_launchProcess(processId, airavataCredStoreToken, gatewayId);
       return recv_launchProcess();
     }
 
-    public void send_launchProcess(String processId, String airavataCredStoreToken) throws org.apache.thrift.TException
+    public void send_launchProcess(String processId, String airavataCredStoreToken, String gatewayId) throws org.apache.thrift.TException
     {
       launchProcess_args args = new launchProcess_args();
       args.setProcessId(processId);
       args.setAiravataCredStoreToken(airavataCredStoreToken);
+      args.setGatewayId(gatewayId);
       sendBase("launchProcess", args);
     }
 
@@ -387,9 +389,9 @@ public class OrchestratorService {
       }
     }
 
-    public void launchProcess(String processId, String airavataCredStoreToken, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
+    public void launchProcess(String processId, String airavataCredStoreToken, String gatewayId, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
       checkReady();
-      launchProcess_call method_call = new launchProcess_call(processId, airavataCredStoreToken, resultHandler, this, ___protocolFactory, ___transport);
+      launchProcess_call method_call = new launchProcess_call(processId, airavataCredStoreToken, gatewayId, resultHandler, this, ___protocolFactory, ___transport);
       this.___currentMethod = method_call;
       ___manager.call(method_call);
     }
@@ -397,10 +399,12 @@ public class OrchestratorService {
     public static class launchProcess_call extends org.apache.thrift.async.TAsyncMethodCall {
       private String processId;
       private String airavataCredStoreToken;
-      public launchProcess_call(String processId, String airavataCredStoreToken, org.apache.thrift.async.AsyncMethodCallback resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
+      private String gatewayId;
+      public launchProcess_call(String processId, String airavataCredStoreToken, String gatewayId, org.apache.thrift.async.AsyncMethodCallback resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
         super(client, protocolFactory, transport, resultHandler, false);
         this.processId = processId;
         this.airavataCredStoreToken = airavataCredStoreToken;
+        this.gatewayId = gatewayId;
       }
 
       public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
@@ -408,6 +412,7 @@ public class OrchestratorService {
         launchProcess_args args = new launchProcess_args();
         args.setProcessId(processId);
         args.setAiravataCredStoreToken(airavataCredStoreToken);
+        args.setGatewayId(gatewayId);
         args.write(prot);
         prot.writeMessageEnd();
       }
@@ -602,7 +607,7 @@ public class OrchestratorService {
 
       public launchProcess_result getResult(I iface, launchProcess_args args) throws org.apache.thrift.TException {
         launchProcess_result result = new launchProcess_result();
-        result.success = iface.launchProcess(args.processId, args.airavataCredStoreToken);
+        result.success = iface.launchProcess(args.processId, args.airavataCredStoreToken, args.gatewayId);
         result.setSuccessIsSet(true);
         return result;
       }
@@ -852,7 +857,7 @@ public class OrchestratorService {
       }
 
       public void start(I iface, launchProcess_args args, org.apache.thrift.async.AsyncMethodCallback<Boolean> resultHandler) throws TException {
-        iface.launchProcess(args.processId, args.airavataCredStoreToken,resultHandler);
+        iface.launchProcess(args.processId, args.airavataCredStoreToken, args.gatewayId,resultHandler);
       }
     }
 
@@ -2456,6 +2461,7 @@ public class OrchestratorService {
 
     private static final org.apache.thrift.protocol.TField PROCESS_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("processId", org.apache.thrift.protocol.TType.STRING, (short)1);
     private static final org.apache.thrift.protocol.TField AIRAVATA_CRED_STORE_TOKEN_FIELD_DESC = new org.apache.thrift.protocol.TField("airavataCredStoreToken", org.apache.thrift.protocol.TType.STRING, (short)2);
+    private static final org.apache.thrift.protocol.TField GATEWAY_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("gatewayId", org.apache.thrift.protocol.TType.STRING, (short)3);
 
     private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
     static {
@@ -2465,11 +2471,13 @@ public class OrchestratorService {
 
     public String processId; // required
     public String airavataCredStoreToken; // required
+    public String gatewayId; // required
 
     /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
     public enum _Fields implements org.apache.thrift.TFieldIdEnum {
       PROCESS_ID((short)1, "processId"),
-      AIRAVATA_CRED_STORE_TOKEN((short)2, "airavataCredStoreToken");
+      AIRAVATA_CRED_STORE_TOKEN((short)2, "airavataCredStoreToken"),
+      GATEWAY_ID((short)3, "gatewayId");
 
       private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
 
@@ -2488,6 +2496,8 @@ public class OrchestratorService {
             return PROCESS_ID;
           case 2: // AIRAVATA_CRED_STORE_TOKEN
             return AIRAVATA_CRED_STORE_TOKEN;
+          case 3: // GATEWAY_ID
+            return GATEWAY_ID;
           default:
             return null;
         }
@@ -2535,6 +2545,8 @@ public class OrchestratorService {
           new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
       tmpMap.put(_Fields.AIRAVATA_CRED_STORE_TOKEN, new org.apache.thrift.meta_data.FieldMetaData("airavataCredStoreToken", org.apache.thrift.TFieldRequirementType.REQUIRED, 
           new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+      tmpMap.put(_Fields.GATEWAY_ID, new org.apache.thrift.meta_data.FieldMetaData("gatewayId", org.apache.thrift.TFieldRequirementType.REQUIRED, 
+          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
       metaDataMap = Collections.unmodifiableMap(tmpMap);
       org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(launchProcess_args.class, metaDataMap);
     }
@@ -2544,11 +2556,13 @@ public class OrchestratorService {
 
     public launchProcess_args(
       String processId,
-      String airavataCredStoreToken)
+      String airavataCredStoreToken,
+      String gatewayId)
     {
       this();
       this.processId = processId;
       this.airavataCredStoreToken = airavataCredStoreToken;
+      this.gatewayId = gatewayId;
     }
 
     /**
@@ -2561,6 +2575,9 @@ public class OrchestratorService {
       if (other.isSetAiravataCredStoreToken()) {
         this.airavataCredStoreToken = other.airavataCredStoreToken;
       }
+      if (other.isSetGatewayId()) {
+        this.gatewayId = other.gatewayId;
+      }
     }
 
     public launchProcess_args deepCopy() {
@@ -2571,6 +2588,7 @@ public class OrchestratorService {
     public void clear() {
       this.processId = null;
       this.airavataCredStoreToken = null;
+      this.gatewayId = null;
     }
 
     public String getProcessId() {
@@ -2621,6 +2639,30 @@ public class OrchestratorService {
       }
     }
 
+    public String getGatewayId() {
+      return this.gatewayId;
+    }
+
+    public launchProcess_args setGatewayId(String gatewayId) {
+      this.gatewayId = gatewayId;
+      return this;
+    }
+
+    public void unsetGatewayId() {
+      this.gatewayId = null;
+    }
+
+    /** Returns true if field gatewayId is set (has been assigned a value) and false otherwise */
+    public boolean isSetGatewayId() {
+      return this.gatewayId != null;
+    }
+
+    public void setGatewayIdIsSet(boolean value) {
+      if (!value) {
+        this.gatewayId = null;
+      }
+    }
+
     public void setFieldValue(_Fields field, Object value) {
       switch (field) {
       case PROCESS_ID:
@@ -2639,6 +2681,14 @@ public class OrchestratorService {
         }
         break;
 
+      case GATEWAY_ID:
+        if (value == null) {
+          unsetGatewayId();
+        } else {
+          setGatewayId((String)value);
+        }
+        break;
+
       }
     }
 
@@ -2650,6 +2700,9 @@ public class OrchestratorService {
       case AIRAVATA_CRED_STORE_TOKEN:
         return getAiravataCredStoreToken();
 
+      case GATEWAY_ID:
+        return getGatewayId();
+
       }
       throw new IllegalStateException();
     }
@@ -2665,6 +2718,8 @@ public class OrchestratorService {
         return isSetProcessId();
       case AIRAVATA_CRED_STORE_TOKEN:
         return isSetAiravataCredStoreToken();
+      case GATEWAY_ID:
+        return isSetGatewayId();
       }
       throw new IllegalStateException();
     }
@@ -2700,6 +2755,15 @@ public class OrchestratorService {
           return false;
       }
 
+      boolean this_present_gatewayId = true && this.isSetGatewayId();
+      boolean that_present_gatewayId = true && that.isSetGatewayId();
+      if (this_present_gatewayId || that_present_gatewayId) {
+        if (!(this_present_gatewayId && that_present_gatewayId))
+          return false;
+        if (!this.gatewayId.equals(that.gatewayId))
+          return false;
+      }
+
       return true;
     }
 
@@ -2717,6 +2781,11 @@ public class OrchestratorService {
       if (present_airavataCredStoreToken)
         list.add(airavataCredStoreToken);
 
+      boolean present_gatewayId = true && (isSetGatewayId());
+      list.add(present_gatewayId);
+      if (present_gatewayId)
+        list.add(gatewayId);
+
       return list.hashCode();
     }
 
@@ -2748,6 +2817,16 @@ public class OrchestratorService {
           return lastComparison;
         }
       }
+      lastComparison = Boolean.valueOf(isSetGatewayId()).compareTo(other.isSetGatewayId());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetGatewayId()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.gatewayId, other.gatewayId);
+        if (lastComparison != 0) {
+          return lastComparison;
+        }
+      }
       return 0;
     }
 
@@ -2783,6 +2862,14 @@ public class OrchestratorService {
         sb.append(this.airavataCredStoreToken);
       }
       first = false;
+      if (!first) sb.append(", ");
+      sb.append("gatewayId:");
+      if (this.gatewayId == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.gatewayId);
+      }
+      first = false;
       sb.append(")");
       return sb.toString();
     }
@@ -2795,6 +2882,9 @@ public class OrchestratorService {
       if (airavataCredStoreToken == null) {
         throw new org.apache.thrift.protocol.TProtocolException("Required field 'airavataCredStoreToken' was not present! Struct: " + toString());
       }
+      if (gatewayId == null) {
+        throw new org.apache.thrift.protocol.TProtocolException("Required field 'gatewayId' was not present! Struct: " + toString());
+      }
       // check for sub-struct validity
     }
 
@@ -2848,6 +2938,14 @@ public class OrchestratorService {
                 org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
               }
               break;
+            case 3: // GATEWAY_ID
+              if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+                struct.gatewayId = iprot.readString();
+                struct.setGatewayIdIsSet(true);
+              } else { 
+                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+              }
+              break;
             default:
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
           }
@@ -2873,6 +2971,11 @@ public class OrchestratorService {
           oprot.writeString(struct.airavataCredStoreToken);
           oprot.writeFieldEnd();
         }
+        if (struct.gatewayId != null) {
+          oprot.writeFieldBegin(GATEWAY_ID_FIELD_DESC);
+          oprot.writeString(struct.gatewayId);
+          oprot.writeFieldEnd();
+        }
         oprot.writeFieldStop();
         oprot.writeStructEnd();
       }
@@ -2892,6 +2995,7 @@ public class OrchestratorService {
         TTupleProtocol oprot = (TTupleProtocol) prot;
         oprot.writeString(struct.processId);
         oprot.writeString(struct.airavataCredStoreToken);
+        oprot.writeString(struct.gatewayId);
       }
 
       @Override
@@ -2901,6 +3005,8 @@ public class OrchestratorService {
         struct.setProcessIdIsSet(true);
         struct.airavataCredStoreToken = iprot.readString();
         struct.setAiravataCredStoreTokenIsSet(true);
+        struct.gatewayId = iprot.readString();
+        struct.setGatewayIdIsSet(true);
       }
     }
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/14b7bcf9/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/context/OrchestratorContext.java
----------------------------------------------------------------------
diff --git a/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/context/OrchestratorContext.java b/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/context/OrchestratorContext.java
index f182bd0..41ef69f 100644
--- a/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/context/OrchestratorContext.java
+++ b/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/context/OrchestratorContext.java
@@ -31,6 +31,7 @@ public class OrchestratorContext {
     private OrchestratorConfiguration orchestratorConfiguration;
     private Registry registry;
     private Publisher publisher;
+    private String gatewayId;
 
     public Publisher getPublisher() {
         return publisher;
@@ -55,4 +56,11 @@ public class OrchestratorContext {
         this.registry = registry;
     }
 
+    public String getGatewayId() {
+        return gatewayId;
+    }
+
+    public void setGatewayId(String gatewayId) {
+        this.gatewayId = gatewayId;
+    }
 }