airavata-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From scnakand...@apache.org
Subject airavata git commit: adding storage resource id to input and outputs
Date Thu, 24 Mar 2016 20:41:25 GMT
Repository: airavata
Updated Branches:
  refs/heads/develop 3357169c6 -> 245319567


adding storage resource id to input and outputs


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

Branch: refs/heads/develop
Commit: 24531956710134f2fa65b4fe0d661f1489b5158e
Parents: 3357169
Author: scnakandala <supun.nakandala@gmail.com>
Authored: Thu Mar 24 15:35:24 2016 -0400
Committer: scnakandala <supun.nakandala@gmail.com>
Committed: Thu Mar 24 15:35:24 2016 -0400

----------------------------------------------------------------------
 .../airavata/application_io_models_types.cpp    |  44 +++++++
 .../lib/airavata/application_io_models_types.h  |  24 +++-
 .../lib/Airavata/Model/Application/Io/Types.php |  46 ++++++++
 .../airavata/model/application/io/ttypes.py     |  30 ++++-
 .../application/io/InputDataObjectType.java     | 114 ++++++++++++++++++-
 .../application/io/OutputDataObjectType.java    | 114 ++++++++++++++++++-
 .../server/OrchestratorServerHandler.java       |   2 +-
 .../catalog/impl/ExperimentRegistry.java        |   9 +-
 .../catalog/model/ExperimentInput.java          |  10 ++
 .../catalog/model/ExperimentOutput.java         |  11 ++
 .../experiment/catalog/model/ProcessInput.java  |  11 ++
 .../experiment/catalog/model/ProcessOutput.java |  11 ++
 .../resources/ExperimentInputResource.java      |  10 ++
 .../resources/ExperimentOutputResource.java     |  10 ++
 .../catalog/resources/ProcessInputResource.java |  10 ++
 .../resources/ProcessOutputResource.java        |  10 ++
 .../utils/ThriftDataModelConversion.java        |   4 +
 .../src/main/resources/expcatalog-derby.sql     |   4 +
 .../src/main/resources/expcatalog-mysql.sql     |   4 +
 .../application_io_models.thrift                |   6 +-
 20 files changed, 466 insertions(+), 18 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/24531956/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/application_io_models_types.cpp
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/application_io_models_types.cpp b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/application_io_models_types.cpp
index 0604770..15baf31 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/application_io_models_types.cpp
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/application_io_models_types.cpp
@@ -107,6 +107,11 @@ void InputDataObjectType::__set_dataStaged(const bool val) {
 __isset.dataStaged = true;
 }
 
+void InputDataObjectType::__set_storageResourceId(const std::string& val) {
+  this->storageResourceId = val;
+__isset.storageResourceId = true;
+}
+
 uint32_t InputDataObjectType::read(::apache::thrift::protocol::TProtocol* iprot) {
 
   apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
@@ -219,6 +224,14 @@ uint32_t InputDataObjectType::read(::apache::thrift::protocol::TProtocol* iprot)
           xfer += iprot->skip(ftype);
         }
         break;
+      case 12:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->storageResourceId);
+          this->__isset.storageResourceId = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
       default:
         xfer += iprot->skip(ftype);
         break;
@@ -292,6 +305,11 @@ uint32_t InputDataObjectType::write(::apache::thrift::protocol::TProtocol* oprot
     xfer += oprot->writeBool(this->dataStaged);
     xfer += oprot->writeFieldEnd();
   }
+  if (this->__isset.storageResourceId) {
+    xfer += oprot->writeFieldBegin("storageResourceId", ::apache::thrift::protocol::T_STRING, 12);
+    xfer += oprot->writeString(this->storageResourceId);
+    xfer += oprot->writeFieldEnd();
+  }
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
   return xfer;
@@ -310,6 +328,7 @@ void swap(InputDataObjectType &a, InputDataObjectType &b) {
   swap(a.isRequired, b.isRequired);
   swap(a.requiredToAddedToCommandLine, b.requiredToAddedToCommandLine);
   swap(a.dataStaged, b.dataStaged);
+  swap(a.storageResourceId, b.storageResourceId);
   swap(a.__isset, b.__isset);
 }
 
