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

airavata git commit: adding new field useUserCRPref to UserConfigurationData model

Repository: airavata
Updated Branches:
  refs/heads/develop 7937d1c39 -> d7d058b11


adding new field useUserCRPref to UserConfigurationData model


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

Branch: refs/heads/develop
Commit: d7d058b112327e88733fc7dc2e06ea084db58b25
Parents: 7937d1c
Author: scnakandala <su...@gmail.com>
Authored: Thu Nov 3 12:34:34 2016 -0400
Committer: scnakandala <su...@gmail.com>
Committed: Thu Nov 3 12:34:34 2016 -0400

----------------------------------------------------------------------
 .../lib/airavata/experiment_model_types.cpp     |  22 ++++
 .../lib/airavata/experiment_model_types.h       |  12 ++-
 .../lib/Airavata/Model/Experiment/Types.php     |  23 ++++
 .../apache/airavata/model/experiment/ttypes.py  |  15 ++-
 .../experiment/UserConfigurationDataModel.java  | 107 ++++++++++++++++++-
 .../catalog/impl/ExperimentRegistry.java        |   2 +
 .../catalog/model/UserConfigurationData.java    |   9 ++
 .../UserConfigurationDataResource.java          |  10 ++
 .../experiment/catalog/resources/Utils.java     |   1 +
 .../utils/ThriftDataModelConversion.java        |   1 +
 .../src/main/resources/expcatalog-derby.sql     |   1 +
 .../src/main/resources/expcatalog-mysql.sql     |   1 +
 .../experiment_model.thrift                     |   1 +
 13 files changed, 198 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/d7d058b1/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/experiment_model_types.cpp
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/experiment_model_types.cpp b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/experiment_model_types.cpp
index 1980b28..698c6ee 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/experiment_model_types.cpp
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/experiment_model_types.cpp
@@ -118,6 +118,11 @@ void UserConfigurationDataModel::__set_experimentDataDir(const std::string& val)
 __isset.experimentDataDir = true;
 }
 
