You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by sh...@apache.org on 2016/08/05 22:24:31 UTC

airavata git commit: reservation, and qos fields to compute resource perferences

Repository: airavata
Updated Branches:
  refs/heads/hotfix-for-allocation c1df0551d -> f831fedf0


reservation, and qos fields to compute resource perferences


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

Branch: refs/heads/hotfix-for-allocation
Commit: f831fedf0a71aae27ffc6fc581f37b16e28fd303
Parents: c1df055
Author: Shameera Rathnayaka <sh...@gmail.com>
Authored: Fri Aug 5 17:18:26 2016 -0400
Committer: Shameera Rathnayaka <sh...@gmail.com>
Committed: Fri Aug 5 17:52:10 2016 -0400

----------------------------------------------------------------------
 .../gateway_resource_profile_model_types.cpp    |  90 +++-
 .../gateway_resource_profile_model_types.h      |  38 +-
 .../Model/AppCatalog/GatewayProfile/Types.php   |  85 +++-
 .../model/appcatalog/gatewayprofile/ttypes.py   |  57 ++-
 .../ComputeResourcePreference.java              | 420 ++++++++++++++++---
 .../apache/airavata/gfac/core/GFacUtils.java    |  14 +-
 .../airavata/gfac/core/JobDescriptor.java       |  17 +-
 .../gfac/core/x2012/x12/AfterAnyList.java       |   2 +-
 .../gfac/core/x2012/x12/AfterOKList.java        |   2 +-
 .../gfac/core/x2012/x12/ExportProperties.java   |   4 +-
 .../airavata/gfac/core/x2012/x12/InputList.java |   2 +-
 .../core/x2012/x12/JobDescriptorDocument.java   |   2 +-
 .../gfac/core/x2012/x12/ModuleLoadCommands.java |   2 +-
 .../airavata/gfac/core/x2012/x12/PbsParams.java |  62 ++-
 .../gfac/core/x2012/x12/PostJobCommands.java    |   2 +-
 .../gfac/core/x2012/x12/PreJobCommands.java     |   2 +-
 .../gfac/core/x2012/x12/impl/PbsParamsImpl.java | 188 +++++++++
 .../src/main/resources/PBSJobDescriptor.xsd     |   2 +
 .../src/main/resources/SLURMTemplate.xslt       |  12 +-
 .../gateway_resource_profile_model.thrift       |   5 +-
 20 files changed, 898 insertions(+), 110 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/f831fedf/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 e77751a..19dd9e8 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
@@ -83,9 +83,24 @@ void ComputeResourcePreference::__set_usageReportingGatewayId(const std::string&
 __isset.usageReportingGatewayId = true;
 }
 