@@ -325,6 +344,7 @@ InputDataObjectType::InputDataObjectType(const InputDataObjectType& other1) {
   isRequired = other1.isRequired;
   requiredToAddedToCommandLine = other1.requiredToAddedToCommandLine;
   dataStaged = other1.dataStaged;
+  storageResourceId = other1.storageResourceId;
   __isset = other1.__isset;
 }
 InputDataObjectType& InputDataObjectType::operator=(const InputDataObjectType& other2) {
@@ -339,6 +359,7 @@ InputDataObjectType& InputDataObjectType::operator=(const InputDataObjectType& o
   isRequired = other2.isRequired;
   requiredToAddedToCommandLine = other2.requiredToAddedToCommandLine;
   dataStaged = other2.dataStaged;
+  storageResourceId = other2.storageResourceId;
   __isset = other2.__isset;
   return *this;
 }
@@ -356,6 +377,7 @@ void InputDataObjectType::printTo(std::ostream& out) const {
   out << ", " << "isRequired="; (__isset.isRequired ? (out << to_string(isRequired)) : (out << "<null>"));
   out << ", " << "requiredToAddedToCommandLine="; (__isset.requiredToAddedToCommandLine ? (out << to_string(requiredToAddedToCommandLine)) : (out << "<null>"));
   out << ", " << "dataStaged="; (__isset.dataStaged ? (out << to_string(dataStaged)) : (out << "<null>"));
+  out << ", " << "storageResourceId="; (__isset.storageResourceId ? (out << to_string(storageResourceId)) : (out << "<null>"));
   out << ")";
 }
 
@@ -413,6 +435,11 @@ void OutputDataObjectType::__set_outputStreaming(const bool val) {
 __isset.outputStreaming = true;
 }
 
+void OutputDataObjectType::__set_storageResourceId(const std::string& val) {
+  this->storageResourceId = val;
+__isset.storageResourceId = true;
+}
+
 uint32_t OutputDataObjectType::read(::apache::thrift::protocol::TProtocol* iprot) {
 
   apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
@@ -517,6 +544,14 @@ uint32_t OutputDataObjectType::read(::apache::thrift::protocol::TProtocol* iprot
           xfer += iprot->skip(ftype);
         }
         break;
+      case 11:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->storageResourceId);
+          this->__isset.storageResourceId = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
       default:
         xfer += iprot->skip(ftype);
         break;
@@ -585,6 +620,11 @@ uint32_t OutputDataObjectType::write(::apache::thrift::protocol::TProtocol* opro
     xfer += oprot->writeBool(this->outputStreaming);
     xfer += oprot->writeFieldEnd();
   }
+  if (this->__isset.storageResourceId) {
+    xfer += oprot->writeFieldBegin("storageResourceId", ::apache::thrift::protocol::T_STRING, 11);
+    xfer += oprot->writeString(this->storageResourceId);
+    xfer += oprot->writeFieldEnd();
+  }
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
   return xfer;
@@ -602,6 +642,7 @@ void swap(OutputDataObjectType &a, OutputDataObjectType &b) {
   swap(a.location, b.location);
   swap(a.searchQuery, b.searchQuery);
   swap(a.outputStreaming, b.outputStreaming);
+  swap(a.storageResourceId, b.storageResourceId);
   swap(a.__isset, b.__isset);
 }
 
@@ -616,6 +657,7 @@ OutputDataObjectType::OutputDataObjectType(const OutputDataObjectType& other4) {
   location = other4.location;
   searchQuery = other4.searchQuery;
   outputStreaming = other4.outputStreaming;
+  storageResourceId = other4.storageResourceId;
   __isset = other4.__isset;
 }
 OutputDataObjectType& OutputDataObjectType::operator=(const OutputDataObjectType& other5) {
@@ -629,6 +671,7 @@ OutputDataObjectType& OutputDataObjectType::operator=(const OutputDataObjectType
   location = other5.location;
   searchQuery = other5.searchQuery;
   outputStreaming = other5.outputStreaming;
+  storageResourceId = other5.storageResourceId;
   __isset = other5.__isset;
   return *this;
 }
@@ -645,6 +688,7 @@ void OutputDataObjectType::printTo(std::ostream& out) const {
   out << ", " << "location="; (__isset.location ? (out << to_string(location)) : (out << "<null>"));
   out << ", " << "searchQuery="; (__isset.searchQuery ? (out << to_string(searchQuery)) : (out << "<null>"));
   out << ", " << "outputStreaming="; (__isset.outputStreaming ? (out << to_string(outputStreaming)) : (out << "<null>"));
+  out << ", " << "storageResourceId="; (__isset.storageResourceId ? (out << to_string(storageResourceId)) : (out << "<null>"));
   out << ")";
 }
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/24531956/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/application_io_models_types.h
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/application_io_models_types.h b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/application_io_models_types.h
index 6180c2c..5a52589 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/application_io_models_types.h
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/application_io_models_types.h
@@ -55,7 +55,7 @@ class InputDataObjectType;
 class OutputDataObjectType;
 
 typedef struct _InputDataObjectType__isset {
-  _InputDataObjectType__isset() : value(false), type(false), applicationArgument(false), standardInput(false), userFriendlyDescription(false), metaData(false), inputOrder(false), isRequired(false), requiredToAddedToCommandLine(false), dataStaged(false) {}
+  _InputDataObjectType__isset() : value(false), type(false), applicationArgument(false), standardInput(false), userFriendlyDescription(false), metaData(false), inputOrder(false), isRequired(false), requiredToAddedToCommandLine(false), dataStaged(false), storageResourceId(false) {}
   bool value :1;
   bool type :1;
   bool applicationArgument :1;
@@ -66,6 +66,7 @@ typedef struct _InputDataObjectType__isset {
   bool isRequired :1;
   bool requiredToAddedToCommandLine :1;
   bool dataStaged :1;
+  bool storageResourceId :1;
 } _InputDataObjectType__isset;
 
 class InputDataObjectType {
@@ -73,7 +74,7 @@ class InputDataObjectType {
 
   InputDataObjectType(const InputDataObjectType&);
   InputDataObjectType& operator=(const InputDataObjectType&);
-  InputDataObjectType() : name(), value(), type((DataType::type)0), applicationArgument(), standardInput(0), userFriendlyDescription(), metaData(), inputOrder(0), isRequired(0), requiredToAddedToCommandLine(0), dataStaged(0) {
+  InputDataObjectType() : name(), value(), type((DataType::type)0), applicationArgument(), standardInput(0), userFriendlyDescription(), metaData(), inputOrder(0), isRequired(0), requiredToAddedToCommandLine(0), dataStaged(0), storageResourceId() {
   }
 
   virtual ~InputDataObjectType() throw();
@@ -88,6 +89,7 @@ class InputDataObjectType {
   bool isRequired;
   bool requiredToAddedToCommandLine;
   bool dataStaged;
+  std::string storageResourceId;
 
   _InputDataObjectType__isset __isset;
 
@@ -113,6 +115,8 @@ class InputDataObjectType {
 
   void __set_dataStaged(const bool val);
 
+  void __set_storageResourceId(const std::string& val);
+
   bool operator == (const InputDataObjectType & rhs) const
   {
     if (!(name == rhs.name))
@@ -157,6 +161,10 @@ class InputDataObjectType {
       return false;
     else if (__isset.dataStaged && !(dataStaged == rhs.dataStaged))
       return false;
+    if (__isset.storageResourceId != rhs.__isset.storageResourceId)
+      return false;
+    else if (__isset.storageResourceId && !(storageResourceId == rhs.storageResourceId))
+      return false;
     return true;
   }
   bool operator != (const InputDataObjectType &rhs) const {
@@ -180,7 +188,7 @@ inline std::ostream& operator<<(std::ostream& out, const InputDataObjectType& ob
 }
 
 typedef struct _OutputDataObjectType__isset {
-  _OutputDataObjectType__isset() : value(false), type(false), applicationArgument(false), isRequired(false), requiredToAddedToCommandLine(false), dataMovement(false), location(false), searchQuery(false), outputStreaming(false) {}
+  _OutputDataObjectType__isset() : value(false), type(false), applicationArgument(false), isRequired(false), requiredToAddedToCommandLine(false), dataMovement(false), location(false), searchQuery(false), outputStreaming(false), storageResourceId(false) {}
   bool value :1;
   bool type :1;
   bool applicationArgument :1;
@@ -190,6 +198,7 @@ typedef struct _OutputDataObjectType__isset {
   bool location :1;
   bool searchQuery :1;
   bool outputStreaming :1;
+  bool storageResourceId :1;
 } _OutputDataObjectType__isset;
 
 class OutputDataObjectType {
@@ -197,7 +206,7 @@ class OutputDataObjectType {
 
   OutputDataObjectType(const OutputDataObjectType&);
   OutputDataObjectType& operator=(const OutputDataObjectType&);
-  OutputDataObjectType() : name(), value(), type((DataType::type)0), applicationArgument(), isRequired(0), requiredToAddedToCommandLine(0), dataMovement(0), location(), searchQuery(), outputStreaming(0) {
+  OutputDataObjectType() : name(), value(), type((DataType::type)0), applicationArgument(), isRequired(0), requiredToAddedToCommandLine(0), dataMovement(0), location(), searchQuery(), outputStreaming(0), storageResourceId() {
   }
 
   virtual ~OutputDataObjectType() throw();
@@ -211,6 +220,7 @@ class OutputDataObjectType {
   std::string location;
   std::string searchQuery;
   bool outputStreaming;
+  std::string storageResourceId;
 
   _OutputDataObjectType__isset __isset;
 
@@ -234,6 +244,8 @@ class OutputDataObjectType {
 
   void __set_outputStreaming(const bool val);
 
+  void __set_storageResourceId(const std::string& val);
+
   bool operator == (const OutputDataObjectType & rhs) const
   {
     if (!(name == rhs.name))
@@ -274,6 +286,10 @@ class OutputDataObjectType {
       return false;
     else if (__isset.outputStreaming && !(outputStreaming == rhs.outputStreaming))
       return false;
+    if (__isset.storageResourceId != rhs.__isset.storageResourceId)
+      return false;
+    else if (__isset.storageResourceId && !(storageResourceId == rhs.storageResourceId))
+      return false;
     return true;
   }
   bool operator != (const OutputDataObjectType &rhs) const {

http://git-wip-us.apache.org/repos/asf/airavata/blob/24531956/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Application/Io/Types.php
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Application/Io/Types.php b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Application/Io/Types.php
index cc208a6..b2890c1 100644
--- a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Application/Io/Types.php
+++ b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Application/Io/Types.php
@@ -111,6 +111,10 @@ class InputDataObjectType {
    * @var bool
    */
   public $dataStaged = null;
+  /**
+   * @var string
+   */
+  public $storageResourceId = null;
 
   public function __construct($vals=null) {
     if (!isset(self::$_TSPEC)) {
@@ -159,6 +163,10 @@ class InputDataObjectType {
           'var' => 'dataStaged',
           'type' => TType::BOOL,
           ),
+        12 => array(
+          'var' => 'storageResourceId',
+          'type' => TType::STRING,
+          ),
         );
     }
     if (is_array($vals)) {
@@ -195,6 +203,9 @@ class InputDataObjectType {
       if (isset($vals['dataStaged'])) {
         $this->dataStaged = $vals['dataStaged'];
       }
+      if (isset($vals['storageResourceId'])) {
+        $this->storageResourceId = $vals['storageResourceId'];
+      }
     }
   }
 
@@ -294,6 +305,13 @@ class InputDataObjectType {
             $xfer += $input->skip($ftype);
           }
           break;
+        case 12:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->storageResourceId);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
         default:
           $xfer += $input->skip($ftype);
           break;
@@ -362,6 +380,11 @@ class InputDataObjectType {
       $xfer += $output->writeBool($this->dataStaged);
       $xfer += $output->writeFieldEnd();
     }
+    if ($this->storageResourceId !== null) {
+      $xfer += $output->writeFieldBegin('storageResourceId', TType::STRING, 12);
+      $xfer += $output->writeString($this->storageResourceId);
+      $xfer += $output->writeFieldEnd();
+    }
     $xfer += $output->writeFieldStop();
     $xfer += $output->writeStructEnd();
     return $xfer;
@@ -438,6 +461,10 @@ class OutputDataObjectType {
    * @var bool
    */
   public $outputStreaming = null;
+  /**
+   * @var string
+   */
+  public $storageResourceId = null;
 
   public function __construct($vals=null) {
     if (!isset(self::$_TSPEC)) {
@@ -482,6 +509,10 @@ class OutputDataObjectType {
           'var' => 'outputStreaming',
           'type' => TType::BOOL,
           ),
+        11 => array(
+          'var' => 'storageResourceId',
+          'type' => TType::STRING,
+          ),
         );
     }
     if (is_array($vals)) {
@@ -515,6 +546,9 @@ class OutputDataObjectType {
       if (isset($vals['outputStreaming'])) {
         $this->outputStreaming = $vals['outputStreaming'];
       }
+      if (isset($vals['storageResourceId'])) {
+        $this->storageResourceId = $vals['storageResourceId'];
+      }
     }
   }
 
@@ -607,6 +641,13 @@ class OutputDataObjectType {
             $xfer += $input->skip($ftype);
           }
           break;
+        case 11:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->storageResourceId);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
         default:
           $xfer += $input->skip($ftype);
           break;
@@ -670,6 +711,11 @@ class OutputDataObjectType {
       $xfer += $output->writeBool($this->outputStreaming);
       $xfer += $output->writeFieldEnd();
     }
+    if ($this->storageResourceId !== null) {
+      $xfer += $output->writeFieldBegin('storageResourceId', TType::STRING, 11);
+      $xfer += $output->writeString($this->storageResourceId);
+      $xfer += $output->writeFieldEnd();
+    }
     $xfer += $output->writeFieldStop();
     $xfer += $output->writeStructEnd();
     return $xfer;

http://git-wip-us.apache.org/repos/asf/airavata/blob/24531956/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/application/io/ttypes.py
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/application/io/ttypes.py b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/application/io/ttypes.py
index 1ce06c8..9a2cedf 100644
--- a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/application/io/ttypes.py
+++ b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/application/io/ttypes.py
@@ -88,6 +88,7 @@ class InputDataObjectType:
    - isRequired
    - requiredToAddedToCommandLine
    - dataStaged
+   - storageResourceId
   """
 
   thrift_spec = (
@@ -103,9 +104,10 @@ class InputDataObjectType:
     (9, TType.BOOL, 'isRequired', None, None, ), # 9
     (10, TType.BOOL, 'requiredToAddedToCommandLine', None, None, ), # 10
     (11, TType.BOOL, 'dataStaged', None, None, ), # 11
+    (12, TType.STRING, 'storageResourceId', None, None, ), # 12
   )
 
-  def __init__(self, name=None, value=None, type=None, applicationArgument=None, standardInput=None, userFriendlyDescription=None, metaData=None, inputOrder=None, isRequired=None, requiredToAddedToCommandLine=None, dataStaged=None,):
+  def __init__(self, name=None, value=None, type=None, applicationArgument=None, standardInput=None, userFriendlyDescription=None, metaData=None, inputOrder=None, isRequired=None, requiredToAddedToCommandLine=None, dataStaged=None, storageResourceId=None,):
     self.name = name
     self.value = value
     self.type = type
@@ -117,6 +119,7 @@ class InputDataObjectType:
     self.isRequired = isRequired
     self.requiredToAddedToCommandLine = requiredToAddedToCommandLine
     self.dataStaged = dataStaged
+    self.storageResourceId = storageResourceId
 
   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:
@@ -182,6 +185,11 @@ class InputDataObjectType:
           self.dataStaged = iprot.readBool()
         else:
           iprot.skip(ftype)
+      elif fid == 12:
+        if ftype == TType.STRING:
+          self.storageResourceId = iprot.readString()
+        else:
+          iprot.skip(ftype)
       else:
         iprot.skip(ftype)
       iprot.readFieldEnd()
@@ -236,6 +244,10 @@ class InputDataObjectType:
       oprot.writeFieldBegin('dataStaged', TType.BOOL, 11)
       oprot.writeBool(self.dataStaged)
       oprot.writeFieldEnd()
+    if self.storageResourceId is not None:
+      oprot.writeFieldBegin('storageResourceId', TType.STRING, 12)
+      oprot.writeString(self.storageResourceId)
+      oprot.writeFieldEnd()
     oprot.writeFieldStop()
     oprot.writeStructEnd()
 
@@ -258,6 +270,7 @@ class InputDataObjectType:
     value = (value * 31) ^ hash(self.isRequired)
     value = (value * 31) ^ hash(self.requiredToAddedToCommandLine)
     value = (value * 31) ^ hash(self.dataStaged)
+    value = (value * 31) ^ hash(self.storageResourceId)
     return value
 
   def __repr__(self):
@@ -309,6 +322,7 @@ class OutputDataObjectType:
    - location
    - searchQuery
    - outputStreaming
+   - storageResourceId
   """
 
   thrift_spec = (
@@ -323,9 +337,10 @@ class OutputDataObjectType:
     (8, TType.STRING, 'location', None, None, ), # 8
     (9, TType.STRING, 'searchQuery', None, None, ), # 9
     (10, TType.BOOL, 'outputStreaming', None, None, ), # 10
+    (11, TType.STRING, 'storageResourceId', None, None, ), # 11
   )
 
-  def __init__(self, name=None, value=None, type=None, applicationArgument=None, isRequired=None, requiredToAddedToCommandLine=None, dataMovement=None, location=None, searchQuery=None, outputStreaming=None,):
+  def __init__(self, name=None, value=None, type=None, applicationArgument=None, isRequired=None, requiredToAddedToCommandLine=None, dataMovement=None, location=None, searchQuery=None, outputStreaming=None, storageResourceId=None,):
     self.name = name
     self.value = value
     self.type = type
@@ -336,6 +351,7 @@ class OutputDataObjectType:
     self.location = location
     self.searchQuery = searchQuery
     self.outputStreaming = outputStreaming
+    self.storageResourceId = storageResourceId
 
   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:
@@ -396,6 +412,11 @@ class OutputDataObjectType:
           self.outputStreaming = iprot.readBool()
         else:
           iprot.skip(ftype)
+      elif fid == 11:
+        if ftype == TType.STRING:
+          self.storageResourceId = iprot.readString()
+        else:
+          iprot.skip(ftype)
       else:
         iprot.skip(ftype)
       iprot.readFieldEnd()
@@ -446,6 +467,10 @@ class OutputDataObjectType:
       oprot.writeFieldBegin('outputStreaming', TType.BOOL, 10)
       oprot.writeBool(self.outputStreaming)
       oprot.writeFieldEnd()
+    if self.storageResourceId is not None:
+      oprot.writeFieldBegin('storageResourceId', TType.STRING, 11)
+      oprot.writeString(self.storageResourceId)
+      oprot.writeFieldEnd()
     oprot.writeFieldStop()
     oprot.writeStructEnd()
 
@@ -467,6 +492,7 @@ class OutputDataObjectType:
     value = (value * 31) ^ hash(self.location)
     value = (value * 31) ^ hash(self.searchQuery)
     value = (value * 31) ^ hash(self.outputStreaming)
+    value = (value * 31) ^ hash(self.storageResourceId)
     return value
 
   def __repr__(self):

http://git-wip-us.apache.org/repos/asf/airavata/blob/24531956/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/application/io/InputDataObjectType.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/application/io/InputDataObjectType.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/application/io/InputDataObjectType.java
index e464551..3cf7d8a 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/application/io/InputDataObjectType.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/application/io/InputDataObjectType.java
@@ -92,6 +92,7 @@ public class InputDataObjectType implements org.apache.thrift.TBase<InputDataObj
   private static final org.apache.thrift.protocol.TField IS_REQUIRED_FIELD_DESC = new org.apache.thrift.protocol.TField("isRequired", org.apache.thrift.protocol.TType.BOOL, (short)9);
   private static final org.apache.thrift.protocol.TField REQUIRED_TO_ADDED_TO_COMMAND_LINE_FIELD_DESC = new org.apache.thrift.protocol.TField("requiredToAddedToCommandLine", org.apache.thrift.protocol.TType.BOOL, (short)10);
   private static final org.apache.thrift.protocol.TField DATA_STAGED_FIELD_DESC = new org.apache.thrift.protocol.TField("dataStaged", org.apache.thrift.protocol.TType.BOOL, (short)11);
+  private static final org.apache.thrift.protocol.TField STORAGE_RESOURCE_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("storageResourceId", org.apache.thrift.protocol.TType.STRING, (short)12);
 
   private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
   static {
@@ -110,6 +111,7 @@ public class InputDataObjectType implements org.apache.thrift.TBase<InputDataObj
   private boolean isRequired; // optional
   private boolean requiredToAddedToCommandLine; // optional
   private boolean dataStaged; // optional
+  private String storageResourceId; // 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 {
@@ -127,7 +129,8 @@ public class InputDataObjectType implements org.apache.thrift.TBase<InputDataObj
     INPUT_ORDER((short)8, "inputOrder"),
     IS_REQUIRED((short)9, "isRequired"),
     REQUIRED_TO_ADDED_TO_COMMAND_LINE((short)10, "requiredToAddedToCommandLine"),
-    DATA_STAGED((short)11, "dataStaged");
+    DATA_STAGED((short)11, "dataStaged"),
+    STORAGE_RESOURCE_ID((short)12, "storageResourceId");
 
     private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
 
@@ -164,6 +167,8 @@ public class InputDataObjectType implements org.apache.thrift.TBase<InputDataObj
           return REQUIRED_TO_ADDED_TO_COMMAND_LINE;
         case 11: // DATA_STAGED
           return DATA_STAGED;
+        case 12: // STORAGE_RESOURCE_ID
+          return STORAGE_RESOURCE_ID;
         default:
           return null;
       }
@@ -210,7 +215,7 @@ public class InputDataObjectType implements org.apache.thrift.TBase<InputDataObj
   private static final int __REQUIREDTOADDEDTOCOMMANDLINE_ISSET_ID = 3;
   private static final int __DATASTAGED_ISSET_ID = 4;
   private byte __isset_bitfield = 0;
-  private static final _Fields optionals[] = {_Fields.VALUE,_Fields.TYPE,_Fields.APPLICATION_ARGUMENT,_Fields.STANDARD_INPUT,_Fields.USER_FRIENDLY_DESCRIPTION,_Fields.META_DATA,_Fields.INPUT_ORDER,_Fields.IS_REQUIRED,_Fields.REQUIRED_TO_ADDED_TO_COMMAND_LINE,_Fields.DATA_STAGED};
+  private static final _Fields optionals[] = {_Fields.VALUE,_Fields.TYPE,_Fields.APPLICATION_ARGUMENT,_Fields.STANDARD_INPUT,_Fields.USER_FRIENDLY_DESCRIPTION,_Fields.META_DATA,_Fields.INPUT_ORDER,_Fields.IS_REQUIRED,_Fields.REQUIRED_TO_ADDED_TO_COMMAND_LINE,_Fields.DATA_STAGED,_Fields.STORAGE_RESOURCE_ID};
   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);
@@ -236,6 +241,8 @@ public class InputDataObjectType implements org.apache.thrift.TBase<InputDataObj
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.BOOL)));
     tmpMap.put(_Fields.DATA_STAGED, new org.apache.thrift.meta_data.FieldMetaData("dataStaged", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.BOOL)));
+    tmpMap.put(_Fields.STORAGE_RESOURCE_ID, new org.apache.thrift.meta_data.FieldMetaData("storageResourceId", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
     metaDataMap = Collections.unmodifiableMap(tmpMap);
     org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(InputDataObjectType.class, metaDataMap);
   }
@@ -278,6 +285,9 @@ public class InputDataObjectType implements org.apache.thrift.TBase<InputDataObj
     this.isRequired = other.isRequired;
     this.requiredToAddedToCommandLine = other.requiredToAddedToCommandLine;
     this.dataStaged = other.dataStaged;
+    if (other.isSetStorageResourceId()) {
+      this.storageResourceId = other.storageResourceId;
+    }
   }
 
   public InputDataObjectType deepCopy() {
@@ -302,6 +312,7 @@ public class InputDataObjectType implements org.apache.thrift.TBase<InputDataObj
     this.requiredToAddedToCommandLine = false;
     setDataStagedIsSet(false);
     this.dataStaged = false;
+    this.storageResourceId = null;
   }
 
   public String getName() {
@@ -560,6 +571,29 @@ public class InputDataObjectType implements org.apache.thrift.TBase<InputDataObj
     __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __DATASTAGED_ISSET_ID, value);
   }
 
+  public String getStorageResourceId() {
+    return this.storageResourceId;
+  }
+
+  public void setStorageResourceId(String storageResourceId) {
+    this.storageResourceId = storageResourceId;
+  }
+
+  public void unsetStorageResourceId() {
+    this.storageResourceId = null;
+  }
+
+  /** Returns true if field storageResourceId is set (has been assigned a value) and false otherwise */
+  public boolean isSetStorageResourceId() {
+    return this.storageResourceId != null;
+  }
+
+  public void setStorageResourceIdIsSet(boolean value) {
+    if (!value) {
+      this.storageResourceId = null;
+    }
+  }
+
   public void setFieldValue(_Fields field, Object value) {
     switch (field) {
     case NAME:
@@ -650,6 +684,14 @@ public class InputDataObjectType implements org.apache.thrift.TBase<InputDataObj
       }
       break;
 
+    case STORAGE_RESOURCE_ID:
+      if (value == null) {
+        unsetStorageResourceId();
+      } else {
+        setStorageResourceId((String)value);
+      }
+      break;
+
     }
   }
 
@@ -688,6 +730,9 @@ public class InputDataObjectType implements org.apache.thrift.TBase<InputDataObj
     case DATA_STAGED:
       return isDataStaged();
 
+    case STORAGE_RESOURCE_ID:
+      return getStorageResourceId();
+
     }
     throw new IllegalStateException();
   }
@@ -721,6 +766,8 @@ public class InputDataObjectType implements org.apache.thrift.TBase<InputDataObj
       return isSetRequiredToAddedToCommandLine();
     case DATA_STAGED:
       return isSetDataStaged();
+    case STORAGE_RESOURCE_ID:
+      return isSetStorageResourceId();
     }
     throw new IllegalStateException();
   }
@@ -837,6 +884,15 @@ public class InputDataObjectType implements org.apache.thrift.TBase<InputDataObj
         return false;
     }
 
+    boolean this_present_storageResourceId = true && this.isSetStorageResourceId();
+    boolean that_present_storageResourceId = true && that.isSetStorageResourceId();
+    if (this_present_storageResourceId || that_present_storageResourceId) {
+      if (!(this_present_storageResourceId && that_present_storageResourceId))
+        return false;
+      if (!this.storageResourceId.equals(that.storageResourceId))
+        return false;
+    }
+
     return true;
   }
 
@@ -899,6 +955,11 @@ public class InputDataObjectType implements org.apache.thrift.TBase<InputDataObj
     if (present_dataStaged)
       list.add(dataStaged);
 
+    boolean present_storageResourceId = true && (isSetStorageResourceId());
+    list.add(present_storageResourceId);
+    if (present_storageResourceId)
+      list.add(storageResourceId);
+
     return list.hashCode();
   }
 
@@ -1020,6 +1081,16 @@ public class InputDataObjectType implements org.apache.thrift.TBase<InputDataObj
         return lastComparison;
       }
     }
+    lastComparison = Boolean.valueOf(isSetStorageResourceId()).compareTo(other.isSetStorageResourceId());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetStorageResourceId()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.storageResourceId, other.storageResourceId);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
     return 0;
   }
 