+void UserConfigurationDataModel::__set_useUserCRPref(const bool val) {
+  this->useUserCRPref = val;
+__isset.useUserCRPref = true;
+}
+
 uint32_t UserConfigurationDataModel::read(::apache::thrift::protocol::TProtocol* iprot) {
 
   apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
@@ -213,6 +218,14 @@ uint32_t UserConfigurationDataModel::read(::apache::thrift::protocol::TProtocol*
           xfer += iprot->skip(ftype);
         }
         break;
+      case 10:
+        if (ftype == ::apache::thrift::protocol::T_BOOL) {
+          xfer += iprot->readBool(this->useUserCRPref);
+          this->__isset.useUserCRPref = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
       default:
         xfer += iprot->skip(ftype);
         break;
@@ -277,6 +290,11 @@ uint32_t UserConfigurationDataModel::write(::apache::thrift::protocol::TProtocol
     xfer += oprot->writeString(this->experimentDataDir);
     xfer += oprot->writeFieldEnd();
   }
+  if (this->__isset.useUserCRPref) {
+    xfer += oprot->writeFieldBegin("useUserCRPref", ::apache::thrift::protocol::T_BOOL, 10);
+    xfer += oprot->writeBool(this->useUserCRPref);
+    xfer += oprot->writeFieldEnd();
+  }
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
   return xfer;
@@ -293,6 +311,7 @@ void swap(UserConfigurationDataModel &a, UserConfigurationDataModel &b) {
   swap(a.generateCert, b.generateCert);
   swap(a.storageId, b.storageId);
   swap(a.experimentDataDir, b.experimentDataDir);
+  swap(a.useUserCRPref, b.useUserCRPref);
   swap(a.__isset, b.__isset);
 }
 
@@ -306,6 +325,7 @@ UserConfigurationDataModel::UserConfigurationDataModel(const UserConfigurationDa
   generateCert = other0.generateCert;
   storageId = other0.storageId;
   experimentDataDir = other0.experimentDataDir;
+  useUserCRPref = other0.useUserCRPref;
   __isset = other0.__isset;
 }
 UserConfigurationDataModel& UserConfigurationDataModel::operator=(const UserConfigurationDataModel& other1) {
@@ -318,6 +338,7 @@ UserConfigurationDataModel& UserConfigurationDataModel::operator=(const UserConf
   generateCert = other1.generateCert;
   storageId = other1.storageId;
   experimentDataDir = other1.experimentDataDir;
+  useUserCRPref = other1.useUserCRPref;
   __isset = other1.__isset;
   return *this;
 }
@@ -333,6 +354,7 @@ void UserConfigurationDataModel::printTo(std::ostream& out) const {
   out << ", " << "generateCert="; (__isset.generateCert ? (out << to_string(generateCert)) : (out << "<null>"));
   out << ", " << "storageId="; (__isset.storageId ? (out << to_string(storageId)) : (out << "<null>"));
   out << ", " << "experimentDataDir="; (__isset.experimentDataDir ? (out << to_string(experimentDataDir)) : (out << "<null>"));
+  out << ", " << "useUserCRPref="; (__isset.useUserCRPref ? (out << to_string(useUserCRPref)) : (out << "<null>"));
   out << ")";
 }
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/d7d058b1/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/experiment_model_types.h
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/experiment_model_types.h b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/experiment_model_types.h
index c6368e3..1047708 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/experiment_model_types.h
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/experiment_model_types.h
@@ -82,7 +82,7 @@ class ExperimentSummaryModel;
 class ExperimentStatistics;
 
 typedef struct _UserConfigurationDataModel__isset {
-  _UserConfigurationDataModel__isset() : shareExperimentPublicly(true), computationalResourceScheduling(false), throttleResources(true), userDN(false), generateCert(true), storageId(false), experimentDataDir(false) {}
+  _UserConfigurationDataModel__isset() : shareExperimentPublicly(true), computationalResourceScheduling(false), throttleResources(true), userDN(false), generateCert(true), storageId(false), experimentDataDir(false), useUserCRPref(false) {}
   bool shareExperimentPublicly :1;
   bool computationalResourceScheduling :1;
   bool throttleResources :1;
@@ -90,6 +90,7 @@ typedef struct _UserConfigurationDataModel__isset {
   bool generateCert :1;
   bool storageId :1;
   bool experimentDataDir :1;
+  bool useUserCRPref :1;
 } _UserConfigurationDataModel__isset;
 
 class UserConfigurationDataModel {
@@ -97,7 +98,7 @@ class UserConfigurationDataModel {
 
   UserConfigurationDataModel(const UserConfigurationDataModel&);
   UserConfigurationDataModel& operator=(const UserConfigurationDataModel&);
-  UserConfigurationDataModel() : airavataAutoSchedule(false), overrideManualScheduledParams(false), shareExperimentPublicly(false), throttleResources(false), userDN(), generateCert(false), storageId(), experimentDataDir() {
+  UserConfigurationDataModel() : airavataAutoSchedule(false), overrideManualScheduledParams(false), shareExperimentPublicly(false), throttleResources(false), userDN(), generateCert(false), storageId(), experimentDataDir(), useUserCRPref(0) {
   }
 
   virtual ~UserConfigurationDataModel() throw();
@@ -110,6 +111,7 @@ class UserConfigurationDataModel {
   bool generateCert;
   std::string storageId;
   std::string experimentDataDir;
+  bool useUserCRPref;
 
   _UserConfigurationDataModel__isset __isset;
 
@@ -131,6 +133,8 @@ class UserConfigurationDataModel {
 
   void __set_experimentDataDir(const std::string& val);
 
+  void __set_useUserCRPref(const bool val);
+
   bool operator == (const UserConfigurationDataModel & rhs) const
   {
     if (!(airavataAutoSchedule == rhs.airavataAutoSchedule))
@@ -165,6 +169,10 @@ class UserConfigurationDataModel {
       return false;
     else if (__isset.experimentDataDir && !(experimentDataDir == rhs.experimentDataDir))
       return false;
+    if (__isset.useUserCRPref != rhs.__isset.useUserCRPref)
+      return false;
+    else if (__isset.useUserCRPref && !(useUserCRPref == rhs.useUserCRPref))
+      return false;
     return true;
   }
   bool operator != (const UserConfigurationDataModel &rhs) const {

http://git-wip-us.apache.org/repos/asf/airavata/blob/d7d058b1/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Experiment/Types.php
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Experiment/Types.php b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Experiment/Types.php
index 3e1dc12..f015ff4 100644
--- a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Experiment/Types.php
+++ b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Experiment/Types.php
@@ -98,6 +98,10 @@ class UserConfigurationDataModel {
    * @var string
    */
   public $experimentDataDir = null;
+  /**
+   * @var bool
+   */
+  public $useUserCRPref = null;
 
   public function __construct($vals=null) {
     if (!isset(self::$_TSPEC)) {
@@ -139,6 +143,10 @@ class UserConfigurationDataModel {
           'var' => 'experimentDataDir',
           'type' => TType::STRING,
           ),
+        10 => array(
+          'var' => 'useUserCRPref',
+          'type' => TType::BOOL,
+          ),
         );
     }
     if (is_array($vals)) {
@@ -169,6 +177,9 @@ class UserConfigurationDataModel {
       if (isset($vals['experimentDataDir'])) {
         $this->experimentDataDir = $vals['experimentDataDir'];
       }
+      if (isset($vals['useUserCRPref'])) {
+        $this->useUserCRPref = $vals['useUserCRPref'];
+      }
     }
   }
 
@@ -255,6 +266,13 @@ class UserConfigurationDataModel {
             $xfer += $input->skip($ftype);
           }
           break;
+        case 10:
+          if ($ftype == TType::BOOL) {
+            $xfer += $input->readBool($this->useUserCRPref);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
         default:
           $xfer += $input->skip($ftype);
           break;
@@ -316,6 +334,11 @@ class UserConfigurationDataModel {
       $xfer += $output->writeString($this->experimentDataDir);
       $xfer += $output->writeFieldEnd();
     }
+    if ($this->useUserCRPref !== null) {
+      $xfer += $output->writeFieldBegin('useUserCRPref', TType::BOOL, 10);
+      $xfer += $output->writeBool($this->useUserCRPref);
+      $xfer += $output->writeFieldEnd();
+    }
     $xfer += $output->writeFieldStop();
     $xfer += $output->writeStructEnd();
     return $xfer;

http://git-wip-us.apache.org/repos/asf/airavata/blob/d7d058b1/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/experiment/ttypes.py
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/experiment/ttypes.py b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/experiment/ttypes.py
index 80ff4b1..9144a24 100644
--- a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/experiment/ttypes.py
+++ b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/experiment/ttypes.py
@@ -96,6 +96,7 @@ class UserConfigurationDataModel:
    - generateCert
    - storageId
    - experimentDataDir
+   - useUserCRPref
   """
 
   thrift_spec = (
@@ -109,9 +110,10 @@ class UserConfigurationDataModel:
     (7, TType.BOOL, 'generateCert', None, False, ), # 7
     (8, TType.STRING, 'storageId', None, None, ), # 8
     (9, TType.STRING, 'experimentDataDir', None, None, ), # 9
+    (10, TType.BOOL, 'useUserCRPref', None, None, ), # 10
   )
 
-  def __init__(self, airavataAutoSchedule=thrift_spec[1][4], overrideManualScheduledParams=thrift_spec[2][4], shareExperimentPublicly=thrift_spec[3][4], computationalResourceScheduling=None, throttleResources=thrift_spec[5][4], userDN=None, generateCert=thrift_spec[7][4], storageId=None, experimentDataDir=None,):
+  def __init__(self, airavataAutoSchedule=thrift_spec[1][4], overrideManualScheduledParams=thrift_spec[2][4], shareExperimentPublicly=thrift_spec[3][4], computationalResourceScheduling=None, throttleResources=thrift_spec[5][4], userDN=None, generateCert=thrift_spec[7][4], storageId=None, experimentDataDir=None, useUserCRPref=None,):
     self.airavataAutoSchedule = airavataAutoSchedule
     self.overrideManualScheduledParams = overrideManualScheduledParams
     self.shareExperimentPublicly = shareExperimentPublicly
@@ -121,6 +123,7 @@ class UserConfigurationDataModel:
     self.generateCert = generateCert
     self.storageId = storageId
     self.experimentDataDir = experimentDataDir
+    self.useUserCRPref = useUserCRPref
 
   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:
@@ -177,6 +180,11 @@ class UserConfigurationDataModel:
           self.experimentDataDir = iprot.readString()
         else:
           iprot.skip(ftype)
+      elif fid == 10:
+        if ftype == TType.BOOL:
+          self.useUserCRPref = iprot.readBool()
+        else:
+          iprot.skip(ftype)
       else:
         iprot.skip(ftype)
       iprot.readFieldEnd()
@@ -223,6 +231,10 @@ class UserConfigurationDataModel:
       oprot.writeFieldBegin('experimentDataDir', TType.STRING, 9)
       oprot.writeString(self.experimentDataDir)
       oprot.writeFieldEnd()
+    if self.useUserCRPref is not None:
+      oprot.writeFieldBegin('useUserCRPref', TType.BOOL, 10)
+      oprot.writeBool(self.useUserCRPref)
+      oprot.writeFieldEnd()
     oprot.writeFieldStop()
     oprot.writeStructEnd()
 
@@ -245,6 +257,7 @@ class UserConfigurationDataModel:
     value = (value * 31) ^ hash(self.generateCert)
     value = (value * 31) ^ hash(self.storageId)
     value = (value * 31) ^ hash(self.experimentDataDir)
+    value = (value * 31) ^ hash(self.useUserCRPref)
     return value
 
   def __repr__(self):

http://git-wip-us.apache.org/repos/asf/airavata/blob/d7d058b1/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/experiment/UserConfigurationDataModel.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/experiment/UserConfigurationDataModel.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/experiment/UserConfigurationDataModel.java
index 0ef0963..664c922 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/experiment/UserConfigurationDataModel.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/experiment/UserConfigurationDataModel.java
@@ -69,6 +69,7 @@ public class UserConfigurationDataModel implements org.apache.thrift.TBase<UserC
   private static final org.apache.thrift.protocol.TField GENERATE_CERT_FIELD_DESC = new org.apache.thrift.protocol.TField("generateCert", org.apache.thrift.protocol.TType.BOOL, (short)7);
   private static final org.apache.thrift.protocol.TField STORAGE_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("storageId", org.apache.thrift.protocol.TType.STRING, (short)8);
   private static final org.apache.thrift.protocol.TField EXPERIMENT_DATA_DIR_FIELD_DESC = new org.apache.thrift.protocol.TField("experimentDataDir", org.apache.thrift.protocol.TType.STRING, (short)9);
+  private static final org.apache.thrift.protocol.TField USE_USER_CRPREF_FIELD_DESC = new org.apache.thrift.protocol.TField("useUserCRPref", org.apache.thrift.protocol.TType.BOOL, (short)10);
 
   private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
   static {
@@ -85,6 +86,7 @@ public class UserConfigurationDataModel implements org.apache.thrift.TBase<UserC
   private boolean generateCert; // optional
   private String storageId; // optional
   private String experimentDataDir; // optional
+  private boolean useUserCRPref; // 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 {
@@ -96,7 +98,8 @@ public class UserConfigurationDataModel implements org.apache.thrift.TBase<UserC
     USER_DN((short)6, "userDN"),
     GENERATE_CERT((short)7, "generateCert"),
     STORAGE_ID((short)8, "storageId"),
-    EXPERIMENT_DATA_DIR((short)9, "experimentDataDir");
+    EXPERIMENT_DATA_DIR((short)9, "experimentDataDir"),
+    USE_USER_CRPREF((short)10, "useUserCRPref");
 
     private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
 
@@ -129,6 +132,8 @@ public class UserConfigurationDataModel implements org.apache.thrift.TBase<UserC
           return STORAGE_ID;
         case 9: // EXPERIMENT_DATA_DIR
           return EXPERIMENT_DATA_DIR;
+        case 10: // USE_USER_CRPREF
+          return USE_USER_CRPREF;
         default:
           return null;
       }
@@ -174,8 +179,9 @@ public class UserConfigurationDataModel implements org.apache.thrift.TBase<UserC
   private static final int __SHAREEXPERIMENTPUBLICLY_ISSET_ID = 2;
   private static final int __THROTTLERESOURCES_ISSET_ID = 3;
   private static final int __GENERATECERT_ISSET_ID = 4;
+  private static final int __USEUSERCRPREF_ISSET_ID = 5;
   private byte __isset_bitfield = 0;
-  private static final _Fields optionals[] = {_Fields.SHARE_EXPERIMENT_PUBLICLY,_Fields.COMPUTATIONAL_RESOURCE_SCHEDULING,_Fields.THROTTLE_RESOURCES,_Fields.USER_DN,_Fields.GENERATE_CERT,_Fields.STORAGE_ID,_Fields.EXPERIMENT_DATA_DIR};
+  private static final _Fields optionals[] = {_Fields.SHARE_EXPERIMENT_PUBLICLY,_Fields.COMPUTATIONAL_RESOURCE_SCHEDULING,_Fields.THROTTLE_RESOURCES,_Fields.USER_DN,_Fields.GENERATE_CERT,_Fields.STORAGE_ID,_Fields.EXPERIMENT_DATA_DIR,_Fields.USE_USER_CRPREF};
   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);
@@ -197,6 +203,8 @@ public class UserConfigurationDataModel implements org.apache.thrift.TBase<UserC
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
     tmpMap.put(_Fields.EXPERIMENT_DATA_DIR, new org.apache.thrift.meta_data.FieldMetaData("experimentDataDir", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    tmpMap.put(_Fields.USE_USER_CRPREF, new org.apache.thrift.meta_data.FieldMetaData("useUserCRPref", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.BOOL)));
     metaDataMap = Collections.unmodifiableMap(tmpMap);
     org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(UserConfigurationDataModel.class, metaDataMap);
   }
@@ -247,6 +255,7 @@ public class UserConfigurationDataModel implements org.apache.thrift.TBase<UserC
     if (other.isSetExperimentDataDir()) {
       this.experimentDataDir = other.experimentDataDir;
     }
+    this.useUserCRPref = other.useUserCRPref;
   }
 
   public UserConfigurationDataModel deepCopy() {
@@ -269,6 +278,8 @@ public class UserConfigurationDataModel implements org.apache.thrift.TBase<UserC
 
     this.storageId = null;
     this.experimentDataDir = null;
+    setUseUserCRPrefIsSet(false);
+    this.useUserCRPref = false;
   }
 
   public boolean isAiravataAutoSchedule() {
@@ -473,6 +484,28 @@ public class UserConfigurationDataModel implements org.apache.thrift.TBase<UserC
     }
   }
 
+  public boolean isUseUserCRPref() {
+    return this.useUserCRPref;
+  }
+
+  public void setUseUserCRPref(boolean useUserCRPref) {
+    this.useUserCRPref = useUserCRPref;
+    setUseUserCRPrefIsSet(true);
+  }
+
+  public void unsetUseUserCRPref() {
+    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __USEUSERCRPREF_ISSET_ID);
+  }
+
+  /** Returns true if field useUserCRPref is set (has been assigned a value) and false otherwise */
+  public boolean isSetUseUserCRPref() {
+    return EncodingUtils.testBit(__isset_bitfield, __USEUSERCRPREF_ISSET_ID);
+  }
+
+  public void setUseUserCRPrefIsSet(boolean value) {
+    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __USEUSERCRPREF_ISSET_ID, value);
+  }
+
   public void setFieldValue(_Fields field, Object value) {
     switch (field) {
     case AIRAVATA_AUTO_SCHEDULE:
@@ -547,6 +580,14 @@ public class UserConfigurationDataModel implements org.apache.thrift.TBase<UserC
       }
       break;
 
+    case USE_USER_CRPREF:
+      if (value == null) {
+        unsetUseUserCRPref();
+      } else {
+        setUseUserCRPref((Boolean)value);
+      }
+      break;
+
     }
   }
 
@@ -579,6 +620,9 @@ public class UserConfigurationDataModel implements org.apache.thrift.TBase<UserC
     case EXPERIMENT_DATA_DIR:
       return getExperimentDataDir();
 
+    case USE_USER_CRPREF:
+      return isUseUserCRPref();
+
     }
     throw new IllegalStateException();
   }
@@ -608,6 +652,8 @@ public class UserConfigurationDataModel implements org.apache.thrift.TBase<UserC
       return isSetStorageId();
     case EXPERIMENT_DATA_DIR:
       return isSetExperimentDataDir();
+    case USE_USER_CRPREF:
+      return isSetUseUserCRPref();
     }
     throw new IllegalStateException();
   }
@@ -706,6 +752,15 @@ public class UserConfigurationDataModel implements org.apache.thrift.TBase<UserC
         return false;
     }
 
+    boolean this_present_useUserCRPref = true && this.isSetUseUserCRPref();
+    boolean that_present_useUserCRPref = true && that.isSetUseUserCRPref();
+    if (this_present_useUserCRPref || that_present_useUserCRPref) {
+      if (!(this_present_useUserCRPref && that_present_useUserCRPref))
+        return false;
+      if (this.useUserCRPref != that.useUserCRPref)
+        return false;
+    }
+
     return true;
   }
 
@@ -758,6 +813,11 @@ public class UserConfigurationDataModel implements org.apache.thrift.TBase<UserC
     if (present_experimentDataDir)
       list.add(experimentDataDir);
 
+    boolean present_useUserCRPref = true && (isSetUseUserCRPref());
+    list.add(present_useUserCRPref);
+    if (present_useUserCRPref)
+      list.add(useUserCRPref);
+
     return list.hashCode();
   }
 
@@ -859,6 +919,16 @@ public class UserConfigurationDataModel implements org.apache.thrift.TBase<UserC
         return lastComparison;
       }
     }
+    lastComparison = Boolean.valueOf(isSetUseUserCRPref()).compareTo(other.isSetUseUserCRPref());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetUseUserCRPref()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.useUserCRPref, other.useUserCRPref);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
     return 0;
   }
 
@@ -944,6 +1014,12 @@ public class UserConfigurationDataModel implements org.apache.thrift.TBase<UserC
       }
       first = false;
     }
+    if (isSetUseUserCRPref()) {
+      if (!first) sb.append(", ");
+      sb.append("useUserCRPref:");
+      sb.append(this.useUserCRPref);
+      first = false;
+    }
     sb.append(")");
     return sb.toString();
   }
@@ -1073,6 +1149,14 @@ public class UserConfigurationDataModel implements org.apache.thrift.TBase<UserC
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
+          case 10: // USE_USER_CRPREF
+            if (schemeField.type == org.apache.thrift.protocol.TType.BOOL) {
+              struct.useUserCRPref = iprot.readBool();
+              struct.setUseUserCRPrefIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
           default:
             org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
         }
@@ -1135,6 +1219,11 @@ public class UserConfigurationDataModel implements org.apache.thrift.TBase<UserC
           oprot.writeFieldEnd();
         }
       }
+      if (struct.isSetUseUserCRPref()) {
+        oprot.writeFieldBegin(USE_USER_CRPREF_FIELD_DESC);
+        oprot.writeBool(struct.useUserCRPref);
+        oprot.writeFieldEnd();
+      }
       oprot.writeFieldStop();
       oprot.writeStructEnd();
     }
@@ -1176,7 +1265,10 @@ public class UserConfigurationDataModel implements org.apache.thrift.TBase<UserC
       if (struct.isSetExperimentDataDir()) {
         optionals.set(6);
       }
-      oprot.writeBitSet(optionals, 7);
+      if (struct.isSetUseUserCRPref()) {
+        optionals.set(7);
+      }
+      oprot.writeBitSet(optionals, 8);
       if (struct.isSetShareExperimentPublicly()) {
         oprot.writeBool(struct.shareExperimentPublicly);
       }
@@ -1198,6 +1290,9 @@ public class UserConfigurationDataModel implements org.apache.thrift.TBase<UserC
       if (struct.isSetExperimentDataDir()) {
         oprot.writeString(struct.experimentDataDir);
       }
+      if (struct.isSetUseUserCRPref()) {
+        oprot.writeBool(struct.useUserCRPref);
+      }
     }
 
     @Override
@@ -1207,7 +1302,7 @@ public class UserConfigurationDataModel implements org.apache.thrift.TBase<UserC
       struct.setAiravataAutoScheduleIsSet(true);
       struct.overrideManualScheduledParams = iprot.readBool();
       struct.setOverrideManualScheduledParamsIsSet(true);
-      BitSet incoming = iprot.readBitSet(7);
+      BitSet incoming = iprot.readBitSet(8);
       if (incoming.get(0)) {
         struct.shareExperimentPublicly = iprot.readBool();
         struct.setShareExperimentPubliclyIsSet(true);
@@ -1237,6 +1332,10 @@ public class UserConfigurationDataModel implements org.apache.thrift.TBase<UserC
         struct.experimentDataDir = iprot.readString();
         struct.setExperimentDataDirIsSet(true);
       }
+      if (incoming.get(7)) {
+        struct.useUserCRPref = iprot.readBool();
+        struct.setUseUserCRPrefIsSet(true);
+      }
     }
   }
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/d7d058b1/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentRegistry.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentRegistry.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentRegistry.java
index 02c1904..8fdf299 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentRegistry.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentRegistry.java
@@ -147,6 +147,7 @@ public class ExperimentRegistry {
             configDataResource.setStaticWorkingDir(configurationData.getComputationalResourceScheduling().getStaticWorkingDir());
             configDataResource.setStorageId(configurationData.getStorageId());
             configDataResource.setExperimentDataDir(configurationData.getExperimentDataDir());
+            configDataResource.setUseUserCRPref(configurationData.isUseUserCRPref());
             configDataResource.save();
         } catch (Exception e) {
             logger.error("Unable to save user config data", e);
@@ -720,6 +721,7 @@ public class ExperimentRegistry {
             configDataResource.setTotalPhysicalMemory(configurationData.getComputationalResourceScheduling().getTotalPhysicalMemory());
             configDataResource.setStaticWorkingDir(configurationData.getComputationalResourceScheduling().getStaticWorkingDir());
             configDataResource.setExperimentDataDir(configurationData.getExperimentDataDir());
+            configDataResource.setUseUserCRPref(configurationData.isUseUserCRPref());
             configDataResource.save();
         } catch (Exception e) {
             logger.error("Unable to save user config data", e);

http://git-wip-us.apache.org/repos/asf/airavata/blob/d7d058b1/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/UserConfigurationData.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/UserConfigurationData.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/UserConfigurationData.java
index efad5ce..5ad5224 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/UserConfigurationData.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/UserConfigurationData.java
@@ -50,6 +50,7 @@ public class UserConfigurationData {
     private String overrideAllocationProjectNumber;
     private String storageId;
     private String experimentDataDir;
+    private boolean useUserCRPref;
 
     @Id
     @Column(name = "EXPERIMENT_ID")
@@ -232,6 +233,14 @@ public class UserConfigurationData {
         this.experimentDataDir = experimentDataDir;
     }
 
+    @Column(name = "IS_USE_USER_CR_PREF")
+    public boolean isUseUserCRPref() {
+        return useUserCRPref;
+    }
+
+    public void setUseUserCRPref(boolean useUserCRPref) {
+        this.useUserCRPref = useUserCRPref;
+    }
 
     //    @Override
 //    public boolean equals(Object o) {

http://git-wip-us.apache.org/repos/asf/airavata/blob/d7d058b1/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/UserConfigurationDataResource.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/UserConfigurationDataResource.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/UserConfigurationDataResource.java
index c6516c4..163bf74 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/UserConfigurationDataResource.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/UserConfigurationDataResource.java
@@ -54,6 +54,7 @@ public class UserConfigurationDataResource extends AbstractExpCatResource {
     private String overrideAllocationProjectNumber;
     private String storageId;
     private String experimentDataDir;
+    private boolean useUserCRPref;
 
     public String getExperimentId() {
         return experimentId;
@@ -215,6 +216,14 @@ public class UserConfigurationDataResource extends AbstractExpCatResource {
         this.experimentDataDir = experimentDataDir;
     }
 
+    public boolean getUseUserCRPref() {
+        return useUserCRPref;
+    }
+
+    public void setUseUserCRPref(boolean useUserCRPref) {
+        this.useUserCRPref = useUserCRPref;
+    }
+
     public ExperimentCatResource create(ResourceType type) throws RegistryException {
         logger.error("Unsupported resource type for process resource scheduling data resource.", new UnsupportedOperationException());
         throw new UnsupportedOperationException();
@@ -282,6 +291,7 @@ public class UserConfigurationDataResource extends AbstractExpCatResource {
             userConfigurationData.setTotalPhysicalMemory(totalPhysicalMemory);
             userConfigurationData.setStorageId(storageId);
             userConfigurationData.setExperimentDataDir(experimentDataDir);
+            userConfigurationData.setUseUserCRPref(useUserCRPref);
             if (existingConf == null) {
                 em.persist(userConfigurationData);
             } else {

http://git-wip-us.apache.org/repos/asf/airavata/blob/d7d058b1/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/Utils.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/Utils.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/Utils.java
index 4852467..2c36442 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/Utils.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/Utils.java
@@ -557,6 +557,7 @@ public class Utils {
             configurationDataResource.setOverrideAllocationProjectNumber(o.getOverrideAllocationProjectNumber());
             configurationDataResource.setStorageId(o.getStorageId());
             configurationDataResource.setExperimentDataDir(o.getExperimentDataDir());
+            configurationDataResource.setUseUserCRPref(o.isUseUserCRPref());
         }
         return configurationDataResource;
     }

http://git-wip-us.apache.org/repos/asf/airavata/blob/d7d058b1/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/utils/ThriftDataModelConversion.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/utils/ThriftDataModelConversion.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/utils/ThriftDataModelConversion.java
index 8740737..a498de5 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/utils/ThriftDataModelConversion.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/utils/ThriftDataModelConversion.java
@@ -534,6 +534,7 @@ public class ThriftDataModelConversion {
             data.setGenerateCert(resource.getGenerateCert());
             data.setStorageId(resource.getStorageId());
             data.setExperimentDataDir(resource.getExperimentDataDir());
+            data.setUseUserCRPref(resource.getUseUserCRPref());
 
             ComputationalResourceSchedulingModel resourceSchedulingModel = new ComputationalResourceSchedulingModel();
             resourceSchedulingModel.setResourceHostId(resource.getResourceHostId());

http://git-wip-us.apache.org/repos/asf/airavata/blob/d7d058b1/modules/registry/registry-core/src/main/resources/expcatalog-derby.sql
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/resources/expcatalog-derby.sql b/modules/registry/registry-core/src/main/resources/expcatalog-derby.sql
index 3388dea..5fd86e7 100644
--- a/modules/registry/registry-core/src/main/resources/expcatalog-derby.sql
+++ b/modules/registry/registry-core/src/main/resources/expcatalog-derby.sql
@@ -194,6 +194,7 @@ CREATE TABLE USER_CONFIGURATION_DATA (
   OVERRIDE_ALLOCATION_PROJECT_NUMBER varchar(255),
   STORAGE_RESOURCE_ID varchar(255),
   EXPERIMENT_DATA_DIR VARCHAR (512),
+  IS_USE_USER_CR_PREF BOOLEAN,
   PRIMARY KEY (EXPERIMENT_ID),
   FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE
 );

http://git-wip-us.apache.org/repos/asf/airavata/blob/d7d058b1/modules/registry/registry-core/src/main/resources/expcatalog-mysql.sql
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/resources/expcatalog-mysql.sql b/modules/registry/registry-core/src/main/resources/expcatalog-mysql.sql
index 2c776af..78bdb99 100644
--- a/modules/registry/registry-core/src/main/resources/expcatalog-mysql.sql
+++ b/modules/registry/registry-core/src/main/resources/expcatalog-mysql.sql
@@ -195,6 +195,7 @@ CREATE TABLE USER_CONFIGURATION_DATA (
   OVERRIDE_ALLOCATION_PROJECT_NUMBER varchar(255),
   STORAGE_RESOURCE_ID varchar(255),
   EXPERIMENT_DATA_DIR VARCHAR (512),
+  IS_USE_USER_CR_PREF TINYINT(1),
   PRIMARY KEY (EXPERIMENT_ID),
   FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE
 );

http://git-wip-us.apache.org/repos/asf/airavata/blob/d7d058b1/thrift-interface-descriptions/data-models/experiment-catalog-models/experiment_model.thrift
----------------------------------------------------------------------
diff --git a/thrift-interface-descriptions/data-models/experiment-catalog-models/experiment_model.thrift b/thrift-interface-descriptions/data-models/experiment-catalog-models/experiment_model.thrift
index 5e54bf1..dd1d98b 100644
--- a/thrift-interface-descriptions/data-models/experiment-catalog-models/experiment_model.thrift
+++ b/thrift-interface-descriptions/data-models/experiment-catalog-models/experiment_model.thrift
@@ -64,6 +64,7 @@ struct UserConfigurationDataModel {
     7: optional bool generateCert = 0,
     8: optional string storageId;
     9: optional string experimentDataDir;
+    10: optional bool useUserCRPref;
 }
 
 /**