-void ComputeResourcePreference::__set_allocations(const std::string& val) {
-  this->allocations = val;
-__isset.allocations = true;
+void ComputeResourcePreference::__set_qualityOfService(const std::string& val) {
+  this->qualityOfService = val;
+__isset.qualityOfService = true;
+}
+
+void ComputeResourcePreference::__set_reservation(const std::string& val) {
+  this->reservation = val;
+__isset.reservation = true;
+}
+
+void ComputeResourcePreference::__set_reservationStartTime(const int64_t val) {
+  this->reservationStartTime = val;
+__isset.reservationStartTime = true;
+}
+
+void ComputeResourcePreference::__set_reservationEndTime(const int64_t val) {
+  this->reservationEndTime = val;
+__isset.reservationEndTime = true;
 }
 
 uint32_t ComputeResourcePreference::read(::apache::thrift::protocol::TProtocol* iprot) {
@@ -197,8 +212,32 @@ uint32_t ComputeResourcePreference::read(::apache::thrift::protocol::TProtocol*
         break;
       case 11:
         if (ftype == ::apache::thrift::protocol::T_STRING) {
-          xfer += iprot->readString(this->allocations);
-          this->__isset.allocations = true;
+          xfer += iprot->readString(this->qualityOfService);
+          this->__isset.qualityOfService = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 12:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->reservation);
+          this->__isset.reservation = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 13:
+        if (ftype == ::apache::thrift::protocol::T_I64) {
+          xfer += iprot->readI64(this->reservationStartTime);
+          this->__isset.reservationStartTime = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 14:
+        if (ftype == ::apache::thrift::protocol::T_I64) {
+          xfer += iprot->readI64(this->reservationEndTime);
+          this->__isset.reservationEndTime = true;
         } else {
           xfer += iprot->skip(ftype);
         }
@@ -272,9 +311,24 @@ uint32_t ComputeResourcePreference::write(::apache::thrift::protocol::TProtocol*
     xfer += oprot->writeString(this->usageReportingGatewayId);
     xfer += oprot->writeFieldEnd();
   }
-  if (this->__isset.allocations) {
-    xfer += oprot->writeFieldBegin("allocations", ::apache::thrift::protocol::T_STRING, 11);
-    xfer += oprot->writeString(this->allocations);
+  if (this->__isset.qualityOfService) {
+    xfer += oprot->writeFieldBegin("qualityOfService", ::apache::thrift::protocol::T_STRING, 11);
+    xfer += oprot->writeString(this->qualityOfService);
+    xfer += oprot->writeFieldEnd();
+  }
+  if (this->__isset.reservation) {
+    xfer += oprot->writeFieldBegin("reservation", ::apache::thrift::protocol::T_STRING, 12);
+    xfer += oprot->writeString(this->reservation);
+    xfer += oprot->writeFieldEnd();
+  }
+  if (this->__isset.reservationStartTime) {
+    xfer += oprot->writeFieldBegin("reservationStartTime", ::apache::thrift::protocol::T_I64, 13);
+    xfer += oprot->writeI64(this->reservationStartTime);
+    xfer += oprot->writeFieldEnd();
+  }
+  if (this->__isset.reservationEndTime) {
+    xfer += oprot->writeFieldBegin("reservationEndTime", ::apache::thrift::protocol::T_I64, 14);
+    xfer += oprot->writeI64(this->reservationEndTime);
     xfer += oprot->writeFieldEnd();
   }
   xfer += oprot->writeFieldStop();
@@ -294,7 +348,10 @@ void swap(ComputeResourcePreference &a, ComputeResourcePreference &b) {
   swap(a.allocationProjectNumber, b.allocationProjectNumber);
   swap(a.resourceSpecificCredentialStoreToken, b.resourceSpecificCredentialStoreToken);
   swap(a.usageReportingGatewayId, b.usageReportingGatewayId);
-  swap(a.allocations, b.allocations);
+  swap(a.qualityOfService, b.qualityOfService);
+  swap(a.reservation, b.reservation);
+  swap(a.reservationStartTime, b.reservationStartTime);
+  swap(a.reservationEndTime, b.reservationEndTime);
   swap(a.__isset, b.__isset);
 }
 
@@ -309,7 +366,10 @@ ComputeResourcePreference::ComputeResourcePreference(const ComputeResourcePrefer
   allocationProjectNumber = other2.allocationProjectNumber;
   resourceSpecificCredentialStoreToken = other2.resourceSpecificCredentialStoreToken;
   usageReportingGatewayId = other2.usageReportingGatewayId;
-  allocations = other2.allocations;
+  qualityOfService = other2.qualityOfService;
+  reservation = other2.reservation;
+  reservationStartTime = other2.reservationStartTime;
+  reservationEndTime = other2.reservationEndTime;
   __isset = other2.__isset;
 }
 ComputeResourcePreference& ComputeResourcePreference::operator=(const ComputeResourcePreference& other3) {
@@ -323,7 +383,10 @@ ComputeResourcePreference& ComputeResourcePreference::operator=(const ComputeRes
   allocationProjectNumber = other3.allocationProjectNumber;
   resourceSpecificCredentialStoreToken = other3.resourceSpecificCredentialStoreToken;
   usageReportingGatewayId = other3.usageReportingGatewayId;
-  allocations = other3.allocations;
+  qualityOfService = other3.qualityOfService;
+  reservation = other3.reservation;
+  reservationStartTime = other3.reservationStartTime;
+  reservationEndTime = other3.reservationEndTime;
   __isset = other3.__isset;
   return *this;
 }
@@ -340,7 +403,10 @@ void ComputeResourcePreference::printTo(std::ostream& out) const {
   out << ", " << "allocationProjectNumber="; (__isset.allocationProjectNumber ? (out << to_string(allocationProjectNumber)) : (out << "<null>"));
   out << ", " << "resourceSpecificCredentialStoreToken="; (__isset.resourceSpecificCredentialStoreToken ? (out << to_string(resourceSpecificCredentialStoreToken)) : (out << "<null>"));
   out << ", " << "usageReportingGatewayId="; (__isset.usageReportingGatewayId ? (out << to_string(usageReportingGatewayId)) : (out << "<null>"));
-  out << ", " << "allocations="; (__isset.allocations ? (out << to_string(allocations)) : (out << "<null>"));
+  out << ", " << "qualityOfService="; (__isset.qualityOfService ? (out << to_string(qualityOfService)) : (out << "<null>"));
+  out << ", " << "reservation="; (__isset.reservation ? (out << to_string(reservation)) : (out << "<null>"));
+  out << ", " << "reservationStartTime="; (__isset.reservationStartTime ? (out << to_string(reservationStartTime)) : (out << "<null>"));
+  out << ", " << "reservationEndTime="; (__isset.reservationEndTime ? (out << to_string(reservationEndTime)) : (out << "<null>"));
   out << ")";
 }
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/f831fedf/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 b62ada0..a8eb680 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
@@ -45,7 +45,7 @@ class StoragePreference;
 class GatewayResourceProfile;
 
 typedef struct _ComputeResourcePreference__isset {
-  _ComputeResourcePreference__isset() : loginUserName(false), preferredJobSubmissionProtocol(false), preferredDataMovementProtocol(false), preferredBatchQueue(false), scratchLocation(false), allocationProjectNumber(false), resourceSpecificCredentialStoreToken(false), usageReportingGatewayId(false), allocations(false) {}
+  _ComputeResourcePreference__isset() : loginUserName(false), preferredJobSubmissionProtocol(false), preferredDataMovementProtocol(false), preferredBatchQueue(false), scratchLocation(false), allocationProjectNumber(false), resourceSpecificCredentialStoreToken(false), usageReportingGatewayId(false), qualityOfService(false), reservation(false), reservationStartTime(false), reservationEndTime(false) {}
   bool loginUserName :1;
   bool preferredJobSubmissionProtocol :1;
   bool preferredDataMovementProtocol :1;
@@ -54,7 +54,10 @@ typedef struct _ComputeResourcePreference__isset {
   bool allocationProjectNumber :1;
   bool resourceSpecificCredentialStoreToken :1;
   bool usageReportingGatewayId :1;
-  bool allocations :1;
+  bool qualityOfService :1;
+  bool reservation :1;
+  bool reservationStartTime :1;
+  bool reservationEndTime :1;
 } _ComputeResourcePreference__isset;
 
 class ComputeResourcePreference {
@@ -62,7 +65,7 @@ class ComputeResourcePreference {
 
   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::data::movement::DataMovementProtocol::type)0), preferredBatchQueue(), scratchLocation(), allocationProjectNumber(), resourceSpecificCredentialStoreToken(), usageReportingGatewayId(), allocations() {
+  ComputeResourcePreference() : computeResourceId(), overridebyAiravata(true), loginUserName(), preferredJobSubmissionProtocol(( ::apache::airavata::model::appcatalog::computeresource::JobSubmissionProtocol::type)0), preferredDataMovementProtocol(( ::apache::airavata::model::data::movement::DataMovementProtocol::type)0), preferredBatchQueue(), scratchLocation(), allocationProjectNumber(), resourceSpecificCredentialStoreToken(), usageReportingGatewayId(), qualityOfService(), reservation(), reservationStartTime(0), reservationEndTime(0) {
   }
 
   virtual ~ComputeResourcePreference() throw();
@@ -76,7 +79,10 @@ class ComputeResourcePreference {
   std::string allocationProjectNumber;
   std::string resourceSpecificCredentialStoreToken;
   std::string usageReportingGatewayId;
-  std::string allocations;
+  std::string qualityOfService;
+  std::string reservation;
+  int64_t reservationStartTime;
+  int64_t reservationEndTime;
 
   _ComputeResourcePreference__isset __isset;
 
@@ -100,7 +106,13 @@ class ComputeResourcePreference {
 
   void __set_usageReportingGatewayId(const std::string& val);
 
-  void __set_allocations(const std::string& val);
+  void __set_qualityOfService(const std::string& val);
+
+  void __set_reservation(const std::string& val);
+
+  void __set_reservationStartTime(const int64_t val);
+
+  void __set_reservationEndTime(const int64_t val);
 
   bool operator == (const ComputeResourcePreference & rhs) const
   {
@@ -140,9 +152,21 @@ class ComputeResourcePreference {
       return false;
     else if (__isset.usageReportingGatewayId && !(usageReportingGatewayId == rhs.usageReportingGatewayId))
       return false;
-    if (__isset.allocations != rhs.__isset.allocations)
+    if (__isset.qualityOfService != rhs.__isset.qualityOfService)
+      return false;
+    else if (__isset.qualityOfService && !(qualityOfService == rhs.qualityOfService))
+      return false;
+    if (__isset.reservation != rhs.__isset.reservation)
+      return false;
+    else if (__isset.reservation && !(reservation == rhs.reservation))
+      return false;
+    if (__isset.reservationStartTime != rhs.__isset.reservationStartTime)
+      return false;
+    else if (__isset.reservationStartTime && !(reservationStartTime == rhs.reservationStartTime))
+      return false;
+    if (__isset.reservationEndTime != rhs.__isset.reservationEndTime)
       return false;
-    else if (__isset.allocations && !(allocations == rhs.allocations))
+    else if (__isset.reservationEndTime && !(reservationEndTime == rhs.reservationEndTime))
       return false;
     return true;
   }

http://git-wip-us.apache.org/repos/asf/airavata/blob/f831fedf/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/AppCatalog/GatewayProfile/Types.php
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/AppCatalog/GatewayProfile/Types.php b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/AppCatalog/GatewayProfile/Types.php
index 85a4f27..f0b329d 100644
--- a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/AppCatalog/GatewayProfile/Types.php
+++ b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/AppCatalog/GatewayProfile/Types.php
@@ -97,7 +97,19 @@ class ComputeResourcePreference {
   /**
    * @var string
    */
-  public $allocations = null;
+  public $qualityOfService = null;
+  /**
+   * @var string
+   */
+  public $reservation = null;
+  /**
+   * @var int
+   */
+  public $reservationStartTime = null;
+  /**
+   * @var int
+   */
+  public $reservationEndTime = null;
 
   public function __construct($vals=null) {
     if (!isset(self::$_TSPEC)) {
@@ -143,9 +155,21 @@ class ComputeResourcePreference {
           'type' => TType::STRING,
           ),
         11 => array(
-          'var' => 'allocations',
+          'var' => 'qualityOfService',
           'type' => TType::STRING,
           ),
+        12 => array(
+          'var' => 'reservation',
+          'type' => TType::STRING,
+          ),
+        13 => array(
+          'var' => 'reservationStartTime',
+          'type' => TType::I64,
+          ),
+        14 => array(
+          'var' => 'reservationEndTime',
+          'type' => TType::I64,
+          ),
         );
     }
     if (is_array($vals)) {
@@ -179,8 +203,17 @@ class ComputeResourcePreference {
       if (isset($vals['usageReportingGatewayId'])) {
         $this->usageReportingGatewayId = $vals['usageReportingGatewayId'];
       }
-      if (isset($vals['allocations'])) {
-        $this->allocations = $vals['allocations'];
+      if (isset($vals['qualityOfService'])) {
+        $this->qualityOfService = $vals['qualityOfService'];
+      }
+      if (isset($vals['reservation'])) {
+        $this->reservation = $vals['reservation'];
+      }
+      if (isset($vals['reservationStartTime'])) {
+        $this->reservationStartTime = $vals['reservationStartTime'];
+      }
+      if (isset($vals['reservationEndTime'])) {
+        $this->reservationEndTime = $vals['reservationEndTime'];
       }
     }
   }
@@ -276,7 +309,28 @@ class ComputeResourcePreference {
           break;
         case 11:
           if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->allocations);
+            $xfer += $input->readString($this->qualityOfService);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 12:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->reservation);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 13:
+          if ($ftype == TType::I64) {
+            $xfer += $input->readI64($this->reservationStartTime);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 14:
+          if ($ftype == TType::I64) {
+            $xfer += $input->readI64($this->reservationEndTime);
           } else {
             $xfer += $input->skip($ftype);
           }
@@ -344,9 +398,24 @@ class ComputeResourcePreference {
       $xfer += $output->writeString($this->usageReportingGatewayId);
       $xfer += $output->writeFieldEnd();
     }
-    if ($this->allocations !== null) {
-      $xfer += $output->writeFieldBegin('allocations', TType::STRING, 11);
-      $xfer += $output->writeString($this->allocations);
+    if ($this->qualityOfService !== null) {
+      $xfer += $output->writeFieldBegin('qualityOfService', TType::STRING, 11);
+      $xfer += $output->writeString($this->qualityOfService);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->reservation !== null) {
+      $xfer += $output->writeFieldBegin('reservation', TType::STRING, 12);
+      $xfer += $output->writeString($this->reservation);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->reservationStartTime !== null) {
+      $xfer += $output->writeFieldBegin('reservationStartTime', TType::I64, 13);
+      $xfer += $output->writeI64($this->reservationStartTime);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->reservationEndTime !== null) {
+      $xfer += $output->writeFieldBegin('reservationEndTime', TType::I64, 14);
+      $xfer += $output->writeI64($this->reservationEndTime);
       $xfer += $output->writeFieldEnd();
     }
     $xfer += $output->writeFieldStop();

http://git-wip-us.apache.org/repos/asf/airavata/blob/f831fedf/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/appcatalog/gatewayprofile/ttypes.py
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/appcatalog/gatewayprofile/ttypes.py b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/appcatalog/gatewayprofile/ttypes.py
index e02cf2a..ecb93e8 100644
--- a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/appcatalog/gatewayprofile/ttypes.py
+++ b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/appcatalog/gatewayprofile/ttypes.py
@@ -66,7 +66,10 @@ class ComputeResourcePreference:
    - allocationProjectNumber
    - resourceSpecificCredentialStoreToken
    - usageReportingGatewayId
-   - allocations
+   - qualityOfService
+   - reservation
+   - reservationStartTime
+   - reservationEndTime
   """
 
   thrift_spec = (
@@ -81,10 +84,13 @@ class ComputeResourcePreference:
     (8, TType.STRING, 'allocationProjectNumber', None, None, ), # 8
     (9, TType.STRING, 'resourceSpecificCredentialStoreToken', None, None, ), # 9
     (10, TType.STRING, 'usageReportingGatewayId', None, None, ), # 10
-    (11, TType.STRING, 'allocations', None, None, ), # 11
+    (11, TType.STRING, 'qualityOfService', None, None, ), # 11
+    (12, TType.STRING, 'reservation', None, None, ), # 12
+    (13, TType.I64, 'reservationStartTime', None, None, ), # 13
+    (14, TType.I64, 'reservationEndTime', None, None, ), # 14
   )
 
-  def __init__(self, computeResourceId=None, overridebyAiravata=thrift_spec[2][4], loginUserName=None, preferredJobSubmissionProtocol=None, preferredDataMovementProtocol=None, preferredBatchQueue=None, scratchLocation=None, allocationProjectNumber=None, resourceSpecificCredentialStoreToken=None, usageReportingGatewayId=None, allocations=None,):
+  def __init__(self, computeResourceId=None, overridebyAiravata=thrift_spec[2][4], loginUserName=None, preferredJobSubmissionProtocol=None, preferredDataMovementProtocol=None, preferredBatchQueue=None, scratchLocation=None, allocationProjectNumber=None, resourceSpecificCredentialStoreToken=None, usageReportingGatewayId=None, qualityOfService=None, reservation=None, reservationStartTime=None, reservationEndTime=None,):
     self.computeResourceId = computeResourceId
     self.overridebyAiravata = overridebyAiravata
     self.loginUserName = loginUserName
@@ -95,7 +101,10 @@ class ComputeResourcePreference:
     self.allocationProjectNumber = allocationProjectNumber
     self.resourceSpecificCredentialStoreToken = resourceSpecificCredentialStoreToken
     self.usageReportingGatewayId = usageReportingGatewayId
-    self.allocations = allocations
+    self.qualityOfService = qualityOfService
+    self.reservation = reservation
+    self.reservationStartTime = reservationStartTime
+    self.reservationEndTime = reservationEndTime
 
   def read(self, iprot):
     if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
@@ -158,7 +167,22 @@ class ComputeResourcePreference:
           iprot.skip(ftype)
       elif fid == 11:
         if ftype == TType.STRING:
-          self.allocations = iprot.readString()
+          self.qualityOfService = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 12:
+        if ftype == TType.STRING:
+          self.reservation = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 13:
+        if ftype == TType.I64:
+          self.reservationStartTime = iprot.readI64()
+        else:
+          iprot.skip(ftype)
+      elif fid == 14:
+        if ftype == TType.I64:
+          self.reservationEndTime = iprot.readI64()
         else:
           iprot.skip(ftype)
       else:
@@ -211,9 +235,21 @@ class ComputeResourcePreference:
       oprot.writeFieldBegin('usageReportingGatewayId', TType.STRING, 10)
       oprot.writeString(self.usageReportingGatewayId)
       oprot.writeFieldEnd()
-    if self.allocations is not None:
-      oprot.writeFieldBegin('allocations', TType.STRING, 11)
-      oprot.writeString(self.allocations)
+    if self.qualityOfService is not None:
+      oprot.writeFieldBegin('qualityOfService', TType.STRING, 11)
+      oprot.writeString(self.qualityOfService)
+      oprot.writeFieldEnd()
+    if self.reservation is not None:
+      oprot.writeFieldBegin('reservation', TType.STRING, 12)
+      oprot.writeString(self.reservation)
+      oprot.writeFieldEnd()
+    if self.reservationStartTime is not None:
+      oprot.writeFieldBegin('reservationStartTime', TType.I64, 13)
+      oprot.writeI64(self.reservationStartTime)
+      oprot.writeFieldEnd()
+    if self.reservationEndTime is not None:
+      oprot.writeFieldBegin('reservationEndTime', TType.I64, 14)
+      oprot.writeI64(self.reservationEndTime)
       oprot.writeFieldEnd()
     oprot.writeFieldStop()
     oprot.writeStructEnd()
@@ -238,7 +274,10 @@ class ComputeResourcePreference:
     value = (value * 31) ^ hash(self.allocationProjectNumber)
     value = (value * 31) ^ hash(self.resourceSpecificCredentialStoreToken)
     value = (value * 31) ^ hash(self.usageReportingGatewayId)
-    value = (value * 31) ^ hash(self.allocations)
+    value = (value * 31) ^ hash(self.qualityOfService)
+    value = (value * 31) ^ hash(self.reservation)
+    value = (value * 31) ^ hash(self.reservationStartTime)
+    value = (value * 31) ^ hash(self.reservationEndTime)
     return value
 
   def __repr__(self):

http://git-wip-us.apache.org/repos/asf/airavata/blob/f831fedf/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/gatewayprofile/ComputeResourcePreference.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/gatewayprofile/ComputeResourcePreference.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/gatewayprofile/ComputeResourcePreference.java
index d92c159..b1c092b 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/gatewayprofile/ComputeResourcePreference.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/gatewayprofile/ComputeResourcePreference.java
@@ -99,7 +99,10 @@ public class ComputeResourcePreference implements org.apache.thrift.TBase<Comput
   private static final org.apache.thrift.protocol.TField ALLOCATION_PROJECT_NUMBER_FIELD_DESC = new org.apache.thrift.protocol.TField("allocationProjectNumber", org.apache.thrift.protocol.TType.STRING, (short)8);
   private static final org.apache.thrift.protocol.TField RESOURCE_SPECIFIC_CREDENTIAL_STORE_TOKEN_FIELD_DESC = new org.apache.thrift.protocol.TField("resourceSpecificCredentialStoreToken", org.apache.thrift.protocol.TType.STRING, (short)9);
   private static final org.apache.thrift.protocol.TField USAGE_REPORTING_GATEWAY_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("usageReportingGatewayId", org.apache.thrift.protocol.TType.STRING, (short)10);
-  private static final org.apache.thrift.protocol.TField ALLOCATIONS_FIELD_DESC = new org.apache.thrift.protocol.TField("allocations", org.apache.thrift.protocol.TType.STRING, (short)11);
+  private static final org.apache.thrift.protocol.TField QUALITY_OF_SERVICE_FIELD_DESC = new org.apache.thrift.protocol.TField("qualityOfService", org.apache.thrift.protocol.TType.STRING, (short)11);
+  private static final org.apache.thrift.protocol.TField RESERVATION_FIELD_DESC = new org.apache.thrift.protocol.TField("reservation", org.apache.thrift.protocol.TType.STRING, (short)12);
+  private static final org.apache.thrift.protocol.TField RESERVATION_START_TIME_FIELD_DESC = new org.apache.thrift.protocol.TField("reservationStartTime", org.apache.thrift.protocol.TType.I64, (short)13);
+  private static final org.apache.thrift.protocol.TField RESERVATION_END_TIME_FIELD_DESC = new org.apache.thrift.protocol.TField("reservationEndTime", org.apache.thrift.protocol.TType.I64, (short)14);
 
   private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
   static {
@@ -117,7 +120,10 @@ public class ComputeResourcePreference implements org.apache.thrift.TBase<Comput
   private String allocationProjectNumber; // optional
   private String resourceSpecificCredentialStoreToken; // optional
   private String usageReportingGatewayId; // optional
-  private String allocations; // optional
+  private String qualityOfService; // optional
+  private String reservation; // optional
+  private long reservationStartTime; // optional
+  private long reservationEndTime; // optional
 
   /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
   public enum _Fields implements org.apache.thrift.TFieldIdEnum {
@@ -139,7 +145,10 @@ public class ComputeResourcePreference implements org.apache.thrift.TBase<Comput
     ALLOCATION_PROJECT_NUMBER((short)8, "allocationProjectNumber"),
     RESOURCE_SPECIFIC_CREDENTIAL_STORE_TOKEN((short)9, "resourceSpecificCredentialStoreToken"),
     USAGE_REPORTING_GATEWAY_ID((short)10, "usageReportingGatewayId"),
-    ALLOCATIONS((short)11, "allocations");
+    QUALITY_OF_SERVICE((short)11, "qualityOfService"),
+    RESERVATION((short)12, "reservation"),
+    RESERVATION_START_TIME((short)13, "reservationStartTime"),
+    RESERVATION_END_TIME((short)14, "reservationEndTime");
 
     private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
 
@@ -174,8 +183,14 @@ public class ComputeResourcePreference implements org.apache.thrift.TBase<Comput
           return RESOURCE_SPECIFIC_CREDENTIAL_STORE_TOKEN;
         case 10: // USAGE_REPORTING_GATEWAY_ID
           return USAGE_REPORTING_GATEWAY_ID;
-        case 11: // ALLOCATIONS
-          return ALLOCATIONS;
+        case 11: // QUALITY_OF_SERVICE
+          return QUALITY_OF_SERVICE;
+        case 12: // RESERVATION
+          return RESERVATION;
+        case 13: // RESERVATION_START_TIME
+          return RESERVATION_START_TIME;
+        case 14: // RESERVATION_END_TIME
+          return RESERVATION_END_TIME;
         default:
           return null;
       }
@@ -217,8 +232,10 @@ public class ComputeResourcePreference implements org.apache.thrift.TBase<Comput
 
   // isset id assignments
   private static final int __OVERRIDEBYAIRAVATA_ISSET_ID = 0;
+  private static final int __RESERVATIONSTARTTIME_ISSET_ID = 1;
+  private static final int __RESERVATIONENDTIME_ISSET_ID = 2;
   private byte __isset_bitfield = 0;
-  private static final _Fields optionals[] = {_Fields.LOGIN_USER_NAME,_Fields.PREFERRED_JOB_SUBMISSION_PROTOCOL,_Fields.PREFERRED_DATA_MOVEMENT_PROTOCOL,_Fields.PREFERRED_BATCH_QUEUE,_Fields.SCRATCH_LOCATION,_Fields.ALLOCATION_PROJECT_NUMBER,_Fields.RESOURCE_SPECIFIC_CREDENTIAL_STORE_TOKEN,_Fields.USAGE_REPORTING_GATEWAY_ID,_Fields.ALLOCATIONS};
+  private static final _Fields optionals[] = {_Fields.LOGIN_USER_NAME,_Fields.PREFERRED_JOB_SUBMISSION_PROTOCOL,_Fields.PREFERRED_DATA_MOVEMENT_PROTOCOL,_Fields.PREFERRED_BATCH_QUEUE,_Fields.SCRATCH_LOCATION,_Fields.ALLOCATION_PROJECT_NUMBER,_Fields.RESOURCE_SPECIFIC_CREDENTIAL_STORE_TOKEN,_Fields.USAGE_REPORTING_GATEWAY_ID,_Fields.QUALITY_OF_SERVICE,_Fields.RESERVATION,_Fields.RESERVATION_START_TIME,_Fields.RESERVATION_END_TIME};
   public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
   static {
     Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
@@ -242,8 +259,14 @@ public class ComputeResourcePreference implements org.apache.thrift.TBase<Comput
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
     tmpMap.put(_Fields.USAGE_REPORTING_GATEWAY_ID, new org.apache.thrift.meta_data.FieldMetaData("usageReportingGatewayId", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
-    tmpMap.put(_Fields.ALLOCATIONS, new org.apache.thrift.meta_data.FieldMetaData("allocations", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+    tmpMap.put(_Fields.QUALITY_OF_SERVICE, new org.apache.thrift.meta_data.FieldMetaData("qualityOfService", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    tmpMap.put(_Fields.RESERVATION, new org.apache.thrift.meta_data.FieldMetaData("reservation", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    tmpMap.put(_Fields.RESERVATION_START_TIME, new org.apache.thrift.meta_data.FieldMetaData("reservationStartTime", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64)));
+    tmpMap.put(_Fields.RESERVATION_END_TIME, new org.apache.thrift.meta_data.FieldMetaData("reservationEndTime", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64)));
     metaDataMap = Collections.unmodifiableMap(tmpMap);
     org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(ComputeResourcePreference.class, metaDataMap);
   }
@@ -296,9 +319,14 @@ public class ComputeResourcePreference implements org.apache.thrift.TBase<Comput
     if (other.isSetUsageReportingGatewayId()) {
       this.usageReportingGatewayId = other.usageReportingGatewayId;
     }
-    if (other.isSetAllocations()) {
-      this.allocations = other.allocations;
+    if (other.isSetQualityOfService()) {
+      this.qualityOfService = other.qualityOfService;
+    }
+    if (other.isSetReservation()) {
+      this.reservation = other.reservation;
     }
+    this.reservationStartTime = other.reservationStartTime;
+    this.reservationEndTime = other.reservationEndTime;
   }
 
   public ComputeResourcePreference deepCopy() {
@@ -318,7 +346,12 @@ public class ComputeResourcePreference implements org.apache.thrift.TBase<Comput
     this.allocationProjectNumber = null;
     this.resourceSpecificCredentialStoreToken = null;
     this.usageReportingGatewayId = null;
-    this.allocations = null;
+    this.qualityOfService = null;
+    this.reservation = null;
+    setReservationStartTimeIsSet(false);
+    this.reservationStartTime = 0;
+    setReservationEndTimeIsSet(false);
+    this.reservationEndTime = 0;
   }
 
   public String getComputeResourceId() {
@@ -566,29 +599,96 @@ public class ComputeResourcePreference implements org.apache.thrift.TBase<Comput
     }
   }
 
-  public String getAllocations() {
-    return this.allocations;
+  public String getQualityOfService() {
+    return this.qualityOfService;
   }
 
-  public void setAllocations(String allocations) {
-    this.allocations = allocations;
+  public void setQualityOfService(String qualityOfService) {
+    this.qualityOfService = qualityOfService;
   }
 
-  public void unsetAllocations() {
-    this.allocations = null;
+  public void unsetQualityOfService() {
+    this.qualityOfService = null;
   }
 
-  /** Returns true if field allocations is set (has been assigned a value) and false otherwise */
-  public boolean isSetAllocations() {
-    return this.allocations != null;
+  /** Returns true if field qualityOfService is set (has been assigned a value) and false otherwise */
+  public boolean isSetQualityOfService() {
+    return this.qualityOfService != null;
   }
 
-  public void setAllocationsIsSet(boolean value) {
+  public void setQualityOfServiceIsSet(boolean value) {
     if (!value) {
-      this.allocations = null;
+      this.qualityOfService = null;
     }
   }
 
+  public String getReservation() {
+    return this.reservation;
+  }
+
+  public void setReservation(String reservation) {
+    this.reservation = reservation;
+  }
+
+  public void unsetReservation() {
+    this.reservation = null;
+  }
+
+  /** Returns true if field reservation is set (has been assigned a value) and false otherwise */
+  public boolean isSetReservation() {
+    return this.reservation != null;
+  }
+
+  public void setReservationIsSet(boolean value) {
+    if (!value) {
+      this.reservation = null;
+    }
+  }
+
+  public long getReservationStartTime() {
+    return this.reservationStartTime;
+  }
+
+  public void setReservationStartTime(long reservationStartTime) {
+    this.reservationStartTime = reservationStartTime;
+    setReservationStartTimeIsSet(true);
+  }
+
+  public void unsetReservationStartTime() {
+    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __RESERVATIONSTARTTIME_ISSET_ID);
+  }
+
+  /** Returns true if field reservationStartTime is set (has been assigned a value) and false otherwise */
+  public boolean isSetReservationStartTime() {
+    return EncodingUtils.testBit(__isset_bitfield, __RESERVATIONSTARTTIME_ISSET_ID);
+  }
+
+  public void setReservationStartTimeIsSet(boolean value) {
+    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __RESERVATIONSTARTTIME_ISSET_ID, value);
+  }
+
+  public long getReservationEndTime() {
+    return this.reservationEndTime;
+  }
+
+  public void setReservationEndTime(long reservationEndTime) {
+    this.reservationEndTime = reservationEndTime;
+    setReservationEndTimeIsSet(true);
+  }
+
+  public void unsetReservationEndTime() {
+    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __RESERVATIONENDTIME_ISSET_ID);
+  }
+
+  /** Returns true if field reservationEndTime is set (has been assigned a value) and false otherwise */
+  public boolean isSetReservationEndTime() {
+    return EncodingUtils.testBit(__isset_bitfield, __RESERVATIONENDTIME_ISSET_ID);
+  }
+
+  public void setReservationEndTimeIsSet(boolean value) {
+    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __RESERVATIONENDTIME_ISSET_ID, value);
+  }
+
   public void setFieldValue(_Fields field, Object value) {
     switch (field) {
     case COMPUTE_RESOURCE_ID:
@@ -671,11 +771,35 @@ public class ComputeResourcePreference implements org.apache.thrift.TBase<Comput
       }
       break;
 
-    case ALLOCATIONS:
+    case QUALITY_OF_SERVICE:
+      if (value == null) {
+        unsetQualityOfService();
+      } else {
+        setQualityOfService((String)value);
+      }
+      break;
+
+    case RESERVATION:
+      if (value == null) {
+        unsetReservation();
+      } else {
+        setReservation((String)value);
+      }
+      break;
+
+    case RESERVATION_START_TIME:
+      if (value == null) {
+        unsetReservationStartTime();
+      } else {
+        setReservationStartTime((Long)value);
+      }
+      break;
+
+    case RESERVATION_END_TIME:
       if (value == null) {
-        unsetAllocations();
+        unsetReservationEndTime();
       } else {
-        setAllocations((String)value);
+        setReservationEndTime((Long)value);
       }
       break;
 
@@ -714,8 +838,17 @@ public class ComputeResourcePreference implements org.apache.thrift.TBase<Comput
     case USAGE_REPORTING_GATEWAY_ID:
       return getUsageReportingGatewayId();
 
-    case ALLOCATIONS:
-      return getAllocations();
+    case QUALITY_OF_SERVICE:
+      return getQualityOfService();
+
+    case RESERVATION:
+      return getReservation();
+
+    case RESERVATION_START_TIME:
+      return getReservationStartTime();
+
+    case RESERVATION_END_TIME:
+      return getReservationEndTime();
 
     }
     throw new IllegalStateException();
@@ -748,8 +881,14 @@ public class ComputeResourcePreference implements org.apache.thrift.TBase<Comput
       return isSetResourceSpecificCredentialStoreToken();
     case USAGE_REPORTING_GATEWAY_ID:
       return isSetUsageReportingGatewayId();
-    case ALLOCATIONS:
-      return isSetAllocations();
+    case QUALITY_OF_SERVICE:
+      return isSetQualityOfService();
+    case RESERVATION:
+      return isSetReservation();
+    case RESERVATION_START_TIME:
+      return isSetReservationStartTime();
+    case RESERVATION_END_TIME:
+      return isSetReservationEndTime();
     }
     throw new IllegalStateException();
   }
@@ -857,12 +996,39 @@ public class ComputeResourcePreference implements org.apache.thrift.TBase<Comput
         return false;
     }
 
-    boolean this_present_allocations = true && this.isSetAllocations();
-    boolean that_present_allocations = true && that.isSetAllocations();
-    if (this_present_allocations || that_present_allocations) {
-      if (!(this_present_allocations && that_present_allocations))
+    boolean this_present_qualityOfService = true && this.isSetQualityOfService();
+    boolean that_present_qualityOfService = true && that.isSetQualityOfService();
+    if (this_present_qualityOfService || that_present_qualityOfService) {
+      if (!(this_present_qualityOfService && that_present_qualityOfService))
+        return false;
+      if (!this.qualityOfService.equals(that.qualityOfService))
+        return false;
+    }
+
+    boolean this_present_reservation = true && this.isSetReservation();
+    boolean that_present_reservation = true && that.isSetReservation();
+    if (this_present_reservation || that_present_reservation) {
+      if (!(this_present_reservation && that_present_reservation))
+        return false;
+      if (!this.reservation.equals(that.reservation))
+        return false;
+    }
+
+    boolean this_present_reservationStartTime = true && this.isSetReservationStartTime();
+    boolean that_present_reservationStartTime = true && that.isSetReservationStartTime();
+    if (this_present_reservationStartTime || that_present_reservationStartTime) {
+      if (!(this_present_reservationStartTime && that_present_reservationStartTime))
+        return false;
+      if (this.reservationStartTime != that.reservationStartTime)
+        return false;
+    }
+
+    boolean this_present_reservationEndTime = true && this.isSetReservationEndTime();
+    boolean that_present_reservationEndTime = true && that.isSetReservationEndTime();
+    if (this_present_reservationEndTime || that_present_reservationEndTime) {
+      if (!(this_present_reservationEndTime && that_present_reservationEndTime))
         return false;
-      if (!this.allocations.equals(that.allocations))
+      if (this.reservationEndTime != that.reservationEndTime)
         return false;
     }
 
@@ -923,10 +1089,25 @@ public class ComputeResourcePreference implements org.apache.thrift.TBase<Comput
     if (present_usageReportingGatewayId)
       list.add(usageReportingGatewayId);
 
-    boolean present_allocations = true && (isSetAllocations());
-    list.add(present_allocations);
-    if (present_allocations)
-      list.add(allocations);
+    boolean present_qualityOfService = true && (isSetQualityOfService());
+    list.add(present_qualityOfService);
+    if (present_qualityOfService)
+      list.add(qualityOfService);
+
+    boolean present_reservation = true && (isSetReservation());
+    list.add(present_reservation);
+    if (present_reservation)
+      list.add(reservation);
+
+    boolean present_reservationStartTime = true && (isSetReservationStartTime());
+    list.add(present_reservationStartTime);
+    if (present_reservationStartTime)
+      list.add(reservationStartTime);
+
+    boolean present_reservationEndTime = true && (isSetReservationEndTime());
+    list.add(present_reservationEndTime);
+    if (present_reservationEndTime)
+      list.add(reservationEndTime);
 
     return list.hashCode();
   }
@@ -1039,12 +1220,42 @@ public class ComputeResourcePreference implements org.apache.thrift.TBase<Comput
         return lastComparison;
       }
     }
-    lastComparison = Boolean.valueOf(isSetAllocations()).compareTo(other.isSetAllocations());
+    lastComparison = Boolean.valueOf(isSetQualityOfService()).compareTo(other.isSetQualityOfService());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetQualityOfService()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.qualityOfService, other.qualityOfService);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetReservation()).compareTo(other.isSetReservation());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetReservation()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.reservation, other.reservation);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetReservationStartTime()).compareTo(other.isSetReservationStartTime());
     if (lastComparison != 0) {
       return lastComparison;
     }
-    if (isSetAllocations()) {
-      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.allocations, other.allocations);
+    if (isSetReservationStartTime()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.reservationStartTime, other.reservationStartTime);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetReservationEndTime()).compareTo(other.isSetReservationEndTime());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetReservationEndTime()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.reservationEndTime, other.reservationEndTime);
       if (lastComparison != 0) {
         return lastComparison;
       }
@@ -1160,16 +1371,38 @@ public class ComputeResourcePreference implements org.apache.thrift.TBase<Comput
       }
       first = false;
     }
-    if (isSetAllocations()) {
+    if (isSetQualityOfService()) {
+      if (!first) sb.append(", ");
+      sb.append("qualityOfService:");
+      if (this.qualityOfService == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.qualityOfService);
+      }
+      first = false;
+    }
+    if (isSetReservation()) {
       if (!first) sb.append(", ");
-      sb.append("allocations:");
-      if (this.allocations == null) {
+      sb.append("reservation:");
+      if (this.reservation == null) {
         sb.append("null");
       } else {
-        sb.append(this.allocations);
+        sb.append(this.reservation);
       }
       first = false;
     }
+    if (isSetReservationStartTime()) {
+      if (!first) sb.append(", ");
+      sb.append("reservationStartTime:");
+      sb.append(this.reservationStartTime);
+      first = false;
+    }
+    if (isSetReservationEndTime()) {
+      if (!first) sb.append(", ");
+      sb.append("reservationEndTime:");
+      sb.append(this.reservationEndTime);
+      first = false;
+    }
     sb.append(")");
     return sb.toString();
   }
@@ -1303,10 +1536,34 @@ public class ComputeResourcePreference implements org.apache.thrift.TBase<Comput
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
-          case 11: // ALLOCATIONS
+          case 11: // QUALITY_OF_SERVICE
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.qualityOfService = iprot.readString();
+              struct.setQualityOfServiceIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 12: // RESERVATION
             if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
-              struct.allocations = iprot.readString();
-              struct.setAllocationsIsSet(true);
+              struct.reservation = iprot.readString();
+              struct.setReservationIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 13: // RESERVATION_START_TIME
+            if (schemeField.type == org.apache.thrift.protocol.TType.I64) {
+              struct.reservationStartTime = iprot.readI64();
+              struct.setReservationStartTimeIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 14: // RESERVATION_END_TIME
+            if (schemeField.type == org.apache.thrift.protocol.TType.I64) {
+              struct.reservationEndTime = iprot.readI64();
+              struct.setReservationEndTimeIsSet(true);
             } else { 
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
@@ -1388,13 +1645,30 @@ public class ComputeResourcePreference implements org.apache.thrift.TBase<Comput
           oprot.writeFieldEnd();
         }
       }
-      if (struct.allocations != null) {
-        if (struct.isSetAllocations()) {
-          oprot.writeFieldBegin(ALLOCATIONS_FIELD_DESC);
-          oprot.writeString(struct.allocations);
+      if (struct.qualityOfService != null) {
+        if (struct.isSetQualityOfService()) {
+          oprot.writeFieldBegin(QUALITY_OF_SERVICE_FIELD_DESC);
+          oprot.writeString(struct.qualityOfService);
           oprot.writeFieldEnd();
         }
       }
+      if (struct.reservation != null) {
+        if (struct.isSetReservation()) {
+          oprot.writeFieldBegin(RESERVATION_FIELD_DESC);
+          oprot.writeString(struct.reservation);
+          oprot.writeFieldEnd();
+        }
+      }
+      if (struct.isSetReservationStartTime()) {
+        oprot.writeFieldBegin(RESERVATION_START_TIME_FIELD_DESC);
+        oprot.writeI64(struct.reservationStartTime);
+        oprot.writeFieldEnd();
+      }
+      if (struct.isSetReservationEndTime()) {
+        oprot.writeFieldBegin(RESERVATION_END_TIME_FIELD_DESC);
+        oprot.writeI64(struct.reservationEndTime);
+        oprot.writeFieldEnd();
+      }
       oprot.writeFieldStop();
       oprot.writeStructEnd();
     }
@@ -1439,10 +1713,19 @@ public class ComputeResourcePreference implements org.apache.thrift.TBase<Comput
       if (struct.isSetUsageReportingGatewayId()) {
         optionals.set(7);
       }
-      if (struct.isSetAllocations()) {
+      if (struct.isSetQualityOfService()) {
         optionals.set(8);
       }
-      oprot.writeBitSet(optionals, 9);
+      if (struct.isSetReservation()) {
+        optionals.set(9);
+      }
+      if (struct.isSetReservationStartTime()) {
+        optionals.set(10);
+      }
+      if (struct.isSetReservationEndTime()) {
+        optionals.set(11);
+      }
+      oprot.writeBitSet(optionals, 12);
       if (struct.isSetLoginUserName()) {
         oprot.writeString(struct.loginUserName);
       }
@@ -1467,8 +1750,17 @@ public class ComputeResourcePreference implements org.apache.thrift.TBase<Comput
       if (struct.isSetUsageReportingGatewayId()) {
         oprot.writeString(struct.usageReportingGatewayId);
       }
-      if (struct.isSetAllocations()) {
-        oprot.writeString(struct.allocations);
+      if (struct.isSetQualityOfService()) {
+        oprot.writeString(struct.qualityOfService);
+      }
+      if (struct.isSetReservation()) {
+        oprot.writeString(struct.reservation);
+      }
+      if (struct.isSetReservationStartTime()) {
+        oprot.writeI64(struct.reservationStartTime);
+      }
+      if (struct.isSetReservationEndTime()) {
+        oprot.writeI64(struct.reservationEndTime);
       }
     }
 
@@ -1479,7 +1771,7 @@ public class ComputeResourcePreference implements org.apache.thrift.TBase<Comput
       struct.setComputeResourceIdIsSet(true);
       struct.overridebyAiravata = iprot.readBool();
       struct.setOverridebyAiravataIsSet(true);
-      BitSet incoming = iprot.readBitSet(9);
+      BitSet incoming = iprot.readBitSet(12);
       if (incoming.get(0)) {
         struct.loginUserName = iprot.readString();
         struct.setLoginUserNameIsSet(true);
@@ -1513,8 +1805,20 @@ public class ComputeResourcePreference implements org.apache.thrift.TBase<Comput
         struct.setUsageReportingGatewayIdIsSet(true);
       }
       if (incoming.get(8)) {
-        struct.allocations = iprot.readString();
-        struct.setAllocationsIsSet(true);
+        struct.qualityOfService = iprot.readString();
+        struct.setQualityOfServiceIsSet(true);
+      }
+      if (incoming.get(9)) {
+        struct.reservation = iprot.readString();
+        struct.setReservationIsSet(true);
+      }
+      if (incoming.get(10)) {
+        struct.reservationStartTime = iprot.readI64();
+        struct.setReservationStartTimeIsSet(true);
+      }
+      if (incoming.get(11)) {
+        struct.reservationEndTime = iprot.readI64();
+        struct.setReservationEndTimeIsSet(true);
       }
     }
   }

http://git-wip-us.apache.org/repos/asf/airavata/blob/f831fedf/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/GFacUtils.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/GFacUtils.java b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/GFacUtils.java
index 0915c0c..0bda74e 100644
--- a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/GFacUtils.java
+++ b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/GFacUtils.java
@@ -451,9 +451,17 @@ public class GFacUtils {
         jobDescriptor.setExecutablePath(processContext.getApplicationDeploymentDescription().getExecutablePath());
         jobDescriptor.setStandardOutFile(processContext.getStdoutLocation());
         jobDescriptor.setStandardErrorFile(processContext.getStderrLocation());
-        String computationalProjectAccount = getComputeResourcePreference(processContext).getAllocationProjectNumber();
-        if (computationalProjectAccount != null) {
-            jobDescriptor.setAcountString(computationalProjectAccount);
+        ComputeResourcePreference crp = getComputeResourcePreference(processContext);
+        if (crp.getAllocationProjectNumber() != null) {
+            jobDescriptor.setAcountString(crp.getAllocationProjectNumber());
+        }
+
+        if (crp.getQualityOfService() != null) {
+            jobDescriptor.setQoS(crp.getQualityOfService());
+        }
+
+        if (crp.getReservation() != null) {
+            jobDescriptor.setReservation(crp.getReservation());
         }
         // To make job name alpha numeric
         jobDescriptor.setJobName("A" + String.valueOf(generateJobName()));

http://git-wip-us.apache.org/repos/asf/airavata/blob/f831fedf/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/JobDescriptor.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/JobDescriptor.java b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/JobDescriptor.java
index 777681a..f1f72df 100644
--- a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/JobDescriptor.java
+++ b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/JobDescriptor.java
@@ -468,7 +468,22 @@ public class JobDescriptor {
     public void setChassisName(String chassisName){
         this.getJobDescriptorDocument().getJobDescriptor().setChassisName(chassisName);
     }
-    
 
+    public void setQoS(String qos){
+        this.getJobDescriptorDocument().getJobDescriptor().setQualityOfService(qos);
+    }
+
+    public String getQoS() {
+        return this.getJobDescriptorDocument().getJobDescriptor().getQualityOfService();
+    }
+
+    public void setReservation(String reservation) {
+        this.getJobDescriptorDocument().getJobDescriptor().setReservation(reservation);
+    }
+
+    public String getReservation() {
+        return this.getJobDescriptorDocument().getJobDescriptor().getReservation();
+    }
+    
 }
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/f831fedf/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/x2012/x12/AfterAnyList.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/x2012/x12/AfterAnyList.java b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/x2012/x12/AfterAnyList.java
index 013c90f..8c80646 100644
--- a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/x2012/x12/AfterAnyList.java
+++ b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/x2012/x12/AfterAnyList.java
@@ -35,7 +35,7 @@ package org.apache.airavata.gfac.core.x2012.x12;
 public interface AfterAnyList extends org.apache.xmlbeans.XmlObject
 {
     public static final org.apache.xmlbeans.SchemaType type = (org.apache.xmlbeans.SchemaType)
-        org.apache.xmlbeans.XmlBeans.typeSystemForClassLoader(AfterAnyList.class.getClassLoader(), "schemaorg_apache_xmlbeans.system.sCF8C40CE6FDA0A41BEE004F5930560FF").resolveHandle("afteranylisteefatype");
+        org.apache.xmlbeans.XmlBeans.typeSystemForClassLoader(AfterAnyList.class.getClassLoader(), "schemaorg_apache_xmlbeans.system.sD070E302A2FC7CFEA0F2B3EB44FAE57D").resolveHandle("afteranylisteefatype");
     
     /**
      * Gets array of all "afterAny" elements

http://git-wip-us.apache.org/repos/asf/airavata/blob/f831fedf/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/x2012/x12/AfterOKList.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/x2012/x12/AfterOKList.java b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/x2012/x12/AfterOKList.java
index 2bf15f5..15688c1 100644
--- a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/x2012/x12/AfterOKList.java
+++ b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/x2012/x12/AfterOKList.java
@@ -35,7 +35,7 @@ package org.apache.airavata.gfac.core.x2012.x12;
 public interface AfterOKList extends org.apache.xmlbeans.XmlObject
 {
     public static final org.apache.xmlbeans.SchemaType type = (org.apache.xmlbeans.SchemaType)
-        org.apache.xmlbeans.XmlBeans.typeSystemForClassLoader(AfterOKList.class.getClassLoader(), "schemaorg_apache_xmlbeans.system.sCF8C40CE6FDA0A41BEE004F5930560FF").resolveHandle("afteroklistc764type");
+        org.apache.xmlbeans.XmlBeans.typeSystemForClassLoader(AfterOKList.class.getClassLoader(), "schemaorg_apache_xmlbeans.system.sD070E302A2FC7CFEA0F2B3EB44FAE57D").resolveHandle("afteroklistc764type");
     
     /**
      * Gets array of all "afterOKList" elements

http://git-wip-us.apache.org/repos/asf/airavata/blob/f831fedf/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/x2012/x12/ExportProperties.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/x2012/x12/ExportProperties.java b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/x2012/x12/ExportProperties.java
index bee396b..8bea40c 100644
--- a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/x2012/x12/ExportProperties.java
+++ b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/x2012/x12/ExportProperties.java
@@ -35,7 +35,7 @@ package org.apache.airavata.gfac.core.x2012.x12;
 public interface ExportProperties extends org.apache.xmlbeans.XmlObject
 {
     public static final org.apache.xmlbeans.SchemaType type = (org.apache.xmlbeans.SchemaType)
-        org.apache.xmlbeans.XmlBeans.typeSystemForClassLoader(ExportProperties.class.getClassLoader(), "schemaorg_apache_xmlbeans.system.sCF8C40CE6FDA0A41BEE004F5930560FF").resolveHandle("exportproperties2741type");
+        org.apache.xmlbeans.XmlBeans.typeSystemForClassLoader(ExportProperties.class.getClassLoader(), "schemaorg_apache_xmlbeans.system.sD070E302A2FC7CFEA0F2B3EB44FAE57D").resolveHandle("exportproperties2741type");
     
     /**
      * Gets array of all "name" elements
@@ -85,7 +85,7 @@ public interface ExportProperties extends org.apache.xmlbeans.XmlObject
     public interface Name extends org.apache.xmlbeans.XmlString
     {
         public static final org.apache.xmlbeans.SchemaType type = (org.apache.xmlbeans.SchemaType)
-            org.apache.xmlbeans.XmlBeans.typeSystemForClassLoader(Name.class.getClassLoader(), "schemaorg_apache_xmlbeans.system.sCF8C40CE6FDA0A41BEE004F5930560FF").resolveHandle("namee668elemtype");
+            org.apache.xmlbeans.XmlBeans.typeSystemForClassLoader(Name.class.getClassLoader(), "schemaorg_apache_xmlbeans.system.sD070E302A2FC7CFEA0F2B3EB44FAE57D").resolveHandle("namee668elemtype");
         
         /**
          * Gets the "value" attribute

http://git-wip-us.apache.org/repos/asf/airavata/blob/f831fedf/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/x2012/x12/InputList.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/x2012/x12/InputList.java b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/x2012/x12/InputList.java
index 3d4cfbe..3c16f56 100644
--- a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/x2012/x12/InputList.java
+++ b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/x2012/x12/InputList.java
@@ -35,7 +35,7 @@ package org.apache.airavata.gfac.core.x2012.x12;
 public interface InputList extends org.apache.xmlbeans.XmlObject
 {
     public static final org.apache.xmlbeans.SchemaType type = (org.apache.xmlbeans.SchemaType)
-        org.apache.xmlbeans.XmlBeans.typeSystemForClassLoader(InputList.class.getClassLoader(), "schemaorg_apache_xmlbeans.system.sCF8C40CE6FDA0A41BEE004F5930560FF").resolveHandle("inputlistccd2type");
+        org.apache.xmlbeans.XmlBeans.typeSystemForClassLoader(InputList.class.getClassLoader(), "schemaorg_apache_xmlbeans.system.sD070E302A2FC7CFEA0F2B3EB44FAE57D").resolveHandle("inputlistccd2type");
     
     /**
      * Gets array of all "input" elements

http://git-wip-us.apache.org/repos/asf/airavata/blob/f831fedf/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/x2012/x12/JobDescriptorDocument.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/x2012/x12/JobDescriptorDocument.java b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/x2012/x12/JobDescriptorDocument.java
index 5df6f60..49563ae 100644
--- a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/x2012/x12/JobDescriptorDocument.java
+++ b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/x2012/x12/JobDescriptorDocument.java
@@ -36,7 +36,7 @@ package org.apache.airavata.gfac.core.x2012.x12;
 public interface JobDescriptorDocument extends org.apache.xmlbeans.XmlObject
 {
     public static final org.apache.xmlbeans.SchemaType type = (org.apache.xmlbeans.SchemaType)
-        org.apache.xmlbeans.XmlBeans.typeSystemForClassLoader(JobDescriptorDocument.class.getClassLoader(), "schemaorg_apache_xmlbeans.system.sCF8C40CE6FDA0A41BEE004F5930560FF").resolveHandle("jobdescriptor217edoctype");
+        org.apache.xmlbeans.XmlBeans.typeSystemForClassLoader(JobDescriptorDocument.class.getClassLoader(), "schemaorg_apache_xmlbeans.system.sD070E302A2FC7CFEA0F2B3EB44FAE57D").resolveHandle("jobdescriptor217edoctype");
     
     /**
      * Gets the "JobDescriptor" element

http://git-wip-us.apache.org/repos/asf/airavata/blob/f831fedf/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/x2012/x12/ModuleLoadCommands.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/x2012/x12/ModuleLoadCommands.java b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/x2012/x12/ModuleLoadCommands.java
index 520a797..991d6ef 100644
--- a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/x2012/x12/ModuleLoadCommands.java
+++ b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/x2012/x12/ModuleLoadCommands.java
@@ -35,7 +35,7 @@ package org.apache.airavata.gfac.core.x2012.x12;
 public interface ModuleLoadCommands extends org.apache.xmlbeans.XmlObject
 {
     public static final org.apache.xmlbeans.SchemaType type = (org.apache.xmlbeans.SchemaType)
-        org.apache.xmlbeans.XmlBeans.typeSystemForClassLoader(ModuleLoadCommands.class.getClassLoader(), "schemaorg_apache_xmlbeans.system.sCF8C40CE6FDA0A41BEE004F5930560FF").resolveHandle("moduleloadcommandsfe4etype");
+        org.apache.xmlbeans.XmlBeans.typeSystemForClassLoader(ModuleLoadCommands.class.getClassLoader(), "schemaorg_apache_xmlbeans.system.sD070E302A2FC7CFEA0F2B3EB44FAE57D").resolveHandle("moduleloadcommandsfe4etype");
     
     /**
      * Gets array of all "command" elements

http://git-wip-us.apache.org/repos/asf/airavata/blob/f831fedf/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/x2012/x12/PbsParams.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/x2012/x12/PbsParams.java b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/x2012/x12/PbsParams.java
index dbba0c2..65d39f2 100644
--- a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/x2012/x12/PbsParams.java
+++ b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/x2012/x12/PbsParams.java
@@ -35,7 +35,7 @@ package org.apache.airavata.gfac.core.x2012.x12;
 public interface PbsParams extends org.apache.xmlbeans.XmlObject
 {
     public static final org.apache.xmlbeans.SchemaType type = (org.apache.xmlbeans.SchemaType)
-        org.apache.xmlbeans.XmlBeans.typeSystemForClassLoader(PbsParams.class.getClassLoader(), "schemaorg_apache_xmlbeans.system.sCF8C40CE6FDA0A41BEE004F5930560FF").resolveHandle("pbsparams7913type");
+        org.apache.xmlbeans.XmlBeans.typeSystemForClassLoader(PbsParams.class.getClassLoader(), "schemaorg_apache_xmlbeans.system.sD070E302A2FC7CFEA0F2B3EB44FAE57D").resolveHandle("pbsparams7913type");
     
     /**
      * Gets the "jobID" element
@@ -1363,6 +1363,66 @@ public interface PbsParams extends org.apache.xmlbeans.XmlObject
     void unsetChassisName();
     
     /**
+     * Gets the "qualityOfService" element
+     */
+    java.lang.String getQualityOfService();
+    
+    /**
+     * Gets (as xml) the "qualityOfService" element
+     */
+    org.apache.xmlbeans.XmlString xgetQualityOfService();
+    
+    /**
+     * True if has "qualityOfService" element
+     */
+    boolean isSetQualityOfService();
+    
+    /**
+     * Sets the "qualityOfService" element
+     */
+    void setQualityOfService(java.lang.String qualityOfService);
+    
+    /**
+     * Sets (as xml) the "qualityOfService" element
+     */
+    void xsetQualityOfService(org.apache.xmlbeans.XmlString qualityOfService);
+    
+    /**
+     * Unsets the "qualityOfService" element
+     */
+    void unsetQualityOfService();
+    
+    /**
+     * Gets the "reservation" element
+     */
+    java.lang.String getReservation();
+    
+    /**
+     * Gets (as xml) the "reservation" element
+     */
+    org.apache.xmlbeans.XmlString xgetReservation();
+    
+    /**
+     * True if has "reservation" element
+     */
+    boolean isSetReservation();
+    
+    /**
+     * Sets the "reservation" element
+     */
+    void setReservation(java.lang.String reservation);
+    
+    /**
+     * Sets (as xml) the "reservation" element
+     */
+    void xsetReservation(org.apache.xmlbeans.XmlString reservation);
+    
+    /**
+     * Unsets the "reservation" element
+     */
+    void unsetReservation();
+    
+    /**
      * A factory class with static methods for creating instances
      * of this type.
      */

http://git-wip-us.apache.org/repos/asf/airavata/blob/f831fedf/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/x2012/x12/PostJobCommands.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/x2012/x12/PostJobCommands.java b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/x2012/x12/PostJobCommands.java
index d5a1926..512b230 100644
--- a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/x2012/x12/PostJobCommands.java
+++ b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/x2012/x12/PostJobCommands.java
@@ -35,7 +35,7 @@ package org.apache.airavata.gfac.core.x2012.x12;
 public interface PostJobCommands extends org.apache.xmlbeans.XmlObject
 {
     public static final org.apache.xmlbeans.SchemaType type = (org.apache.xmlbeans.SchemaType)
-        org.apache.xmlbeans.XmlBeans.typeSystemForClassLoader(PostJobCommands.class.getClassLoader(), "schemaorg_apache_xmlbeans.system.sCF8C40CE6FDA0A41BEE004F5930560FF").resolveHandle("postjobcommandsf415type");
+        org.apache.xmlbeans.XmlBeans.typeSystemForClassLoader(PostJobCommands.class.getClassLoader(), "schemaorg_apache_xmlbeans.system.sD070E302A2FC7CFEA0F2B3EB44FAE57D").resolveHandle("postjobcommandsf415type");
     
     /**
      * Gets array of all "command" elements

http://git-wip-us.apache.org/repos/asf/airavata/blob/f831fedf/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/x2012/x12/PreJobCommands.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/x2012/x12/PreJobCommands.java b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/x2012/x12/PreJobCommands.java
index 154f925..a644cb5 100644
--- a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/x2012/x12/PreJobCommands.java
+++ b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/x2012/x12/PreJobCommands.java
@@ -35,7 +35,7 @@ package org.apache.airavata.gfac.core.x2012.x12;
 public interface PreJobCommands extends org.apache.xmlbeans.XmlObject
 {
     public static final org.apache.xmlbeans.SchemaType type = (org.apache.xmlbeans.SchemaType)
-        org.apache.xmlbeans.XmlBeans.typeSystemForClassLoader(PreJobCommands.class.getClassLoader(), "schemaorg_apache_xmlbeans.system.sCF8C40CE6FDA0A41BEE004F5930560FF").resolveHandle("prejobcommands6a26type");
+        org.apache.xmlbeans.XmlBeans.typeSystemForClassLoader(PreJobCommands.class.getClassLoader(), "schemaorg_apache_xmlbeans.system.sD070E302A2FC7CFEA0F2B3EB44FAE57D").resolveHandle("prejobcommands6a26type");
     
     /**
      * Gets array of all "command" elements

http://git-wip-us.apache.org/repos/asf/airavata/blob/f831fedf/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/x2012/x12/impl/PbsParamsImpl.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/x2012/x12/impl/PbsParamsImpl.java b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/x2012/x12/impl/PbsParamsImpl.java
index 48d5638..cdb348b 100644
--- a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/x2012/x12/impl/PbsParamsImpl.java
+++ b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/x2012/x12/impl/PbsParamsImpl.java
@@ -131,6 +131,10 @@ public class PbsParamsImpl extends org.apache.xmlbeans.impl.values.XmlComplexCon
         new javax.xml.namespace.QName("http://airavata.apache.org/gfac/core/2012/12", "callBackPort");
     private static final javax.xml.namespace.QName CHASSISNAME$90 = 
         new javax.xml.namespace.QName("http://airavata.apache.org/gfac/core/2012/12", "chassisName");
+    private static final javax.xml.namespace.QName QUALITYOFSERVICE$92 = 
+        new javax.xml.namespace.QName("http://airavata.apache.org/gfac/core/2012/12", "qualityOfService");
+    private static final javax.xml.namespace.QName RESERVATION$94 = 
+        new javax.xml.namespace.QName("http://airavata.apache.org/gfac/core/2012/12", "reservation");
     
     
     /**
@@ -4190,4 +4194,188 @@ public class PbsParamsImpl extends org.apache.xmlbeans.impl.values.XmlComplexCon
             get_store().remove_element(CHASSISNAME$90, 0);
         }
     }
+    
+    /**
+     * Gets the "qualityOfService" element
+     */
+    public java.lang.String getQualityOfService()
+    {
+        synchronized (monitor())
+        {
+            check_orphaned();
+            org.apache.xmlbeans.SimpleValue target = null;
+            target = (org.apache.xmlbeans.SimpleValue)get_store().find_element_user(QUALITYOFSERVICE$92, 0);
+            if (target == null)
+            {
+                return null;
+            }
+            return target.getStringValue();
+        }
+    }
+    
+    /**
+     * Gets (as xml) the "qualityOfService" element
+     */
+    public org.apache.xmlbeans.XmlString xgetQualityOfService()
+    {
+        synchronized (monitor())
+        {
+            check_orphaned();
+            org.apache.xmlbeans.XmlString target = null;
+            target = (org.apache.xmlbeans.XmlString)get_store().find_element_user(QUALITYOFSERVICE$92, 0);
+            return target;
+        }
+    }
+    
+    /**
+     * True if has "qualityOfService" element
+     */
+    public boolean isSetQualityOfService()
+    {
+        synchronized (monitor())
+        {
+            check_orphaned();
+            return get_store().count_elements(QUALITYOFSERVICE$92) != 0;
+        }
+    }
+    
+    /**
+     * Sets the "qualityOfService" element
+     */
+    public void setQualityOfService(java.lang.String qualityOfService)
+    {
+        synchronized (monitor())
+        {
+            check_orphaned();
+            org.apache.xmlbeans.SimpleValue target = null;
+            target = (org.apache.xmlbeans.SimpleValue)get_store().find_element_user(QUALITYOFSERVICE$92, 0);
+            if (target == null)
+            {
+                target = (org.apache.xmlbeans.SimpleValue)get_store().add_element_user(QUALITYOFSERVICE$92);
+            }
+            target.setStringValue(qualityOfService);
+        }
+    }
+    
+    /**
+     * Sets (as xml) the "qualityOfService" element
+     */
+    public void xsetQualityOfService(org.apache.xmlbeans.XmlString qualityOfService)
+    {
+        synchronized (monitor())
+        {
+            check_orphaned();
+            org.apache.xmlbeans.XmlString target = null;
+            target = (org.apache.xmlbeans.XmlString)get_store().find_element_user(QUALITYOFSERVICE$92, 0);
+            if (target == null)
+            {
+                target = (org.apache.xmlbeans.XmlString)get_store().add_element_user(QUALITYOFSERVICE$92);
+            }
+            target.set(qualityOfService);
+        }
+    }
+    
+    /**
+     * Unsets the "qualityOfService" element
+     */
+    public void unsetQualityOfService()
+    {
+        synchronized (monitor())
+        {
+            check_orphaned();
+            get_store().remove_element(QUALITYOFSERVICE$92, 0);
+        }
+    }
+    
+    /**
+     * Gets the "reservation" element
+     */
+    public java.lang.String getReservation()
+    {
+        synchronized (monitor())
+        {
+            check_orphaned();
+            org.apache.xmlbeans.SimpleValue target = null;
+            target = (org.apache.xmlbeans.SimpleValue)get_store().find_element_user(RESERVATION$94, 0);
+            if (target == null)
+            {
+                return null;
+            }
+            return target.getStringValue();
+        }
+    }
+    
+    /**
+     * Gets (as xml) the "reservation" element
+     */
+    public org.apache.xmlbeans.XmlString xgetReservation()
+    {
+        synchronized (monitor())
+        {
+            check_orphaned();
+            org.apache.xmlbeans.XmlString target = null;
+            target = (org.apache.xmlbeans.XmlString)get_store().find_element_user(RESERVATION$94, 0);
+            return target;
+        }
+    }
+    
+    /**
+     * True if has "reservation" element
+     */
+    public boolean isSetReservation()
+    {
+        synchronized (monitor())
+        {
+            check_orphaned();
+            return get_store().count_elements(RESERVATION$94) != 0;
+        }
+    }
+    
+    /**
+     * Sets the "reservation" element
+     */
+    public void setReservation(java.lang.String reservation)
+    {
+        synchronized (monitor())
+        {
+            check_orphaned();
+            org.apache.xmlbeans.SimpleValue target = null;
+            target = (org.apache.xmlbeans.SimpleValue)get_store().find_element_user(RESERVATION$94, 0);
+            if (target == null)
+            {
+                target = (org.apache.xmlbeans.SimpleValue)get_store().add_element_user(RESERVATION$94);
+            }
+            target.setStringValue(reservation);
+        }
+    }
+    
+    /**
+     * Sets (as xml) the "reservation" element
+     */
+    public void xsetReservation(org.apache.xmlbeans.XmlString reservation)
+    {
+        synchronized (monitor())
+        {
+            check_orphaned();
+            org.apache.xmlbeans.XmlString target = null;
+            target = (org.apache.xmlbeans.XmlString)get_store().find_element_user(RESERVATION$94, 0);
+            if (target == null)
+            {
+                target = (org.apache.xmlbeans.XmlString)get_store().add_element_user(RESERVATION$94);
+            }
+            target.set(reservation);
+        }
+    }
+    
+    /**
+     * Unsets the "reservation" element
+     */
+    public void unsetReservation()
+    {
+        synchronized (monitor())
+        {
+            check_orphaned();
+            get_store().remove_element(RESERVATION$94, 0);
+        }
+    }
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/f831fedf/modules/gfac/gfac-core/src/main/resources/PBSJobDescriptor.xsd
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-core/src/main/resources/PBSJobDescriptor.xsd b/modules/gfac/gfac-core/src/main/resources/PBSJobDescriptor.xsd
index 966dafb..e9e6882 100644
--- a/modules/gfac/gfac-core/src/main/resources/PBSJobDescriptor.xsd
+++ b/modules/gfac/gfac-core/src/main/resources/PBSJobDescriptor.xsd
@@ -60,6 +60,8 @@
             <element name="callBackIp" type="xsd:string" minOccurs="0" maxOccurs="1"/>
             <element name="callBackPort" type="xsd:string" minOccurs="0" maxOccurs="1"/>
             <element name="chassisName" type="xsd:string" minOccurs="0" maxOccurs="1"/>
+            <element name="qualityOfService" type="xsd:string" minOccurs="0" maxOccurs="1"/>
+            <element name="reservation" type="xsd:string" minOccurs="0" maxOccurs="1"/>
         </sequence>
 	</complexType>
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/f831fedf/modules/gfac/gfac-impl/src/main/resources/SLURMTemplate.xslt
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-impl/src/main/resources/SLURMTemplate.xslt b/modules/gfac/gfac-impl/src/main/resources/SLURMTemplate.xslt
index 4a62722..c82c13c 100644
--- a/modules/gfac/gfac-impl/src/main/resources/SLURMTemplate.xslt
+++ b/modules/gfac/gfac-impl/src/main/resources/SLURMTemplate.xslt
@@ -63,6 +63,16 @@
 #SBATCH -e <xsl:value-of select="ns:standardErrorFile"/>
     </xsl:when>
     </xsl:choose>
+    <xsl:choose>
+    <xsl:when test="ns:qualityOfService">
+#SBATCH --qos=<xsl:value-of select="ns:qualityOfService"/>
+    </xsl:when>
+    </xsl:choose>
+    <xsl:choose>
+    <xsl:when test="ns:reservation">
+#SBATCH --reservation=<xsl:value-of select="ns:reservation"/>
+    </xsl:when>
+    </xsl:choose>
     <xsl:for-each select="ns:preJobCommands/ns:command">
         <xsl:text>&#xa;</xsl:text>
         <xsl:value-of select="."/><xsl:text>   </xsl:text>
@@ -75,4 +85,4 @@ cd <xsl:text>   </xsl:text><xsl:value-of select="ns:workingDirectory"/><xsl:text
     </xsl:for-each>
 </xsl:template>
 
-</xsl:stylesheet>
\ No newline at end of file
+</xsl:stylesheet>

http://git-wip-us.apache.org/repos/asf/airavata/blob/f831fedf/thrift-interface-descriptions/data-models/resource-catalog-models/gateway_resource_profile_model.thrift
----------------------------------------------------------------------
diff --git a/thrift-interface-descriptions/data-models/resource-catalog-models/gateway_resource_profile_model.thrift b/thrift-interface-descriptions/data-models/resource-catalog-models/gateway_resource_profile_model.thrift
index 1df7df5..d1b258c 100644
--- a/thrift-interface-descriptions/data-models/resource-catalog-models/gateway_resource_profile_model.thrift
+++ b/thrift-interface-descriptions/data-models/resource-catalog-models/gateway_resource_profile_model.thrift
@@ -71,7 +71,10 @@ struct ComputeResourcePreference {
     8: optional string allocationProjectNumber,
     9: optional string resourceSpecificCredentialStoreToken,
     10: optional string usageReportingGatewayId,
-    11: optional string allocations
+    11: optional string qualityOfService,
+    12: optional string reservation,
+    13: optional i64 reservationStartTime,
+    14: optional i64 reservationEndTime
 }
 
 struct StoragePreference {