@@ -1127,6 +1198,16 @@ public class InputDataObjectType implements org.apache.thrift.TBase<InputDataObj
       sb.append(this.dataStaged);
       first = false;
     }
+    if (isSetStorageResourceId()) {
+      if (!first) sb.append(", ");
+      sb.append("storageResourceId:");
+      if (this.storageResourceId == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.storageResourceId);
+      }
+      first = false;
+    }
     sb.append(")");
     return sb.toString();
   }
@@ -1264,6 +1345,14 @@ public class InputDataObjectType implements org.apache.thrift.TBase<InputDataObj
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
+          case 12: // STORAGE_RESOURCE_ID
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.storageResourceId = iprot.readString();
+              struct.setStorageResourceIdIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
           default:
             org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
         }
@@ -1342,6 +1431,13 @@ public class InputDataObjectType implements org.apache.thrift.TBase<InputDataObj
         oprot.writeBool(struct.dataStaged);
         oprot.writeFieldEnd();
       }
+      if (struct.storageResourceId != null) {
+        if (struct.isSetStorageResourceId()) {
+          oprot.writeFieldBegin(STORAGE_RESOURCE_ID_FIELD_DESC);
+          oprot.writeString(struct.storageResourceId);
+          oprot.writeFieldEnd();
+        }
+      }
       oprot.writeFieldStop();
       oprot.writeStructEnd();
     }
@@ -1391,7 +1487,10 @@ public class InputDataObjectType implements org.apache.thrift.TBase<InputDataObj
       if (struct.isSetDataStaged()) {
         optionals.set(9);
       }
-      oprot.writeBitSet(optionals, 10);
+      if (struct.isSetStorageResourceId()) {
+        optionals.set(10);
+      }
+      oprot.writeBitSet(optionals, 11);
       if (struct.isSetValue()) {
         oprot.writeString(struct.value);
       }
@@ -1422,6 +1521,9 @@ public class InputDataObjectType implements org.apache.thrift.TBase<InputDataObj
       if (struct.isSetDataStaged()) {
         oprot.writeBool(struct.dataStaged);
       }
+      if (struct.isSetStorageResourceId()) {
+        oprot.writeString(struct.storageResourceId);
+      }
     }
 
     @Override
@@ -1429,7 +1531,7 @@ public class InputDataObjectType implements org.apache.thrift.TBase<InputDataObj
       TTupleProtocol iprot = (TTupleProtocol) prot;
       struct.name = iprot.readString();
       struct.setNameIsSet(true);
-      BitSet incoming = iprot.readBitSet(10);
+      BitSet incoming = iprot.readBitSet(11);
       if (incoming.get(0)) {
         struct.value = iprot.readString();
         struct.setValueIsSet(true);
@@ -1470,6 +1572,10 @@ public class InputDataObjectType implements org.apache.thrift.TBase<InputDataObj
         struct.dataStaged = iprot.readBool();
         struct.setDataStagedIsSet(true);
       }
+      if (incoming.get(10)) {
+        struct.storageResourceId = iprot.readString();
+        struct.setStorageResourceIdIsSet(true);
+      }
     }
   }
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/24531956/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/application/io/OutputDataObjectType.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/application/io/OutputDataObjectType.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/application/io/OutputDataObjectType.java
index 8128001..7cd3ed7 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/application/io/OutputDataObjectType.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/application/io/OutputDataObjectType.java
@@ -91,6 +91,7 @@ public class OutputDataObjectType implements org.apache.thrift.TBase<OutputDataO
   private static final org.apache.thrift.protocol.TField LOCATION_FIELD_DESC = new org.apache.thrift.protocol.TField("location", org.apache.thrift.protocol.TType.STRING, (short)8);
   private static final org.apache.thrift.protocol.TField SEARCH_QUERY_FIELD_DESC = new org.apache.thrift.protocol.TField("searchQuery", org.apache.thrift.protocol.TType.STRING, (short)9);
   private static final org.apache.thrift.protocol.TField OUTPUT_STREAMING_FIELD_DESC = new org.apache.thrift.protocol.TField("outputStreaming", org.apache.thrift.protocol.TType.BOOL, (short)10);
+  private static final org.apache.thrift.protocol.TField STORAGE_RESOURCE_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("storageResourceId", org.apache.thrift.protocol.TType.STRING, (short)11);
 
   private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
   static {
@@ -108,6 +109,7 @@ public class OutputDataObjectType implements org.apache.thrift.TBase<OutputDataO
   private String location; // optional
   private String searchQuery; // optional
   private boolean outputStreaming; // optional
+  private String storageResourceId; // 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 {
@@ -124,7 +126,8 @@ public class OutputDataObjectType implements org.apache.thrift.TBase<OutputDataO
     DATA_MOVEMENT((short)7, "dataMovement"),
     LOCATION((short)8, "location"),
     SEARCH_QUERY((short)9, "searchQuery"),
-    OUTPUT_STREAMING((short)10, "outputStreaming");
+    OUTPUT_STREAMING((short)10, "outputStreaming"),
+    STORAGE_RESOURCE_ID((short)11, "storageResourceId");
 
     private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
 
@@ -159,6 +162,8 @@ public class OutputDataObjectType implements org.apache.thrift.TBase<OutputDataO
           return SEARCH_QUERY;
         case 10: // OUTPUT_STREAMING
           return OUTPUT_STREAMING;
+        case 11: // STORAGE_RESOURCE_ID
+          return STORAGE_RESOURCE_ID;
         default:
           return null;
       }
@@ -204,7 +209,7 @@ public class OutputDataObjectType implements org.apache.thrift.TBase<OutputDataO
   private static final int __DATAMOVEMENT_ISSET_ID = 2;
   private static final int __OUTPUTSTREAMING_ISSET_ID = 3;
   private byte __isset_bitfield = 0;
-  private static final _Fields optionals[] = {_Fields.VALUE,_Fields.TYPE,_Fields.APPLICATION_ARGUMENT,_Fields.IS_REQUIRED,_Fields.REQUIRED_TO_ADDED_TO_COMMAND_LINE,_Fields.DATA_MOVEMENT,_Fields.LOCATION,_Fields.SEARCH_QUERY,_Fields.OUTPUT_STREAMING};
+  private static final _Fields optionals[] = {_Fields.VALUE,_Fields.TYPE,_Fields.APPLICATION_ARGUMENT,_Fields.IS_REQUIRED,_Fields.REQUIRED_TO_ADDED_TO_COMMAND_LINE,_Fields.DATA_MOVEMENT,_Fields.LOCATION,_Fields.SEARCH_QUERY,_Fields.OUTPUT_STREAMING,_Fields.STORAGE_RESOURCE_ID};
   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);
@@ -228,6 +233,8 @@ public class OutputDataObjectType implements org.apache.thrift.TBase<OutputDataO
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
     tmpMap.put(_Fields.OUTPUT_STREAMING, new org.apache.thrift.meta_data.FieldMetaData("outputStreaming", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.BOOL)));
+    tmpMap.put(_Fields.STORAGE_RESOURCE_ID, new org.apache.thrift.meta_data.FieldMetaData("storageResourceId", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
     metaDataMap = Collections.unmodifiableMap(tmpMap);
     org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(OutputDataObjectType.class, metaDataMap);
   }
@@ -269,6 +276,9 @@ public class OutputDataObjectType implements org.apache.thrift.TBase<OutputDataO
       this.searchQuery = other.searchQuery;
     }
     this.outputStreaming = other.outputStreaming;
+    if (other.isSetStorageResourceId()) {
+      this.storageResourceId = other.storageResourceId;
+    }
   }
 
   public OutputDataObjectType deepCopy() {
@@ -291,6 +301,7 @@ public class OutputDataObjectType implements org.apache.thrift.TBase<OutputDataO
     this.searchQuery = null;
     setOutputStreamingIsSet(false);
     this.outputStreaming = false;
+    this.storageResourceId = null;
   }
 
   public String getName() {
@@ -527,6 +538,29 @@ public class OutputDataObjectType implements org.apache.thrift.TBase<OutputDataO
     __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __OUTPUTSTREAMING_ISSET_ID, value);
   }
 
+  public String getStorageResourceId() {
+    return this.storageResourceId;
+  }
+
+  public void setStorageResourceId(String storageResourceId) {
+    this.storageResourceId = storageResourceId;
+  }
+
+  public void unsetStorageResourceId() {
+    this.storageResourceId = null;
+  }
+
+  /** Returns true if field storageResourceId is set (has been assigned a value) and false otherwise */
+  public boolean isSetStorageResourceId() {
+    return this.storageResourceId != null;
+  }
+
+  public void setStorageResourceIdIsSet(boolean value) {
+    if (!value) {
+      this.storageResourceId = null;
+    }
+  }
+
   public void setFieldValue(_Fields field, Object value) {
     switch (field) {
     case NAME:
@@ -609,6 +643,14 @@ public class OutputDataObjectType implements org.apache.thrift.TBase<OutputDataO
       }
       break;
 
+    case STORAGE_RESOURCE_ID:
+      if (value == null) {
+        unsetStorageResourceId();
+      } else {
+        setStorageResourceId((String)value);
+      }
+      break;
+
     }
   }
 
@@ -644,6 +686,9 @@ public class OutputDataObjectType implements org.apache.thrift.TBase<OutputDataO
     case OUTPUT_STREAMING:
       return isOutputStreaming();
 
+    case STORAGE_RESOURCE_ID:
+      return getStorageResourceId();
+
     }
     throw new IllegalStateException();
   }
@@ -675,6 +720,8 @@ public class OutputDataObjectType implements org.apache.thrift.TBase<OutputDataO
       return isSetSearchQuery();
     case OUTPUT_STREAMING:
       return isSetOutputStreaming();
+    case STORAGE_RESOURCE_ID:
+      return isSetStorageResourceId();
     }
     throw new IllegalStateException();
   }
@@ -782,6 +829,15 @@ public class OutputDataObjectType implements org.apache.thrift.TBase<OutputDataO
         return false;
     }
 
+    boolean this_present_storageResourceId = true && this.isSetStorageResourceId();
+    boolean that_present_storageResourceId = true && that.isSetStorageResourceId();
+    if (this_present_storageResourceId || that_present_storageResourceId) {
+      if (!(this_present_storageResourceId && that_present_storageResourceId))
+        return false;
+      if (!this.storageResourceId.equals(that.storageResourceId))
+        return false;
+    }
+
     return true;
   }
 
@@ -839,6 +895,11 @@ public class OutputDataObjectType implements org.apache.thrift.TBase<OutputDataO
     if (present_outputStreaming)
       list.add(outputStreaming);
 
+    boolean present_storageResourceId = true && (isSetStorageResourceId());
+    list.add(present_storageResourceId);
+    if (present_storageResourceId)
+      list.add(storageResourceId);
+
     return list.hashCode();
   }
 
@@ -950,6 +1011,16 @@ public class OutputDataObjectType implements org.apache.thrift.TBase<OutputDataO
         return lastComparison;
       }
     }
+    lastComparison = Boolean.valueOf(isSetStorageResourceId()).compareTo(other.isSetStorageResourceId());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetStorageResourceId()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.storageResourceId, other.storageResourceId);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
     return 0;
   }
 
@@ -1051,6 +1122,16 @@ public class OutputDataObjectType implements org.apache.thrift.TBase<OutputDataO
       sb.append(this.outputStreaming);
       first = false;
     }
+    if (isSetStorageResourceId()) {
+      if (!first) sb.append(", ");
+      sb.append("storageResourceId:");
+      if (this.storageResourceId == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.storageResourceId);
+      }
+      first = false;
+    }
     sb.append(")");
     return sb.toString();
   }
@@ -1180,6 +1261,14 @@ public class OutputDataObjectType implements org.apache.thrift.TBase<OutputDataO
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
+          case 11: // STORAGE_RESOURCE_ID
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.storageResourceId = iprot.readString();
+              struct.setStorageResourceIdIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
           default:
             org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
         }
@@ -1253,6 +1342,13 @@ public class OutputDataObjectType implements org.apache.thrift.TBase<OutputDataO
         oprot.writeBool(struct.outputStreaming);
         oprot.writeFieldEnd();
       }
+      if (struct.storageResourceId != null) {
+        if (struct.isSetStorageResourceId()) {
+          oprot.writeFieldBegin(STORAGE_RESOURCE_ID_FIELD_DESC);
+          oprot.writeString(struct.storageResourceId);
+          oprot.writeFieldEnd();
+        }
+      }
       oprot.writeFieldStop();
       oprot.writeStructEnd();
     }
@@ -1299,7 +1395,10 @@ public class OutputDataObjectType implements org.apache.thrift.TBase<OutputDataO
       if (struct.isSetOutputStreaming()) {
         optionals.set(8);
       }
-      oprot.writeBitSet(optionals, 9);
+      if (struct.isSetStorageResourceId()) {
+        optionals.set(9);
+      }
+      oprot.writeBitSet(optionals, 10);
       if (struct.isSetValue()) {
         oprot.writeString(struct.value);
       }
@@ -1327,6 +1426,9 @@ public class OutputDataObjectType implements org.apache.thrift.TBase<OutputDataO
       if (struct.isSetOutputStreaming()) {
         oprot.writeBool(struct.outputStreaming);
       }
+      if (struct.isSetStorageResourceId()) {
+        oprot.writeString(struct.storageResourceId);
+      }
     }
 
     @Override
@@ -1334,7 +1436,7 @@ public class OutputDataObjectType implements org.apache.thrift.TBase<OutputDataO
       TTupleProtocol iprot = (TTupleProtocol) prot;
       struct.name = iprot.readString();
       struct.setNameIsSet(true);
-      BitSet incoming = iprot.readBitSet(9);
+      BitSet incoming = iprot.readBitSet(10);
       if (incoming.get(0)) {
         struct.value = iprot.readString();
         struct.setValueIsSet(true);
@@ -1371,6 +1473,10 @@ public class OutputDataObjectType implements org.apache.thrift.TBase<OutputDataO
         struct.outputStreaming = iprot.readBool();
         struct.setOutputStreamingIsSet(true);
       }
+      if (incoming.get(9)) {
+        struct.storageResourceId = iprot.readString();
+        struct.setStorageResourceIdIsSet(true);
+      }
     }
   }
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/24531956/modules/orchestrator/orchestrator-service/src/main/java/org/apache/airavata/orchestrator/server/OrchestratorServerHandler.java
----------------------------------------------------------------------
diff --git a/modules/orchestrator/orchestrator-service/src/main/java/org/apache/airavata/orchestrator/server/OrchestratorServerHandler.java b/modules/orchestrator/orchestrator-service/src/main/java/org/apache/airavata/orchestrator/server/OrchestratorServerHandler.java
index c2574f4..1367e44 100644
--- a/modules/orchestrator/orchestrator-service/src/main/java/org/apache/airavata/orchestrator/server/OrchestratorServerHandler.java
+++ b/modules/orchestrator/orchestrator-service/src/main/java/org/apache/airavata/orchestrator/server/OrchestratorServerHandler.java
@@ -170,8 +170,8 @@ public class OrchestratorServerHandler implements OrchestratorService.Iface {
 								DataProductModel dataProductModel = replicaCatalog.getDataProduct(pi.getValue());
 								dataProductModel.getReplicaLocations().stream().filter(rpModel -> rpModel.getReplicaLocationCategory()
 										.equals(ReplicaLocationCategory.GATEWAY_DATA_STORE)).forEach(rpModel -> {
-									//TODO Should set storage resource id specific to each of these inputs
 									pi.setValue(rpModel.getFilePath());
+									pi.setStorageResourceId(rpModel.getStorageResourceId());
 								});
 							} catch (ReplicaCatalogException e) {
 								log.error(e.getMessage(), e);

http://git-wip-us.apache.org/repos/asf/airavata/blob/24531956/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 98dfe91..e890905 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
@@ -35,7 +35,6 @@ import org.apache.airavata.model.scheduling.ComputationalResourceSchedulingModel
 import org.apache.airavata.model.status.*;
 import org.apache.airavata.model.task.TaskModel;
 import org.apache.airavata.registry.core.experiment.catalog.ExpCatResourceUtils;
-import org.apache.airavata.registry.core.experiment.catalog.ExperimentCatResource;
 import org.apache.airavata.registry.core.experiment.catalog.ResourceType;
 import org.apache.airavata.registry.core.experiment.catalog.resources.*;
 import org.apache.airavata.registry.core.experiment.catalog.utils.ThriftDataModelConversion;
@@ -171,6 +170,7 @@ public class ExperimentRegistry {
                 resource.setInputOrder(input.getInputOrder());
                 resource.setIsRequired(input.isIsRequired());
                 resource.setRequiredToAddedToCmd(input.isRequiredToAddedToCommandLine());
+                resource.setStorageResourceId(input.getStorageResourceId());
                 resource.save();
             }
         } catch (Exception e) {
@@ -197,6 +197,7 @@ public class ExperimentRegistry {
                 resource.setLocation(output.getLocation());
                 resource.setSearchQuery(output.getSearchQuery());
                 resource.setOutputStreaming(output.isOutputStreaming());
+                resource.setStorageResourceId(output.getStorageResourceId());
                 resource.save();
             }
         } catch (Exception e) {
@@ -350,6 +351,7 @@ public class ExperimentRegistry {
                 resource.setInputOrder(input.getInputOrder());
                 resource.setIsRequired(input.isIsRequired());
                 resource.setRequiredToAddedToCmd(input.isRequiredToAddedToCommandLine());
+                resource.setStorageResourceId(input.getStorageResourceId());
                 resource.save();
             }
             return processID;
@@ -376,6 +378,7 @@ public class ExperimentRegistry {
                 resource.setLocation(output.getLocation());
                 resource.setSearchQuery(output.getSearchQuery());
                 resource.setOutputStreaming(output.isOutputStreaming());
+                resource.setStorageResourceId(output.getStorageResourceId());
                 resource.save();
             }
             return processID;
@@ -638,6 +641,7 @@ public class ExperimentRegistry {
                         exinput.setInputOrder(input.getInputOrder());
                         exinput.setIsRequired(input.isIsRequired());
                         exinput.setRequiredToAddedToCmd(input.isRequiredToAddedToCommandLine());
+                        exinput.setStorageResourceId(input.getStorageResourceId());
                         exinput.save();
                     }
                 }
@@ -668,6 +672,7 @@ public class ExperimentRegistry {
                         resource.setApplicationArgument(output.getApplicationArgument());
                         resource.setSearchQuery(output.getSearchQuery());
                         resource.setOutputStreaming(output.isOutputStreaming());
+                        resource.setStorageResourceId(output.getStorageResourceId());
                         resource.save();
                     }
                 }
@@ -810,6 +815,7 @@ public class ExperimentRegistry {
                         exinput.setInputOrder(input.getInputOrder());
                         exinput.setIsRequired(input.isIsRequired());
                         exinput.setRequiredToAddedToCmd(input.isRequiredToAddedToCommandLine());
+                        exinput.setStorageResourceId(input.getStorageResourceId());
                         exinput.save();
                     }
                 }
@@ -841,6 +847,7 @@ public class ExperimentRegistry {
                         resource.setApplicationArgument(output.getApplicationArgument());
                         resource.setSearchQuery(output.getSearchQuery());
                         resource.setOutputStreaming(output.isOutputStreaming());
+                        resource.setStorageResourceId(output.getStorageResourceId());
                         resource.save();
                     }
                 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/24531956/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/ExperimentInput.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/ExperimentInput.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/ExperimentInput.java
index defb89d..dc49741 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/ExperimentInput.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/ExperimentInput.java
@@ -42,6 +42,7 @@ public class ExperimentInput {
     private boolean isRequired;
     private boolean requiredToAddedToCmd;
     private boolean dataStaged;
+    private String storageResourceId;
     private Experiment experiment;
 
     @Id
@@ -146,6 +147,15 @@ public class ExperimentInput {
         this.requiredToAddedToCmd = requiredToAddedToCmd;
     }
 
+    @Column(name = "STORAGE_RESOURCE_ID")
+    public String getStorageResourceId() {
+        return storageResourceId;
+    }
+
+    public void setStorageResourceId(String storageResourceId) {
+        this.storageResourceId = storageResourceId;
+    }
+
     @Column(name = "DATA_STAGED")
     public boolean getDataStaged() {
         return dataStaged;

http://git-wip-us.apache.org/repos/asf/airavata/blob/24531956/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/ExperimentOutput.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/ExperimentOutput.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/ExperimentOutput.java
index ead2148..18de2dc 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/ExperimentOutput.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/ExperimentOutput.java
@@ -41,6 +41,7 @@ public class ExperimentOutput {
     private boolean dataMovement;
     private String location;
     private String searchQuery;
+    private String storageResourceId;
     private Experiment experiment;
 
 
@@ -146,6 +147,16 @@ public class ExperimentOutput {
         this.searchQuery = searchQuery;
     }
 
+    @Column(name = "STORAGE_RESOURCE_ID")
+    public String getStorageResourceId() {
+        return storageResourceId;
+    }
+
+    public void setStorageResourceId(String storageResourceId) {
+        this.storageResourceId = storageResourceId;
+    }
+
+
 //    @Override
 //    public boolean equals(Object o) {
 //        if (this == o) return true;

http://git-wip-us.apache.org/repos/asf/airavata/blob/24531956/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/ProcessInput.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/ProcessInput.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/ProcessInput.java
index 69631d3..0e30164 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/ProcessInput.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/ProcessInput.java
@@ -43,6 +43,7 @@ public class ProcessInput {
     private boolean isRequired;
     private boolean requiredToAddedToCmd;
     private boolean dataStaged;
+    private String storageResourceId;
     private Process process;
 
     @Id
@@ -156,6 +157,16 @@ public class ProcessInput {
         this.dataStaged = dataStaged;
     }
 
+    @Column(name = "STORAGE_RESOURCE_ID")
+    public String getStorageResourceId() {
+        return storageResourceId;
+    }
+
+    public void setStorageResourceId(String storageResourceId) {
+        this.storageResourceId = storageResourceId;
+    }
+
+
 //    @Override
 //    public boolean equals(Object o) {
 //        if (this == o) return true;

http://git-wip-us.apache.org/repos/asf/airavata/blob/24531956/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/ProcessOutput.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/ProcessOutput.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/ProcessOutput.java
index ddf53b3..06971c2 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/ProcessOutput.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/ProcessOutput.java
@@ -43,6 +43,7 @@ public class ProcessOutput {
     private String searchQuery;
     private Process process;
     private boolean outputStreaming;
+    private String storageResourceId;
 
     @Id
     @Column(name = "PROCESS_ID")
@@ -146,6 +147,16 @@ public class ProcessOutput {
         this.outputStreaming = outputStreaming;
     }
 
+    @Column(name = "STORAGE_RESOURCE_ID")
+    public String getStorageResourceId() {
+        return storageResourceId;
+    }
+
+    public void setStorageResourceId(String storageResourceId) {
+        this.storageResourceId = storageResourceId;
+    }
+
+
     //    @Override
 //    public boolean equals(Object o) {
 //        if (this == o) return true;

http://git-wip-us.apache.org/repos/asf/airavata/blob/24531956/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ExperimentInputResource.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ExperimentInputResource.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ExperimentInputResource.java
index eea0a8d..e20aa25 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ExperimentInputResource.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ExperimentInputResource.java
@@ -47,6 +47,7 @@ public class ExperimentInputResource extends AbstractExpCatResource {
     private boolean isRequired;
     private boolean requiredToAddedToCmd;
     private boolean dataStaged = false;
+    private String storageResourceId;
 
     public String getExperimentId() {
         return experimentId;
@@ -136,6 +137,14 @@ public class ExperimentInputResource extends AbstractExpCatResource {
         this.requiredToAddedToCmd = requiredToAddedToCmd;
     }
 
+    public String getStorageResourceId() {
+        return storageResourceId;
+    }
+
+    public void setStorageResourceId(String storageResourceId) {
+        this.storageResourceId = storageResourceId;
+    }
+
     public boolean getDataStaged() {
         return dataStaged;
     }
@@ -206,6 +215,7 @@ public class ExperimentInputResource extends AbstractExpCatResource {
             experimentInput.setIsRequired(isRequired);
             experimentInput.setRequiredToAddedToCmd(requiredToAddedToCmd);
             experimentInput.setDataStaged(dataStaged);
+            experimentInput.setStorageResourceId(storageResourceId);
             if (existingExpInput == null){
                 em.persist(experimentInput);
             }else {

http://git-wip-us.apache.org/repos/asf/airavata/blob/24531956/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ExperimentOutputResource.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ExperimentOutputResource.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ExperimentOutputResource.java
index 7a60366..47e492b 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ExperimentOutputResource.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ExperimentOutputResource.java
@@ -46,6 +46,7 @@ public class ExperimentOutputResource extends AbstractExpCatResource {
     private String location;
     private String searchQuery;
     private boolean outputStreaming;
+    private String storageResourceId;
 
     public String getExperimentId() {
         return experimentId;
@@ -135,6 +136,14 @@ public class ExperimentOutputResource extends AbstractExpCatResource {
         return outputStreaming;
     }
 
+    public String getStorageResourceId() {
+        return storageResourceId;
+    }
+
+    public void setStorageResourceId(String storageResourceId) {
+        this.storageResourceId = storageResourceId;
+    }
+
     public ExperimentCatResource create(ResourceType type) throws RegistryException {
         logger.error("Unsupported resource type for process output data resource.", new UnsupportedOperationException());
         throw new UnsupportedOperationException();
@@ -196,6 +205,7 @@ public class ExperimentOutputResource extends AbstractExpCatResource {
             experimentOutput.setLocation(location);
             experimentOutput.setSearchQuery(searchQuery);
             experimentOutput.setOutputStreaming(outputStreaming);
+            experimentOutput.setStorageResourceId(storageResourceId);
             if (existingExpOutput == null){
                 em.persist(experimentOutput);
             }else {

http://git-wip-us.apache.org/repos/asf/airavata/blob/24531956/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ProcessInputResource.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ProcessInputResource.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ProcessInputResource.java
index a73b6e3..fa09e88 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ProcessInputResource.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ProcessInputResource.java
@@ -47,6 +47,7 @@ public class ProcessInputResource extends AbstractExpCatResource {
     private boolean isRequired = false;
     private boolean requiredToAddedToCmd = false;
     private boolean dataStaged = false;
+    private String storageResourceId;
 
     public String getProcessId() {
         return processId;
@@ -144,6 +145,14 @@ public class ProcessInputResource extends AbstractExpCatResource {
         this.dataStaged = dataStaged;
     }
 
+    public String getStorageResourceId() {
+        return storageResourceId;
+    }
+
+    public void setStorageResourceId(String storageResourceId) {
+        this.storageResourceId = storageResourceId;
+    }
+
     public ExperimentCatResource create(ResourceType type) throws RegistryException {
         logger.error("Unsupported resource type for process input data resource.", new UnsupportedOperationException());
         throw new UnsupportedOperationException();
@@ -206,6 +215,7 @@ public class ProcessInputResource extends AbstractExpCatResource {
             processInput.setIsRequired(isRequired);
             processInput.setRequiredToAddedToCmd(requiredToAddedToCmd);
             processInput.setDataStaged(dataStaged);
+            processInput.setStorageResourceId(storageResourceId);
             if (existingProInput == null){
                 em.persist(processInput);
             }else {

http://git-wip-us.apache.org/repos/asf/airavata/blob/24531956/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ProcessOutputResource.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ProcessOutputResource.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ProcessOutputResource.java
index 290ee9a..ff10343 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ProcessOutputResource.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ProcessOutputResource.java
@@ -46,6 +46,7 @@ public class ProcessOutputResource extends AbstractExpCatResource {
     private String location;
     private String searchQuery;
     private boolean outputStreaming;
+    private String storageResourceId;
 
     public String getProcessId() {
         return processId;
@@ -135,6 +136,14 @@ public class ProcessOutputResource extends AbstractExpCatResource {
         this.outputStreaming = outputStreaming;
     }
 
+    public String getStorageResourceId() {
+        return storageResourceId;
+    }
+
+    public void setStorageResourceId(String storageResourceId) {
+        this.storageResourceId = storageResourceId;
+    }
+
     public ExperimentCatResource create(ResourceType type) throws RegistryException {
         logger.error("Unsupported resource type for process output data resource.", new UnsupportedOperationException());
         throw new UnsupportedOperationException();
@@ -197,6 +206,7 @@ public class ProcessOutputResource extends AbstractExpCatResource {
             processOutput.setLocation(location);
             processOutput.setSearchQuery(searchQuery);
             processOutput.setOutputStreaming(outputStreaming);
+            processOutput.setStorageResourceId(storageResourceId);
             if (existingProcessOutput == null){
                 em.persist(processOutput);
             }else {

http://git-wip-us.apache.org/repos/asf/airavata/blob/24531956/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 1eea10d..1e6dda1 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
@@ -166,6 +166,7 @@ public class ThriftDataModelConversion {
                 dataObjectType.setIsRequired(inputResource.getIsRequired());
                 dataObjectType.setRequiredToAddedToCommandLine(inputResource.getRequiredToAddedToCmd());
                 dataObjectType.setDataStaged(inputResource.getDataStaged());
+                dataObjectType.setStorageResourceId(inputResource.getStorageResourceId());
                 return dataObjectType;
             }else if (object instanceof ProcessInputResource){
                 ProcessInputResource inputResource = (ProcessInputResource)object;
@@ -180,6 +181,7 @@ public class ThriftDataModelConversion {
                 dataObjectType.setIsRequired(inputResource.getIsRequired());
                 dataObjectType.setRequiredToAddedToCommandLine(inputResource.getRequiredToAddedToCmd());
                 dataObjectType.setDataStaged(inputResource.getDataStaged());
+                dataObjectType.setStorageResourceId(inputResource.getStorageResourceId());
                 return dataObjectType;
             }else {
                 return null;
@@ -203,6 +205,7 @@ public class ThriftDataModelConversion {
                 dataObjectType.setLocation(outputResource.getLocation());
                 dataObjectType.setSearchQuery(outputResource.getSearchQuery());
                 dataObjectType.setOutputStreaming(outputResource.isOutputStreaming());
+                dataObjectType.setStorageResourceId(outputResource.getStorageResourceId());
                 return dataObjectType;
             }else if (object instanceof ProcessOutputResource) {
                 ProcessOutputResource outputResource = (ProcessOutputResource) object;
@@ -216,6 +219,7 @@ public class ThriftDataModelConversion {
                 dataObjectType.setLocation(outputResource.getLocation());
                 dataObjectType.setSearchQuery(outputResource.getSearchQuery());
                 dataObjectType.setOutputStreaming(outputResource.isOutputStreaming());
+                dataObjectType.setStorageResourceId(outputResource.getStorageResourceId());
                 return dataObjectType;
             } else {
                 return null;

http://git-wip-us.apache.org/repos/asf/airavata/blob/24531956/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 904d37a..dd2c9ee 100644
--- a/modules/registry/registry-core/src/main/resources/expcatalog-derby.sql
+++ b/modules/registry/registry-core/src/main/resources/expcatalog-derby.sql
@@ -97,6 +97,7 @@ CREATE TABLE EXPERIMENT_INPUT
     IS_REQUIRED SMALLINT,
     REQUIRED_TO_ADDED_TO_CMD SMALLINT,
     DATA_STAGED SMALLINT,
+    STORAGE_RESOURCE_ID varchar(255),
     PRIMARY KEY(EXPERIMENT_ID,INPUT_NAME),
     FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE
 );
@@ -114,6 +115,7 @@ CREATE TABLE EXPERIMENT_OUTPUT
     LOCATION varchar(255),
     SEARCH_QUERY varchar(255),
     OUTPUT_STREAMING SMALLINT,
+    STORAGE_RESOURCE_ID varchar(255),
     PRIMARY KEY(EXPERIMENT_ID,OUTPUT_NAME),
     FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE
 );
@@ -212,6 +214,7 @@ CREATE TABLE PROCESS_INPUT
     IS_REQUIRED SMALLINT,
     REQUIRED_TO_ADDED_TO_CMD SMALLINT,
     DATA_STAGED SMALLINT,
+    STORAGE_RESOURCE_ID varchar(255),
     PRIMARY KEY(PROCESS_ID,INPUT_NAME),
     FOREIGN KEY (PROCESS_ID) REFERENCES PROCESS(PROCESS_ID) ON DELETE CASCADE
 );
@@ -229,6 +232,7 @@ CREATE TABLE PROCESS_OUTPUT
     LOCATION varchar(255),
     SEARCH_QUERY varchar(255),
     OUTPUT_STREAMING SMALLINT,
+    STORAGE_RESOURCE_ID varchar(255),
     PRIMARY KEY(PROCESS_ID,OUTPUT_NAME),
     FOREIGN KEY (PROCESS_ID) REFERENCES PROCESS(PROCESS_ID) ON DELETE CASCADE
 );

http://git-wip-us.apache.org/repos/asf/airavata/blob/24531956/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 2a2ba01..aef0b89 100644
--- a/modules/registry/registry-core/src/main/resources/expcatalog-mysql.sql
+++ b/modules/registry/registry-core/src/main/resources/expcatalog-mysql.sql
@@ -98,6 +98,7 @@ CREATE TABLE EXPERIMENT_INPUT
     IS_REQUIRED tinyint(1),
     REQUIRED_TO_ADDED_TO_CMD tinyint(1),
     DATA_STAGED tinyint(1),
+    STORAGE_RESOURCE_ID varchar(255),
     PRIMARY KEY(EXPERIMENT_ID,INPUT_NAME),
     FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE
 );
@@ -115,6 +116,7 @@ CREATE TABLE EXPERIMENT_OUTPUT
     LOCATION varchar(255),
     SEARCH_QUERY varchar(255),
     OUTPUT_STREAMING SMALLINT,
+    STORAGE_RESOURCE_ID varchar(255),
     PRIMARY KEY(EXPERIMENT_ID,OUTPUT_NAME),
     FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE
 );
@@ -216,6 +218,7 @@ CREATE TABLE PROCESS_INPUT
     IS_REQUIRED tinyint(1),
     REQUIRED_TO_ADDED_TO_CMD tinyint(1),
     DATA_STAGED tinyint(1),
+    STORAGE_RESOURCE_ID varchar(255),
     PRIMARY KEY(PROCESS_ID,INPUT_NAME),
     FOREIGN KEY (PROCESS_ID) REFERENCES PROCESS(PROCESS_ID) ON DELETE CASCADE
 );
@@ -233,6 +236,7 @@ CREATE TABLE PROCESS_OUTPUT
     LOCATION varchar(255),
     SEARCH_QUERY varchar(255),
     OUTPUT_STREAMING SMALLINT,
+    STORAGE_RESOURCE_ID varchar(255),
     PRIMARY KEY(PROCESS_ID,OUTPUT_NAME),
     FOREIGN KEY (PROCESS_ID) REFERENCES PROCESS(PROCESS_ID) ON DELETE CASCADE
 );

http://git-wip-us.apache.org/repos/asf/airavata/blob/24531956/thrift-interface-descriptions/data-models/app-catalog-models/application_io_models.thrift
----------------------------------------------------------------------
diff --git a/thrift-interface-descriptions/data-models/app-catalog-models/application_io_models.thrift b/thrift-interface-descriptions/data-models/app-catalog-models/application_io_models.thrift
index 667a3e7..5098735 100644
--- a/thrift-interface-descriptions/data-models/app-catalog-models/application_io_models.thrift
+++ b/thrift-interface-descriptions/data-models/app-catalog-models/application_io_models.thrift
@@ -75,7 +75,8 @@ struct InputDataObjectType {
     8: optional i32 inputOrder,
     9: optional bool isRequired,
     10: optional bool requiredToAddedToCommandLine,
-    11: optional bool dataStaged
+    11: optional bool dataStaged,
+    12: optional string storageResourceId
 }
 
 /**
@@ -114,5 +115,6 @@ struct OutputDataObjectType {
     7: optional bool dataMovement,
     8: optional string location,
     9: optional string searchQuery,
-    10: optional bool outputStreaming
+    10: optional bool outputStreaming,
+    11: optional string storageResourceId,
 }
\ No newline at end of file


Mime
View raw message